Press "Enter" to skip to content

渐进学习前馈神经网络

从人工智能这个词流行起来以后,神经网络这个词也变得家喻户晓了,很多人想要去学习一下神经网络方面的知识,但看到神经网络深奥的概念以及复杂的公式时,也只能放弃。不要惊慌,这篇文章会由浅入深再加例子的形式帮助你理解前馈神经网络,希望对你有帮助。

 

为了帮助你更好的理解前馈神经网络,我会分三部分进行讲解:

第一部分使用例子帮你建立基础概念
第二部分在概念的基础上融合数学
第三部分使用数学说明前馈神经网络

一 先从小明说起

 

小明的面前有五堆文档,每一堆都有1000份,其中的四堆已经按照,英语、法语、德语、意大利语分类好,小明现在要做的事情就是将第五堆未分类的文档进行分类。

 

小明并没有学习过那幺多的语言,所以他现在看到第五堆文档就头大。

小明现在已经没有时间去学习这四种语言了,但是小明想到了一个办法,他先看了一遍已经分好类的四种语言都有哪些特征,例如英语中的哪些字符是其他语言中没有的,意大利语的字母一般都是什幺样子的。

 

当小明学习完了这些语言的特征以后,小明就将左侧未分类的文档一个个的看一遍,当他读取第一篇文档的时候发现了Ä字符时,就会将这篇文档放在德语类别中,当看到文档中有很多的“th”二元字符对的时候,就会将此篇文档放在英语类别中。

 

就这样小明经过不断的读文档->看特征->按照特征分类,最后他将所有的文档都进行了正确的分类。

 

但是有意思的是小明还是不懂这几种语言,但是他还是能够正确的进行分类。

 

二 使用数学解析小明

 

上面的小明并不懂语言,但是却做到了正确的分类,接下来我们使用数学解析一下这个事情。

 

小明找到特征

 

上面的小明并不是直接将未分类的1000分文档进行分类的,他是先学习了一遍已分好类的文档中都有哪些特征,如果使用X代表每一个文档中的二元字符对出现的频率,使用Y代表最终的分类,那幺数学公式可以这样表示:

 

Y 英语 = X aa * W aa英语 + X ab * W ab英语 + X ac * W ac英语 + …… + X zz * W zz英语

 

Y 法语 = X aa * W aa法语 + X ab * W ab法语 + X ac * W ac法语 + …… + X zz * W zz法语

 

Y 德语 = X aa * W aa德语 + X ab * W ab德语 + X ac * W ac德语 + …… + X zz * W zz德语

 

Y 意大利语 = X aa * W aa意大利语 + X ab * W ab意大利语 + X ac * W ac意大利语 + …… + X zz * W zz意大利语

 

注:W代表权重

 

对于上面的公式,小明已经知道了X与Y,他学习特征的目的就是获取每种语言最优的权重,也就是学习W。

 

小明进行分类

 

当小明在自己的脑子里面学习到了W这个体系以后,他就开始对未分类的文档进行分类了,也就是不断的输入X,最后小明使用上面的公式,输入X和W得到了文档的最终分类。

 

其中W指的就是我们通俗理解上的模型。小明整个分类的过程就是先使用已知的X与Y求出W,然后再使用已知的X与W求出Y。

 

对于上面的这种训练模式我们叫做有监督学习。

 

三 公式下的前馈神经网络

 

针对于上面文档分类来说,输入就是一些待分类的文档,输出就是文档最终所属的类别,而小明就是作为黑盒存在,现在让我们将这个黑盒打开。

图中就是前馈神经网络的一个示意了,为什幺叫前馈呢?这是因为每一个神经元都只与前一层的神经元相连接。

 

上面的输入层就是我们待分类的文档,输出层就是文档的类别,中间的三个隐藏层就是各种特征的计算。

 

让我们先拿一个输入神经元与第一层隐藏层中的一个神经元出来:

输入层的每一个神经元都是一个二元字符对的频率,在得到第一个隐藏层时将二元字符对频率乘了一个权重,并且添加了一个偏置项b,公式表示:

 

NN MLP1 (x) = x*W 1 + b 1

 

为了我们计算的便捷性,需要在神经网络中使用一些非线性函数处理隐藏层数据,以往经常使用的非线性函数是sigmoid函数,但是研究人员发现在最后结果的表现上,ReLU(修正线性单元)函数是优于sigmoid函数的。

上图就是ReLU函数的图像。

 

那幺上面的公式就会是:

 

NN MLP1 (x) = Re 1 (x*W 1 + b 1 )

 

那幺最后我们将一层推广到最终结果时:

 

NN MLP3 (x) = P

 

h 1 = Re 1 (x*W 1 + b 1 )

 

h 2 = Re 2 (h 1 *W 2 + b 2 )

 

h 3 = Re 3 (h 2 *W 3 + b 3 )

 

P = h 3 * W 3

 

为了方便查看上面的公式我将每一层就单独例举了出来。

 

在上面的公式中我们可以看到最后的P只是使用h 3 * W 3 ,我们将偏置向量强制为0.

 

最终我们得到的就是一个关于文档分类的概率。

 

值得注意的是,X输入是一个向量,W是一个向量矩阵,最后得到的P也是一个向量。

 

总结

 

上面我们通过小明的例子,解释了一下什幺是前馈神经网络,以及其公式的表示,对于神经网络我们可以使用一些已经标记好的数据,训练得到一个合适的模型也就是W,然后我们就可以将这个模型应用在未知的数据中去。

 

实际上在应用前馈神经网络的时候,我们需要结合自己的诉求来界定隐藏层的层数以及偏置项,而为了防止过拟合情况的发生,我们在训练的时候也会使用正则化或者丢弃法的方式。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注