机器学习的学习经验总结!
本文分享了机器学习概念,学习路线和知识体系,希望帮助大家更好地入门机器学习。
Part 1 机器学习相关概念
现如今,关于人工智能(AI)领域出现了很多眼花缭乱的名词,包括机器学习,统计学习,数据科学,数据分析,数据挖掘,深度学习等。这些名词都是什么意思?有什么作用?这里区分介绍下。
如果大家没有接触过人工智能的话,大家可能最熟悉的就是统计学了,在大学期间就学习的概率论就是统计学的相关知识,所以首先我们介绍一下统计学和统计学习。统计学和统计学习并非承接或者包含关系,两者可以看作两个不同的学科,不过统计学习中运用到了很多统计学的相关基础数学知识。
后台回复关键词'210531'可下载完整PPT
在介绍完这两个区别后,我们进一步来看一下机器学习,什么是机器学习,能不能用一句话来概括?
我们用一个脱离具体算法的视角来看:机器学习就是一套计算机机器利用数据来学习规则/映射关系的固定算法/方法。每一种机器用来从数据学习规则的方法,我们都可以视为一种机器学习算法,而机器学习最初的发展是由统计学习方法支撑的,所以很多时候机器学习(除开深度学习之外)和统计学习基本是等同的。
而数据科学,数据分析的概念可以大概解释如下:
对于统计学习和机器学习,深度学习的一些区别和性质,我们可以大体介绍如下:
Part 2 机器学习的整体学习流程
在对于机器学习的名词基本概念有了理解后,我们来介绍一下机器学习的整体学习流程,我们可以把机器学习分为三个板块,数学基础,机器学习算法和编程实践。
但大家需要注意的是,三个版本并非承接关系,也就是说并非学完了数学才能学算法,学了算法才能编程实践——这也是极其不推荐的路径,除非本身是数学系的同学或者今后期望进行相关方面理论研究的同学,否则这条路径是很不友好的。
举个例子,我们其实可以先了解相关算法的概念和应用的方面然后直接学编程实践,在实践过程中学习理论,不清楚的理论知识再补充相应的数学基础,或者先学习相关机器学习算法理论,然后过程中进行实践和相关数学基础补充。
所以,可以把三者视为相互关联的,数学基础有助于我们更好的理解机器学习算法,而对于机器学习算法的理解能指导我们更好第进行编程实践。
数学基础部分
在学习算法理论的同时再进一步补充相关知识,例如决策树,优化方法等就涉及到的信息论中的信息熵,最优化中的梯度下降法,SVM涉及到对偶问题,KKT条件等。
一般机器学习算法理论的数学基础学习到基础数学衍生这一层就可以了,而如果大家有兴趣涉猎机器学习理论的研究,例如可学性,复杂度,泛化性,稳定性等的研究或者变分方法,随机分析方法等相关研究,那大家就需要学习进阶的相关知识了。
机器学习算法部分
对于机器学习算法部分,我们可以把整体的机器学习算法分为传统机器学习部分和深度学习部分,两个部分可以独立的学习,而传统机器学习部分,我们又可以分为多个模型,每个部分也可以单独学习,例如可以学习完最小二乘方法后学习逻辑回归。每个部分都是相对较为独立的。
对于深度学习领域,一般是先学习机器学习的基础网络ANN, CNN, RNN,然后结合一个具体的领域深入研究的。
编程实践部分
对于编程实践部分,对于机器学习的实践来说,个人认为现在Python是最容易上手和对于机器学习的相关学习支持最好的编程语言,大家可以先从python的基础语法入门,了解一些Numpy,Pandas的常规函数,然后学习scikit-learn机器学习算法框架,而对于深度学习部分可以从keras入门,然后在后续的学习中转移到另外的框架。
在学习过程中也建议大家边学习边实践,然后专心学1-2个系统的资料和书籍就好,一点一点学习,不断补充自己的知识体系。
Part 3 机器学习的知识体系
大家对于机器学习有一定的学习后就要形成自己的相关学习体系,同之前的我也把整体的学习体系分为了三部分,机器学习理论,机器学习算法和机器学习实践,对于各个部分,我也列出了推荐和Datawhale团队在相应部分做的项目实践(文字版课程链接见下方),希望能有助于大家的学习。
钥匙书(机器学习理论导引补充):https://github.com/datawhalechina/key-book
南瓜书(周志华西瓜书详细解读补充):https://github.com/datawhalechina/pumpkin-book
Easy-RL(深度强化学习教程):https://github.com/datawhalechina/easy-rl
LeeML-Notes(李宏毅老师-机器学习课程笔记):https://github.com/datawhalechina/leeml-notes