渐进学习前馈神经网络

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

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

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

一 先从小明提及

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

小明并无学习过那么多的语言,因此他如今看到第五堆文档就头大。函数

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

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

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

可是有意思的是小明仍是不懂这几种语言,可是他仍是可以正确的进行分类。cdn

二 使用数学解析小明

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

小明找到特征

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

Y英语 = Xaa * Waa英语 + Xab * Wab英语 + Xac * Wac英语 + ...... + Xzz * Wzz英语

Y法语 = Xaa * Waa法语 + Xab * Wab法语 + Xac * Wac法语 + ...... + Xzz * Wzz法语

Y德语 = Xaa * Waa德语 + Xab * Wab德语 + Xac * Wac德语 + ...... + Xzz * Wzz德语

Y意大利语 = Xaa * Waa意大利语 + Xab * Wab意大利语 + Xac * Wac意大利语 + ...... + Xzz * Wzz意大利语

注:W表明权重

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

小明进行分类

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

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

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

三 公式下的前馈神经网络

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

图中就是前馈神经网络的一个示意了,为何叫前馈呢?这是由于每个神经元都只与前一层的神经元相链接。

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

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

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

NNMLP1(x) = x*W1 + b1

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

上图就是ReLU函数的图像。

那么上面的公式就会是:

NNMLP1(x) = Re1(x*W1 + b1)

那么最后咱们将一层推广到最终结果时:

NNMLP3(x) = P

h1 = Re1(x*W1 + b1)

h2 = Re2(h1*W2 + b2)

h3 = Re3(h2*W3 + b3)

P = h3 * W3

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

在上面的公式中咱们能够看到最后的P只是使用h3 * W3,咱们将偏置向量强制为0.

最终咱们获得的就是一个关于文档分类的几率。

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

总结

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

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

欢迎关注"腾讯DeepOcean"微信公众号,每周为你推送前端、人工智能、SEO/ASO等领域相关的原创优质技术文章:

看小编这么辛苦,关注一个呗:)