神经网络与激活函数
我们经过模拟会发现多层的线性网络和单层的线性网络没有区别,而且线性模型能够解决的问题也是有限的
所以我们就在网络中增加非线性激活函数Relu进行模拟
一、激活函数的选择(在这个神经元之后加一个激活函数)
涉及网络的优化的时候,会有不同的激活函数选择; 有一个问题是神经网络的隐藏层和输出单元用什么激活函数。 之前用的是sigmoid函数,但有时用其他函数的效果会好得多,大多数通过实践得来,没有很好的解释性;
1. tanh函数(the hyperbolic tangent function, 双曲正切函数):
- 效果比sigmoid函数好,因为函数输出介于-1 和 1之间。
- tanh函数和sigmoid函数有同样的缺点:当z趋近无穷大(或无穷小),导数的梯度(即函数的斜率)就趋近于0,这使得梯度算法的速度会减慢。
- 梯度非常小,梯度下降算法变化就慢;(更新梯度,进行优化就慢);
2. ReLU函数(the rectified linear unit,修正线性单元)
若我们得到的线性的结果是小于0的,就把它变为0,大于0的为其本身; 当z > 0时,梯度始终为1,从而提高神经网络基于梯度算法的运算速度,收敛速度远大于sigmoid和tanh。然而当z < 0时,梯度一直为0,但是实际的运用中,该缺陷的影响不是很大。
3. Leaky ReLU(带泄露的ReLU):
Leaky ReLU 保证在 z < 0的时候,梯度任然不为0。理论上来说,Leaky ReLU有ReLU的所有优点,但在实际操作中没有证明总是好与ReLU,因此也不常用;
二、为什么需要非线性的激活函数
使用线性的激活函数和不使用激活函数、直接使用Logistic回归没有区别,那么无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,就成了最原始的感知器了。
三、神经网络拓展
更多神经元 + 更深的网络 = 更复杂的抽象。这也是简单的神经元如何变得更聪明,并在图像识别、围棋这些特定问题上表现如此之好的原因。
- 神经网络拓展介绍:
- 神经网络的种类:
- 基础神经网络:线性神经网络,BP神经网络(多层),Hopfield神经网络等;
- 进阶神经网络:玻尔兹曼机,受限玻尔兹曼机,递归神经网络等;
- 深度神经网络:深度置信网络,卷积神经网络,循环神经网络(NLP),LSTM网络(NLP)等;
- 神经网络的种类: