[Coursera] 机器学习入门
[Coursera] 机器学习入门
@斯坦福公开课 Machine Learning 学习笔记
基本思想
机器学习(machine learning)是一种方法或算法,它能够通过“学习”,来解决一些特定的问题。
接下来,我将以具体的实例,阐述机器学习的产生和设计过程。
以认人识物为例,只要你告诉一个之前不知道苹果的人“这是苹果,那是苹果,那也是苹果”,当你再拿一个新的苹果,问他是什么,他便能够回答出“这是苹果”。
这对于人来说,是一个很自然,不需要什么努力就能完成的任务,但这对机器却不是。如果要让机器能够认出这个苹果,我们要先思考 “我们人,是怎么认出这个苹果的”。
将认苹果的过程抽象出来,我们可以得到以下过程:
即人眼看到苹果,获取苹果的图像传递给大脑,大脑对图像进行判断,得出结果。将此过程再抽象扩展,我们得到更一般的过程。
即给定一个或多个输入,通过一个处理器处理,得到一个或多个输出。
此即人对此类问题处理方法的概况,也即“人是怎么认出苹果来的”。同时,这个过程也给了我们要让机器认出苹果的方法。即解决两个问题:
- 如何获取输入
- 如何处理输入,并给出输出
不同的问题有不同的获取输入的办法,以认苹果为例,利用数码照相机对苹果成像得到照片(即一系列像素)即可作为输入。通常来说,输入的获取较为容易(当然也不全是这样),而处理部分则相对困难。
对于处理,也有很多不同的办法,其主要思想在于构造一个函数,能够将不同输入映射到不同的输出上去。
然而我们不可能针对每个问题都设计一个算法,认苹果一个,认桃子一个这样做,我们需要让机器学习,让它自己设计出这个“算法”,我们要做的就是
- 提供给机器学习的办法
- 提供给机器评估算法好坏的办法
至此,我们最初“让机器认物品(苹果)”这个问题就转换为,如何让机器通过一系列输入,在这个例子中为物品的照片,学习出识别的算法 和 如何评估算法的优劣,好让机器调整算法。
至此,我们便清楚了机器学习究竟在做什么以及它大体上是如何做的。
下面简单介绍一种模型:
解决模型
线性回归
线性回归分为单变量线性回归和多变量线性回归。其中单变量线性回归就是大家初高中求回归直线基本一样,而多变量就是将回归直线扩展到平面,空间,高维空间。
我们知道线性回归就是用一个线性函数去拟合给定的一个数据集,就像这样。
(图片来自CS229)
我们求线性回归就是要求那些参数
它通过一个给定的初始参数,利用一个评估函数指导如何修正参数,不断迭代,从而求出最终参数。
评估函数(cost function):
一些建议
复习线性代数
机器学习的绝大多数算法,都要利用矩阵向量化(vectorization)来加快运算速度,所以一定要熟练掌握将各种加法乘法运算,转换为矩阵运算。
如
编程语言的选择
初学者不必强求自己实现各种机器学习算法,可以多利用现有的第三方库。
不建议一开始就用 Java, C#, C, C++ 进行学习,甚至Python也不要
建议使用 matlab 或 octave
它们只需简单的几行代码就能实现复杂的功能。