机器学习笔记(第五章神经网络)

机器学习(周志华著) Datawhale打卡第四天

第五章 神经网络

基本
  • 神经元

神经元(neuron)是神经网络的最基本的结构。在生物学中,它“兴奋”时会向相连的神经元发送化学物质,而要达到“兴奋”状态,需要一定的输入来突破“阈值”。McCulloch和Pitts将上述模型抽象成“M-P神经元模型”。

w1
w2
...
wn
y
x1
神经元
x2
...
xn
y=f(wx-θ)

神经元接收到的总输出与神经元的阈值相比较,即 ∑ i = 1 n w i x i − θ \sum_{i=1}^{n}w_ix_i-\theta i=1nwixiθ,然后通过“激活函数”产生输出。

阶跃函数和Sigmoid函数是典型的激活函数,由于阶跃函数不连续、不处处可导的特点,一般使用光滑的Sigmoid函数,后者表达式为 s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

  • 感知机

设计两层神经元,一层作为输出层,一层作为输入层,就组成了感知机(Perceptron)。

下面是两个输入神经元的感知机模型。

输出层
输入层
y
x1
x2

感知机能容易地实现逻辑与、或、非运算,但由于其本质是使用超平面 y = w x + b y=wx+b y=wx+b将线性可分的问题分隔开,却无法实现异或这种最简单的非线性可分问题。

  • 多层网络

使用多层网络显然比两层的感知机要强很多。而多层网络是一个复杂的模型,由此需要用到更强大的算法进行优化。反向传播算法(error BackPropagation,简称BP)算法就是典型代表。首先,要了解多层前馈神经网络的结构。

“多层前馈神经网络”是常见的多层结构,每层神经元直接与下层互连,不存在同层与跨层连接。

w11
wh1
w1j
whj
v11
vi1
v1h
vih
y1
b1
bh
yj
x1
xi

输入层与输出层之间的神经元层被称为隐藏层。为了简便,之后的推导使用上面的单隐层网络。

每一层的输入输出如上如所示,其中x为输入层,y为输出层,b为隐藏层。

输出层接收到隐藏层的输入记为 β j = ∑ h = 1 q w h j b h \beta_j=\sum_{h=1}^{q}w_{hj}b_h βj=h=1qwhjbh,隐藏层层接收到输入层的输入记为 α j = ∑ i = 1 d v i h x i \alpha_j=\sum_{i=1}^{d}v_{ih}x_i αj=i=1dvihxi,输出层的阈值用 θ j \theta_j θj表示,隐层的阈值用 γ h \gamma_h γh表示,

对训练样例 ( x k , y k ) (x_k,y_k) (xk,yk),假设神经网络的输出为 y k ^ = ( y 1 k ^ , y 2 k ^ , . . . , y l k ^ ) \hat{y_k}=(\hat{y_1^k},\hat{y_2^k},...,\hat{y_l^k}) yk^=(y1k^,y2k^,...,ylk^)

则网络的均方误差 E k = 0.5 ∑ j = 1 l ( y j k ^ − y j k ) 2 E_k=0.5\sum_{j=1}^{l}(\hat{y_j^k}-y_j^k)^2 Ek=0.5j=1l(yjk^yjk)2,记为损失函数,

BP算法基于梯度下降的策略,首先求损失函数关于各个参数的梯度,
∂ E k ∂ w h j = ∂ E k ∂ y ^ j k . ∂ y ^ j k ∂ β j . ∂ β j ∂ w h j = ( y j k ^ − y j k ) . ( 1 1 + e β j − θ j ) ’ . ( b h ) = ( y j k ^ − y j k ) . ( − e β j − θ j . ( 1 1 + e β j − θ j ) 2 ) . ( b h ) = ( y j k ^ − y j k ) y j k ^ ( 1 − y j k ^ ) b h = − g j b h \begin{aligned} \frac{\partial{E_{k}}}{\partial{w_{hj}}}&=\frac{\partial{E_{k}}}{\partial{\hat{y}_{j}^{k}}}.\frac{\partial{\hat{y}_{j}^{k}}}{\partial{\beta_{j}}}.\frac{\partial{\beta_{j}}}{\partial{w_{hj}}} \\ &=(\hat{y_j^k}-y_j^k).(\frac{1}{1+e^{\beta_j-\theta_j}})’.(b_h) \\ &=(\hat{y_j^k}-y_j^k).(-e^{\beta_j-\theta_j}.(\frac{1}{1+e^{\beta_j-\theta_j}})^2).(b_h) \\ &=(\hat{y_j^k}-y_j^k)\hat{y_j^k}(1-\hat{y_j^k})b_h \\ &=-g_jb_h \end{aligned} whjEk=y^jkEk.βjy^jk.whjβj=(yjk^yjk).(1+eβjθj1).(bh)=(yjk^yjk).(eβjθj.(1+eβjθj1)2).(bh)=(yjk^yjk)yjk^(1yjk^)bh=gjbh
w h j w_hj whj的更新公式 Δ w h j = − η ∂ E k ∂ w h j = η ( y j k − y j k ^ ) y j k ^ ( 1 − y j k ^ ) b h = η g j b h \Delta{w_{hj}}=-\eta\frac{\partial{E_{k}}}{\partial{w_{hj}}}=\eta(y_j^k-\hat{y_j^k})\hat{y_j^k}(1-\hat{y_j^k})b_h=\eta g_jb_h Δwhj=ηwhjEk=η(yjkyjk^)yjk^(1yjk^)bh=ηgjbh

同理 Δ θ j = − η g j \Delta{\theta_{j}}=-\eta g_j Δθj=ηgj

Δ v i h = η e h x i \Delta{v_{ih}}=\eta e_hx_i Δvih=ηehxi

Δ γ h = − η e h \Delta{\gamma_{h}}=-\eta e_h Δγh=ηeh

其中 e h = b h ( 1 − b h ) ∑ j = 1 l w h j g j e_h=b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j eh=bh(1bh)j=1lwhjgj

学习率 η ∈ ( 0 , 1 ) \eta\in(0,1) η(0,1)控制着算法的更新步长。

其他种类神经网络算法待续。。。

你可能感兴趣的:(机器学习,神经网络,算法)