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

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

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

古语说入门,就一句话

师傅领进门,修行在个人

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

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

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

第一步、找到兴趣

很多同学入门深度学习,做的第一件事往往是上知乎、搜索引擎找相关资源,或者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相关知识,欢迎关注我的公众号“图灵的猫”~

原文地址:https://www.cnblogs.com/y1ran/p/12169132.html

时间: 2024-11-02 01:11:38

「03」机器学习、深度学习该怎样入门?的相关文章

【转载】机器学习——深度学习(Deep Learning)

机器学习——深度学习(Deep Learning) 分类: Machine Learning2012-08-04 09:49 142028人阅读 评论(70) 收藏 举报 algorithmclassificationfeaturesfunctionhierarchy Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,最近研究了机器学习中一些深度学习的相关知识,本文给出一些很有用的资料和心得. Key Words:有监督学习与无监督学习

机器学习深度学习自然语言处理学习

机器学习/深度学习/自然语言处理学习路线 原文地址:http://www.cnblogs.com/cyruszhu/p/5496913.html 未经允许,请勿用于商业用途!相关请求,请联系作者:[email protected]转载请附上原文链接,谢谢. 1 基础 l  Andrew NG 的 Machine Learning视频. 连接:主页,资料. l  2.2008年Andrew Ng CS229 机器学习 当然基本方法没有太大变化,所以课件PDF可下载是优点. 中文字幕视频@网易公开课

机器学习&深度学习资料

机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1) 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2) <机器学习&&深度学习> 视频课程资源

[转载]机器学习&amp;深度学习经典资料汇总,全到让人震惊

自学成才秘籍!机器学习&深度学习经典资料汇总 转自:中国大数据: http://www.thebigdata.cn/JiShuBoKe/13299.html [日期:2015-01-27] 来源:亚马逊  作者: [字体:大 中 小] 小编都深深的震惊了,到底是谁那么好整理了那么多干货性的书籍.小编对此人表示崇高的敬意,小编不是文章的生产者,只是文章的搬运工. <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感

机器学习深度学习领域参考书 《TensorFlow技术解析与实战》PDF下载

<TensorFlow技术解析与实战> 机器学习深度学习领域参考书 包揽TensorFlow1.1的新特性 人脸识别 语音识别 图像和语音相结合等热点一应俱全 李航 余凯等人工智能领域专家倾力推荐目录第一篇 基础篇下载地址:https://pan.baidu.com/s/1iKDExWOgCuvxyqsF12abFg备用地址:https://u1593575.ctfile.com/fs/1593575-330753940 TensorFlow?是谷歌公司开发的深度学习框架,也是目前深度学习的主

AI全面入门经典书籍-pytho入门+数学+机器学习+深度学习(tensorflow)一次性打包

百度网盘:https://pan.baidu.com/s/1SShwxxBIHB_rynF_jUjApA 一.内容清单: 1..python入门书籍:?? ??? ?python基础教程.pdf?? ??? ?python语言及其应用.pdf?? ??? ?python语言入门.pdf?? ??? ?像计算机科学家一样思考python第2版.pdf ?? ??? ?备注:自己找一本精读,其他辅助阅读,会有不一样的效果.?? ? 2.数学:?? ??? ?同济高等数学 第六版 上册.pdf?? ?

对比《Keras图像深度学习实战》PDF+《深度学习技术图像处理入门》PDF代码分析

将深度学习技术应用于图像处理,推荐阅读<深度学习技术图像处理入门>,基于理论讲解,由浅入深地引出若干个经典案例,讲解当前深度神经网络在图像处理领域的应用.提供了基于云GPU容器(Docker)的完整在线开发环境,方便初学者直接学习核心代码. <深度学习技术图像处理入门>以通俗易懂的语言简要讲解机器学习的核心概念,通过比较传统机器学习和深度神经网络的区别,引入深度神经网络的应用领域,将一个完整的深度神经网络的复杂结构拆成输入处理.模型元件以及模型优化三个子块,并详细说明如何将深度神经

入门实战《深度学习技术图像处理入门》+《视觉SLAM十四讲从理论到实践》

学习图像识别处理,想在数据分析竞赛中取得较高的排名,看了<深度学习技术图像处理入门>电子书,一边看电子书一边做标记,对配套的代码也做了测试,收获颇多. 从机器学习.图像处理的基本概念入手,逐步阐述深度学习图像处理技术的基本原理以及简单的实现. 学习理论后做实验,使用卷积神经网络进行端到端学习,构建深度卷积神经网络,使用循环神经网络改进模型,评估模型,测试模型.最关键的是可以将模型运用于实战之中,将深度学习模型导入到工程中,数据类型转换函数,实施CAM可视化,这是我最需要的. 视觉和图形学真是一

深度学习框架pytorch入门与实践(一):torch的基本使用

主要内容: 1.tensor的定义 2.tensor与numpy的相互转换 3.tensor使用cuda加速 4.tensor封装成Variable后的使用 # -*- coding: utf-8 -*- """ Created on Thu Aug 8 16:40:47 2019 pytorch快速入门教程 参考书籍:<深度学习框架pytorch:入门与实践> @author: zhaoqidong """ import torch