和Andrew Ng散步在机器学习花园 - 第一周

写在前面 - 课程最前面整个课程中我们将学习包括监督学习和非监督学习在内的诸多算法,以及如何使用它们

由于课程前部分内容都是在两个月前学完的,因此写文章时视频没能完全再看一遍,由于时间问题也就不举例了。如有疏漏补充欢迎指正,期望和有心人一起进步!

机器学习概念

关于机器学习还没有一个统一绝对的定义, 但我们仍然可以获得较为清晰的理解:

“Field of study that gives computers the ability to learn without being explicitly programmed.”
—Arthur Samuel

而更加现代的说法则是:

“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.”
—Tom Mitchell

其中

  • E = 经验,如下棋获得的经验
  • T = 任务,即下棋
  • P = 概率,下棋中获胜的概率

监督学习

拥有数据来源和明确的数据输出(类型),且两者间存在关联

  • 回归:数据用于连续方程,数据输出也是连续性的
  • 分类:数据用于离散方程,数据输出也是离散性的

非监督学习

在不知道数据输出结果(类型/值)情况下,使用聚类等但是解决问题(一般为分类),这种情况下,输出结果无法向算法给予反馈

模型及代价函数

参数介绍

  • x(i) = 输入变量
  • y(i) = 输出变量
    输出变量y取有限固定值,为分类问题;取连续值,为回归问题
  • (x(i), y(i)) = 训练样本
  • (x(i), y(i)), i=1, 2, 3,…, n = 训练集
  • XX = 输入集
  • YY = 输出集
  • hh = 假设
  • m = 数据集样本数量

模型展示

其中反馈过程没有表示出来,只反映了一次单向推导过程
和Andrew Ng散步在机器学习花园 - 第一周

代价函数

用来评估假设方程(算法的一部分,可改变)的准确度
假设方程hθ(xi)=θ0+θ1xih_\theta (x_{i}) = \theta_0+\theta_1x_{i}
代价函数J(θ0,θ1)=12mi=1m(y^iyi)2=12mi=1m(hθ(xi)yi)2J(\theta_0, \theta_1) = \dfrac {1}{2m} \displaystyle \sum _{i=1}^m \left ( \hat{y}_{i}- y_{i} \right)^2 = \dfrac {1}{2m} \displaystyle \sum _{i=1}^m \left (h_\theta (x_{i}) - y_{i} \right)^2
其中1/2只是为了便于计算梯度下降, 我们需要选择θ0,θ1\theta_0,\theta_1使得假设函数更加靠近数据集,如下:
和Andrew Ng散步在机器学习花园 - 第一周
代价函数的重要目标是寻找全局最小值,找到全局最小值,就找到了最准确的参数模型,也就找到了假设方程的最佳参数解,预测的结果也最准确(注意不是找到了最佳算法),因此我们需要避免参数收敛于局部变量的情况

一元函数寻找全局最小值 - θ1\theta_1

左图中,选择不同的参数值,从而获得不同的假设方程曲线,在右图画出J(θ1)J(\theta_1)
和Andrew Ng散步在机器学习花园 - 第一周
和Andrew Ng散步在机器学习花园 - 第一周
取不同θ1\theta_1获得不同代价函数(没有θ0\theta_0),画图找全局最小值

二元函数寻找全局最小值 - θ0,θ1\theta_0, \theta_1

使用等高线图,等高线上的代价函数值相同,原理同上
和Andrew Ng散步在机器学习花园 - 第一周
等高线中心坐标即为全局最小值参数解(包括θ0\theta_0

梯度下降算法

寻找全局最小值的通用方法,对代价函数进行了求偏导运算

公式原理

使用梯度下降算法,优化θ0,θ1\theta_0, \theta_1,给机器这个公式,让它自己完成算法任务:
θj:=θjαθjJ(θ0,θ1)\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1)
θj(converge)=J(θ0,θ1)\theta_j 收敛(converge) = J(\theta_0, \theta_1)取全局最小值
和Andrew Ng散步在机器学习花园 - 第一周
三维图示原理,此时收敛点在局部最小值,下降步长由α\alpha确定

参数分析

和Andrew Ng散步在机器学习花园 - 第一周

  • θ1\theta_1增加,此处代价函数斜率为负
  • θ1\theta_1减小,此处代价函数斜率为正

和Andrew Ng散步在机器学习花园 - 第一周

  • α\alpha越小,下降步长越短,不容易滑落到局部最小值,但是计算量大,时间长
  • α\alpha越大,下降步长越长,更易找到局部最小值及偏离,计算成本小,时间短
  • α\alpha取任何值,理论上都有可能找到局部最小值,正确之道在中庸~

和Andrew Ng散步在机器学习花园 - 第一周

  • α\alpha选定后不再需要改变,因为随着梯度下降的进行步长也会逐渐减小

批次梯度下降

重复这组公式直到到达收敛点(注意θ1\theta_1公式对偏导项还要乘Xi项,如果假设方程还有二次项呢?):

θ0:=θ0α1mi=1m(hθ(xi)yi)\theta_0 := \theta_0 - \alpha \frac{1}{m} \sum\limits_{i=1}^{m}(h_\theta(x_{i}) - y_{i})
θ1:=θ1α1mi=1m((hθ(xi)yi)xi\theta_1 := \theta_1 - \alpha \frac{1}{m} \sum\limits_{i=1}^{m}((h_\theta(x_{i}) - y_{i}) x_{i}

每次进行梯度下降时都应该使用的是相同的,前一组的参数,即进行同步升级
和Andrew Ng散步在机器学习花园 - 第一周
每前进一步,对每个数据进行更新时都要用到前一组的所有数据,进行批量更新,所以叫做批次梯度下降

在线性回归中只有一个全局最小值,因此不存在梯度下降误至局部最小值的问题

线性代数基础 - 略