机器学习入门-西瓜书总结笔记第五章

西瓜书第五章-神经网络

  • 一、神经元模型
  • 二、感知机与多层网络
  • 三、误差逆传播算法
  • 四、全局最小与局部极小
  • 五、其他常见神经网络
    • 1.RBF网络
    • 2.ART网络
    • 3.SOM网络
    • 4.级联相关网络
    • 5.Elman网络
    • 6.Boltzmann机
  • 六、深度学习


一、神经元模型

  • 神经网络(neural networks) 是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应
  • 神经元(neuron) 如果某神经元的电位超过了一个 “阈值”(threshold) ,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质
  • “M-P 神经元模型” 神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的 连接(connection) 进行传递,神经元接收到的总输入将与神经元的阈值进行比较,然后通过 “激活函数”(activation function) 处理以产生神经元的输出
    机器学习入门-西瓜书总结笔记第五章_第1张图片
  • 通常使用典型的Sigmoid函数,它把可可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时候也被称为 “挤压函数”(squashing function)

机器学习入门-西瓜书总结笔记第五章_第2张图片

二、感知机与多层网络

  • 感知机(Perceptron) 由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称 “阈值逻辑单元”(threshold logic unit)
    机器学习入门-西瓜书总结笔记第五章_第3张图片

  • 感知机能容易地实现逻辑与、或、非运算

  • 感知机调整
    w i ← w i + Δ w i , Δ w i = η ( y − y ^ ) x i w_i \leftarrow w_i +\Delta w_i,\\ \Delta w_i = \eta(y-\hat y)x_i wiwi+Δwi,Δwi=η(yy^)xi
    其中 η ∈ ( 0 , 1 ) \eta \in (0,1) η(0,1) 称为 学习率(learning rate)

  • 感知机只有输出层神经元进行激活函数处理,即只用友一层功能神经元(functional neuron),其学习能力非常有限。

  • 线性可分(linearly separable),若两类模型线性可分的,即存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛(converge) 而求得适当的权向量 w = ( w 1 ; w 2 ; ⋯   ; w n + 1 ) \pmb w=(w_1;w_2;\cdots;w_{n+1}) www=(w1;w2;;wn+1);否则感知机学习过程将会发生 震荡(fluctuation)
    机器学习入门-西瓜书总结笔记第五章_第4张图片

  • 解决非线性可分问题,需要考虑使用多层功能神经元,输出层与输入层之间的一层神经元,被称为 隐层或隐含层(hidden layer),隐含层和输出层神经元都是拥有激活函数功能神经元
    机器学习入门-西瓜书总结笔记第五章_第5张图片

  • 更一般的,常见的神经网络是每层神经元与下一层神经元全互联,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常称为 “多层前馈神经网络”(multi-layer feedforward neural)
    机器学习入门-西瓜书总结笔记第五章_第6张图片

  • 输入层神经元仅是接收输入,不进行函数处理,隐层与输出层包含功能神经元

  • 神经网络的学习过程,就是根据训练数据来调整神经元之间 “连接权”(connection weight) 以及每个功能神经元的阈值,换言之,神经网络“学”的东西,蕴含在连接权与阈值中。

其实就是学习 w = ( w 1 , w 2 ; ⋯   ; w n + 1 ) \pmb w=(w_1,w_2;\cdots;w_{n+1}) www=(w1,w2;;wn+1)

三、误差逆传播算法

  • 误差逆传播(error BackPropagation,简称BP)算法 不仅可以用于多层前馈神经网络,还可以用于其他类型的神经网络,例如训练递归神经网络
    给定训练集 D = { ( x i , y i ) } i = 1 m , x i ∈ R d , y i ∈ R l D=\{(x_i,y_i)\}_{i=1}^{m}, x_i \in \R^d, y_i \in \R^l D={(xi,yi)}i=1m,xiRd,yiRl,即输入示例由d个属性描述,输出l维实值向量,输出层第 j j j个神经元的阈值用 θ j \theta_j θj表示,隐层层第 h h h个神经元的阈值用 γ h \gamma_h γh表示,输入层第 i i i个神经元与隐藏层第 h h h个神经元之间的连接权 v i h v_{ih} vih,隐藏层第 h h h个神经元与输出层第 j j j个神经元之间的连接权 w h j w_{hj} whj。记隐层第 h h h个神经元接收到的输入为 a h = ∑ i = 1 d v i h x i a_h=\sum_{i=1}^dv_{ih}x_i ah=i=1dvihxi,输出层第 j j j个神经元接收的输入为 β j = ∑ h = 1 q w h j b h \beta_j=\sum_{h=1}^q w_{hj}b_h βj=h=1qwhjbh,其中 b h b_h bh为隐层第h个神经元的输出。
    机器学习入门-西瓜书总结笔记第五章_第7张图片
  • 对训练集 ( x k , y k ) (\pmb x_k,\pmb y_k) (xxxk,yyyk),假定神经网络的输出为 y k ^ = ( y ^ 1 k , y ^ 2 k , ⋯   , y ^ l k ) \hat {\pmb y_k} = (\hat y_1^k,\hat y_2^k,\cdots,\hat y_l^k) yyyk^=(y^1k,y^2k,,y^lk),即
    y ^ j k = f ( β j − θ j ) \hat y_j^k=f(\beta_j - \theta_j) y^jk=f(βjθj)
    则网络在 ( x k , y k ) (\pmb x_k,\pmb y_k) (xxxk,yyyk)上的均方误差为
    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(y^jkyjk)2
    任意参数v的更新估计式为
    v ← v + Δ v v\leftarrow v+\Delta v vv+Δv
  • BP算法基于 梯度下降(gradient descent) 策略,以目标的负梯度方向对参数进行调整
    Δ w h j = − η ∂ E k ∂ w h j \Delta w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}} Δwhj=ηwhjEk
    注意到 w h j w_{hj} whj先影响到第 j j j个输出层神经元的输入 β j \beta_j βj,再影响到其输出值 y ^ j k \hat y_j^k y^jk,然后影响到 E k E_k Ek,有
    ∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ w h j \frac{\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial \hat y_{j}^k}\cdot \frac{\partial \hat y_{j}^k}{\partial \beta_j}\cdot \frac{\partial \beta_j}{\partial w_{hj}} whjEk=y^jkEkβjy^jkwhjβj
    根据 β j \beta_j β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 ) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) \begin{aligned} g_j&=-\frac{\partial E_k}{\partial \hat y_j^k}\cdot \frac{\partial \hat y_j^k}{\partial \beta_j}\\ &=-(\hat y_j^k - y_j^k)f'(\beta_j - \theta_j)\\ &=\hat y_j^k(1-\hat y_j^k)( y_j^k - \hat y_j^k) \end{aligned} gj=y^jkEkβjy^jk=(y^jkyjk)f(βjθj)=y^jk(1y^jk)(yjky^jk)
    可求得 w h j w_{hj} whj的更新公式
    Δ w h j = η g j b h \Delta w_{hj}=\eta g_j b_h Δwhj=ηgjbh
    类似可得
    Δ θ j = − η g j Δ v i h = η e h x i Δ γ h = − η e h \Delta \theta_{j}=-\eta g_j\\ \Delta v_{ih}=\eta e_h x_i\\ \Delta \gamma_{h}=-\eta e_h Δθj=ηgjΔvih=ηehxiΔγh=ηeh
    式中
    e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ a h = − ∑ j = 1 l ∂ E k β j ⋅ ∂ β j ∂ b h f ′ ( a h − γ h ) = ∑ j = 1 l w h j g j f ′ ( a h − γ h ) = b h ( 1 − b h ) ∑ j = 1 l w h j g j \begin{aligned} e_h &= -\frac{\partial E_k}{\partial b_h}\cdot \frac{\partial b_h}{\partial a_h}\\ &=-\sum_{j=1}^l\frac{\partial E_k}{\beta_j}\cdot \frac{\partial \beta_j}{\partial b_h}f'(a_h-\gamma_h)\\ &=\sum_{j=1}^l w_{hj} g_j f'(a_h-\gamma_h)\\ &=b_h(1-b_h)\sum_{j=1}^l w_{hj} g_j \end{aligned} eh=bhEkahbh=j=1lβjEkbhβjf(ahγh)=j=1lwhjgjf(ahγh)=bh(1bh)j=1lwhjgj
    机器学习入门-西瓜书总结笔记第五章_第8张图片机器学习入门-西瓜书总结笔记第五章_第9张图片需注意的是,BP算法的目标是要最小化训练集D上的累计误差
    E = 1 m ∑ k = 1 m E k , E = \frac{1}{m}\sum_{k=1}^m E_k, E=m1k=1mEk,
  • “标准BP算法” 每次仅针对一个训练样例更新连接权和阈值,“累计误差逆传播”(accumulated error backpropagation) 推导出基于累计误差最小化的更新规则
  • 只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连接函数,如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠 “试错法”(trial-by-error) 调整
  • BP网络的过拟合:1.“早停”(early stopping) 将数据分为训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值;2.“正则化”(regularization),其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和
    E = λ 1 m ∑ k = 1 k E k + ( 1 − λ ) ∑ i w i 2 E = \lambda \frac{1}{m}\sum_{k=1}^kE_k+ (1-\lambda)\sum_{i} w_i^2 E=λm1k=1kEk+(1λ)iwi2
    其中 w i w_i wi表示连接权和阈值, λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

四、全局最小与局部极小

  • “局部极小”(local minimum)和“全局最小”(global minimum)
    机器学习入门-西瓜书总结笔记第五章_第10张图片
    “跳出”局部极小,从而进一步接近全局最小:

  • 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部极小,从而选择有可能获得更接近全局最小的结果

  • 使用 “模拟退火”(simulated annealing)技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。在每步迭代过程中,接受“次优解”的概率要随时间的推移而逐渐降低,从而保证算法稳定

  • 使用随机梯度下降。与标准梯度下降精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小值继续搜索

  • 遗传算法(genetic algorithms) 也常用来训练神经网络以更好的逼近全局最小

五、其他常见神经网络

1.RBF网络

  • RBF(Radial Basis Function,径向基函数) 是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元的线性组合
    φ ( x ) = ∑ i = 1 q w i ρ ( x , c i ) \varphi(\pmb x)=\sum_{i=1}^q w_i \rho(\pmb x,\pmb c_i) φ(xxx)=i=1qwiρ(xxx,ccci)
    其中q为隐层神经元个数, c i c_i ci w i w_i wi分别是第i个隐层神经元所对应的中心和权重, ρ ( x , c i ) \rho(\pmb x,c_i) ρ(xxx,ci)是径向基函数,这是某种沿径向对称的标量函数,通常定义为样本 x \pmb x xxx到数据中心 c i \pmb c_i ccci之间的欧式距离的单调函数。常用的高斯径向基函数形如
    ρ ( x , c i ) = e − β i ∣ ∣ x − c i ∣ ∣ 2 \rho(\pmb x,\pmb c_i)=e^{-\beta_i||\pmb x- \pmb c_i||^2} ρ(xxx,ccci)=eβixxxccci2
  • 通常采用两步过程来训练RBF网络:第一步,确定神经元中心 c i \pmb c_i ccci,常用的方式包括随机采样、聚类等;第二部,采用BP算法等来确定参数 w i w_i wi β i \beta_i βi

2.ART网络

  • 竞争型学习(competitive learning) 是神经网络中一种常用的无监督学习策咯,在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制,这种机制亦称 “胜者通吃”(winner-take-all)
  • ART(Adaptive Resonance Theory,自适应谐振理论)网络 是竞争学习的重要代表。该网络由比较层、识别层、识别阈值和重置模块组成。比较层负责接收输入样本,并将其传递给识别层神经元。识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新模式类
  • 计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜。如果距离大于识别阈值,则归为该类,并刷新权限,使得获胜神经元获胜的可能性更大。如果不大于阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量
  • 识别阈值较高,输入样本将被分为比较多、比较精细的模式类,而如果识别阈值较低,则会产生比较少、比较粗略的模式类
  • ART比较好的缓解了竞争型学习中的**“可塑性-稳定性窘境”(stability-plasticity dilemma)** 可塑性是指神经网络要有学习新知识的的能力,稳定性则是指神经网络在学习新知识时要保持对旧知识的记忆。
  • ART网络具有一个重要的优点:可进行增量学习(incremental learning)在线学习(online learning)
  • ART发展 能处理实值输入ART2网络、结合模糊处理的FuzzyART网络,以及可进行监督学习的ARTMAP网络

3.SOM网络

  • SOM(Self-Organization Map,自组织映射)网络 是一种竞争学习型的无监督神经网络,它将高维输入数据映射到地位空间(通常为二维),同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元
    机器学习入门-西瓜书总结笔记第五章_第11张图片

拓展了解

4.级联相关网络

  • 级联相关(Cascade-Correlation)网络 是结构自适应网络,即将网络结构也作为学习的目标之一
    机器学习入门-西瓜书总结笔记第五章_第12张图片
  • “级联”是指建立层次连接的层级结构
  • “相关”是指通过最大化神经元的输出与网络误差之间的 相关型(correlation) 来训练相关参数
  • 与一般的前馈神经网络相比,级联相关网络无需设置网络层级、隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合

5.Elman网络

  • 与前馈神经网络不同,“递归神经网络”(recurrent neural networks) 允许网络中出现环状结构,从而可让一些神经元的输出反馈回来作为输入信号,使得网络在t时刻的输出状态不仅与t时刻的输入有关,还与t-1时刻网络状态相关,从而处理与时间有关的动态变化
  • Elman网络是最常用的递归神经网络之一,与前馈神经网络类似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一刻的输入。隐层神经元通常采用Sigmoid激活函数,而网络的训练则常通过推广的BP算法进行
    机器学习入门-西瓜书总结笔记第五章_第13张图片

6.Boltzmann机

  • “基于能量的模型”(energy-based model) 为网络状态定义一个 “能量”(energy),能量最小化时网络达到理想状态,而网络的训练就是最小化这个能量函数。
    机器学习入门-西瓜书总结笔记第五章_第14张图片
  • 上图神经元分为两层:显层和隐层。显层用于表示数据的输入与输出,隐层则被理解为数据的内在表达。令向量 s ∈ { 0 , 1 } n \pmb s \in \{0,1\}^n sss{0,1}n表示n个神经元状态, w i j w_{ij} wij表示神经元 i i i j j j之间的连接权, θ i \theta_i θi表示神经元 i i i的阈值,则状态向量 s \pmb s sss所对应的Bolzmann机能量定义为
    E ( s ) = − ∑ i = 1 n − 1 ∑ j = i + 1 n w i j s i s j − ∑ n θ i s i E(\pmb s) = -\sum_{i=1}^{n-1}\sum_{j=i+1}^n w_{ij}s_i s_j - \sum_{}^n\theta_is_i E(sss)=i=1n1j=i+1nwijsisjnθisi
    P ( s ) = e − E ( s ) ∑ t e − E ( t ) P(\pmb s) = \frac{e^{-E(\pmb s)}}{\sum_{\pmb t}e^{-E(\pmb t)}} P(sss)=ttteE(ttt)eE(sss)
  • 受限Boltzmann机(Restricted Boltzmann Machine,简称RBM) 仅保留显层与隐层之间的连接,从而将Boltzmann机结构由完全图简化为二部图
  • 受限Boltzmann机常用“对比散度”(Contrastive Divergence,简称CD)算法来训练。假定网络中有d个显层神经元和q个隐层神经元,令 v \pmb v vvv h \pmb h hhh分别表示显层与隐层的状态向量,则由于同一层内不存在连接,有
    P ( v ∣ h ) = ∏ i = 1 d P ( v i ∣ h ) , P ( h ∣ v ) = ∏ j = 1 q P ( h j ∣ v ) , P(\pmb v|\pmb h)=\prod_{i=1}^d P(v_i|\pmb h),\\ P(\pmb h|\pmb v)=\prod_{j=1}^q P(h_j|\pmb v), P(vvvhhh)=i=1dP(vihhh),P(hhhvvv)=j=1qP(hjvvv),
    CD算法对每个驯良样本 v \pmb v vvv,先根据式2计算出隐层神经元状态的概率密度分布,然后根据这个概率密度分布采用得到 h \pmb h hhh,类似地从 h \pmb h hhh产生 v ′ \pmb v' vvv,再从 v ′ \pmb v' vvv产生 h ‘ \pmb h‘ hhh;连接权的更新公式
    Δ w = η ( v h T − v ′ h ′ T ) \Delta w = \eta(\pmb v \pmb h^T - \pmb v' \pmb h'^T) Δw=η(vvvhhhTvvvhhhT)

六、深度学习

后续单独开一个深度学习系列

  • “深度学习”(deep learning) 增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数的嵌套的层数
  • 多隐层神经网络难以直接用经典算法(例如标准BP算法)进行训练,因为误差在多隐层内逆传播时,往往会“发散”(diverge)而不能收敛到稳定状态
  • 无监督逐层训练(unsupervised layer-wise training) 是多隐层网络训练的有效手段,基本思想是每个训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入,这称为 “预训练”(pre-training);在预训练全部完成后,再对整个网络进行 “微调”(fine-tuning)训练
  • 另一种节省训练开销的策略是 “权共享”(weight sharing) ,即让一组神经元使用相同的连接权。这个策略在卷积神经网络(Convolutional Neural Network,简称CNN)中发挥了重要作用
    机器学习入门-西瓜书总结笔记第五章_第15张图片
  • CNN 复合多个“卷积层”和“采样层”对输入信号进行加工,然后在连接层实现与输出目标直接的映射。每个卷积层都包含多个特征映射(feature map),每个特征映射是一个由多个神经元构成的“平面”,通过一种卷积滤波器提取输入的一种特征。采样层亦称 “汇合”(pooling)层,其作用是基于局部相关型原理进行压采样,从而在减少数据量的同时保留有用信息
  • 通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。可将深度学习理解为进行 “特征学习”(feature learning)“表示学习”(representation learning)

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