1,激活函数
具体激活函数参见此篇
https://www.jiqizhixin.com/articles/2017-10-10-3
激活函数从图像上来看通常比较简单。他的工作内容也很简单,就是对上一层输出与本层权重的加权求和值做一个转换变成。通常这个转换是非线性的。
那不要这个激活函数好不好?很容易证明,如果不用激活函数,神经网络会退化成简单线性函数:
这相当于千辛万苦设计了一个网络,最后一看原来只是一组线性函数。隐层亦失去了意义。
而有了激活函数就不一样了,激活函数通常是非线性的,相当于为神经网络引入了非线性,上述式子就无法简化成简单线性函数:
这是神经网络具有强大拟合能力的根源。
对比上述两个
无激活函数的z实际上是只对输入做了一次线性转换
有激活函数的z实际上是对输入做了多次非线性转换,不同的激活函数,则又在非线性转换上产生不同的作用。
2,优化器 Optimizer
对于神经网络的损失优化,通常使用的是随机梯度下降SGD或批量梯度下降BGD或mini-batch梯度下降MBGD。梯度下降确实是一个根本,但是在每步梯度下降的步长(学习率learning rate)及其变化以及梯度下降方向的选择上则产生了很多变种。
具体参见此篇
优化器是什么?
是用来一步步优化参数W和b的。给一批样本,经过模型得到一个损失,通过损失反向求出各个参数对应的梯度,然后用本轮W减去这个(梯度乘以步长)得到新的W和b。这样一步步迭代,直到得到一个比较好的结果。这就是梯度下降的朴素思想。
然而实际情况却没有这么好。有许多乌云笼罩在这一步:
- 指导思想有了,但我要求计算速度要快--SGD
- 计算速度快了,但我要求准确度不能太差--MBGD
这些还好说,更严重的:
- 鞍点处各个梯度也为0,走不动了,但这里不是最优点啊。
- 学习率太小了,一步步挪,什么时候才能到最优点啊
- 学习率太大了,一步跨过了最优点,然后反向跨又跨过了又得反向,来回震荡,停不下来啦
- 通向最优点的方向梯度较小较平缓,而垂直于此方向的梯度却很大,且波澜起伏,导致我在这个方向来回震荡而往最优点的方向走的很慢,浪费时间
- 虽然看似每次都更新W,但实际上,每次只是更新W的一部分而非全部。那么有的w更新频次就多,有的就低。那使用同样的学习率,必然导致更新频次低的w们没有到达最优值。
具体就参见上面的链接吧,总结的非常好了
3,参考
https://www.cnblogs.com/guoyaohua/p/8542554.html
https://blog.csdn.net/tyhj_sf/article/details/79932893
https://www.jiqizhixin.com/articles/2017-10-10-3