一文了解人工智能神经网络的原理

大脑神经元

人脑可能有1000多亿个神经元,每一个神经元均可能在几个方向上互相链接着,这么大量的神经元及链接就造成了一个超级大型的网络。咱们就是由于这些网络而存在各类各样的思想和意识。mysql

在这里插入图片描述

大脑神经元便是脑神经细胞,主要包括细胞体、树突、轴突、突触等。算法

  • 细胞体,由细胞核、细胞质和细胞膜组成。它是神经元新陈代谢的中心,是接收信息并处理的部件。
  • 树突,是细胞体向外延伸树枝状的纤维体,它是神经元的输入通道,接收来自其余神经元的信息。
  • 轴突,是细胞体向处延伸的最长最粗的一条树枝纤维体,即神经纤维,它是神经元的输出通道。轴突有髓鞘纤维和无髓鞘纤维两种结构形式,二者传递信息的速度不一样。轴突末端有许多向外延伸的树枝状纤维体,称为神经末梢,它是神经元信息的输出端。
  • 突触,神经元的神经末梢与另外一神经元树突或细胞体的接触处即为突触。每个神经元都经过突触与其余神经元联系,细胞之间经过突触创建起链接,从而实现信息传递,每一个神经元约有103~104个突触。

在这里插入图片描述

模拟大脑

神经网络就是人们试图对大脑内部运做的模拟形式,在计算机领域,这种模型的起源至关早,能够追溯到20世纪40年代中期,当时计算机其实也刚出现不久。sql

1943年,麦卡洛克和皮茨发表了论文《神经活动内在概念的逻辑演算》,其中首次提出了表示人脑学习功能的一种数学方法。网络

在这里插入图片描述

如上图中x相似轴突,其它神经元的输出,通过突触链接树突,通过树突后输入到细胞体,细胞体执行必定运算后再通过激活函数最后输出到轴突。数据结构

这个简单的模型就是机器学习中神经网络的基础模型了,不经让咱们惊呼咱们的大脑如此的简单,但事实并非这样,人类对大脑的认识是在太少,能够说几乎尚未什么实质性进展。而用这种模型模拟的大脑,实际上比大脑差太多太多了,若是人类是上帝造的,那上帝确定不会让你猜透他是怎么造的。架构

这个阶段虽然大脑的神经元已经被数学建模了,咱们也并不知道这个模型是否正确,并且当时也没有明确权重参数的调整方法。并发

感知机模型

进入到20世纪50年代,一种最简单的人工神经元模型被提出来了。感知机?一听感受就像是一个实际存在的东西,就像计算机同样,它应该是看得见摸得着的机器吧!的确,20世纪60年代第一个硬件实现出现,当时直接将整个硬件都叫感知机,但后来感知机被改为是算法的名字了,因此它实际上是一个算法。机器学习

在这里插入图片描述

感知机之前辈的思想做为基础,基于此提出了一种反馈循环的学习机制,经过计算样本输出结果与正确结果之间的偏差来进行权重调整。分布式

大体的流程以下:函数

  • 经过随机数初始化权重参数。
  • 将一个输入向量传入网络。
  • 根据指定的输入向量和权重值计算网络的输出y',感知机的函数以下所示:

在这里插入图片描述

  • 若是y'≠y,则经过Δw =yxi增量来调整全部链接权重wi。
  • 返回第2步。

引入梯度降低

与感知机的学习机制不一样,ADALINE则是训练神经网络模型的另一种算法,因为它引入了梯度降低,因此能够说它比感知机更加先进。

在这里插入图片描述

大概流程为:

  • 经过随机数初始化权重。
  • 将一个输入向量传入网络。
  • 根据指定的输入向量和权重计算神经网络的输出y'。
  • 最后的输出值使用公式求和,

在这里插入图片描述

  • 计算偏差,将模型的输出值与正确的标签o进行比较,

在这里插入图片描述

  • 使用如下梯度降低递归地调整权重,

在这里插入图片描述

  • 返回到步骤2。

早期模型的局限

咱们能够看到感知机和ADALINE已经具有了神经网络模型的基本要素,二者都是单层神经网络,主要用于二分类问题,经过学习能实现二分类功能。

对于早期的神经模型,它其实具备很是大的局限性,甚至某种意义上来讲,它一点用处都没有。明斯基和帕佩特于1969年出版了《感知机》一书,其中阐明了感知机只能处理线性可分的问题,对于其余复杂问题彻底无能为力。

在这里插入图片描述

好比对于XOR函数,不存在任何一条直线能将其正确分割,感知机就是存在这种尴尬的状况,这种线性不可分的状况,感知机无法正确将两个类别分开。至此,神经网络进入寒冬。

多层感知机

既然单个神经元的感知机没法解决非线性问题,那么是否是能够推广到多个神经元组成多个神经网络层?因而将多组神经元链接起来,某个神经元的输出可输入到其它神经元中。

多层网络的传播,数据被输入第一层后,将从每一个神经元流入到下一层中对应的神经元中。而后在隐含层中进行求和并传递,最后到达输出层进行处理。而学习多层网络则须要反向传播算法来支持,多层网络增长了学习的复杂程度,从输入到最后的输出组成了很长的函数嵌套,这就增长了学习的难度。不过,好在求到时有链式法则的帮忙,让事情简单了不少。

在这里插入图片描述

大概流程为:

  • 计算从输入到输出的前馈信号。
  • 根据预测值和目标值计算输出偏差E。
  • 经过前一层中的权重和相关激活函数的梯度对它们进行加权反向传播偏差信号。
  • 基于反向传播偏差信号和输入的前馈信号计算参数的梯度

在这里插入图片描述

  • 使用计算好的梯度来更新参数,公式为

在这里插入图片描述

在这里插入图片描述

问题类型

神经网络可用于回归问题和分类问题。常见的结构差别在于输出层,若是想要获得一个实数结果,咱们就不该该使用标准化函数,好比sigmoid的函数。由于标准化函数会使咱们的输出结果限定在某个范围内,而有时咱们真正想要的是连续的数值结果。

  • 回归/函数逼近问题,此类问题可以使用最小二乘偏差函数,输出层使用线性激活函数,隐含层使用S形激活函数。
  • 二分类问题,一般使用交叉熵成本函数,输出层及隐含层都使用S形激活函数。
  • 多分类问题,一般使用交叉熵成本函数,输出层使用softmax函数,隐含层使用sigmoid激活函数。

深度神经网络

21世纪第二个十年,深度学习成为了人工智能最闪耀的研究。2011年谷歌X实验室从youtube抽取1000万图片,把它喂给采用了深度学习的谷歌大脑,三天后这个大脑在没有人类的帮助下本身发现了猫。2012年微软使用深度学习,完成演讲者实时语音识别、翻译,也就是完成同声翻译。

虽然深度学习在20世纪80年代就出现了,但受限于当时的硬件能力和数据资源缺少,并无体现出效果。只有辛顿带着学生在这个冷门领域坚持耕耘,直到2009年,辛顿他们才得到了意外的成功,他们将深度学习用在语音识别领域,打破了世界纪录,错误率比以前减小25%。深度学习开始火起来。

深度学习之因此有这么大的性能提高,是由于它相似人脑同样的深层神经网络,它更好地模拟了人脑的工做。

卷积神经网络

卷积神经网络的发展主要是为了解决人类视觉问题,不过如今其它方向也都会使用。发展历程主要从Lenet5->Alexnet->VGG->GooLenet->ResNet等。

上世界80年代发明了卷积层,但因为硬件限制没法构建复杂网络,直到后面90年代才开始有实践。

1998年LeCun提出卷积层、池化层和彻底链接层组合,以此来解决手写数字的识别问题。此时的效果已经很不错了,能与其它经典的机器学习模型相比。架构以下,一个32 x 32的输入,经过卷积提取特征,而后进行下采样,再一次卷积和下采样,后面进行全链接和高斯链接。即Lenet5。

后来随着可用的结构化数据和处理能力呈指数增加,使得模型能进一步加强,特别是Imagenet开源数据集的出现,数百万张被标记分类的图像。

2012年的LSVRC挑战赛,Hinton和他学生Alex Krizhevsky开发了Alexnet深度卷积网络,结构相似Lenet5,可是卷积层深度更深,参数总数达数千万。多个卷积层且每一个网络深度都达数百。即Alexnet。

2014年LSVRC挑战赛强大的竞争者,由牛津大学视觉几何组织提出的VGG模型。比起Alexnet,它主要是将卷积核缩小了,所有改用3x3。大致结构一致,但卷积配置能够不一样。激活函数使用ReLU,池化使用max pooling,最后使用softmax输出各项几率。

2014年,GoogLenet网络模型赢得LSVRC挑战赛,该系列赛首次由大型公司参赛并得到成功,此后也一直由拥有巨额预算的大公司赢得比赛。GoogLenet 主要由9个Inception模块组合而成。GoogLenet参数数量降到了一千多万,而且准确性比Alexnet提升,偏差从16.4%降到6.7%。

2015年随着《从新思考计算机视觉的Inception架构》文章发表,google研究人员发布新的Inception架构,主要解决协方差移位问题,其中将规范化应用于原始输入及每层的输出值。除此以外卷积核大小也有所变化,且增长了网络整体深度及卷积的分解。

2015年ResNet被提出,由原来微软研究院何恺明博士提出,现为Facebook AI研究科学家。ResNet战绩辉煌,当年一下取得5项第一。

循环神经网络

循环神经网络即recurrent neural network,它的提出主要是为了处理序列数据,序列数据是什么?就是前面的输入和后面的输入是有关联的,好比一句话,先后的词都是有关系的,“我肚子饿了,准备去xx”,根据前面的输入判断“xx”很大可能就是“吃饭”。这个就是序列数据。

循环神经网络有不少变种,好比LSTM、GRU等。

对于传统的神经网络,从输入层到若干隐含层再到输出层,层与层之间都是全链接的,并且层内之间的节点不相连。这种网络模型对于序列数据的预测就基本无能为力。

循环神经网络则擅长处理序列数据,它会对前面的信息进行记忆而且参与当前输出的计算,理论上循环神经网络能处理任意长度的序列数据。

在这里插入图片描述
在这里插入图片描述

好比能够作字符级别的预测,以下图,假如这里只有四种字符,样本为”hello”单词,则输入h预测下个字符为e,e接着则输出l,l则输出l,最后输入l则输出o。

在这里插入图片描述

-------------推荐阅读------------

个人开源项目汇总(机器&深度学习、NLP、网络IO、AIML、mysql协议、chatbot)

为何写《Tomcat内核设计剖析》

2018汇总数据结构算法篇

2018汇总机器学习篇

2018汇总Java深度篇

2018汇总天然语言处理篇

2018汇总深度学习篇

2018汇总JDK源码篇

2018汇总Java并发核心篇

2018汇总读书篇


跟我交流,向我提问:

在这里插入图片描述

欢迎关注:人工智能、读书与感想、聊聊数学、分布式、机器学习、深度学习、天然语言处理、算法与数据结构、Java深度、Tomcat内核等相关文章

在这里插入图片描述
相关文章
相关标签/搜索