一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理1-深度学习基础
2017-09-27 10:02
831 查看
人体神经细胞工作原理。如下图。树突接受其他神经细胞的刺激。经过细胞核的处理通过轴突进行输出到其他神经细胞或者肌肉。这样传输就会形成一个通路。当我们持续学习一种事物的时候,就会持续的刺激该通路上的所有神经细胞。从而使得通路更加顺畅。形成记忆。从而加深学习。
2 通过模拟上述过程。我们通过计算机模拟构建了一个神经单元。如下图。
该单元也具有输入X(可以有多个)和输出Y(只有一个)。每个输入X都具有一个权重。权重越大,表示该信号越重要。所以权重起到了放大或者衰减X的作用。权重也是后面需要学习的。具体的计算公式如下。其中,sgn代表激活函数。1
和 -1 代表最终的输出的y。其实通俗的讲就是。把X乘以权重然后累加起来。如果小于0.最终结果就是-1.如果大于0.最终结果就映射到1.
那么 W是怎么学习的呢。联想到我们人类学习过程,是通过不断的训练,调整而获得的。统一该神经元也可以用类似的方法。假如,该神经元的输出和我们想要的输出一样,那么W就不需要修改。如果不一样,就要修改W,使得输出朝我们想要的方向移动。数学上可以证明,通过下面的公式就可以获得这一的效果(其实就是梯度下降)。
单个神经元的功能非常简单。本质上就是一条直线。如果想要获得更加复杂的功能,我们可以把很多神经元链接起来。如下图。
输入层,负责接受输入。隐藏层有多个神经单元,经过计算汇总最终到输出层。这样就相当于人体多个神经细胞连接最终形成输出的结果。
这种神经网络的学习和训练,使用的就是反向传播算法,简称BP算法。限于篇幅和本文的性质严格推导和证明就不讲了,有兴趣请看。http://blog.csdn.net/zb1165048017/article/details/51518347 一文。
其通俗的大体过程如下。
1 随机初始化 网络的权重。
2 根据输入 X,计算网络的各层输出。最后计算输出层的输出 Y。
3 对比我们的标注数据 Y1,如果有误差,就会生成误差信号。
4 误差信号会向后传播,用来修正 W(如果 Y和Y1一致,就不用修正,非常类似上面单个神经元学习,只是这里有很多层)
5 这样过程反复迭代,直到终止条件。(W变化很小,或者迭代到了指定次数)
但是BP有下面缺点:
1 梯度消失,层数不能太深。原因是,在计算向后传播的信号的时候,每一层都要乘以激活函数的导数,这个导数一般都是小于1的(比如sigmod函数)。所以经过n层传播,信号会以指数级衰减。具体可以参考 BP反向传播的计算公式。
2 容易陷入局部最小。这是因为,我们的损失函数,不是凸函数。有很多局部最小值。单纯的梯度下降,会困到局部最小值出不来。
深层神经网络的解决办法。
为了解决上述两个问题,深度学习的大牛 hinton 2016年在science发表了 Reducing the Dimensionality of Data with Neural Networks。分享了下面的步骤。
1 Pretraining 步骤 ( DBN 深度置信网络)。
把原始数据,经过4个受限玻尔兹曼机(从4096维度压缩到30维度),得到四个权重矩阵 W1,W2,W3,W4.
2 Unrolling 步骤
把上面得到 四个权重矩阵 W1,W2,W3,W4 直接应用到,一个自动编码器中,(可以看做两个BP神经网络)
3 Fine-tuning 步骤。
运用BP神经网络的反向传播算法。对该网络进行微调。实验证明,一般只需要很少步骤就可以收敛,获得很好的效果。
一般把这种方式称为 DBN+DNN的学习方式。具体过程如下图。
关于玻尔兹曼机和受限玻尔兹曼机可以参考下面的文章
HopField http://blog.csdn.net/changdejie/article/details/78099410
玻尔兹曼机 http://blog.csdn.net/changdejie/article/details/78102894 受限玻尔兹曼机 http://www.cnblogs.com/kemaswill/p/3203605.html
2 通过模拟上述过程。我们通过计算机模拟构建了一个神经单元。如下图。
该单元也具有输入X(可以有多个)和输出Y(只有一个)。每个输入X都具有一个权重。权重越大,表示该信号越重要。所以权重起到了放大或者衰减X的作用。权重也是后面需要学习的。具体的计算公式如下。其中,sgn代表激活函数。1
和 -1 代表最终的输出的y。其实通俗的讲就是。把X乘以权重然后累加起来。如果小于0.最终结果就是-1.如果大于0.最终结果就映射到1.
那么 W是怎么学习的呢。联想到我们人类学习过程,是通过不断的训练,调整而获得的。统一该神经元也可以用类似的方法。假如,该神经元的输出和我们想要的输出一样,那么W就不需要修改。如果不一样,就要修改W,使得输出朝我们想要的方向移动。数学上可以证明,通过下面的公式就可以获得这一的效果(其实就是梯度下降)。
单个神经元的功能非常简单。本质上就是一条直线。如果想要获得更加复杂的功能,我们可以把很多神经元链接起来。如下图。
输入层,负责接受输入。隐藏层有多个神经单元,经过计算汇总最终到输出层。这样就相当于人体多个神经细胞连接最终形成输出的结果。
这种神经网络的学习和训练,使用的就是反向传播算法,简称BP算法。限于篇幅和本文的性质严格推导和证明就不讲了,有兴趣请看。http://blog.csdn.net/zb1165048017/article/details/51518347 一文。
其通俗的大体过程如下。
1 随机初始化 网络的权重。
2 根据输入 X,计算网络的各层输出。最后计算输出层的输出 Y。
3 对比我们的标注数据 Y1,如果有误差,就会生成误差信号。
4 误差信号会向后传播,用来修正 W(如果 Y和Y1一致,就不用修正,非常类似上面单个神经元学习,只是这里有很多层)
5 这样过程反复迭代,直到终止条件。(W变化很小,或者迭代到了指定次数)
但是BP有下面缺点:
1 梯度消失,层数不能太深。原因是,在计算向后传播的信号的时候,每一层都要乘以激活函数的导数,这个导数一般都是小于1的(比如sigmod函数)。所以经过n层传播,信号会以指数级衰减。具体可以参考 BP反向传播的计算公式。
2 容易陷入局部最小。这是因为,我们的损失函数,不是凸函数。有很多局部最小值。单纯的梯度下降,会困到局部最小值出不来。
深层神经网络的解决办法。
为了解决上述两个问题,深度学习的大牛 hinton 2016年在science发表了 Reducing the Dimensionality of Data with Neural Networks。分享了下面的步骤。
1 Pretraining 步骤 ( DBN 深度置信网络)。
把原始数据,经过4个受限玻尔兹曼机(从4096维度压缩到30维度),得到四个权重矩阵 W1,W2,W3,W4.
2 Unrolling 步骤
把上面得到 四个权重矩阵 W1,W2,W3,W4 直接应用到,一个自动编码器中,(可以看做两个BP神经网络)
3 Fine-tuning 步骤。
运用BP神经网络的反向传播算法。对该网络进行微调。实验证明,一般只需要很少步骤就可以收敛,获得很好的效果。
一般把这种方式称为 DBN+DNN的学习方式。具体过程如下图。
关于玻尔兹曼机和受限玻尔兹曼机可以参考下面的文章
HopField http://blog.csdn.net/changdejie/article/details/78099410
玻尔兹曼机 http://blog.csdn.net/changdejie/article/details/78102894 受限玻尔兹曼机 http://www.cnblogs.com/kemaswill/p/3203605.html
相关文章推荐
- 一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理3-残差神经网络
- 一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理2-卷积神经网络
- 一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理4-循环神经网络,LSTM
- 深度学习基础模型算法原理及编程实现--06.循环神经网络
- 深度学习基础(五):循环神经网络概念、结构及原理实现
- 零基础入门深度学习(5) - 循环神经网络
- 零基础入门深度学习(5) - 循环神经网络
- 零基础入门深度学习(5) - 循环神经网络
- 零基础入门深度学习(5) - 循环神经网络
- 深度学习基础知识(1)神经网络理解
- 【直观理解】一文搞懂RNN(循环神经网络)基础篇
- 深度学习基础模型算法原理及编程实现--04.改进神经网络的方法
- 一名工程师对于深度学习的理解-神经网络基础ANN
- 一名工程师对于深度学习的理解-神经网络基础ANN
- DAY5:神经网络及深度学习基础
- 神经网络和深度学习-第二周神经网络基础-第四节:梯度下降法
- DAY1:神经网络基础和深度学习笔记整理
- 零基础入门深度学习(3) - 神经网络和反向传播算法
- 深度学习深理解(三)-浅层神经网络
- 深度学习算法原理——栈式自编码神经网络