前言
神经网络学习要求大量的数据和很多参数我们一个如何选择和优化他们呢,我们接下来将介绍一下网络优化参数
激活函数
神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数。
由于前一篇博客已经介绍过了激活函数,所以不过多的解释,大家可以看看下面这篇博客
最优化方法——梯度下降法
在机器学习中,我们通常会根据输入 x来预测输出 y,预测值和真实值之间会有一定的误差,我们在训练的过程中会使用优化器(optimizer)来最小化这个误差。
优化方法在深度学习中是非常重要的,其中最常见的情形是利用目标函数的导数通过多次迭代来求解。
然后又几种常见的最优化方法为梯度下降法,牛顿法,拟牛顿法和共轭梯度法。
在神经网络中,如果学习率很低,我们的训练过程会更可靠,但是时间耗费会更久。
如果学习率过大,训练中的权重可能变化大,使优化在最小值波动。
因此选择一个合适的学习率,可以大大提高训练模型过程中的效率。
我们就先来了解一下梯度下降法这个优化方法,看到这个词,大家是否有些熟悉呢,好像在哪里见的样子。确实作者最近在高数中就学到过,然后由于上课没认真听,现在也有点忘记了。
我们来举个简单的例子
比如在一场下坡比赛中,我们为了最快到达底部顶点,就必须走最陡峭的地方,以最短的时间到达。
差不多就是首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处;
因此梯度下降法又叫作**“最速下降法”**,是不是很形象呢。
我们再来理解这个定义就简单一些
梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)
梯度下降步骤
梯度下降法越接近目标值的时候,需要的步长越短,前进越慢,否则会越过最优点。
然后预测值与真实值之间有个误差,我们设置误差函数L(w)
梯度下降法分类
- 随机梯度下降法
- 批量梯度下降法
随机梯度下降法:
每次取一个样本进行梯度的计算,它的问题是梯度计算相对不稳定,但是整体上还是趋于全局最优解的。
损失函数
更新方式
批量梯度下降法
就是使用所有的训练数据计算梯度,梯度计算稳定,可以得到全局最优解,但是计算速度很慢。
损失函数
更新方式
代码分析
from numpy