转载自:http://1.kaopuer.applinzi.com/?p=110
今天分享了Coursera上Andrew Ng的Machine Learning第一周的课程,主要内容有如下,详细内容可以参考文末附件:
有监督式学习和无监督式学习
机器学习可以简单地理解为是从数据中学习一个映射函数,使得对于新的输入数据[Math Processing Error]预测其对应的[Math Processing Error]。机器学习的算法大致可以分为有监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)两种。两者的区别主要在于在学习的过程中训练集数据是否提供了因变量[Math Processing Error]的信息,如果提供了[Math Processing Error]的信息,那么该过程就是有监督学习,否则就是无监督学习。典型的有监督式学习如分类算法、回归算法,分别针对的是离散值和连续值的预测;无监督式学习如聚类算法等,在搜索引擎,生物基因等领域也有着广泛的应用。
婧文提出,如何对无监督学习的结果进行评价,这是一个很好的问题。通常是通过定义评价函数来对无监督学习算法的效果进行评价的,但在实际问题中,评价函数并不完全是数据的客观评价,而是结合问题求解目标的一种人为定义。半监督学习(Semi-Superviesed Learning)则是主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。
在整个课程中主要还是以介绍有监督学习为主,但是从有监督学习的学习中也可以从中看出机器学习对问题的切入点,慢慢也可以体会到机器学习是怎样定义一个学习任务的然后又是怎样进行学习的。
线性回归的模型表示及成本函数
以线性回归(Linear Regression)为例切入整个课程的学习,将机器学习的主干任务串联起来。可以将实际问题抽象为具体的数学模型,具体建模过程如下图所示:

课程中以对房子价格的预测为例,问题是:给定一批已知的房子大小和价格的对应关系数据,如何对一个给定大小的房子进行估值。模型大概可以分解为:
- 假设(Hypothesis):[Math Processing Error].
- 参数(Parameters):[Math Processing Error]和[Math Processing Error].
- 成本函数(Cost Functions):[Math Processing Error]
- 优化目标:[Math Processing Error]
以上也是对一个机器学习问题的一般建模思路。
梯度下降算法
当然,对于线性回归问题可以直接利用数值求得解析解,但这里引入了梯度下降法(Gradient Descent Algorithm)展示机器学习算法的一般过程。梯度下降法的框架很简单,随机选择一个起点,然后按照梯度相反方向迭代直到收敛,公式如下:
[Math Processing Error]
其中[Math Processing Error]是学习速率(Learning Rate),如果设置过小,算法迭代过程会相对很慢;而如果设置过大,算法可能无法达到最小值甚至无法收敛。课程中介绍了一种方法,即初始学习速率较大,随着向极值点靠近,学习速率也逐渐减小。
另外值得注意的是,在线性回归问题中,成本函数的3D图像是呈碗状的,即有全局最优。在其他问题的成本函数还可能存在除全局最优以外的极值点,也可称为局部最优。在这种情况下,算法可能会陷入局部最优的麻烦,这时可以采用随机选取其他的起始点再次利用梯度下降算法求解,比较两次结果取其中优者。
线性代数回顾
线性代数对于计算机科学来讲地位是非常重要的。Andrew和吴金闪老师都指出在计算矩阵乘法时,采用现有的矩阵运算包比自己用for
循环写出来的效率要高。吴金闪老师还提到了Strassen算法,将大矩阵拆分成若干个小矩阵进行运算会降低求解的时间复杂度。同时,在诸如奇异值分解(Singular Value Decomposition)等算法中,线性代数有着广泛的应用。因此,本课程第一周的补充材料里面还对线性代数的一些基础概念进行了讲解,主要包括了:
- 向量和矩阵
- 矩阵加法和标量乘法
- 矩阵和向量相乘
- 矩阵和矩阵相乘
- 矩阵的转置和逆
若有不当之处,请大家指正,谢谢!
附本次分享演示文档:ML-Coursera-Week1