AI学习战略
人工智能的学习,从横向来分,可简单分为工程能力与研究能力,但是学习路线来看,需要纵向来分,可分为如下步骤,需要注意的是,如下步骤在学习时仍要注意代码能力与理论能力并进。
1、数学基础
主要是微积分,线代和概率论,加上计算机学科的离散数学(选修)
微积分也就是高数中的导数,链式求导法则这些就对应神经网络中的反向传播算法,线性代数主要是数据进入模型(主要是深度学习模型)后,在以张量形式传输过程中如何变换的过程,概率论主要对应模型做回归分析的过程。
此外这部分对后续机器学习算法的推导极其重要。
学习课程
中文课程:(偏实战,包括基于python的代码实现)
1、慕课网-专为程序员设计的线性代数课程
https://coding.imooc.com/class/260.html
2、慕课网-专为程序员设计的统计课
https://coding.imooc.com/class/371.html
英文课程:(偏理论,B站自寻)
MIT线代:https://b23.tv/BV1ix411f7Yp/p1
MIT线代习题课:https://b23.tv/BV14x411S7dp/p1,
https://b23.tv/BV18W411v77N/p1
MIT微积分:https://b23.tv/BV1Jt41157Jr/p1
MIT统计:https://b23.tv/BV1bb411N7B9/p1
2、代码基础
做深度学习,首先要掌握的肯定是python,最早也有用matlab和octave的,都是图方便,快速建模出结果,现在主推的还是python,至于python这块需要的是数据处理能力,除了基本的语法,面向对象编程思维,还需要三大包:numpy,pandas,matplotlib;其实跑多了模型,会发现数据的预处理和准备比后边模型搭建更重要,而这些就需要使用numpy和pandas完成,基于此,进阶就需要使用python,基于pytorch和tensorflow框架完成模型的搭建和训练。
除了python以外还需要学习一门语言的就是C++,不过这点短期内并不要求掌握,我接下来简述一下哪里会用到C++。首先是如果参加工作,特别是涉及到图像处理opencv库的项目时,C++可以大大加快模型处理速度,这在视频流实时处理中特别重要;其次是模型部署,特别是边缘处理器中;再高阶一点,就是可以使用C++自写底层深度学习框架如pytorch等,例如旷视新开源的框架。
除了编程语言,很多转行失败的学生忽视了一门极其重要的课程,即数据结构与算法,该课不涉及具体语言,但是往往对高阶编程影响极大,其实ai算法开发无论是做落地工程还是开发新算法,跟传统网站软件开发有区别吗?并没有!这也是为什么ACM 等竞赛高手学习ai开发速度之快的最关键的原因。
学习课程
3、Python编程高手之路
(主要包含基础语法,函数,面向对象,网络编程,并发编程。课程优势在于简洁明快,有配套的作业代码,附有如何规范开发程序,对入门帮助极好)
4、数据结构与算法进阶
(基于python语言开发,非培训班流水式培养,全时长近60小时,基本涵盖数据结构与算法的常用知识点,好处是真的一点点讲解,英文课件但配有翻译,海归讲课,而且穿插有三百道leetcode真题,去年我有两位学生,秋招前看了这门课,过了大部分公司的笔试面试,拿下数据分析岗位,薪资15k+)
5、慕课网-玩转算法系列–玩转数据结构 更适合0算法基础入门到进阶(java版)
https://coding.imooc.com/class/chapter/207.html#Anchor
(完全基于数组实现各种数据结构,好处是节奏明快,ACM选手讲课,个人感觉实力不输其他机构的王牌老师,但是讲课有课件提纲,配合他下边的课更适合备考考研和求职面试)
6、慕课网-算法与数据结构-综合提升 C++版
https://coding.imooc.com/class/71.html
(数据结构进阶版本,与课程5互为补充,可选)
7、慕课网-玩转算法系列–图论精讲 面试升职必备(Java版)
https://coding.imooc.com/class/370.html
(说一句全网最好图论课程不为过,有质有量,而且图论应该是传统数据结构与算法对现在ai算法影响最大的,比如图神经网络是当下也是以后的几大热点之一,在社交关系挖掘,基于用户关系的产品推荐中起到基石作用)
8、慕课网-玩转算法面试 从真题到思维全面提升算法思维
https://coding.imooc.com/class/82.html
(主要是刷leetcode,也是全网最早的带刷leetcode的课了)
3、机器学习基础
学习这部分,切忌刨根究底,有的人说应该先学习如何用scikitleran调api,再看理论知识,有的人则先抱着西瓜书一个个公式推导再去实现实操。个人觉得都有道理,总的指导思想就是:
1、理论要知道:定义,使用条件,公式推导要会;
2、结合实际项目,分析使用哪个或哪些算法,先把结果跑出来;
3、回过头把1中算法使用numpy等基础库实现一遍;
4、转化为博客输出。
学习课程
不推荐吴恩达的课cs229(好像是这个,他在网易云上的这个课更多是普及意义,学习意义不大,还不如他网易公开课那个机器学习课,全程高能黑板手写推导公式,清晰度也不高,而且过于偏理论,不太适合入门学习,但是在14 15年那会儿,那可是国内最早搞ai那拨人的指路灯)
9、中科院一个副研究员的在小象学院讲的课
(全程ppt手写推导公式,SVM是那种你看一遍就会的,配套有实战代码,我已经全部跑通,遗憾就是代码不是带着写的,教材用的是李航统计学习方法)
10、针对9中的不足,网上有博士用python实现了书中算法,然后就有机构出了这门课讲解这本书和配套代码,应该是目前全网最全的
11、机器学习西瓜书及其配套视频(两门)
这本书不建议入门学习,主要是内容宽泛,细节不足,我找了两门课来学习,一门是直接配套,一点点讲的很详细,详见幂次学院的机器学习训练营,另外一门则是代码项目结合重点讲解
4、深度学习基础
深度学习可以直接看吴恩达在网易云课堂上的微专业,我也可以提供配套课程及作业代码,这一块看完他的课基本够用,但是还可以参考李宏毅老师的深度学习课程,这些B站都有资源,建议吴恩达的为主,其他老师的作为最新的补充。
以上讲的是理论部分,这部分相对来说好学,就一个卷积一个反向传播搞明白,rnn公式推导一下就差不多了,难在如何用深度学习框架实现网络模型并且跑起来实际的模型。
此处推荐一个新加坡国立老师的pytorch1.0和tensorflow2.0的课程,在讲解框架过程中也会讲到深度学习的东西,其实深度学习的学习相比于机器学习,最重要的一点就是要能够跑起来模型多做实验多尝试,很多时候你手推的公式,深度学习模型跑起来是另外一个样子,所以深度学习的学习我一直跟我的学生讲要多动手,多动手的前提就是学会一个框架。
学习课程
12、新加坡国立老师的pytorch与tf课程
13、七月在线pytorch课程 (该老师应该是七月在线上为数不多讲的好的,良心课程)
14、慕课网-基于pytorch的聊天机器人
(中科院大牛授课,生成式聊天机器人的实现,nlp实战项目,相比于一股脑搞cv,现在我更推荐做nlp)
15、最新基于pytorch1.5的学习训练营
(适合作为上述课程补充,该课对训练过程中的模型调优比较注重)
5、强化学习基础
UCL强化学习课程,B站即可搜到国内up搬运的公开课,属于高阶课程,这里不细说。
6、应用方向
针对具体的应用方向,一方面要结合你到时候导师的具体安排,另一方面也和你学完基础课程后的兴趣选择有关,我这里推荐CS231n(CV),CS224n(NLP)必修,因为这些课程的深度学习部分讲解是作为吴恩达深度学习课程的补充,比如cs231n中的反向传播推导。此外李宏毅的深度学习课很棒一点在于及时更新内容。这块的东西属于进阶内容,等你学完基础我们再来讨论,我可以给你每个方向写点东西,并提一下当前研究的热点,你先简单了解。
- 计算机视觉
CV三大件:分类(目前热门是细粒度),目标检测(小样本,复杂环境下比如水下),图像分割与语义分割(自动驾驶,医学图像分割),后两者都是建立在前者的基础上,以优秀的分类网络为骨架网络,提取高阶图像信息,进行对应任务处理。此外还有图像生成,图像风格转换,结合nlp的图像翻译,图像注释,图像理解。更高级的就是以后越来越重要的视频理解。此外还涉及到OPENCV和传统的数字图像处理知识。
- 自然语言处理
最重要的就是预训练模型,transformer bert及其变种等等。。。。如果要说的话会有很多,还会说到注意力机制,这个是水论文的点。
- 语音处理
我最开始就是做这个方向,也是目前紧缺人才的一个方向,可以考虑,与nlp也密切相关。
- 推荐系统
你应该了解过,深度学习的玩法与过去是两码事,这个包括下边几个方向你联系我了解吧,能说的很多,现在最赚钱的是计算广告,现金牛。
- 知识图谱
- 数据挖掘
- 计算广告
- 风险控制
注:文中所挖的坑日后会逐步完善