大脑神经元

人脑可能有1000多亿个神经元,每个神经元都可能在几个方向上互相连接着,这么大量的神经元及连接就形成了一个超级大型的网络。我们就是因为这些网络而存在各种各样的思想和意识。

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(1)

image

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(2)

image

模拟大脑

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

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(3)

image

如上图中x类似轴突,其它神经元的输出,经过突触连接树突,经过树突后输入到细胞体,细胞体执行一定运算后再经过激活函数最后输出到轴突。

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

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

感知机模型

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(4)

image

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

大致的流程如下:

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(5)

image

引入梯度下降

与感知机的学习机制不同,ADALINE则是训练神经网络模型的另外一种算法,由于它引入了梯度下降,所以可以说它比感知机更加先进。

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(6)

image

大概流程为:

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(7)

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(8)

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(9)

早期模型的局限

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

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(10)

image

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

多层感知机

既然单个神经元的感知机无法解决非线性问题,那么是不是可以推广到多个神经元组成多个神经网络层?于是将多组神经元连接起来,某个神经元的输出可输入到其它神经元中。

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(11)

image

大概流程为:

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(12)

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(13)

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(14)

image

问题类型

神经网络可用于回归问题和分类问题。常见的结构差异在于输出层,如果想要得到一个实数结果,我们就不应该使用标准化函数,比如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等。

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

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(15)

image

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(16)

image

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

大脑神经网络有多复杂(聊聊从脑神经到神经网络)(17)

image

,