二、浅层神经网络

二、浅层神经网络

1.神经网络

神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

神经网络结构

多个样本的计算过程:

for i in range(1,m):
    #计算上述4个公示

在多样本计算时实现进一步向量化

即对样本、参数都进行横向堆叠。如:

横向堆叠样本

2.神经网络的激活函数( Activation Function)

由于线性模型的表达能力有限,使用激活函数将非线性特性引入NN中,不同层可以使用不同的激活函数。

Sigmoid函数

优点:
Sigmoid函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层,也一般只用作二分类问题的输出层。

缺点:
1.由于其软饱和性,容易产生梯度消失。

2.其输出并不是以0为中心的。

梯度消失:由于激活函数导数的最大值小于1,且两端的倒数趋近于0。根据链式求导法则,越往后的隐藏层梯度会越来越小趋近于0,这也意味着,前面层的学习会显著慢于后面层的学习。

tanh函数

优点:
1.比Sigmoid函数收敛速度更快。

2.相比Sigmoid函数,其输出以0为中心。
缺点:
还是没有改变Sigmoid函数的最大问题——由于饱和性产生的梯度消失。

Relu函数

优点:
1.相比起Sigmoid和tanh,ReLU在SGD中能够快速收敛。这是因为它线性、非饱和的形式。

2.Sigmoid和tanh涉及了很多很expensive的操作(比如指数),ReLU可以更加简单的实现。

3.有效缓解了梯度消失的问题。

4.在没有无监督预训练的时候也能有较好的表现。

缺点:
随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。如果发生这种情况,那么流经神经元的梯度从这一点开始将永远是0。也就是说,ReLU神经元在训练中不可逆地死亡了。

Leaky ReLU

或一个其他非常小的常数。

优点:

解决Relu函数中神经元死亡的问题,同时又保留来其他Relu函数的优点。

为什么需要非线性激活函数?

线性激活函数的隐藏层一点意义都没有。

在输出层可以用线性激活函数(回归问题)。

3.神经网络中的梯度下降

即向量化实现普通的梯度下降,由更新一个单个的参数变成更新一个参数矩阵。

4.随机初始化

对于参数W,使用random函数产生随机数矩阵作为W的初始值,如果使用sigmoidtanh作为激活函数,注意可以将W乘以一个很小的常数,如0.01,使得初始的W值比较小(原因请思考这两个激活函数的曲线),对于参数b(偏置项),可以初始化为全都是0的矩阵。

对于参数W,不能全都初始化为0,会导致同一层的每个单元之间在计算完全相同的函数,导致所有单元的输出会完全一样,这是不能接受的。

你可能感兴趣的:(二、浅层神经网络)