人脑可能有1000多亿个神经元,每一个神经元均可能在几个方向上互相链接着,这么大量的神经元及链接就造成了一个超级大型的网络。咱们就是由于这些网络而存在各类各样的思想和意识。mysql
大脑神经元便是脑神经细胞,主要包括细胞体、树突、轴突、突触等。算法
神经网络就是人们试图对大脑内部运做的模拟形式,在计算机领域,这种模型的起源至关早,能够追溯到20世纪40年代中期,当时计算机其实也刚出现不久。sql
1943年,麦卡洛克和皮茨发表了论文《神经活动内在概念的逻辑演算》,其中首次提出了表示人脑学习功能的一种数学方法。网络
如上图中x相似轴突,其它神经元的输出,通过突触链接树突,通过树突后输入到细胞体,细胞体执行必定运算后再通过激活函数最后输出到轴突。数据结构
这个简单的模型就是机器学习中神经网络的基础模型了,不经让咱们惊呼咱们的大脑如此的简单,但事实并非这样,人类对大脑的认识是在太少,能够说几乎尚未什么实质性进展。而用这种模型模拟的大脑,实际上比大脑差太多太多了,若是人类是上帝造的,那上帝确定不会让你猜透他是怎么造的。架构
这个阶段虽然大脑的神经元已经被数学建模了,咱们也并不知道这个模型是否正确,并且当时也没有明确权重参数的调整方法。并发
进入到20世纪50年代,一种最简单的人工神经元模型被提出来了。感知机?一听感受就像是一个实际存在的东西,就像计算机同样,它应该是看得见摸得着的机器吧!的确,20世纪60年代第一个硬件实现出现,当时直接将整个硬件都叫感知机,但后来感知机被改为是算法的名字了,因此它实际上是一个算法。机器学习
感知机之前辈的思想做为基础,基于此提出了一种反馈循环的学习机制,经过计算样本输出结果与正确结果之间的偏差来进行权重调整。分布式
大体的流程以下:函数
与感知机的学习机制不一样,ADALINE则是训练神经网络模型的另一种算法,因为它引入了梯度降低,因此能够说它比感知机更加先进。
大概流程为:
咱们能够看到感知机和ADALINE已经具有了神经网络模型的基本要素,二者都是单层神经网络,主要用于二分类问题,经过学习能实现二分类功能。
对于早期的神经模型,它其实具备很是大的局限性,甚至某种意义上来讲,它一点用处都没有。明斯基和帕佩特于1969年出版了《感知机》一书,其中阐明了感知机只能处理线性可分的问题,对于其余复杂问题彻底无能为力。
好比对于XOR函数,不存在任何一条直线能将其正确分割,感知机就是存在这种尴尬的状况,这种线性不可分的状况,感知机无法正确将两个类别分开。至此,神经网络进入寒冬。
既然单个神经元的感知机没法解决非线性问题,那么是否是能够推广到多个神经元组成多个神经网络层?因而将多组神经元链接起来,某个神经元的输出可输入到其它神经元中。
多层网络的传播,数据被输入第一层后,将从每一个神经元流入到下一层中对应的神经元中。而后在隐含层中进行求和并传递,最后到达输出层进行处理。而学习多层网络则须要反向传播算法来支持,多层网络增长了学习的复杂程度,从输入到最后的输出组成了很长的函数嵌套,这就增长了学习的难度。不过,好在求到时有链式法则的帮忙,让事情简单了不少。
大概流程为:
神经网络可用于回归问题和分类问题。常见的结构差别在于输出层,若是想要获得一个实数结果,咱们就不该该使用标准化函数,好比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)
跟我交流,向我提问:
欢迎关注:人工智能、读书与感想、聊聊数学、分布式、机器学习、深度学习、天然语言处理、算法与数据结构、Java深度、Tomcat内核等相关文章