博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
渐进学习前馈神经网络
阅读量:7038 次
发布时间:2019-06-28

本文共 2271 字,大约阅读时间需要 7 分钟。

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

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

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

一 先从小明说起

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

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

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

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

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

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

二 使用数学解析小明

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

小明找到特征

上面的小明并不是直接将未分类的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等领域相关的原创优质技术文章:

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

转载于:https://juejin.im/post/5c9c9234e51d45742c26dc42

你可能感兴趣的文章
day13-类的重写和类的私有方法
查看>>
[LeetCode][Java] Unique Paths II
查看>>
哈理工2015 暑假训练赛 zoj 2976 Light Bulbs
查看>>
Notes for C++
查看>>
web前端职业规划(转)
查看>>
用户体验 的一个原则,
查看>>
常用面试sql语句
查看>>
Kafka - 消费接口分析
查看>>
<s:property value=""/> 获取属性时的各种方式
查看>>
RF-RequestsLibrary
查看>>
【HDOJ】1892 See you~
查看>>
同伦延拓法中的几个数学常识
查看>>
毕业论文如何排版
查看>>
JS3 -- 模块(cmd amd)
查看>>
转:机器学习算法笔记:谱聚类方法
查看>>
浮点数转换成二进制
查看>>
关于python中的enumerate函数的应用
查看>>
w7 全网架构-rsync-备份
查看>>
解释某宝的一段混淆视听的代码
查看>>
CDH安装指南——酒仙网技术
查看>>