机器学习初探:(八)神经网络 - 1

(八)神经网络 - 1

机器学习初探:(八)神经网络 - 1_第1张图片

​ 图片出处

文章目录

  • (八)神经网络 - 1
    • 神经网络(Neural networks)
      • 神经元模型
      • 逻辑回归 vs 感知机
    • 多层网络
      • 多层网络的表示
      • 多层前馈神经网络
    • 几种激活函数
      • Sigmoid 函数
      • tanh 函数
      • ReLU 函数
      • Leaky ReLU 函数
    • 小结
    • 参考资料

神经网络(Neural Networks)是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。

神经网络中最基本的成分是神经元(neuron)模型。在生物神经网络中,神经元结构大致可分为:树突、突触、细胞体及轴突。单个神经元可被视为一种只有两种状态的机器——激活时为‘是’,而未激活时为‘否’。每个神经元与其他神经元相连,每个神经元的状态取决于从其它的神经元收到的输入信号量,及突触的强度(抑制或加强)。如果某神经元的信号量总和(即,电位)超过了一个“阈值”(threshold),那么它就会被激活,产生电脉冲。电脉冲沿着轴突并通过突触向其他神经元发送化学物质,从而改变这些神经元内的电位1。人脑中的神经网络是一个非常复杂的组织,成人的大脑中估计有1000亿个神经元之多。

机器学习初探:(八)神经网络 - 1_第2张图片

图1 什么是神经网络

神经网络(Neural networks)

定义:神经网络是由具有适应性的简单单元(即,神经元)组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应1

神经元模型

1943年,McCulloch 和 Pitts 将人脑神经元对外界刺激的反应抽象为下图2所示的简单模型,这就是一直沿用至今的“M-P神经元模型1。在这个模型中,为了模拟神经细胞行为,与之对应的感知机基础概念被提出,如权重(突触)、偏置(阈值)及激活函数(细胞体)。神经元接收到来自 n n n 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。当神经元接收到的总输入值大于阈值时,神经细胞已经处于兴奋状态了,已经决定要向下一个神经元传递信号了,但是要传递多强烈的信号,要由激活函数来确定。

具体而言,在下图2中, ( x 1 , x 2 , x 3 ) (x_1,x_2,x_3) (x1,x2,x3) 是外界输入信号,一般是一个训练数据样本的多个属性; ( ω 1 , ω 2 , ω 3 ) (\omega_1,\omega_2,\omega_3) (ω1,ω2,ω3) 是每个输入信号的权重值;这个 b b b 就是偏置值; A A A 即为该神经元的输出。

机器学习初探:(八)神经网络 - 1_第3张图片

图2 M-P神经元模型

神经元细胞的数学模型表示如下:
Z = ω 1 ⋅ x 1 + ω 2 ⋅ x 2 + ω 3 ⋅ x 3 + b = ∑ i = 1 n = 3 ( ω i x i ) + b Z = W T X + b A = a ( Z ) \begin{aligned} Z &= \omega_1 \cdot x_1 + \omega_2 \cdot x_2 + \omega_3 \cdot x_3 +b = \sum_{i=1}^{n=3} (\omega_i x_i) + b\\ Z &= W ^ T X + b\\ A &= a(Z) \end{aligned} ZZA=ω1x1+ω2x2+ω3x3+b=i=1n=3(ωixi)+b=WTX+b=a(Z)
其中, W = [ ω 1 , ω 2 , ω 3 ] T W = [\omega_1, \omega_2, \omega_3]^T W=[ω1,ω2,ω3]T X = [ x 1 , x 2 , x 3 ] T X = [x_1, x_2, x_3]^T X=[x1,x2,x3]T a ( ⋅ ) a(\cdot) a() 即为激活函数。

逻辑回归 vs 感知机

在人工神经网络领域中,感知机(Perception)也被指为单层的人工神经网络,以区别于较复杂的多层感知机(Multilayer Perceptron)。感知机是一种二元线性分类器,其由两层神经元组成(输入层和输出层),如下图3所示,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。

注意:一般我们说神经网络的层数是不包括输入层的。

机器学习初探:(八)神经网络 - 1_第4张图片

图3 三个输入神经元的感知机网络结构示意图

还记得我们在机器学习初探:(四)逻辑回归之二分类文章中介绍的逻辑回归算法吗?细心的你也许会发现,逻辑回归其实类似于一种简单的感知机模型2。如下图4中所示,逻辑回归的基本表示为 y ^ = σ ( Z ) \hat{y} = \sigma (Z) y^=σ(Z),其中 Z = W T X + b Z = W^T X + b Z=WTX+b ,Sigmoid函数 σ ( ⋅ ) \sigma(\cdot) σ() 即发挥了激活函数的作用。

机器学习初探:(八)神经网络 - 1_第5张图片

图4 逻辑回归 vs 感知机

需注意的是,感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限,主要的本质缺陷是它不能处理线性不可分问题1

多层网络

多层网络的表示

要解决非线性可分问题,需考虑使用多层功能神经元。如下图5中所示,把许多个如图4所示的神经元按一定的层次结构连接起来,就得到了一个二层的神经网络。在图5中,输出层与输入层之间的一层神经元,被称为隐层或隐含层(hidden layer),隐含层和输出层神经元都是拥有激活函数的功能神经元1

机器学习初探:(八)神经网络 - 1_第6张图片

图5 多层神经网络表示示例

上图5中的隐层神经元( l = 1 l =1 l=1)的数学模型表示如下:
Z 1 [ 1 ] = W 1 [ 1 ] T X + b 1 [ 1 ] , a 1 [ 1 ] = σ ( Z 1 [ 1 ] ) Z 2 [ 1 ] = W 2 [ 1 ] T X + b 2 [ 1 ] , a 2 [ 1 ] = σ ( Z 2 [ 1 ] ) Z 3 [ 1 ] = W 3 [ 1 ] T X + b 3 [ 1 ] , a 3 [ 1 ] = σ ( Z 3 [ 1 ] ) Z 4 [ 1 ] = W 4 [ 1 ] T X + b 4 [ 1 ] , a 4 [ 1 ] = σ ( Z 4 [ 1 ] ) \begin{aligned} & Z_{1}^{[1]} = W_1^{[1]T}X + b_1^{[1]}, \quad a_1^{[1]} = \sigma(Z_1^{[1]})\\ & Z_{2}^{[1]} = W_2^{[1]T}X + b_2^{[1]}, \quad a_2^{[1]} = \sigma(Z_2^{[1]})\\ & Z_{3}^{[1]} = W_3^{[1]T}X + b_3^{[1]}, \quad a_3^{[1]} = \sigma(Z_3^{[1]})\\ & Z_{4}^{[1]} = W_4^{[1]T}X + b_4^{[1]}, \quad a_4^{[1]} = \sigma(Z_4^{[1]})\\ \end{aligned} Z1[1]=W1[1]TX+b1[1],a1[1]=σ(Z1[1])Z2[1]=W2[1]TX+b2[1],a2[1]=σ(Z2[1])Z3[1]=W3[1]TX+b3[1],a3[1]=σ(Z3[1])Z4[1]=W4[1]TX+b4[1],a4[1]=σ(Z4[1])

输出层神经元( l = 2 l = 2 l=2)的数学模型表示如下:
Z 1 [ 2 ] = W 1 [ 2 ] T X + b 1 [ 2 ] , a 1 [ 2 ] = σ ( Z 1 [ 2 ] ) Z_{1}^{[2]} = W_1^{[2]T}X + b_1^{[2]}, \quad a_1^{[2]} = \sigma(Z_1^{[2]}) Z1[2]=W1[2]TX+b1[2],a1[2]=σ(Z1[2])
其中, ω i j [ l ] \omega_{ij}^{[l]} ωij[l] 表示由第 l l l 层的第 i i i 个结点至第 l − 1 l-1 l1 层的第 j j j 个结点间的连接权重。 l = 0 l = 0 l=0 对应输入层, l = 1 l = 1 l=1 对应隐层, l = 2 l = 2 l=2 对应输出层。如果用 W [ l ] W^{[l]} W[l] 代表第 l l l 层至第 l − 1 l-1 l1 层的连接权重矩阵, W i [ l ] W_i^{[l]} Wi[l] 代表第 l l l 层第 i i i 个节点至第 l − 1 l-1 l1 层的连接权重矩阵。以 l = 1 l = 1 l=1 为例, W [ 1 ] W^{[1]} W[1] 为一个 4 × 3 4 \times 3 4×3 的矩阵,表示图5中由隐层至输入层的连接权重矩阵,即:

W [ 1 ] = [ − W 1 [ 1 ] T − − W 2 [ 1 ] T − − W 3 [ 1 ] T − − W 4 [ 1 ] T − ] [ ω 11 [ 1 ] , ω 12 [ 1 ] , ω 13 [ 1 ] ω 21 [ 1 ] , ω 22 [ 1 ] , ω 23 [ 1 ] ω 31 [ 1 ] , ω 32 [ 1 ] , ω 33 [ 1 ] ω 41 [ 1 ] , ω 42 [ 1 ] , ω 43 [ 1 ] ] \begin{aligned} W^{[1]} = \begin{bmatrix} & - &W_1^{[1]T} & - \\ & - &W_2^{[1]T} & - \\ & - &W_3^{[1]T} & - \\ & - &W_4^{[1]T} & - \end{bmatrix} \begin{bmatrix} \omega_{11}^{[1]}, & \omega_{12}^{[1]}, & \omega_{13}^{[1]}\\ \omega_{21}^{[1]}, & \omega_{22}^{[1]}, & \omega_{23}^{[1]}\\ \omega_{31}^{[1]}, & \omega_{32}^{[1]}, & \omega_{33}^{[1]}\\ \omega_{41}^{[1]}, & \omega_{42}^{[1]}, & \omega_{43}^{[1]} \end{bmatrix} \end{aligned} W[1]=W1[1]TW2[1]TW3[1]TW4[1]Tω11[1],ω21[1],ω31[1],ω41[1],ω12[1],ω22[1],ω32[1],ω42[1],ω13[1]ω23[1]ω33[1]ω43[1]

相应地, W [ 2 ] W^{[2]} W[2] 为一个 1 × 4 1 \times 4 1×4 的矩阵,表示图5中由输出层至隐层的连接权重矩阵。

W [ l ] W^{[l]} W[l] n l × n l − 1 n_l \times n_{l-1} nl×nl1 的矩阵,代表第 l l l 层至第 l − 1 l-1 l1 层的连接权重矩阵;其中, n l n_l nl 为第 l l l 层的神经元个数, n l − 1 n_{l-1} nl1 为第 l − 1 l-1 l1 层的神经元个数。

多层前馈神经网络

更一般的,常见的神经网络是形如图6所示的层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常被称为“多层前馈神经网络”(multi-layer feedforward neural networks),其中输入层神经元接收外界输入,隐藏层与输出层神经元对信号进行加工,最终结果由输出层神经元输出;换言之,输入层神经元仅是接收输入,不进行函数处理,隐藏层与输出层包含功能神经元1

“前馈”并不意味着网络中信号不能向后传,而是指网络拓扑结构上不存在环或回路。

机器学习初探:(八)神经网络 - 1_第7张图片

图6 多层前馈神经网络结构示意图

一个多层神经网络的前馈运算如下图7所示3

机器学习初探:(八)神经网络 - 1_第8张图片

图7 多层神经网络前馈运算

神经网络的学习过程,就是根据有标签的训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值,使得网络输出尽可能接近数据真实标签。换言之,神经网络“学”到的东西,蕴涵在连接权和阈值中。神经网络也可以通过梯度下降算法来调整神经元之间的“连接权”,我们将在下篇进行介绍。

几种激活函数

通过前面的介绍,我们了解到,每个功能神经元中都包含一个激活函数。下面,我们来看看常用的激活函数有哪些,都有什么性质和特点,以及为什么需要激活函数?

Sigmoid 函数

在上面的例子中,我们使用的是 Sigmoid 激活函数。Sigmoid 是常用的非线性的激活函数,它的数学形式如下:
f ( x ) = 1 1 + e − x f(x) = \frac{1}{ 1 + e^{-x}} f(x)=1+ex1
Sigmoid 函数及其梯度的几何图像如下图8中所示。Sigmoid 函数的主要特点是,它能够把输入的连续实值转换为 (0,1) 之间的输出,经常用在二分类任务中的输出层神经元。

机器学习初探:(八)神经网络 - 1_第9张图片

图8 Sigmoid 激活函数

tanh 函数

tanh 函数解析式为:
t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+exexex
tanh函数及其导数的几何图像如下图9所示。对于隐藏层的功能单元,tanh 激活函数的效果通常优于 Sigmoid 激活函数,因为tanh 函数的输出均值接近于零,使得后一层神经元得到上一层神经元零均值的信号作为输入,从而可以加速神经网络学习时的收敛过程24

机器学习初探:(八)神经网络 - 1_第10张图片

图9 tanh 激活函数

ReLU 函数

ReLU (Rectified Linear Unit)函数的解析式:
R e l u ( x ) = m a x ( 0 , x ) Relu(x) = max(0,x) Relu(x)=max(0,x)
ReLU 函数及其导数的图像如下图10所示。对于 Sigmoid 函数以及 tanh 函数而言,由其导数图像可知,当功能神经元的输入值 z z z 取值非常小或非常大时,其导数值会趋近于零,这会使得梯度下降算法收敛速度变慢。而使用 ReLU 函数便可以避免这一问题,其收敛速度远快于 Sigmoid 和 tanh4

机器学习初探:(八)神经网络 - 1_第11张图片

图10 ReLU 激活函数

Leaky ReLU 函数

Leaky ReLU 的函数表达式:
f ( x ) = m a x ( α x , x ) f(x) = max(\alpha x, x) f(x)=max(αx,x)

Leaky ReLU函数及其导数的图像如下图11所示。在ReLU函数中,不难发现,当功能神经元的输入 z z z 取值为负时,ReLU函数的梯度为零。Leaky ReLU 为了解决这一问题,将 ReLU 的前半段设为 α x \alpha x αx 而非 0,通常 α = 0.01 \alpha = 0.01 α=0.01。在下图11中为了显示直观,设定 α = 0.2 \alpha = 0.2 α=0.2

理论上来讲,Leaky ReLU 有 ReLU 的所有优点,但是在实际操作中,并没有完全证明 Leaky ReLU 总是好于 ReLU2

机器学习初探:(八)神经网络 - 1_第12张图片

图11 Leaky ReLU 激活函数

整体而言,ReLU目前仍是最常用的激活函数,在搭建人工神经网络的时候:

  • 对于隐藏层神经元,在不确定采用何种激活函数的情况下,推荐优先尝试 ReLU!
  • 如果问题是二分类问题,输出层神经元仍需使用 Sigmoid 函数。

小结

1,神经网络(Neural Networks)是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。神经网络中最基本的成分是“M-P神经元模型”。

2,感知机(Perception)为一种最简单的单层人工神经网络,其由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,感知机可以处理二元线性分类问题

3,要解决非线性可分问题,需考虑使用多层功能神经元,即把许多个M-P神经元按一定的层次结构连接起来。常见的神经网络结构为 “多层前馈神经网络”(multi-layer feedforward neural networks),即每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。

4,整体而言,ReLU目前仍是最常用的激活函数,在搭建人工神经网络的时候推荐优先尝试。此外,常用的激活函数还包括 Sigmoid 函数、tanh 函数、Leaky ReLU 函数。

参考资料

常用激活函数(激励函数)理解与总结


  1. 周志华. 机器学习[M]. 清华大学出版社, 2016. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. 吴恩达. Neural networks and deep learning. ↩︎ ↩︎ ↩︎

  3. 感知机|机器之心 ↩︎

  4. 常用激活函数(激励函数)理解与总结 ↩︎ ↩︎

你可能感兴趣的:(机器学习入门,神经网络,机器学习,深度学习)