「03」机器学习深度学习该怎样入门?

y1ran y1ran     2023-04-28     180

关键词:

我本科是个和计算机、数学毫不相关的人文类专业,后来用了大三、大四两年时间,从中学级别的数学捡起,一路自学、实习、读研到现在。我太熟悉入门时候的坑了,直接从一大堆概念、公式、书单入手,谁看谁懵。

所谓入门,绝不是粘课程链接、讲概念定义。有些答案确实解释的非常通俗,但这不叫入门。

古语说入门,就一句话

师傅领进门,修行在个人

 

所以我不会随便复制粘贴一些高分书目,或者讲讲什么是深度学习。我希望能从一个不一样的角度来回答该如何入门深度学习,希望可以授人与渔,教教大家入门的方法论。

对于自学成分居多、想转行、转专业的同学来说,我的入门经历或许可以当作过来人的经验之谈,供大家参考。

对于非常幸运已经在计算机、数学等算法相关专业读书的同学,也可以看看我踩过的坑,走过的弯路,用作警示。

 

 

第一步、找到兴趣


很多同学入门深度学习,做的第一件事往往是上知乎、搜索引擎找相关资源,或者GITHUB翻项目,希望找到一份完美无缺的入门教程。

但很可惜,这份“完美教程”并不存在。于是,不少人只能硬着头皮从这个问题下海量的推荐书目,课程看起,看到最后晕头转向,兴趣被消耗殆尽。

正确的姿势应该是:先找到兴趣

先不要管什么是梯度、怎么搭建网络、要看哪些书,如果有人这么教你,请跳过那些答案。先想想自己为什么对深度学习感兴趣,然后找到自己感兴趣的点。这样做的最主要原因是,深度学习范畴下的分类太多太多了,每一个分类都可以当作博士研究、公司业务的领域,也就是说,除了深度学习最基础的一些知识(可能占所有知识的50%),其他的你并不需要深入了解:

如果你对计算机视觉感兴趣,那么除了基础知识,你还需要学习C++,学习图像识别、传统物体识别的知识。同时,你没有必要去深入了解RNN和各种变体,也不需要自己推导因子分解机。
如果你对自然语言处理感兴趣,那么你要更加了解RNN和transformer框架,你要深入了解word2vec机制,尽管它并非起源于深度学习理论。你不需要学会CNN反向传播如何推导,也不需要知道玻尔兹曼机该如何应用于语音识别。
如此一来,有两点好处

你的时间被大大节省了,至少缩短你50%的教材、课程阅读时间
你对特定领域的了解提高,在打好基础的同时,你也知道了这些知识被用来干什么
 

 

第二步、制定计划


根据自身情况制定计划。很多答案下的书单都很好,但并不适合所有人,如果你是数学专业,那么大多数书你并不用看,如果你和我一样是人文类专业,那么除了那些书,你还需要看很多。

这是我当时的部分计划,第1阶段比较基础,主要包括MIT的线性代数以及可汗学院的统计、AP微积分这类基础课程,以及简单的Python和C语言入门。第二阶段如下图,会更加深入一点。具体该看什么书,怎么划分,因人而异,大家不要套用我的计划,因为当时安排的也并非十分合理。

技术图片

 

 

 

第三步、执行计划


制定计划不难,但执行起来才是最困难的。我的算法学习计划从大三下半学期开始,持续到研一,整整两年,中间有过停止,但总归是完成了所列的目标。这也是为何我强调第一点:兴趣的原因,如果没有兴趣,或者学错方向,那么很可能你根本坚持不了那么久就自己放弃了。

现在就业形势不太乐观,如果你连兴趣都没有找准,大概率以后也会考虑转型开发。所以,一定要去执行。如何构建学习的反馈回路,增加自己学习的执行力,我后面会单独出一篇文章聊聊,这里大家先自行琢磨。

 

 

 

学完一个领域的知识,还得学会应用才能叫入门。讲完计划层面的入门方法,再谈谈具体算法的学习方法。我曾经在我的博客里写过一篇文章:如何高效地学习算法? 里面讲到,对于同一个问题,同一类算法,要彻底搞懂吃透,可以简单分割成几个步骤

 


技术图片

 

 

?

第一步,即初步了解,是对算法的基本构成,大致用途以及基础假设有一个模糊的认识,比如从某某博客中看到一个不认识的算法,知道它主要是用于分类,基于线性模型,要求独立同分布等。

第二步是教材学习,就是说当你听到这个算法的大致意思后,去寻找教材,可以是一本书,一篇博客或是知乎的一个回答,进一步了解这个算法的原理和应用场景,如算法由Logit构成,属于广义线性模型,在定义域内充分饱和等,可以用于二分类和多分类。

第三步,深入原理,此时经过一定的教材,你已经完全了解了算法的流程,知道它为什么叫逻辑回归,以及逻辑回归的作用甚至衍生算法,但对其基础原理还是一知半解,不知道Logit函数怎么来的,为什么要用负对数似然函数做LOSS,以及什么时候不该用LR等。这一步往往是最难的一步,需要大量的时间和思考,来充分理解并推导算法的组成。

最后一步,自我实践,顾名思义就是通过代码将所学算法实现,现如今python和tensorflow的封装API以及各种库、包已经十分完善,我个人的建议是,除非是算法底层架构开发方向的人员,否则没有必要从0开始编写一个算法(比如在某本中文教材中,作者连numpy或pandas都不用),适当的借助工具,如可以让自己的学习经验更加的实用化,同时也加强对算法的理解。针对基础性较强的一些算法,比如反向传播、逻辑回归或KNN,从底层逻辑一步步实现也是必要的。

第2、3、4步并非固定顺序,也不是走过一次就可以高枕无忧。实际上,很多时候它们是打乱的,也是迭代的,比如早上的一个项目要临时迁移算法,那么下午之前你就要完成第一步和第四步,在初步完成后,或许你会花一些时间来把第、二三步走一遍。而迭代的循环这个学习链条,可以加固算法知识和理解。

 

 

建议计划


虽然前面提到每个人的计划都应该量身定做,但是基本的方向我还是会写一写,下面是我以前整理过的一些入门计划,当作计划模板,大家酌情参考:

 

基础篇
1. 《Introduction to Data Mining》,这本书很浅显易懂,没有复杂高深的公式,很合适入门的人。另外可以用这本书做参考《Data Mining : Concepts and Techniques》。第二本比较厚,也多了一些数据仓库方面的知识。如果对算法比较喜欢,可以再阅读《Introduction to Machine Learning》。中文书籍方面,则推荐《机器学习实战》《统计学习方法第二版》。

2. 实现经典算法。有几个部分:

a. 关联规则挖掘 (Apriori, FPTree, etc.)

b. 分类 (C4.5, KNN, Logistic Regression, SVM, etc.)

c. 聚类 (Kmeans, DBScan, Spectral Clustering, etc.)

d. 降维 (PCA, LDA, etc.)

e. 推荐系统 (基于内容的推荐,协同过滤,如矩阵分解等)

然后在公开数据集上测试,看实现的效果。可以在下面的网站找到大量的公开数据集:http://archive.ics.uci.edu/ml/

3. 熟悉几个开源的工具: Weka (用于上手); LibSVM, scikit-learn, Shogun

4. 到 https://www.kaggle.com/ 上参加几个101的比赛,学会如何将一个问题抽象成模型,并从原始数据中构建有效的特征 (Feature Engineering).

到这一步的话基本几个国内的大公司都会给你面试的机会。

 

进阶篇(如果你已入门,可以看看,否则跳过)
1. 读书,下面几部都是大部头,但学完进步非常大。

a.《Pattern Recognition and Machine Learning》

b.《The Elements of Statistical Learning》

c.《Machine Learning: A Probabilistic Perspective》

第一本比较偏Bayesian;第二本比较偏Frequentist;第三本在两者之间,但我觉得跟第一本差不多,不过加了不少新内容。当然除了这几本大而全的,还有很多介绍不同领域的书,例如《Boosting Foundations and Algorithms》,《Probabilistic Graphical Models Principles and Techniques》;以及理论一些的《Foundations of Machine Learning》,《Optimization for Machine Learning》等等。这些书的课后习题也非常有用,做了才会在自己写Paper的时候推公式。

2. 读论文。包括几个相关会议:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM;以及几个相关的期刊:TKDD,TKDE,JMLR,PAMI等。跟踪新技术跟新的热点问题。当然,如果做相关research,这一步是必须的。例如我们组的风格就是上半年读Paper,暑假找问题,秋天做实验,春节左右写/投论文。

3. 跟踪热点问题。例如最近几年的Recommendation System,Social Network,Behavior Targeting等等,很多公司的业务都会涉及这些方面。以及一些热点技术,例如现在很火的Deep Learning。

4. 学习大规模并行计算的技术,例如MapReduce、MPI,GPU Computing。基本每个大公司都会用到这些技术,因为现实的数据量非常大,基本都是在计算集群上实现的。

5. 参加实际的数据挖掘的竞赛,例如KDDCUP,或 https://www.kaggle.com/ 上面的竞赛。这个过程会训练你如何在一个短的时间内解决一个实际的问题,并熟悉整个数据挖掘项目的全过程。

6. 参与一个开源项目,如上面提到的Shogun或scikit-learn还有Apache的Mahout,或为一些流行算法提供更加有效快速的实现,例如实现一个Map/Reduce平台下的SVM。这也是锻炼Coding的能力。

 

下一篇文章将会为大家整理深度学习、机器学习的入门必备数学知识点以及最新入门学习资料。此外,

更多机器学习、编程、AI相关知识,欢迎关注我的公众号“图灵的猫”~
技术图片

深度学习入门系列-神经网络

机器学习    定义:机器学习(MachineLearning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织... 查看详情

机器学习入门

...频:偏理论推导:B站白板推导;白板系列笔记DataWhale:机器学习实践代码李宏毅《机器学习/深度学习》2021课程(国语版本);在线笔记书籍书籍推荐包括:西瓜书,公式推导南瓜书;机器学习方法(李航)深度学习深度学习是基于... 查看详情

机器学习是什么?深度学习deepleaning现实一些该怎么学?

...以下是对于前辈讲座理解以及这次实践后理解心得: 机器学习是什么?机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。机器学习是对能通过经验(训练)... 查看详情

转载零基础入门深度学习-参考文献

【转载】零基础入门深度学习-参考文献机器学习深度学习参考资料零基础入门深度学习(1)-感知器TomM.Mitchell,“机器学习”,曾华军等译,机械工业出版社零基础入门深度学习(2)-线性单元和梯度下降TomM.Mitchell,“机器学习”,曾华军... 查看详情

转载零基础入门深度学习-参考文献

【转载】零基础入门深度学习-参考文献机器学习深度学习参考资料零基础入门深度学习(1)-感知器TomM.Mitchell,“机器学习”,曾华军等译,机械工业出版社零基础入门深度学习(2)-线性单元和梯度下降TomM.Mitchell,“机器学习”,曾华军... 查看详情

机器学习入门之算法研究

...获取更多学习资料,学习建议1.2深度学习之前:机器学习简史深度学习之前:机器学习简史深度学习已经得到了人工智能历史上前所未有的公众关注度和产业投资,但这并不是机器学习的第一次成功。可以这样说&... 查看详情

机器学习深度学习的理论与实战入门建议整理

...这份文档时想必你的脑海中一直萦绕着这么一个问题,“机器学习/深度学习要怎么学呢?(怎么入门,又怎么进一步掌握?)”。关于这个问题其实并没有一个标准答案,有的人可能适合自底向上的学,也就是先从理论和数学... 查看详情

深度学习入门好文,强烈推荐!!!

初识:深度学习学习目标1.深度学习的概念2.机器学习和深度学习的区别2.1区别1:特征提取2.2区别2:数据量3.深度学习的应用场景4.常见的深度学习框架学习目标知道什么是深度学习知道深度学习和机器学习的区别能... 查看详情

怎么快速入门深度学习

...回来,那到底要如何去学习深度学习,首先深度学习属于机器学习的一个分支,机器学习分为监督学习、无监督学习、强化学习、半监督学习和深度学习要想学习深度学习就必须先学习机器学习,学习机器学习,首先需要储备的... 查看详情

机器学习/深度学习入门资料汇总

...者:刘才权编辑:栾志勇经常被同学和朋友询问机器学习或深度学习入门,有哪些不错的参考资料。老实讲,这个问题在网上随便一搜就是一大把的答案。我自己在最开始的时候也有同样的困惑,同样在搜索... 查看详情

机器学习之深度学习入门(代码片段)

...习资料,学习建议本文用浅显易懂的语言精准概括了机器学习的相关知识,内容全面,总结到位,剖析了机器学习的what,who,when,where,how,以及why等相关问题。从机器学习的概念,到机器学习的发... 查看详情

人工智能第一弹|机器学习和深度学习入门教程

...工智能全套教程。 ● 内容简介:教程主要内容涉及机器学习算法,机器学习的Python实现,深度学习算法,深度学习的 查看详情

tensorflow学习笔记:mnist机器学习入门

...入门MNIST入手。通过这个例子,了解Tensorflow的工作流程和机器学习的基本概念。一 MNIST数据集    MNIST是入门级的计算机视觉数据集,包含了各种手写数字的图片。在这个例子中就是通过机器学习训练一个模型... 查看详情

机器学习入门

目录​​1机器学习概述​​​​2机器学习过程​​​​2.1机器学习与人类学习​​​​3机器学习的分类​​​​3.1无监督学习​​​​3.2监督学习​​​​3.3深度学习​​​​3.4强化学习​​​​4机器学习应用​​1机器学习... 查看详情

机器学习和深度学习资料整理

理论入门(里面的程序有些问题,但理论讲得挺好的)https://www.zybuluo.com/hanbingtao/note/476663tensorflow编程入门https://github.com/aymericdamien/TensorFlow-Examples/tree/master/examples讲到了一些比较有深度的原理性、思想性的东西,耗比较多。手写... 查看详情

机器学习该怎么入门?

在说该怎么入门之前,咱们应该了解一下什么是机器学习。机器学习也叫数据挖掘、模式识别,其定义很多。但简单地说,机器学习要做的就是,现在有些数据(比如你人人网好友和他们的发言),我们要对数据进行处理,希望... 查看详情

深度学习入门案例波士顿房价预测(代码片段)

人工智能,机器学习,深度学习做个简单介绍:三者的关系如图1所示,即:人工智能>机器学习>深度学习。深度学习设计框架:环境查看importpaddleimportnumpyasnpimportosimportmatplotlibimportmatplotlib.pyplotaspltimpor... 查看详情

深度学习课程介绍

课程框架:Python基础机器学习入门知识重点讲解深度学习框架PaddlePaddle入门知识图像识别与深度学习卷积神经网络深度学习进阶在百度AIStudio平台进行项目实践 查看详情