【人工神经网络 Artificial Neural Network】

【人工神经网络 Artificial Neural Network】

本文介绍人工神经网络的发展

1、 生物模型&数学模型

这是生物学上的神经元模型图,它的作用机理可以简单描述为:树突接受身体上的电信号,传入神经元的细胞体中,神经元细胞会经过复杂的电信号处理,再由轴突、突触传递给对应的肌群或者其他组织,然后他们会根据神经元传递的响应的信号,做出对应的反应。

1943年,心理学家W.S.McCulloch和数理逻辑学家W.Pitts在观察到生物神经元的结构后,有了一个idea,他们想用数学模型来表征生物神经元的工作方式,基于神经元的生理特征,他们建立了单个神经元的数学模型(MP模型)。
在这里插入图片描述
这里可以试着理解为,输入 x 1 − x m x_1 - x_m x1xm为生物神经元的不同电信号输入, w k 1 − w k m w_{k1} - w_{km} wk1wkm为神经元内部对不同电信号的响应程度,偏置可大致理解为神经元所处的酸碱性状态,求和以及激活函数是神经元对信号的整合处理,最终输出到各个部分,我们可以试着这样去理解这个MP模型的仿生原理,但实际上生物神经元的机制远远不止这么简单,但是对于当时来说,这样的一种模型思想是非常超前的。

上面的图像展示的是MP模型的结构示意图,而他的数学表达式为:
y k = φ ( ∑ i = 1 m ω k i x i + b k ) = φ ( W k T X + b k ) \mathbf{y}_k = \boldsymbol{\varphi} \left( \sum_{i=1}^m \omega_{ki} \mathbf{x}_i + b_k \right) = \boldsymbol{\varphi} \big( \mathbf{W}^T_k \mathbf{X} + \mathbf{b}_k \big) yk=φ(i=1mωkixi+bk)=φ(WkTX+bk)
其中:

  • y ∈ R n × d \mathbf{y} \in \mathbb{R}^{n \times d} yRn×d: 输出矩阵( n n n个样本, d d d个神经元)
  • X ∈ R n × m \mathbf{X} \in \mathbb{R}^{n \times m} XRn×m: 输入矩阵( n n n个样本, m m m个特征)
  • W ∈ R m × d \mathbf{W} \in \mathbb{R}^{m \times d} WRm×d: 权重矩阵
  • b ∈ R 1 × d \mathbf{b} \in \mathbb{R}^{1 \times d} bR1×d: 偏置向量
  • φ \varphi φ: 激活函数(按元素作用)

2、 感知器

W.S.McCulloch和W.Pitts提出来的是单个的神经元模型,在十多年后,1957年,Frank Rosenblatt从纯数学的度重新考察这一模型,指出能够从一些输入输出对 ( X , y ) (X, y) (X,y)中通过学习算法获得权重 w w w b b b 。感知机所考虑的问题是:给定一些输入输出对 ( X , y ) (X, y) (X,y),其中 y = ± 1 y = \pm1 y=±1,求一个函数,使 f ( x ) = y f(x) = y f(x)=y
感知器算法理解:设定 f ( x ) = s i g n ( W T X + b ) f(x) = sign(W^TX + b) f(x)=sign(WTX+b),从一堆输入输出中自动学习,获得 W W W b b b
感知器算法(Perceptron Algorithm)步骤:

对于给定输入 ( x i , y i )    i = 1 ∼ N {(x_i,y_i)} \space\space i=1\sim N (xi,yi)  i=1N
① 随机选取 w w w, b b b
② 挑选一个 x i x_i xi

  • W T x i + b ≥ 0 W^Tx_i + b \geq 0 WTxi+b0, 且 y = − 1 y=-1 y=1,则:
    W = W − x W=W-x W=Wx b = b − 1 b=b-1 b=b1
  • W T x i + b < 0 W^Tx_i + b < 0 WTxi+b<0, 且 y = 1 y=1 y=1,则:
    W = W + x W=W+x W=W+x b = b + 1 b=b+1 b=b+1

③ 回到②,直到对所有 x i x_i xi,②中的条件都不成立时退出。

从公式中我们可以看出,感知器是通过不断地调整 W W W b b b,让输出满足真正的 y = 1 o r − 1 y=1 or -1 y=1or1,也即假如算出来的值大于0了就对 W T + b W^T+b WT+b减去一个值,假如算出来的值大于0了就加上一个值,那么会不会在一加一减中不断地来回震荡呢?
Frank Rosenblatt给出了收敛性的证明,他指出:假如数据线性可分,那么在有限的步骤之内,感知器算法就能够算出结果并退出。

3、 多层神经网络(Mutiple Layer Neural Networks)

单个的感知器,没有办法很好的处理非线性可分的情况,多层神经网络的思想是,使用非线性的函数集合去分开非线性的样本

两层神经网络例子:
在这里插入图片描述
数学表达式:
a 1 = ω 11 x 1 + ω 12 x 2 + b 1 a_1 = \omega_{11}x_1 + \omega_{12}x_2 + b_1 a1=ω11x1+ω12x2+b1
a 2 = ω 21 x 1 + ω 22 x 2 + b 2 a_2 = \omega_{21}x_1 + \omega_{22}x_2 + b_2 a2=ω21x1+ω22x2+b2
z 1 = φ ( a 1 ) z_1 = \varphi(a_1) z1=φ(a1)
z 2 = φ ( a 2 ) z_2 = \varphi(a_2) z2=φ(a2)
y = ω 1 z 1 + ω 2 z 2 + b 3 y = \omega_1z_1 + \omega_2z_2 + b_3 y=ω1z1+ω2z2+b3

其中 φ ( ∗ ) \varphi(*) φ() 为非线性函数

4、 非线性 φ ( ∗ ) \varphi(*) φ()

非线性函数在现在通常被称为激活函数,一般的每个神经元的输出都是要经过非线性激活的,激活函数用于对每层的输出数据进行变换, 进而为整个网络注入了非线性因素。此时, 神经网络就可以拟合各种曲线。
最早人们考虑的是阶跃函数作为激活用,它的数学表达式为:
φ ( x ) = { 0 , x ≤ 0 1 , x > 0 \varphi(x)= \begin{cases} 0,\quad x\leq 0\\ 1, \quad x>0 \end{cases} φ(x)={0,x01,x>0
函数图像表示为:
在这里插入图片描述

现在常用的激活函数有很多,这里先罗列出常用的一部分:

  1. Sigmoid
    数学表达式:
    φ ( x ) = 1 1 + e − x φ ′ ( x ) = φ ( x ) [ 1 − φ ( x ) ] \begin{aligned} \varphi(x) &= \frac{1}{1 + e^{-x}} \\ \varphi'(x) &= \varphi(x)[1 - \varphi(x)] \end{aligned} φ(x)φ(x)=1+ex1=φ(x)[1φ(x)]
    函数图像:
    在这里插入图片描述

  2. tanh
    数学表达式:
    φ ( x ) = e x − e − x e x + e − x φ ′ ( x ) = 1 − [ φ ( x ) ] 2 \begin{aligned} \varphi(x) &= \frac{e^x - e^{-x}}{e^x + e^{-x}} \\ \varphi'(x) &= 1 - [\varphi(x)]^2 \end{aligned} φ(x)φ(x)=ex+exexex=1[φ(x)]2
    函数图像:
    在这里插入图片描述

  3. ReLU
    数学表达式:
    φ ( x ) = max ⁡ ( 0 , x ) = { x if  x > 0 0 if  x ≤ 0 \varphi(x) = \max(0, x) = \begin{cases} x & \text{if } x > 0 \\ 0 & \text{if } x \leq 0 \end{cases} φ(x)=max(0,x)={x0if x>0if x0
    函数图像:
    在这里插入图片描述

  4. Leak ReLU
    函数表达式:
    LReLU ( x ) = { x x > 0 α x x ≤ 0 , α ∈ ( 0 , 1 ) \text{LReLU}(x) = \begin{cases} x & x > 0 \\ \alpha x & x \leq 0 \end{cases}, \quad \alpha \in (0, 1) LReLU(x)={xαxx>0x0,α(0,1)
    LReLU ′ ( x ) = { 1 x > 0 α x ≤ 0 \text{LReLU}'(x) = \begin{cases} 1 & x > 0 \\ \alpha & x \leq 0 \end{cases} LReLU(x)={1αx>0x0
    函数图像:
    在这里插入图片描述

  5. Softmax
    函数表达式:
    Softmax ( z ) i = e z i ∑ j = 1 K e z j for  i = 1 , … , K \text{Softmax}(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} \quad \text{for } i = 1, \dots, K Softmax(z)i=j=1Kezjezifor i=1,,K
    函数图像:
    在这里插入图片描述
    关于激活函数的详细知识,详见另一篇博客:常见激活函数逻辑回归&激活函数,这里给出了比较详细的函数讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值