<p class="content">经过前面两节内容的铺垫,我们可以开始讲一讲机器学习的动力之源:梯度下降。</p> <p class="content">梯度下降并不是一个很复杂的数学工具,其历史已经有200多年了,但是人们可能不曾料到,这样一个相对简单的数学工具会成为诸多机器学习算法的基础,而且还配合着神经网络点燃了深度学习革命。</p> <h3 class="thirdTitle" id="bw38"><a >2.3.1 什么是梯度</a></h3> <p class="content">对多元函数的各参数求偏导数,然后把所求得的各个参数的偏导数以向量的形式写出来,就是梯度。</p> <p class="content">具体来说,两个自变量的函数<span class="italic">f</span>(<span class="italic">x</span><span class="sub">1</span>,<span class="italic">x</span><span class="sub">2</span>),对应着机器学习数据集中的两个特征,如果分别对<span class="italic">x</span><span class="sub">1</span>,<span class="italic">x</span><span class="sub">2</span>求偏导数,那么求得的梯度向量就是(∂<span class="italic">f</span>/∂<span class="italic">x</span><span class="sub">1</span>,∂<span class="italic">f</span>/∂<span class="italic">x</span><span class="sub">2</span>)<span class="super">T</span>,在数学上可以表示成Δ<span class="italic">f</span>(<span class="italic">x</span><span class="sub">1</span>,<span class="italic">x</span><span class="sub">2</span>)。</p> <p class="content">那么计算梯度向量的意义何在呢?其几何意义,就是函数变化的方向,而且是变化最快的方向。对于函数<span class="italic">f</span>(<span class="italic">x</span>),在点(<span class="italic">x</span><span class="sub">0</span>,<span class="italic">y</span><span class="sub">0</span>),梯度向量的方向也就是<span class="italic">y</span>值增加最快的方向。也就是说,沿着梯度向量的方向Δ<span class="italic">f</span>(<span class="italic">x</span><span class="sub">0</span>),能找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -Δ<span class="italic">f</span>(<span class="italic">x</span><span class="sub">0</span>)的方向,梯度减少最快,能找到函数的最小值。如果某一个点的梯度向量的值为0,那么也就是来到了导数为0的函数最低点(或局部最低点)了。</p> <h3 class="thirdTitle" id="bw39"><a >2.3.2 梯度下降:下山的隐喻</a></h3> <p class="content">在机器学习中用下山来比喻梯度下降是很常见的。想象你们站在一座大山上某个地方,看着远处的地形,一望无际,只知道远处的位置比此处低很多。你们想知道如何下山,但是只能一步一步往下走,那也就是在每走到一个位置的时候,求解当前位置的梯度。然后,沿着梯度的负方向,也就是往最陡峭的地方向下走一步,继续求解新位置的梯度,并在新位置继续沿着最陡峭的地方向下走一步。就这样一步步地走,直到山脚,如下图所示。</p> <div class="pic"> <img src="http://csdn-ebook-resources.oss-cn-beijing.aliyuncs.com/images/b88b00f6ad14402ea66695d6809614da/figure-0072-0076.jpg"> <p class="imgtitle">梯度下降的隐喻和一个二元函数的立体图像</p> </div> <p class="content">从上面的解释中,就不难理解为何刚才我们要提到函数的凹凸性了。因为,在非凸函数中,有可能还没走到山脚,而是到了某一个山谷就停住了。也就是说,对应非凸函数梯度下降不一定总能够找到全局最优解,有可能得到的只是一个局部最优解。然而,如果函数是凸函数,那么梯度下降法理论上就能得到全局最优解。</p> <h3 class="thirdTitle" id="bw40"><a >2.3.3 梯度下降有什么用</a></h3> <p class="content">梯度下降在机器学习中非常有用。简单地说,可以注意以下几点。</p> <p class="content">■机器学习的本质是找到最优的函数。</p> <p class="content">■如何衡量函数是否最优?其方法是尽量减小预测值和真值间的误差(在机器学习中也叫损失值)。</p> <p class="content">■可以建立误差和模型参数之间的函数(最好是凸函数)。</p> <p class="content">■梯度下降能够引导我们走到凸函数的全局最低点,也就是找到误差最小时的参数。</p> <p class="content">也许上面的说明还是挺抽象的,不要着急,在第3课线性回归的梯度下降实现部分,我将保证你们会完全理解梯度下降在机器学习中的意义。</p>