转载过程中,图片丢失,代码显示错乱。
为了更好的学习内容,请访问原创版本:
http://www.missshi.cn/api/view/blog/59a6ad67e519f50d040000e5
Ps:初次访问由于js文件较大,请耐心等候(8s左右)
在之前课程中,我们实现了逻辑回归函数,它是一个不包含隐藏层的网络结构。
本节课中,我们将继续神经网络的学习,本文主要来讲解包含一个隐藏层的神经网络结构及其原理。
本文内容概述
之前的文章中,我们讲述了一个逻辑回归的模型如下:
其中,输入参数包含w, x和b,具体计算流程如下:
而对应一个包含隐藏的神经网络而言,其网络结构如下:
其中,每个隐藏层的计算逻辑与之前的输出层计算逻辑一致。
此处,我们用[1]表示第1层,用[2]表示第二层,则上述模型的计算逻辑如下:
此外,在反向计算中,也会有与之前类似的逻辑来计算,我们将在接下来的内容详细讲解。
神经网络的表示
接下来,我们首先讨论的是神经网络图的含义:
对于下图而言:
其中,x1,x2,x3表示其输入层,中间的四个圆圈则表示隐藏层,最后的一个节点是其输出层。
通常,对于一个神经网络训练任务而言,训练集中会包含着输入层数据和期望输出层数据。
而隐藏层数据是我们无法知道而需要进行训练学习的。
在该模型中,我们通常会把输入数据X标记为a[0]。
而对于第一个隐藏层而言,我们会把输出数据标记为a[1]。
此外,由于该隐藏层中,有多个神经元,因此,从上到下我们一次标记为a1[1],a2[1]等。
在输出层,我们将其输出记作a[2]。具体表示见下图:
此外,对于上述网络结构而言,我们称其为一个两层的神经网络。(输入层不包含在内)
神经网络的前向传播计算
回顾一下之前的逻辑回归,其前向传播的计算模型如下:
转换为公式表示如下:
而对于一个包含隐层的神经网络而言呢?则是对每个神经元进行一次类似的操作:
假设一个神经网络的结构如下:
我们首先针对其第一个隐藏层神经元来看看其计算逻辑:
可以看出,其计算逻辑与之前逻辑回归的神经元相同,只是针对特定层及特定节点的w和b。
其中,对于ai[l]而言,l表示它是在第l层,而i则表示它是该层的第i个节点,对于w和b而言,符号表示的含义相同。
同理,对于第二个隐藏层神经元而言,计算逻辑相同:
以此类推,我们可以分别计算出第1层隐藏神经元的值a[1]。
将其进行向量化表示后,结果如下:
最终,得到的矢量化计算公式如下:
训练样本的矢量化
在上一个小节中,我们将每层中不同的节点进行了矢量化,而本节中,我们希望对不同的训练样本进行矢量化。
在之前的符号描述中,我们使用(i)表示第i个样本点。
那么,一个普通的计算逻辑如下:
然而,对于上式的循环任务中,前后没有依赖关系,因此,我们可以对其进行矢量化。
接下来,我们定义一个变量X,它是将每个训练样本作为变量矩阵X中的一列。
其中,X的维度为nx*m。nx表示训练样本的维度,m表示训练样本数量。
此时,计算公式则可以整理如下:
其中,Z[l]和A[l]都是有每个样本作为其中一列组成的。
激活函数
对于隐藏层和输出层而言,我们通常会选择一个激活函数用于对其输出进行处理。
接下来,我们将对激活函数的相关内容进行讲解。
目前为止,我们主要讲解的激活函数都是sigmod函数,但实际上,还有一些可能更好用的激活函数。
例如tanh函数通常会比sigmod函数用更好的性能。
sigmod函数简图如下所示,其y的取值范围在0到1之间:
而tanh函数简图如下所示,其y的取值范围在-1到1之间:
如果我们选择tanh作为激活函数,由于其平均值更接近于0,可以起到中心化的作用,通常更有利用算法优化。
这儿有一个特殊情况,对于一个二分类问题的输出层的激活函数,由于我们仅希望对其进行是否判断,其实更类似于0,1判断,因此,此时选择sigmod函数是一个更加合理的选择。
但是,对于sigmod函数和tanh函数,都有一个共同的问题,即当输入变量特别大或者特别小时,斜率非常小,此时,并不利于梯度下降法进行学习。
在机器学习中, 一个非常常用的激活函数叫做ReLU函数(修正线性单元函数)。
该函数简图如下:
ReLU有一个缺点就是在输入变量小于0时,其输出始终为0。(实际在应用中没有太大问题)
有一个改进版本为leakly ReLU函数,其在输入变量小于0时,斜率为一个很小的正数。(有略微优点,但使用场景并不多)
总结一下:
sigmod函数,除二分类输出层外,几乎不使用:
tanh函数:
ReLU函数(强烈推荐):
leakly ReLU函数:
激活函数不选择线性函数的原因
对于一个前向传播计算而言,计算公式如下:
此时,我们假设g是一个线性函数,那么会有什么影响呢?
从上述的公式推导中,我们可以看出,无论最终有多少隐藏层,得到的最终输出结果仍然是输入的线性组合。
更多更详细的内容,请访问原创网站:
http://www.missshi.cn/api/view/blog/59a6ad67e519f50d040000e5
Ps:初次访问由于js文件较大,请耐心等候(8s左右)