机器学习笔记(1)——梯度下降算法基础(上)

早就“扬言”要一边学习一边用博客记笔记,可是貌似一直没有记。那么不多说废话直接开工。这个笔记先记录深度学习里的一些数学基础,这个东东的原理上学的时候基本都接触过,但是好久没翻就忘了,所以要用笔记形式记录起来。

PS:WordPress 直接支持 LaTeX 的显示,配合一些工具可以很方便地输入公式(以后软件推荐系列会推荐)。


损失函数

深度学习的效果要用损失函数来衡量,即整个预测值和真实值的偏差。常用的有均方根误差(MSE)、平均绝对误差(MAE)等。

MSE 统计每一个对应的误差的平方和的均值,即:

M S E=\frac{S S E}{n}=\frac{1}{n} \sum i=1^{m} w i(y i-\hat{y} i)^{2}

函数的近似公式

当 ∆x 非常小时,有以下近似式成立:

f^{\prime}(x) \approx \frac{f(x+\Delta x)-f(x)}{\Delta x}

所以有:

f(x+\Delta x) \approx f(x)+f^{\prime}(x) \Delta x

当有多个变量时,根据上面的式子,分别对每个自变量求偏导数,可以推出 z=f(x, y) 的近似公式:

f(x+\Delta x, y+\Delta y) \approx f(x, y)+\frac{\partial f(x, y)}{\partial x} \Delta x+\frac{\partial f(x, y)}{\partial y} \Delta y

这个式子也可以通过泰勒公式推导出来,取前几项即得:

\begin{aligned} &f(x+\Delta x, y+\Delta y)=f(x, y)+\frac{\partial f}{\partial x} \Delta x+\frac{\partial f}{\partial y} \Delta y\\ &+\frac{1}{2 !}\left\{\frac{\partial^{2} f}{\partial x^{2}}(\Delta x)^{2}+2 \frac{\partial^{2} f}{\partial x \partial y} \Delta x \Delta y+\frac{\partial^{2} f}{\partial y^{2}}(\Delta y)^{2}\right\}\\ &+\frac{1}{3 !}\left\{\frac{\partial^{3} f}{\partial x^{3}}(\Delta x)^{3}+3 \frac{\partial^{3} f}{\partial x^{2} \partial y}(\Delta x)^{2}(\Delta y)+3 \frac{\partial^{3} f}{\partial x \partial y^{2}} \Delta x(\Delta y)^{2}+\frac{\partial^{3} f}{\partial y^{3}}(\Delta y)^{3}\right\} \end{aligned}

梯度下降法的原理

当一个连续可导的函数 z=f(x, y) 取最小时,有以下式子成立。

\frac{\partial f(x, y)}{\partial x}=0, \quad \frac{\partial f(x, y)}{\partial y}=0

但是通常这个方程不容易求解。梯度下降法时找函数最小值点的一个常用算法,就像是用一个小球在凹面上滚动,试探哪一个方向时球下落最快。

根据近似公式,当 ∆x、∆y 非常小时,有如下近似公式:

\Delta z=\frac{\partial f(x, y)}{\partial x} \Delta x+\frac{\partial f(x, y)}{\partial y} \Delta y

改写成向量的形式,就变成了如下式子:

\left(\frac{\partial f(x, y)}{\partial x} \frac{\partial f(x, y)}{\partial y}\right) \cdot(\Delta x \quad \Delta y)

梯度下降算法要找到一个下降速度最快的方向,向量 a, b 的内积为 |a||b|cosƟ,显然当两个向量方向相反时内积最小(即 180 度),所以下降速度最快的关系式为:

(\Delta x, \Delta y)=-\eta\left(\frac{\partial f(x, y)}{\partial x}, \frac{\partial f(x, y)}{\partial y}\right)

这个向量称作梯度,其中 ŋ 为一个非常小的常量。在使用梯度下降时,这个非常小的常量 ŋ 非常重要,如果太大,则有可能直接跳过了最小值点;如果太小,则可能会滞留在极小值点而只能找到区间的极小值。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s