在之前系列中已大致了解了机器学习的形式化定义和神经网络的概念,在本小节中,将相对深入地探讨一下神经网络中的神经元模型以及深度学习常常用到的激活函数及卷积函数。
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
的光滑函数列,这种方法被称之为函数的光滑化或正则化。
在时间的维度上的“叠加作用”,如果函数是离散的,就用求累积和来刻画。如果函数是连续的,就求积分来表达。
虽然第