Machine Learning - Andrew Ng on Coursera (Week 1)

Machine Learning - Andrew Ng on Coursera (Week 1)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第一周的课程,主要内容包括有监督式学习和无监督式学习、线性回归、成本函数、梯度下降算法等一些基础概念。

有监督式学习和无监督式学习

机器学习可以简单地理解为是从数据中学习一个映射函数$f(x) = y$,使得对于新的输入数据$x^{(i)}$预测其对应的$y^{(i)}$。机器学习的算法大致可以分为有监督学习(Supervised Learning)无监督学习(Unsupervised Learning)两种。两者的区别主要在于在学习的过程中训练集数据是否提供了因变量$y$的信息,如果提供了$y$的信息,那么该过程就是有监督学习,否则就是无监督学习。典型的有监督式学习如分类算法、回归算法,分别针对的是离散值和连续值的预测;无监督式学习如聚类算法等,在搜索引擎,生物基因等领域也有着广泛的应用。

如何对无监督学习的结果进行评价,这是一个很好的问题。通常是通过定义评价函数来对无监督学习算法的效果进行评价的,但在实际问题中,评价函数并不完全是数据的客观评价,而是结合问题求解目标的一种人为定义。半监督学习(Semi-Superviesed Learning)则是主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。

在整个课程中主要还是以介绍有监督学习为主,但是从有监督学习的学习中也可以从中看出机器学习对问题的切入点,慢慢也可以体会到机器学习是怎样定义一个学习任务的然后又是怎样进行学习的。

线性回归的模型表示及成本函数

线性回归(Linear Regression)为例切入整个课程的学习,将机器学习的主干任务串联起来。可以将实际问题抽象为具体的数学模型,具体建模过程如下图所示:

逻辑回归模型流程图

课程中以对房子价格的预测为例,问题是:给定一批已知的房子大小和价格的对应关系数据,如何对一个给定大小的房子进行估值。模型大概可以分解为:

  1. 假设(Hypothesis):$h_\theta(x) = \theta_0 + \theta_1 x$.
  2. 参数(Parameters):$\theta_0$和$\theta_1$.
  3. 成本函数(Cost Functions):$J(\theta) = \frac{1}{2m}\sum^n_i{(h_{\theta}(x^{(i)}) - y^{(i)})^2}$
  4. 优化目标:$\min J(\theta)$

以上也是对一个机器学习问题的一般建模思路。

梯度下降算法

当然,对于线性回归问题可以直接利用数值求得解析解,但这里引入了梯度下降法(Gradient Descent Algorithm)展示机器学习算法的一般过程。梯度下降法的框架很简单,随机选择一个起点,然后按照梯度相反方向迭代直到收敛,公式如下:

$$ \theta_j = \theta_j - \alpha \frac{\partial}{\partial\theta_j} J(\theta_0, \theta_1) $$

其中$\alpha$是学习速率(Learning Rate),如果设置过小,算法迭代过程会相对很慢;而如果设置过大,算法可能无法达到最小值甚至无法收敛。课程中介绍了一种方法,即初始学习速率较大,随着向极值点靠近,学习速率也逐渐减小。

为什么是负梯度方向呢?梯度是函数的每个参数的偏导数的向量,而这个向量方向是函数变化率最快的点。如果沿着梯度方向,那么函数会以最快的速率增长;而我们的目的是要快速迭代使用得函数尽可能达到最小值,那么必然是沿着负导数的方向更新参数。

另外值得注意的是,在线性回归问题中,成本函数的3D图像是呈碗状的,即有全局最优。在其他问题的成本函数还可能存在除全局最优以外的极值点,也可称为局部最优。在这种情况下,算法可能会陷入局部最优的麻烦,这时可以采用随机选取其他的起始点再次利用梯度下降算法求解,比较两次结果取其中优者。

线性代数回顾

线性代数对于计算机科学来讲地位是非常重要的。Andrew和吴金闪老师都指出在计算矩阵乘法时,采用现有的矩阵运算包比自己用for循环写出来的效率要高。吴金闪老师还提到了Strassen算法,将大矩阵拆分成若干个小矩阵进行运算会降低求解的时间复杂度。同时,在诸如奇异值分解(Singular Value Decomposition)等算法中,线性代数有着广泛的应用。可以参考Stanford cs224d线性代数Review,了解一些线代的基础概念,主要包括了:

  • 向量和矩阵
  • 矩阵加法和标量乘法
  • 矩阵和向量相乘
  • 矩阵和矩阵相乘
  • 矩阵的转置和逆

若有不当之处,请大家指正,谢谢!接下来,将会follow Stanford CS224d: Deep Learning for Natural Language Processing这门课程,也会整理并发布学习笔记的,欢迎一起学习。^_^

文章目录
  1. 1. Machine Learning - Andrew Ng on Coursera (Week 1)
    1. 1.1. 有监督式学习和无监督式学习
    2. 1.2. 线性回归的模型表示及成本函数
    3. 1.3. 梯度下降算法
    4. 1.4. 线性代数回顾
,