您的位置:首页 > 理论基础 > 计算机网络

一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: