深度学习近几年如火如荼,先后出现了很多的应用案例。那么深度学习是怎样的学习过程呢?其实理解起来不难,只需要一点点数学知识而已。本文介绍深度学习中最基础的一种优化算法–梯度下降算法,大量的优化算法都是在此基础上修改,不断优化出来的。理解了此算法,你就知道深度学习是如何学习的?
简单例子的应用
在中学我们都学过用导数求函数极值。基本思路就是求出 f ′ ( x ) = 0 f'(x)=0 f′(x)=0方程的解,就是极值点,如果这个方程是超越方程,很难求出解析解怎么办?我们可以利用计算机求出数值解。我们先来看一个例子,大致了解梯度下降怎么求极值问题。
求函数 f ( x ) = 1 2 x 2 + 2 x f(x)=\frac 1 2 x^2 + 2x f(x)=21x2+2x的极小值。使用中学数学很容易得到极值点为-2,那么极值就是 f ( − 2 ) = − 2 f(-2)=-2 f(−2)=−2。接下来我们使用梯度下降计算数值解。
先给出梯度下降的计算公式:
x n + 1 = x n − γ d f d x ∣ x = x n x_{n+1} = x_n - \gamma \frac{\mathrm df}{\mathrm dx}|_{x=x_n} xn+1=xn−γdxdf∣x=xn
其中 x n x_n xn为第n次迭代横坐标的值, γ \gamma γ在机器学习中称为学习率,函数的梯度这里简写为导数。迭代过程需要初始值,我们假定初始值为3, x 0 = 3 x_0=3 x0=3,学习率 γ = 0.2 \gamma=0.2 γ=0.2。
先手动求出函数的导数为 f ′ ( x ) = x + 2 f'(x) = x+2 f′(x)=x+2,我们开始迭代:
x 1 = x 0 − γ ( x 0 + 2 ) = 2 x_1 = x_0 - \gamma (x_0 + 2) = 2 x1=x0−γ(x0+2)=2
x 2 = x 1 − γ ( x 1 + 2 ) = 1.2 x_2 = x_1 - \gamma (x_1 + 2) = 1.2 x2=x1−γ(x1+2)=