『运筹OR帷幄』原创
作者:霍华德
编者按:
入门机器学习和深度学习并不是一件容易的事情。需要学习大量的知识,初学者常常会迷茫不知所措。现在我们给你带来一篇纯干货,帮助你入门机器学习和深度学习。
什么是人工智能?
按照UCLA教授朱松纯教授的定义,AI大概可以分为一下六类:
(1)计算机视觉 -> 人类的视觉能力
(2)自然语言处理 -> 人类的语言文字能力
(3)语音识别与生成 -> 人类的听与说能力
(4)机器人学 -> 人类的运动能力和运动智能
(5)博弈与合作 -> 人类对抗与合作的能力
(6)机器学习 -> 人类的学习能力
可以看出以前的技术是让新工具取代旧工具。而人工智能不同,它的目标就是模仿人类的智能,取代人类的智能,超越人类的智能。
那现阶段的AI到底是个什么东西呢?
我觉得现在的AI核心理念还是统计推断或者函数拟合。说人话就是找一个函数或者一个映射,使得一段声波进去能映射到语言,一张猫咪的图片进去能映射到猫咪。你跟siri说hi自动映射到回答hello~
一天学会深度学习-李宏毅
入门人工智能小书单
给大家推荐一些书,同时提醒大家一些坑。书大致可以分为三类『科普书籍』『机器学习算法书籍』『编程书籍』。
1. 科普书籍:
《数学之美》:用妙趣横生的语言讲述了自然语言处理和搜索引擎里的数学原理
《浪潮之巅》:讲述IT产业发展和美国硅谷IT公司的兴衰沉浮
《黑客与画家》:本书是硅谷创业之父Paul Graham的文集,程序员的世界观和眼里的世界
兴趣是最好的老师,阅读科普书籍有助于积累兴趣,对人工智能领域有个大概的了解。
2. 机器学习算法书籍:
《统计学习方法》:李航博士的经典教材。用最精炼的语言描述机器学习算法,转行AI必读书籍
《机器学习》:周志华教授的西瓜书。统计学习方法涵盖面太窄,配合西瓜书来扩展宽度。
《python机器学习及实现》:适合入门,学习曲线平滑,理论书看累了,就跟着这本书打一遍代码,对kaggle就会大致的了解。
《集体编程的智慧》:有各种算法的实现代码,配合理论书看,能更深入的理解算法。
《PRML》:机器学习经典,贝叶斯经典。
《神经网络与深度学习》:邱老师的开源书(https://nndl.github.io/)
3. 编程书籍:
《廖雪峰Python教程》:最好的Python入门教程,https://www.liaoxuefeng.com
《流畅的Python》:Python最好的进阶教程
《Python for Data Analysis》:作者是Python Pandas的作者,分析数据就用Pandas
4. 一些坑:
《Tensorflow实战》:真的还不如就看官方教程或者斯坦福的课程CS 20SI
《深度学习》:Goodfellow的大作,但真心不适合入门,适合进阶
5. 面试书籍:
《百面机器学习》:俗称葫芦书,已提问的方式归纳机器学习面试中的种种知识点,面算法建议准备一本
《剑指offer》: 面试必刷书籍,因为很多面试官都是从里面找题
入门人工智能小视频
入门阶段:
斯坦福CS229机器学习(Machine Learning)- 吴恩达(Andrew Ng):
首推吴恩达的CS229,吴恩达真是天生的好老师,讲课清晰条例清楚,难度事宜,学习曲线平缓
2009版视频:斯坦福课堂视频,内容比较充实,但要看板书,而且有些没必要的课堂互动,容易分心
知道你们都是伸手党,链接也准备好了。
链接:斯坦福大学公开课 :机器学习课程
(https://link.zhihu.com/?target=http%3A//open.163.com/special/opencourse/machinelearning.html)
2014版视频:这是吴恩达在coursera上的授课视频,一段视频一个主题,更加精炼清晰
链接:机器学习(Machine Learning)- 吴恩达(Andrew Ng) | 斯坦福大学课程CS229(2014)
(https://www.bilibili.com/video/av9909092/index_1.html%23page%3D1)
机器学习基石和机器学习技法-林轩田:
吴恩达的课程一大问题是英文授课,有些小伙伴畏惧英语,就退缩了。
这样的话,台湾大学林轩田老师的机器学习基石及技法是非常不错的选择。
这门课深度深一些,更数学一些,会讲一些非常基础的机器学习理论,如VC维,KKT条件等
我的建议是一开始听不懂直接过,学完之后再来反刍
链接:机器学习基石,完整版_演讲•公开课_科技_bilibili_哔哩哔哩
(www.bilibili.com/video/av4294020)
进阶阶段:
机器学习与神经网络-Hinton:
讲神经网络恐怕没有比祖师爷更好的了,Hinton老爷子的思想非常深邃,换句话说可能不太好懂
但这不影响这是非常优秀的课程
链接:Hinton机器学习与神经网络中文课程 - 网易云课堂
(https://study.163.com/course/introduction.htm?courseId=1003842018&_trace_c_p_k2_=f9255270f1dd44fa93f9a6d282bd135f)
斯坦福CS231-深度学习计算机视觉-李飞飞:
计算机视觉无疑是这波深度学习浪潮的弄潮儿,搞计算机视觉方向经典的入门视频
里面会介绍各式各样的卷积神经网络
链接:斯坦福李飞飞-深度学习计算机视觉 - 网易云课堂
(https://study.163.com/course/friendly404.htm?courseId=1003223001&status=-5&_trace_c_p_k2_=cd961ca58a614f78a8b9a2623c0087da)
斯坦福CS224-深度学习自然语言处理-Chris Manning
人工智能另外一个重要领域是自然语言处理,搞这个方向经典的入门视频莫过于CS224
链接:斯坦福2017季CS224n深度学习自然语言处理课程(by Chris Manning & Richard Socher)(英文字幕)
(https://www.bilibili.com/video/av13383754/?from=search&seid=11933326047978202113)
【官方】【中英】CS224n 斯坦福深度自然语言处理课
(https://www.bilibili.com/video/av41393758)
机器学习-李宏毅
上面的视频虽然经典,但是英文授课,这让很多小宝宝很崩溃,但没事,来看台湾大学的深度学习吧!
链接:【深度学习】李宏毅Machine Learning (2017,秋,台湾大学) 国语
机器学习-李宏毅(2019) Machine Learning
(https://www.bilibili.com/video/av35932863?from=search&seid=3749004717372119178)
机器学习-白板推导系列
条理清晰,重点明确,而且每个章节讲解才20分钟左右,up主语速偏慢,1.5或2倍速看也没有问题,非常适合入门
链接: 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili
(https://space.bilibili.com/97068901/channel/detail?cid=54167)
看到这里,大家会发现,其实只要你想学,视频大把大把的,互联网让知识的获取不再困难,真正阻碍你的只有你的决心和毅力了。
最后,提个坑,别去看张志华老师的统计机器学习视频,张老师的水平是很高的,但视频里满屏幕的公式,又让我回想起大学期间被各种定理推论支配的恐惧。中国大学的课感觉就一直都在劝退,提醒你学不会的,你听不懂的,你智商不够的。然而吴恩达的课不会,他觉得没有学不会的学生,只有教不好的老师~
入门人工智能学习方法
初学机器学习可能有一个误区,就是一上来就陷入到对各种高大上算法的追逐当中。动不动就我能不能用深度学习去解决这个问题啊?我是不是要用boosting算法做一些模型融合啊?我一直持有一个观点,『脱离业务和数据的算法讨论是毫无意义的』。
实际上按我们的学习经验,从一个数据源开始,即使是用最传统,已经应用多年的机器学习算法,先完整地走完机器学习的整个工作流程,不断尝试各种算法深挖这些数据的价值,在运用过程中把数据、特征和算法搞透,真正积累出项目经验 才是最快、最靠谱的学习路径。
那如何获取数据和项目呢?一个捷径就是积极参加国内外各种数据挖掘竞赛,数据直接下载下来,按照竞赛的要求去不断优化,积累经验。国外的Kaggle和国内的DataCastle 以及阿里天池比赛都是很好的平台,你可以在上面获取真实的数据和数据科学家们一起学习和进行竞赛,尝试使用已经学过的所有知识来完成这个比赛本身也是一件很有乐趣的事情。和其他数据科学家的讨论能开阔视野,对机器学习算法有更深层次的认识。
有意思的是,有些平台,比如阿里天池比赛,甚至给出了从数据处理到模型训练到模型评估、可视化到模型融合增强的全部组件,你要做的事情只是参与比赛,获取数据,然后使用这些组件去实现自己的idea即可。不废话,直接划重点上干货。如果你觉得机器学习难,那一定是你打开的方式不对(认真脸)。
机器学习看似难度大,但对入门者来说,也还是有一条通用的学习路径。正如前几个专栏里介绍的,还有很多优秀的入门资料可以大大降低学习门槛,同时激发学习的乐趣。
简单的说,学习方法大概如下:
编程技能
机器学习知识 ----> 动手实践撸代码 ----> 数据科学比赛 ----> 实际项目经验
数学基础
机器学习是一个将理论算法与计算机工程技术紧密结合的领域,你需要扎实的理论基础来帮助你分析数据,同样是需要工程能力去开发模型和部署服务。所以需要【编程技能】【机器学习知识】【数学基础】三个方面军齐头并进,才能最终夺取胜利的果实。
转行AI的人里也可以分三类,一类是程序员出身,具有很好的工程经验;一类是统计学数学电子通信类出身,具有较为扎实的理论基础;还有一类既没有丰富的编程经验也没有扎实理论基础,例如我们学材料的...这三类同学入门AI,需要加强的部分是不一样的。
1.编程技能-python
Life is short, I use python!
在google, facebook等巨头钦定之后,人工智能领域的当红辣子鸡莫过于python。Python的工具库还是蛮全的,从数据获取到数据清理和机器学习算法应有尽有。与R相比,更加全面。
对于python, 除掌握其自身语法外,还应该着重掌握下面这些库:
pandas:超级excel,表格式操作数据,数据清洗和预处理的强大工具。
numpy:数值计算库,快的不要不要的。
matplotlib:模仿MATLAB的数据可视化工具。
scikit-learn:封装超级好的机器学习库,一些简便的算法用起来不要太顺手。
ipython notebook:数据科学家和算法工程师的笔记本,强力推荐。
2.数学基础
微积分:是机器学习中的核心知识之一,无论是梯度下降法中的求梯度还是反向传播中的误差传递的推导都需要用到微积分。
线性代数:神经网络中大量的计算都是矩阵乘法,这就需要用到线性代数的知识了。计算向量的余弦相似度也要用到内积运算。此外,矩阵的各种分解办法也出现在主成分分析和奇异值分解中。
概率论与统计学:广义的说,机器学习的核心是统计推断。所以机器学习的巨头不少都是统计学大师,如迈克尔乔丹,杨乐坤,辛顿等。机器学习中大量的用到贝叶斯公式,隐马尔科夫模型等等。
诚然,数学很重要,但是我建议,具有本科数学基础的你,不要花费太多时间去刷数学书,这是南辕北辙,最好的办法还是直捣黄龙学习机器学习算法,到了看不懂的地方再去补充相应的数学知识,斯坦福的教程里就有大量的数学补充材料,很多时候读明白这些补充材料就够了。
3.项目经验
一个误区:很多新手初学机器学习,上来就追求复杂的深度学习模型和高大上的算法如AlexNet, ResNet。tensorflow和keras各种API全部调用一遍,却不知道自己在干什么,俗称调包侠。
一个观点:脱离实际业务和数据的算法都是空中楼阁。
一条路径:按照我的学习经验,从数据清洗到特征工程,再用最传统的算法把整个流程走一遍,不断的比较和尝试各种算法,把特征和算法搞透,才是最快最靠谱的学习方法。
两个项目:国外的Kaggle和阿里云天池都是获取项目经验的好途径。我的建议是每个入门机器学习的人都应该参加两个项目。一个传统机器学习应用场景的项目,如阿里移动推荐算法。通过传统应用场景熟悉逻辑斯特回归,支持向量机和梯度增强决策树等算法。一个深度学习应用场景的项目,如肺癌识别和诊断,通过深度学习应用场景熟悉深度学习各种算法的优势和应用场景。
就说这么多,大家放手去干吧!美丽的天使在远方召唤你,勇敢的少年啊,快去创造奇迹!
备注:公众号菜单包含了整理了一本AI小抄,非常适合在通勤路上用学习。
往期精彩回顾
那些年做的学术公益-你不是一个人在战斗适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”
喜欢文章,点个在看