一、概念理解
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
机器学习有下面几种定义:(一个讲的比较好的文章)
- “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。
- “机器学习是对能通过经验自动改进的计算机算法的研究”。
- “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”
一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
二、应用
机器学习已经有了十分广泛的应用,例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人运用。
三、划分情况
机器学习不仅有一种方法,实现它的方法多种多样。这里所说的方法,在程序语言中,我们叫做算法。
1、目前所有机器学习方法大致上可以被分为5类模式:
1)、监督学习模式:supervised learning
如果在学习过程中,我们不断的向计算机提供数据和这些数据对应的值,比如说给计算机看猫和狗的图片,告诉计算机那些图片里是猫,那些是狗,然后在让它学习去分辨猫和狗。通过这种指引的方式,让计算机学习我们是如何把这些图片数据对应上图片所代表的物体。也就是让计算机学习这些标签可以代表那些图片。这种学习方式叫做“监督学习”。预测房屋的价格,股票的涨停同样可以用监督学习来实现。大家所熟知的神经网络同样是一种监督学习的方式。
2)、非监督学习模式:unsupervised learning
同样在这种学习过程中,我只给计算机提供猫和狗的图片,但是并没有告诉它那些是猫那些是狗。取而代之的是,我让它主机去判断和分类。让它自己总结出这两种类型的图片的不同之处。这就是一种“非监督学习”,在这种学习过程中,我们可以不用提供数据所对应的标签信息,计算机通过观察各种数据之间的特性,会发现这些特性背后的规律。这些规律也就是非监督方法所学到的东西。
3)、半监督学习模式:semi-supervised learning
还有一种方法,综合了监督学习和非监督学习的特征,这种叫作“半监督学习”,它主要考虑如何利用少量有标签的样本和大量的没有标签样本进行训练和分类。
4)、遗传算法模式:genetic algorithm
还有一种和强化学习类似的学习方法,叫做遗传算法。这种方法是模拟我们熟知的进化理论,淘汰弱者,适者生存。通过这样的淘汰机制去选择最优的设计或模型。比如开发者所开发的计算机学会超级玛丽,最开始的马里奥1代可能不久就牺牲了,不过系统会基于1代的马里奥随机生成2代。然后在保存这些代里面最厉害的马里奥。淘汰掉比较弱的马里奥代,然后再次基于强者“繁衍和变异”,生出更强的马里奥,这也就是遗传算法的基本思想。
5)、强化学习模式:reinforcement learning
在规划机器人的行为准则方面,一种机器人学习方法叫作“强化学习”,也就是把计算机丢到一个对于它完全陌生的环境或者让它完成一项从未接触过的任务。它自己回去尝试各种手段。最后让自己成功使用这一个陌生的环境。或者学会完成这件任务的方法途径。比如我想训练机器人去投篮,我们只需要给它一个球。并告诉它你投进了我给你记一分,让它自己去尝试各种各样的投篮方法。在开始阶段,它的命中率可能会非常低。不过它回像人类一样主机总结和学习投篮失败或成功的经验。最后达到很高的命中率。GOOGLE 开发的ALPHAGO 也就是应用了之一种学习方式。
2、机器学习根据算法类型,可以划分为:
-
传统统计学习:基于数学模型的机器学习方法。包括
SVM
、逻辑回归、决策树等。这一类算法基于严格的数学推理,具有可解释性强、运行速度快、可应用于小规模数据集的特点。
-
深度学习:基于神经网络的机器学习方法。包括前馈神经网络、卷积神经网络、递归神经网络等。
这一类算法基于神经网络,可解释性较差,强烈依赖于数据集规模。但是这类算法在语音、视觉、自然语言等领域非常成功。
3、小结
没有免费的午餐定理(No Free Lunch Theorem:NFL):对于一个学习算法A
,如果在某些问题上它比算法B
好,那么必然存在另一些问题,在那些问题中B
比A
更好。因此不存在这样的算法:它在所有的问题上都取得最佳的性能。因此要谈论算法的优劣必须基于具体的学习问题。