真说起来倒也不是大家觉得线性回归多么有用,笔者觉得主要还是直线比较好分析,而神经网络比较难,所以理论工作就少一些。这个现象叫做Streetlighteffect。
笼统地说,原理和基础都在数学这边,当然有很多偏应用和软件使用的技术,例如“深度学习调参”等,这些报个培训速成班就能学会的技术含量不那么高的东西,不在讨论范围内。这里要讨论的,是如何系统的学习,然后自己能编出这机器学习或深度学习的程序或软件--我想,这才能称为一个合格的机器学习、数据科学家。
当然了,楼主所在的图像处理界,熟练使用matlab或者Python调用opencv库是必要条件,但是again他们只是工具,业余时间自学,多练练就没问题。有同学问用R行不行,补充一点,用什么编程语言很大部分取决于你的核心算法会调用什么已有的库函数,比如楼主的科研里面核心算法往往是MIP(混合整数规划)问题需要调用Cplex或Gurobi库函数,因此C/C++/Python/Java这些和Cplex接口良好的语言都可以拿来用,这时候R就别想了。(更新:最新Gurobi版本支持R)
另外虽然图像处理界一些open-source的code都用C++写的,但是鉴于使用方便都会提供Python的接口,因此需要用到这些code的话,用Python调用比较方便;但是,如果是高阶骨灰级玩家,需要修改甚至自己写源代码,那么还是推荐C/C++,因为他们的速度最快。
关于数学模型和算法的区别、联系,参见:【学界】整数规划精确算法/近似算法/(元)启发算法/神经网络方反向传播等算法的区别与关联(http://t.cn/RlNoJ19)
当年我是在数学系学的这门课,主要是偏微分方程的数值解。但我觉得其开篇讲的数值计算的一些numericalissue更为重要,会颠覆一个数学系出身小朋友的三观。(原来理论和现实差距可以这么大!)
Conditionalnumber,ill-conditionedproblem,会让你以后的编程多留个心眼。
恭喜你,到这里,你就可以无压力地学习MachineLearning这门课了(其实机器学习,通篇都是在讲用一些统计和优化来做clustering和classification这俩个人工智能最常见的应用)。并且你就会发现,ML课中间会穿插着很多其他课的内容。恩,知识总是相通的嘛,特别是这些跨专业的新兴学科,都是在以往学科的基础上由社会需求发展而来。
到这里,其实你已经能看懂并且自己可以编写机器学习里面很多经典案例的算法了,比如regression,clustering,outlierdetection。
再高阶的课程,就是比较specific的课程了,可以看你做的项目或者以后的concentration再选择选修,比如:ProbabilisticGraphicalModels(概率图模型),IntegerProgramming(整数规划),计算机视觉,模式识别,视频追踪,医学图像处理,增强学习,深度学习,神经网络,自然语言处理,网络信息安全,等等。
深度学习:目前非常火,打败了非常多几十年积累起来的经典方法。
增强学习:也很火,游戏AI、自动驾驶、机器人等等,它都是核心。
概率图模型:深度学习之前非常popular的“学习”方法,有严格的数学模型和优美的算法,虽然目前被前俩者盖过了风头,但是依然有它的立足之处。
书目没有特别推荐的,但是建议看英文原版。另外直接翻墙Youtube看视频课程,很多国际知名教授都很无私地把自己上课的视频放在youtube上免费学习(搜索我上面列出的科目名字)。如果确实要楼主推荐,那就推荐海德堡大学历史上最年轻的教授Fred的机器学习视频(我基本都看过)(http://t.cn/RlNKGop)另外一个教授给你上课的时候,开头一般是会推荐书给你的(如果你确实喜欢看书的话)以下再推荐一些视频,仅受之以渔,多为graduatecourse。
MachineLearningbyProf.NandodeFreitas,此视频是其在UBC时13年所录,后来跳槽去牛津计算机系。
原文链接:http://t.cn/RlNKEyk
DeeplearningatOxford2015 byProf.NandodeFreitas,跳槽到牛津所录。
原文链接:http://t.cn/RwgbKNb
ProbabilisticGraphicalModelsbyDaphneKoller,斯坦福大学计算机系教授
原文链接:http://t.cn/RlNKgpB