引言
什么是机器学习
来自卡耐基梅隆大学的Tom Mitchell提出,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅有了经验E后,经过评判,程序在处理T时的性能有所提升。
监督学习(Supervised Learning)
给学习算法一个由“正确答案”组成的数据集,再根据这些样本做出预测,通常分为回归(连续的输出),分类(离散的结果)。
无监督学习(Unsupervised Learning)
无监督学习中的数据集没有任何的标签,或者已有的标签都是相同的,其目的是找到数据中的结构,如聚类算法。
单变量线性回归(Linear Regression)
模型表示(Model Representation)
描述回归问题的标记
- m 训练集中实例的数量
- x 输入特征/输入变量
- y 目标变量/输出变量
- (x,y) 训练集中的实例
- $(x^{(i)},x^{(i)})$ 第i个观察实例
- h 学习算法的解决方案,假设(hypothesis)
如何表达h
对于单变量线性回归问题,一种可能的表达方式为:代价函数(Cost Function)
建模误差(modeling error):模型所预测的值与训练集中实际值之间的差距
代价函数直观理解(Intuition)
最原始的假设函数是
与之对应的代价函数是
可以简化为求
的最小值
此处$\theta_1$是才是变量,以一个初中生的视角来看,这个函数的图像是一个开口向上的二次函数,那么它必定存在最小值,如果假设函数加上$\theta_0$,$\theta_0$的变化会让原始代价函数(即开口向上的二次函数)图像在三维空间里发生变化,代价函数的图像会如图所示
梯度下降(Gradient Descent)
梯度下降使用来求函数最小值的算法
思想
随机选择一个参数的组合$(\theta_0,\theta_1,…,\theta_n)$,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。持续这么做直到得到一个局部最小值(local minimum)。
直观理解(Intuition)
可以理解从山上以小碎步尽快下山,尽快下山的条件是每一个小碎步都是可迈出的步伐中陡峭的一步。
怎么才算是最陡峭的呢?回到最原始的代价函数来看,这是一个二次函数,其实只有一种走法,就是按照让代价函数减小的方向去走,这个方向的变化可以定义为
这样定义的原因:
当求导为负,代表随着$\theta$增大,代价函数在减小,在以上定义中$\theta$会变大,达到了目的,若求导为正亦然,另外$\alpha$是学习率,决定了下山每一步的大小。
那如果有多个参数$\theta$呢?如何才是最陡峭的呢?可以将每个$\theta$理解为影响下山方向的因素,当每个$\theta$都按照让代价函数减小的方向去变化时,这时下山速度是最快的,即批量梯度下降。
repeat until convergence$\lbrace$
$\quad\theta_j = \theta_j - \alpha\frac{\delta}{\delta\theta_j}J(\theta_j)\quad$
$\rbrace$
关于梯度下降微妙的问题
应该同时更新每个$\theta$,即
$\alpha$太小,迭代次数会很多,效率太低,$\alpha$太大,可能无法收敛,因为步子太大,会跨过最低点,此后就一直不断跨过最低点而无法收敛。
线性回归的梯度下降
对代价函数求导
算法改写为:
Repeat$\lbrace$
$\rbrace$
线性代数回顾
- 加法和标量乘法
- 矩阵乘法不满足交换律,满足结合律
- 逆,转置