西瓜书 神经网络学习笔记

5.1神经元模型

神经网络是由具有适应性简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界所做出的交互反应,其基本成分为神经元(neuron)模型

M-P神经元模型即神经元接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元将接收到的总输入值与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。

实际中,常常使用sigmoid函数作为激活函数
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

5.2感知机与多层网络

感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称为“阈值逻辑单元”,感知机能够容易地实现与或非逻辑运算。

除了上述的三种运算外,更一般地,给定训练数据集,权重 ω i ( i = 1 , 2 , . . . , n ) \omega_i(i=1,2,...,n) ωi(i=1,2,...,n)以及阈值 θ \theta θ,可以通过学习得到感知机。其中,阈值 θ \theta θ可以看做一个固定输入为-0.1的“哑结点”,所对应的连接权重 ω n + 1 \omega_{n+1} ωn+1。这样权重和阈值的学习就可以统一为权重的学习,对训练样例 ( x , y ) (x,y) (x,y),若当前感知机输出为 y ^ \hat{y} y^,则其权重应这样调整:
ω i ← ω i + Δ ω i \omega_i\leftarrow \omega_i + \Delta\omega_i ωiωi+Δωi
Δ ω i = η ( y − y ^ ) x i \Delta\omega_i=\eta(y-\hat{y})x_i Δωi=η(yy^)xi
η ∈ ( 0 , 1 ) \eta \in (0,1) η(0,1) 为学习率。由上式可看出,若预测正确则不调整感知机,否则按错误程度调整权重

感知机只有输出层神经元进行激活处理,即只拥有一层功能神经元,其学习能力十分有限。

两类模式的学习过程必定会收敛,因此与或非运算必定收敛(因其问题都为线性可分)。
线性可分指存在一个线性超平面可以进行划分。

要解决非线性可分问题,则需要考虑使用多层功能神经元。多层网络中,隐含层和输出层神经元都是含有激活函数的功能神经元。

多层前馈神经网络中,每层神经元都与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。“前馈”并不意味着信号不能后传,而是网络拓扑结构上不存在环或者回路。

5.3 误差逆传播算法(BP)

BP算法主要基于微积分链式求导法则,反向传递导数,以梯度下降进行参数更新

给定训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . , ( x m , y m ) } , x i ∈ R d , y i ∈ R l D=\{(x_1,y_1),(x_2,y_2),....,(x_m,y_m)\},x_i\in R^d,y_i\in R^l D={(x1,y1),(x2,y2),....,(xm,ym)},xiRd,yiRl。表示输入示例由d个属性描述,输出l维实值向量。输出层第 j j j个神经元的阈值用 θ j \theta_j θj表示,隐含层第h个神经元阈值用 γ h \gamma_h γh表示。输入层第i个神经元与隐含层第h个神经元的连接权重为 v i h v_{ih} vih,隐含层第h个神经元与输出层第j个神经元之间的连接权重为 ω h j \omega_{hj} ωhj。记隐含层第h个神经元接收到的输入为 α h = ∑ i = 1 d v i h x i \alpha_h=\sum_{i=1}^{d}v_{ih}x_i αh=i=1dvihxi,输出层第 j j j个神经元接收到的输入为 β j = ∑ h = 1 q w h j b h , b h \beta_j=\sum_{h=1}^qw_{hj}b_h,b_h βj=h=1qwhjbh,bh为隐含层第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}) y^k=(y1k^,y2k^,...,ylk^),即 y j k ^ = f ( β j − θ j ) \hat{y_j^k}=f(\beta_j-\theta_j) yjk^=f(βjθj)
则网络在 ( x k , y k ) (x_k,y_k) (xk,yk)上的均方误差为
E k = 1 2 ∑ j = 1 l ( y j k − y j k ^ ) 2 E_k=\frac{1}{2}\sum_{j=1}^l(\hat{y_j^k-y_j^k})^2 Ek=21j=1l(yjkyjk^)2

BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,对于上式,给定学习率 η \eta η
Δ w h j = − η ∂ E k ∂ w h j = − η ∂ E k ∂ y j k ^ ∂ y j k ^ ∂ β j ∂ β j ∂ w h j \Delta w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}}=-\eta \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}} Δwhj=ηwhjEk=ηyjk^Ekβjyjk^whjβj
其中 ∂ β j ∂ w h j = b h \frac{\partial\beta_j}{\partial w_{hj}}=b_h whjβj=bh,而对sigmoid函数又有 f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f^{'}(x)=f(x)(1-f(x)) f(x)=f(x)(1f(x))
于是根据上式又有 g j = − ∂ E k ∂ y j k ^ ∂ y j k ^ ∂ β j = − ( y j k ^ − y j k ) f ′ ( β j − θ j ) g_j=-\frac{\partial E_k}{\partial \hat{y_j^k}} \frac{\partial\hat{y_j^k}}{\partial\beta_j}=-(\hat{y_j^k}-y_j^k)f^{'}(\beta_j-\theta_j) gj=yjk^Ekβjyjk^=(yjk^yjk)f(βjθj) = y j k ^ ( 1 − y j k ^ ) ( y j k − y j k ^ ) =\hat{y_j^k}(1-\hat{y_j^k})(y_j^k-\hat{y_j^k}) =yjk^(1yjk^)(yjkyjk^)
w h j w_{hj} whj的更新公式为 w h j = η g j b h w_{hj}=\eta g_jb_h whj=ηgjbh
同理 Δ θ j = − η ∂ E k ∂ y j k ^ ∂ y j k ^ ∂ θ j = − η g j \Delta\theta_j=-\eta\frac{\partial E_k}{\partial\hat{y_j^k}} \frac{\partial\hat{y_j^k}}{\partial\theta_j}=-\eta g_j Δθj=ηyjk^Ekθjyjk^=ηgj
Δ v i h = − η ∂ E k ∂ α h ∂ α h ∂ v i h = − η x i ∂ E k ∂ b h ∂ b h ∂ α h \Delta v_{ih}=-\eta \frac{\partial E_k}{\partial \alpha_h} \frac{\partial \alpha_h}{\partial v_{ih}}=-\eta x_i\frac{\partial E_k}{\partial b_h} \frac{\partial b_h}{\partial \alpha_h} Δvih=ηαhEkvihαh=ηxibhEkαhbh
任意 β j \beta_j βj中均有输入 b h b_h bh,上式可以变形为
= η x i ∑ j = 1 l ∂ E k ∂ β j ∂ β j ∂ b h f ′ ( b h ) = − η b h ( 1 − b h ) ∑ j = 1 l w h j g j =\eta x_i \sum_{j=1}^l \frac{\partial E_k}{\partial \beta_j}\frac{\partial \beta_j}{\partial b_h}f^{'}(b_h) =-\eta b_h(1-b_h)\sum_{j=1}^l w_{hj}g_j =ηxij=1lβjEkbhβjf(bh)=ηbh(1bh)j=1lwhjgj
同上又可以得到隐含层神经元的阈值 γ \gamma γ的增量 Δ γ h = − η b h ( 1 − b h ) ∑ j = 1 l w h j g j \Delta \gamma_h=-\eta b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j Δγh=ηbh(1bh)j=1lwhjgj

神经网络在学习中通常会过拟合,通常有两种解决方式,一是早停,即验证集误差升高时停止训练,同时返回具有最小验证集误差的连接权值和阈值。二是正则化,即为连接权值加惩罚项,以描述其复杂度。

5.4全局最小与局部极小

跳出局部极小,接近全局最小的策略:

(1)使用多组不同参数初始化多个神经网络,按照标准方法进行训练后,取其中误差最小的解作为最终参数。
(2)“模拟退火”,在每一步都以一定概率接收比当前解更差的结果。但在迭代过程中,这个概率要随着时间推移逐渐降低,以保证算法稳定。
(3)随机梯度下降,与标准梯度下降相比,随机梯度下降加入了随机因素,即使陷入了局部极小值,所计算出的梯度仍然可能不为零。
(4)遗传算法也常常用来训练网络以逼近全局最小。

5.5其他常见神经网络

RBF网络(径向基函数网络)

这是一种单隐层前馈神经网络,使用径向基函数作为隐层神经元激活函数,而输出层是对隐层神经元输出的线性组合。假定输入为d维向量x,输出为实值,则RBF网络可以表示为 φ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) \varphi(x)=\sum_{i=1}^qw_i\rho(x,c_i) φ(x)=i=1qwiρ(x,ci)
其中q为隐层神经元的个数, c i c_i ci w i w_i wi分别是第i个隐层神经元所对应的中心和权重。
径向基函数是沿径向对称的标量函数,通常定义为样本x到数据中心c的欧氏距离的单调函数,常用的高斯径向基函数如下 ρ ( x , c i ) = e − β i ∣ ∣ x − c i ∣ ∣ 2 \rho(x,c_i)=e^{-\beta_i||x-c_i||^2} ρ(x,ci)=eβixci2
具有足够多隐层神经元的RBF网络能够以任意精度逼近任意连续函数
通常采用两步来训练RBF网络:
(1)确定神经元中心 c i c_i ci,常用的方式包括随机采样,聚类等
(2)利用BP算法来确定参数 w i w_i wi β i \beta_i βi

ART网络(自适应谐振理论网络)

竞争性学习是神经网络中常用的无监督学习策略,网络的输出神经元相互竞争,每一时刻仅有一个竞争胜利的神经元被激活,其他神经元受到抑制。
ART网络较好的缓解了竞争性学习中的“可塑性-稳定性窘境”,可塑性指神经网络要有学习新知识的能力,而稳定性指神经网络在学习新知识时要保持对旧知识的记忆。这就使得ART具有一个很重要的优点:可以进行增量学习或者在线学习。
ART网络由比较层,识别层,识别阈值和重置模块组成。比较层负责接收输入样本,将其传递给识别层神经元,识别层每个神经元对应一个模式类,且数目可以在训练过程中增加以增加新的模式类。竞争的最简单方式是计算输入向量与每个识别层神经元所对应模式向量的距离,距离最小的亨利。同时会更新网络的连接权重使得该神经元在以后的竞争中有更大可能获胜。

SOM网络(自组织映射网络)

SOM网络是一种竞争学习的无监督神经网络,能够将高维输入数据映射到低维空间(通常是二维)并且保持输入数据在高维空间的拓扑结构,即将高维空间中相似样本点映射到输出层的临近神经元。在这里插入图片描述
SOM网络输出层神经元以矩阵方式排列在二维空间中,每个神经元都拥有一个权向量。SOM训练的目标就是为每个输出层神经元找到合适权向量以达到保持拓扑结构的目的。

训练过程:接收一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,为最佳匹配单元。然后,最佳匹配神经元及其邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。

级联相关神经网络

一般的NN假设网络结构是固定的,学习的过程是确定参数的过程。而结构自适应网络,将网络结构也作为学习目标。级联相关网络(Cascade-correlation)是其代表。
ART网络用于隐层神经元数目可增长,也是一种结构自适应型网络。

级联:建立层次连接的层级结构,开始网络只有输入输出层。训练时,随着新的隐层神经元加入,创建起层级结构。
相关:加入新的隐层神经元,其输入端连接权值是冻结固定的,相关是通过最大化新神经元的输出与网络输出之间的相关性而训练参数。

与一般神经网络相比,无需设置网络层数等,训练速度较快,但是数据较小时容易过拟合。

插:动态增加分支(决策树),动态增加隐结点(级联网络),这种都容易过拟合。因为不仅其参数,包括其结构都在适应训练集,在这个意义上,更容易过拟合。
在这里插入图片描述

Elman网络

与前馈NN不同,递归神经网络允许出现环形结构,可让一些神经元的输出反馈回来作为输入。使得网络在t时刻的输出不仅依赖于t时刻输入,并且依赖于t-1时刻的网络状态。从而能处理与时间有关的动态变化。

可以叫循环(不断反馈),也可叫递归(t时刻依赖于t-1时刻)。在这里插入图片描述

Boltzmann机

神经网络中有一类模型:为网络状态定义一个能量。能量最小化时达到理想状态。而网络的训练就是在最小化这个能量函数。
Boltzmann机是一种“基于能量的模型”,即神经元都是布尔型,只能取0,1两种状态,状态1为激活,0为抑制

令向量 s ∈ { 0 , 1 } n s\in \{0,1\}^n s{0,1}n表示n个神经元的状态, w i j w_{ij} wij表示神经元i与j之间的连接权, θ i \theta_i θi表示神经元i的阈值,则状态向量s所对应的Boltzmann机能量定义为
E ( s ) = − ∑ i = 1 n − 1 ∑ j = i + 1 n w i j s i s j − ∑ i = 1 n θ i s i E(s)=-\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}w_{ij}s_is_j-\sum_{i=1}^{n}\theta_is_i E(s)=i=1n1j=i+1nwijsisji=1nθisi

Boltzmann机也是一种递归神经网络
若网络中的神经元以任意不依赖于输入值的顺序进行更新,则网络最终达到Boltzmann分布,此时状态向量s出现的概率将仅由s的能量与所有可能状态向量能量确定:
P ( s ) = e − E ( s ) ∑ t e − E ( t ) P(s)=\frac{e^{-E(s)}}{\sum_te^{-E(t)}} P(s)=teE(t)eE(s)

标准的Boltzmann机使一个全连接图,训练的复杂度很高,而受限Boltzmann机将其简化为二部图
在这里插入图片描述

5.6深度学习

多隐层神经网络难以用经典算法(标准BP)进行训练,因为误差在多层隐层传递时往往会“发散”,不能收敛到稳定状态。
无监督逐层训练是多隐层神经网络训练的有效手段,其基本思想是每次训练一层隐层结点,训练时将上一次输出作为输入,这称为“预训练”,在预训练全部完成后再对整个网络进行“微调”训练。

预训练+微调可视为对大量参数分组,每组找到局部比较好的设置,最后将这些结果联合起来进行全局寻优,这样在利用大量参数所提供的自由度同时有效地节省了训练开支。

另一种节省开销的方法是“权共享”,即一组神经元使用相同的连接权。这个策略在CNN中发挥了重要作用。

另一个角度看深度学习:

无论哪种网络,其多层堆叠,每层对上一层的输出进行处理的机制,可看作是对输入信号不断逐层加工,从而把初始的,与输出目标不太相关的输入表示,转化为与输出目标相关的表示。通过多层处理,逐渐将低层特征表示转化为高层特征表示后,用简单模型即可完成复杂的分类任务。

由此,可将深度学习理解为进行“特征学习”,或者“表示学习”。

以往的机器学习任务中,描述特征的样本通常需要由人类专家设计,称为“特征工程”。特征好坏对泛化性能有至关影响。人类设计好特征并非易事,特征学习则通过机器学习技术来产生好特征。使得机器学习向“全自动数据分许”前进了一大步。

你可能感兴趣的:(机器学习)