常用符号:
m : 训练样本的数量
x : 输入变量/特征
y : 输出变量/预测的目标变量
(x, y): 表示一个训练样本
$$(x^{(i)}, y^{(i)})$$ : 表示特殊训练样本/第i个训练样本
监督学习的工作过程:
在线性回归中我们要解决的是一个最小化的问题
Idea: 选择模型参数 \(\theta_0, \theta_1\), 使得对于任意的训练样本 (x, y), \(h_\theta\) 尽可能接近 y
线性回归的整体目标函数:
\[minimize_{\theta_0,\theta_1} \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2 \\ h_\theta(x^i) = \theta_0 + \theta_1x^{(i)} \]代价函数:
数学定义:
\[J(\theta_0, \theta_1) = \frac{1}{2m}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2 \\ minimize_{\theta_0,\theta_1} J(\theta_0, \theta_1) \]代价函数也被称作平方误差函数,有时也被称为平方误差代价函数
平方误差代价函数可能是解决回归问题最常见的手段了
为了更好地使代价函数 \(J(\theta_i)\) 可视化,先使用一个简化的 假设函数,即让 \(\theta_0 = 0\)
代价函数越小,\(\theta_0, \theta_1\) 对应的假设函数确定的模型与 训练集中的数据拟合得越好
梯度下降算法可以用于 代价函数以及更一般函数的 最小化
问题概述:
我们有一个函数 \(J(\theta_0, \theta_1)\), 也许这是一个线性回归的, 也许是一个需要最小化的其他函数
我们需要一个算法,来最小化函数 \(J(\theta_0, \theta_1)\)
梯度下降的思路:
1.开始给定 \(\theta_0, \theta_1\) 一些初始值, 初始值是什么其实并不重要,但通常的选择是将 \(\theta_0, \theta_1\) 初始化为0 (Start with some \(\theta_0, \theta_1\))
2.Keep changing \(\theta_0, \theta_1\) to reduce \(J(\theta_0, \theta_1)\) until we hopefully end up at a minimum
梯度下降算法的定义:
进行梯度下降的时候一定要同时更新 $$\theta_0, \theta_1$$
α(学习率),永远是一个正数,控制我们以多大的幅度更新参数 \(θ_j\)
如果 α 太小,梯度下降会很慢
如果 α 太大,梯度下降可能会越过最低点,甚至无法收敛或者发散
如果 \(θ_1\) 已经处在一个局部最优点,你认为下一步梯度下降会怎样?
局部最优点的导数是 0 ,如果已经在局部最优点,\(θ_1\)将不再改变
即使学习速率 α 保持不变,梯度下降法也可以收敛到局部最低点
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度;
这是因为当我们接近局部最低点时,根据定义,在局部最低点的导数等于零,所以
当我们接近局部最低点时,导数值会自动变得越来越小;
所以梯度下降将自动采取较小的幅度,这就是梯度下降的运行方式。
将梯度下降应用到线性回归中:将梯度下降和代价函数结合,得到线性回归算法,它可以用直线模型拟合数据
梯度下降算法:
repeat until convergence {
\(\theta_j := \theta_j - α \frac{\partial}{\partial J(\theta_j)}J(\theta_0, \theta_1)\)
\((for \quad j=1 \quad and \quad j=0)\)
}
线性回归模型:
\[h_\theta = \theta_0 + \theta_1x \\ J(\theta_0, \theta_1) = \frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \]将梯度下降应用到最小化方差代价函数中,关键是导数项
推导过程:
\[\frac{\partial}{\partial \theta_j}J(\theta_0, \theta_1) \\ = \frac{\partial}{\partial \theta_j}\frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 \\ =\frac{\partial}{\partial \theta_j}\frac{1}{2m} \sum_{i=1}^{m}(\theta_0 + \theta_1x - y^{(i)})^2 \]\[j=0:\frac{\partial}{\partial \theta_0}J(\theta_0, \theta_1) = \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)}) \\ j=1:\frac{\partial}{\partial \theta_1}J(\theta_0, \theta_1) = \frac{1}{m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x^{(i)} \\ \]线性回归算法:
repeat until convergence {
}
同时更新 \(\theta_0, \theta_1\)
说明: 线性回归的代价函数,是一个弓形函数,术语叫做凸函数,这个函数没有局部最优解,
只有一个全局最优解。当计算这种代价函数的梯度下降时,只要时使用梯度下降,
它总是会收敛到全局最优Batch梯度下降算法,意味着每一步梯度下降,我们都历遍了整个训练集的样本。
所以在梯度下降中,当计算偏导数时,我们计算总和。在每一个单独的梯度下降
中,我们最终计算m个训练样本的总和。