week2

2.1 模型表示

h (x)=θ0 + θ1x 代表学习算法的解决方案或函数也称为假设

2.2 代价函数

代价函数
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h 0 ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}{(h_0(x^{(i)})-y^{(i)})^2} J(θ0​,θ1​)=2m1​i=1∑m​(h0​(x(i))−y(i))2
最小,即减少实际值和预测值的误差

我们绘制一个等高线图

week2

可以看到三维空间存在使 $ J(\theta_0,\theta_1) $最小的点

代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。

2.3 代价函数的直观理解I

week2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsHiaira-1634875028129)(http://www.ai-start.com/ml2014/images/2c9fe871ca411ba557e65ac15d55745d.png)]

2.4 代价函数的直观理解II

等高线图

week2

2.5 梯度下降

梯度下降背后的思想是:开始时我们随机选择一个参数的组合( θ 0 , θ 1 , . . . , θ n \theta_0,\theta_1,...,\theta_n θ0​,θ1​,...,θn​),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

week2

批量梯度下降(batch gradient descent)算法的公式为:

week2

其中 α \alpha α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

2.6 梯度下降的直观理解

梯度下降如下:

$\theta_j := \theta_j - \alpha\frac{\partial}{\partial \theta_j}J(\theta) $​

描述:对$\theta 赋 值 , 使 得 赋值,使得 赋值,使得J(\theta) 按 梯 度 下 降 最 快 方 向 进 行 , 一 直 迭 代 下 去 , 找 到 局 部 最 小 值 。 其 中 按梯度下降最快方向进行,一直迭代下去,找到局部最小值。其中 按梯度下降最快方向进行,一直迭代下去,找到局部最小值。其中\alpha$是学习率,决定我们沿着让代价函数下降程度最大的方向向下迈出的步子有多大。

让我们来看看如果 α \alpha α太小或 α \alpha α太大会出现什么情况:

如果 α \alpha α太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果 α \alpha α太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。

如果 α \alpha α太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果 α \alpha α太大,它会导致无法收敛,甚至发散。

梯度下降算法,你可以用它来最小化任何代价函数,不只是线性回归中的代价函数

2.7 梯度下降的线性回归

梯度下降算法和线性回归算法比较如图:

week2

对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:

$\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)=\frac{\partial}{\partial \theta_j}\frac{1}{2m}\sum_{i=1}^m (h_0(x{(i)})-y{(i)})^2 $

j = 0时:$\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}m(h_0(x{(i)})-y^{(i)})) $

j = 1时:$\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1)=\frac{1}{m}\sum_{i=1}m(h_0(x{(i)})-y^{(i)})\cdot x^{(i)}) $

批量梯度下降,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有m个训练样本求和。

如果你之前学过线性代数,正规方程(normal equations)的方法,在不需要多步梯度下降的情况下,也能解出代价函数的最小值

实际上在数据量较大的情况下,梯度下降法比正规方程要更适用一些。

上一篇:关于对H264码流的PS的封装的相关代码实现


下一篇:【笔记】凸优化1