这是深度学习文集的第一篇,主要想写的是深度学习的基础、简单原理;可以从这个开篇读出入门的感觉。
神经网络,一种美妙的受生物学启发的编程范式,可以让计算机从观测数据中进行学习。
深度学习,⼀个强有力的用于神经网络学习的众多技术的集合。
---摘自Neural Network and Deep Learning
像上边引用中说道,深度学习包含了众多技术,带来了传统机器学习不能赋予的新能量,在耳熟能详的计算机视觉、语音识别、自然语言处理等领域长足地进步,都跟深度学习有着不可分割的关系。这些技术包括了卷积神经网络、循环神经网络、自动编码器、稀疏编码、深度信念网络、限制玻尔兹曼机和深度强化学习等,现代深度学习中,最常见的当属卷积神经网络、循环神经网络和深度强化学习。
那什么是神经网络?接下来依次介绍各个重要的部分。
1、神经元
神经元,被称作为最小的神经网络。
神经元神经元包含两部分,一部分是上一层网络输出和当前网络层参数的一个线性乘积,另外一部分是线性乘积的非线性转换。(如果缺少非线性转换,则多层线性乘积可以转化为一层的线性乘积)
具体的数学公式见下:
神经元计算的数学公式线性乘积部分是 Wt · x,对于神经元图中就是 x1 * w1 + x2 * w2 + x3 * w3 + b。x1、x2、x3的现实意义是特征,w1、w2、w3的现实意义是权重。f函数即时非线性转换函数,又被称作为激活函数。
很一个或多个神经元可以组成一层网络,由这些网络组成的模型,即为神经网络。可以见下图,直观感受一下。
神经网络如图,特征输入的层,一般称为 input_layer -- 输入层,结果输出的层,一般称为 output_layer -- 输出层,在这两层中间的层次统称为 hidden_layer -- 隐含层。
2、激活函数
特征经过线性乘积后的非线性转换,用的就是激活函数。激活函数最常见的有:Sigmoid、ReLU、Tanh、Leaky ReLU等。所谓的非线性变换,可以从下图中可以直接看出来。
2-1、Sigmoid
Sigmoid优点:
1.输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层;
2.导函数具有较好的数学性质,求导容易;
3.在特征相差比较复杂或是相差不是特别大时效果比较好。
缺点:
1.激活函数计算量大,反向传播求误差梯度时,求导涉及除法
2.反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练
3.输出不是0均值的,会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响
4.收敛缓慢
2-2、Tanh
Tanh优点:
1.比Sigmoid函数收敛速度更快
2.函数的均值是0,因此实际应用中 Tanh 会比 sigmoid 更好
缺点:
1.由于饱和性产生的梯度消失
2.激活函数计算量大
2-3、ReLU
ReLU优点:
1.没有sigmoid和tanh的指数运算,计算速度非常快,只需要判断输入是否大于0
2.收敛速度远快于sigmoid和tanh
3.有效缓解了梯度消失的问题
缺点:
1.ReLU在训练的时很“脆弱”。在x<0时,梯度为0。这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新
2.ReLU的输出不是0均值的
2-4、Leaky ReLU
Leaky ReLU优点:
1.解决了神经元不可逆死亡的问题
缺点:
1.理论可解释性不强,在实践中不见得效果好于经典ReLU
网友评论