刚看完兴风作浪的姐姐们,突然觉得张雨绮有、、可爱?!
今日推歌:(网易云自己搜)
歌手:告五人
歌名:跳海 Farewell in the sea
❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤分割线
1 深度学习隐藏层的含义
1.1 神经元如何运转
在实际的应用中,我们可以设置隐藏层的层数,也可以设置每层中具体的神经元,但隐藏层中的神经元到底代表了什么呢?
神经网络从出现开始,就带着神秘与不透明,网络中的层数常常由经验获得,网络中的权重与偏置也是用梯度下降法等方法自动被发现的,我们不能对网络中的每个神经元做了什么给出一个明确的解释。但我们可以试着去理解其背后的机制。
假设我们现在要完成一个任务,即辨别这张图片里是否有人脸:
那么我们考虑这样的一个网络。
输入层和输出层的构造是很明晰的:将图像展成像素点的形式输入进去,并采用一个S神经元表示它的输出。当S神经元的值大于某个阈值时,我们认为其中包含人脸,反之则认为不包含人脸。
接下来我们将设计隐藏层,并为其选择和合适的偏置与权重。
我们先忘掉神经网络的具体构造,试着将问题分解为子问题,也就是:这张图片左上部分和右上部分有眼睛的形状吗?眼睛上面有眉毛吗?两只眼睛的中下方有鼻子吗?再下方有嘴巴吗?
当这些问题的回答是“是”或“可能是”时,我们认为这可能是一张人脸。如果前述问题有的回答为“不是”,那么我们认为这张图片可能不包含人脸。
上面的思路其实不是一个现实的方法,但它能帮助我们建立神经网络如何运转的直观感受。理解神经网络背后运行的机制,也就是将复杂问题分解为子问题。
1.2 图解复杂问题的分解
我们将上面说的复杂问题不断分解,来看下面这张图:
将问题分解为子问题后,子网络也可以被继续分解。我们现在考虑第一个子问题,即:左上角有一个眼睛吗?这个问题可以被分解为:
这些子问题又可以继续被分解,随着网络层数越来越多,问题传递地越来越远。最终,最后的子网络回答了只涉及若干像素点的简单问题,比如,某几个像素点是否构成某一个形状。
至此我们设计的一个网络,可以将一个非常复杂的问题分解成单个像素层面上就能回答的简单问题。
要注意的是:上面我们描述的过程,是问题分解的思路,在实际的网络实现中是相反的顺序。也就是离输入层像素点最近的一层,负责完成对某些像素点是否能构成一个特定形状的回答。输出层的前一个隐藏层,完成我们说的是否有五官的问题。越是后面的网络层,越是有着抽象和繁复的结构。
深度神经网络,指的就是这样包含两层及以上隐藏层的网络结构。
2 传播算法中的矩阵运算
2.1 反向传播算法的核心
接下来引入反向传播的内容叭。
在前面我们说到了梯度下降算法的原理。但我们没有说明如何去求解代价函数 C C C的梯度值。
这个问题的求解,就需要用到反向传播算法(backpropagation)。
当我们搞懂了反向传播算法中的细节问题,我们就更能理解神经网络的的运作原理,也更能领悟怎样通过改变权重和偏置来控制网络的行为。
简而言之:反向传播算法的核心,是对代价函数C关于任何权重或偏置的偏导数表达式。
2.2 传播算法中的参数定义与细节图解
首先,请记好这些定义:
① w j k l w_{jk}^{l} wjkl表示从第 ( l − 1 ) (l-1) (l<