简单易懂的讲解深度学习(入门系列之三)
在之前系列中已大致了解了机器学习的形式化定义和神经网络的概念,在本小节中,将相对深入地探讨一下神经网络中的神经元模型以及深度学习常常用到的激活函数及卷积函数。
3.1 M-P神经元模型是什么?
在前一小节中,已介绍了人工神经网络(ANNs)的定义。简单来说,它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
神经网络依靠系统的复杂程度,通过调整内部大量“简单单元”之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。
在上述定义中提及到的“简单单元”,其实就是神经网络中的最基本元素——神经元模型。在生物神经网络中,每个神经元与其它神经元,通过突触联接。神经元之间的“信息”传递,属于化学物质传递的。当它“兴奋(fire)”时,就会向与它相连的神经元发送化学物质(神经递质, neurotransmiter),从而改变这些神经元的电位;如果某些神经元的电位超过了一个“阈值(threshold)”,那么,它就会被“激活(activation)”,也就是“兴奋”起来,接着向其它神经元发送化学物质,犹如涟漪,就这样一层接着一层传播,如图3-1所示。
图3-1 大脑神经细胞的工作流程
在人工智能领域,有个好玩的派别叫“飞鸟派”。说的就是,如果我们想要学飞翔,就得向“飞鸟”来学习。简单来说,“飞鸟派”就是“仿生派”,即把进化了几百万年的生物,作为“模仿”对象,搞清楚原理后,再复现这些对象的特征。
其实现在所讲的神经网络包括深度学习,都在某种程度上,属于“飞鸟派”——它们在模拟大脑神经元的工作机理,它就是上世纪40年代提出但一直沿用至今的“M-P神经元模型”。
在这个模型中,神经元接收来自n个其它神经元传递过来的输入信号,这些信号的表达,通常通过神经元之间连接的权重(weight)大小来表示,神经元将接收到的输入值按照某种权重叠加起来,并将当前神经元的阈值进行比较,然后通过“激活函数(activation function)”向外表达输出(这在概念上就叫感知机),如图3-2所示。
图3-2 M-P神经元模型
简单吧?简单!可这么简单的道理,你咋能就这么轻易知道咧?
事实上,我们知道,对未知世界(比如说人类大脑)的每一点新认识,其实都是因为有大牛曾经艰辛地为我们站过台。前面提到的“M-P神经元模型”,亦是如此。
3.3 激活函数是怎样的一种存在?
言归正传。前面我们提到了神经元的工作模型存在“激活(1)”和“抑制(0)”等两种状态的跳变,那么理想型的激活函数(activation functions)就应该是如图3-5-a所示的阶跃函数,但事实上,在实际使用中,这种函数具有不光滑、不连续等众多不“友好”的特性。为什么说它“不友好”呢,这是因为在训练网络权重时,通常依赖对某个权重求偏导、寻极值,而不光滑、不连续等通常意味着该函数无法“连续可导”。
a 阶跃函数
b sigmoid函数
图3-5 典型的神经元激活函数
因此,我们通常用Sigmoid函数(如图3-5-b)所示)来代替阶跃函数。这个函数可以把较大变化范围内输入值(x)挤压输出在(0,1)范围之内,故此这个函数又称为“挤压函数(Squashing function)”。
那么,我们应该怎样理解激活函数呢?实际上,我们还是能从生活中找到相似的影子(理论来源人们对生活的抽象嘛)。比如说,如果你的“野蛮女友”打你耳光,当她打你第一个耳光时,你想了很多,考虑她的脸蛋(权重w1)、身材(权重w2)、学历(权重w3)、性格(权重w4)、你爱她的程度(权重w5)以及娶媳妇的难度(权重w6)等等因素(这些因素,在机器学习领域,就是研究对象的特征,它们组合在一起,就构成了对象的特征空间),综合衡量后,你决定忍了,或者说这一切并没有超出你忍耐的阈值(这期间,你也给自己找了一个优雅的台阶:打是亲、骂是爱啊),如果把你的忍耐“功能”看作一个函数(回顾一下我们前面的文章可以了解,“功能”和“函数”,本来就是一个概念——Function),那么在这个场景,相当于你的函数输出为0,目前还处于没有被激活状态。
当她打你第二个耳光时,你又想了很多,依然忍了,但上述因素的权重都开始调整了,比如性格权重下降,爱她的程度权重下降等。
……
当她打你第n个耳光时,你终于忍不了,“忍无可忍,无须再忍”,这时函数输出超出了阈值,你可能“发飙”扬长而去,也可能哭着喊“要打,也别老打脸啊”。
3.4 卷积函数又是什么?
说到“忍无可忍,无须再忍”这个场面,其实,我们还可以提前把“卷积(Convolution)”讲讲(在后续卷积神经网络中小节中,我们还会给出它形式化的定义,细细讲解)。
假设你的承受能力是一个在时间维度上的函数f,而你“野蛮女友”的打脸操作为函数g,那么卷积的概念,就是重新定义出来一个新的函数h(比如说,h用来刻画你的崩溃指数):h = f * g。
这是什么意思呢,通俗来讲,所谓卷积,就是一个功能(如刻画你的承受能力)和另一个功能(比如说描述你女友的打脸)在时间的维度上的“叠加”作用。就是这么简单!
图3-6 恋爱生活中的“卷积”
你可别忘了,在前面我们反复提到,函数(function)就是功能(function),功能就是函数!函数有一定的功能,才有其存在的意义!但孤立的函数并不好玩,叠加才更有意义。说学术点,由卷积得到的函数h一般要比f和g都光滑。利用这一性质,对于任意的可积函数f,都可简单地构造出一列逼近于f的光滑函数列,这种方法被称之为函数的光滑化或正则化。
在时间的维度上的“叠加作用”,如果函数是离散的,就用求累积和来刻画。如果函数是连续的,就求积分来表达。
虽然第n个耳光才让你发飙或跪地求饶,那在时间维度上,第一个耳光、第二个耳光已经过去了……,那它们有没有作用呢?当然有!它们的影响早已隐“忍”其内啦!
好了,刚才的例子可能有点得罪女性读者了(我们有那么凶吗?),那我们再举一个稍微温馨的例子好了。当你在向女友求婚时,总是不得其果,然后就一直对女友各种好,直到有一天,你给女朋友洗了一双袜子,哇,不得了,你的女友一下子就感动到崩溃,答应嫁给你了。
这时你要想明白啊,你的女友可没有那么便宜,你洗一双袜子就把人家搞定了?想得美!实际上,正解应该是,你一直对女友的各种好(函数f)和你女友的心理期许(函数g),一直在时间维度上进行不断地叠加耦合(积分求和),最终超出了女友的阈值,然后她输出了你想要的结果“Yes, I Do”。那么,这个函数f和函数g一起“卷积”出来的,到底是个什么样的函数呢,我劝你也别猜,“猜来猜去也猜不明白”,反正它很复杂就是了,而你要做的,就是持续不断地对她就对了。
网络上,有句话说得挺好玩:“爱是积累出来的,不爱也是。曾经无话不说,现在无话,不说。”这一切都是“卷积”卷出来的啊!
3.5 小节
以俺读书破万卷,下笔如神经的风格,虽然讲着神经网络的理论问题,却又常常离题万里,似乎非常应景(好神经啊),就此打住吧,下面我们总结一下本节的主要内容。
在本小节,我们主要讲了皮茨等人提出“M-P”感知机模型。简单来说,感知机模型,就是一个由两层神经元构成的网络结构,输入层接收外界的输入,通过激活函数(阈值)变换,把信号传送至输出层,因此它也称之为“阈值逻辑单元(threshold logic unit)”,正是这种简单的逻辑单元,慢慢演进,越来越复杂,就构成了我们目前研究的热点——深度学习网络。
在下小节,我们将聊聊机器学习的三种方式,请你关注。
【参考文献】
[1] McCulloch W S, Pitts W. A logical calculus of the ideas immanent in nervous activity[J]. The bulletin of mathematical biophysics, 1943, 5(4): 115-133.
[2] Marvin Minsky and Seymour Papert, 1972 (2nd edition with corrections, first edition 1969) Perceptrons: An Introduction to Computational Geometry, The MIT Press, Cambridge MA, ISBN 0-262-63022-2.
[3] (美)瓦茨拉维克等, 夏林清等译. 改变:问题形成和解决的原则. 教育科学出版社,2007-11
[4] 杨强.人工智能的下一个技术风口与商业风口,中国计算机学会通讯.2017年第5期