##Model Representation【模型表示】
在一个房价预测中,我们根据房屋大小的面积来估计房价,诺房屋面积与价格满足以下关系
由图可知为监督学习,诺一种可能的表达方式为:$h_\theta \left( x \right)=\theta_{0} + \theta_{1}x$,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归(Linear Regression with One Variable)问题。
图为用单变量线性回归模型来预测面积为1250的房价
我们将要用来描述这个回归问题的标记如下:
$m$ 代表训练集中实例的数量
$x$ 代表特征/输入变量
$y$ 代表目标变量/输出变量
$\left( x,y \right)$ 代表训练集中的实例
$({{x}^{(i)}},{{y}^{(i)}})$ 代表第$i$ 个观察实例
$h$ 代表学习算法的解决方案或函数也称为假设(hypothesis)
Cost Function【代价函数】
我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。
在单变量线性回归中,即使得代价函数(Cost Function) $J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}$最小。
Cost Function - Intuition I【代价函数的直观理解I】
在单变量线性回归中,存在点$(1,1),(2,2),(3,3)$,在$\theta_0=0$的情况下,表达式为$h(x)=\theta_1x$来估计
$\theta_1=1$时:
$\theta_1=\frac{1}{2}$时:
$\theta_1=0$时:
描绘$J(\theta_1)-\theta_1$图得:
Cost Function - Intuition II【代价函数的直观理解II】
在$J \left( \theta_0, \theta_1 \right)$、$\theta_0$与$\theta_1$的三维图中
可知存在使得$J(\theta_0,\theta_1)$最小的$\theta_0和\theta_1$
利用等高图表示
Gradient Descent【梯度下降】
梯度下降(Gradient Descent)背后的思想是:开始时我们随机选择一个参数的组合$\left( {\theta_{0}},{\theta_{1}},……,{\theta_{n}} \right)$,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到找到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
即$Min\sum_{\theta_1、\theta_2、\theta_3···\theta_n}J(\theta_1,\theta_2,\theta_3···\theta_n)$
批量梯度下降(batch gradient descent)算法的公式为:
其中$a$是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。其中:=
相当于计算机中的赋值号。
Gradient Descent Intuition【梯度下降的直观理解】
梯度下降算法如下:
${\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left(\theta \right)$
描述:对$\theta $赋值,使得$J\left( \theta \right)$按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中$a$是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大
其中$\frac{\partial }{\partial {\theta_{j}}}J\left(\theta \right)$表示切线的斜率
让我们来看看如果$a$太小或$a$太大会出现什么情况:
如果$a$太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果$a$太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。
如图:
如果$a$太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果$a$太大,它会导致无法收敛,甚至发散。
如图:
假设你将${\theta_{1}}$初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。结果是局部最优点的导数将等于零,因为它是那条切线的斜率。这意味着你已经在局部最优点,它使得${\theta_{1}}$不再改变,也就是新的${\theta_{1}}$等于原来的${\theta_{1}}$,因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率$a$保持不变时,梯度下降也可以收敛到局部最低点。
首先初始化我的梯度下降算法,在那个品红色的点初始化,如果我更新一步梯度下降,也许它会带我到这个点,因为这个点的导数是相当陡的。现在,在这个绿色的点,如果我再更新一步,你会发现我的导数,也即斜率,是没那么陡的。随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。然后我想再梯度下降一步,在这个绿点,我自然会用一个稍微跟刚才在那个品红点时比,再小一点的一步,到了新的红色点,更接近全局最低点了,因此这点的导数会比在绿点时更小。所以,我再进行一步梯度下降时,我的导数项是更小的,${\theta_{1}}$更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现,已经收敛到局部极小值。在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小$a$。
Gradient Descent For Linear Regression【梯度下降的线性回归】
$\frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}}$
$j=0$ 时:$\frac{\partial }{\partial {{\theta }_{0}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}}$
$j=1$ 时:$\frac{\partial }{\partial {{\theta }_{1}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}$
则算法改写成:
Repeat {
${\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}$
${\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}$
}
在梯度下降中会一步步逼近代价函数最小的值