[机器学习西瓜书] 第05章 神经网络 笔记

人工智能AI|计算机 ComputerScience

   
   

@ZYX 写于2020年08月06日

第05章 神经网络

5.1 神经元模型

  • 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应
    • 谈论神经网络时指的是神经网络学习
      • 机器学习神经网络这两学科的交叉部分
  • 最基本的成分是神经元(neuron)模型,即”简单单元”
    • 如果某神经元的电位超过了一个阈值(threshold),就会被激活
      • 兴奋起来,向其他神经元发送化学物质
    • M-P神经元模型1943年,[McCulloch and Pitts, 1943]
      • 神经元接收到来自 $n$ 个其他神经元传递过来的输入信号
        • 这些输入信号通过带权重的连接(connection)进行传递
      • 神经元接收到的总输入值将与神经元的阀值进行比较
      • 然后通过激活函数 (activation function) 处理,以产生输出
        • 理想的是阶跃函数,将输入值映射为输出值01
        • 实际常用Sigmoid函数,因为阶跃函数具有不连续、不光滑等不太好的性质
          • 它把可能在较大范围内变化的输入值挤压到(0 , 1) 输出值范围内,因此有时也称为挤压函数(squashing function)
  • 神经网络
    • 把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络
      • 只需将一个神经网络视为包含了许多参数的数学模型,即若干个函数相互(嵌套)代入而得

5.2 感知机与多层网络

圈5.3 两个输入神经元的感知机网络结构示意图
– 感知机(Perceptron) 由两层神经元组成
– 输入层接收外界输入信号后传递给输出层
– 输出层是M-P神经元,亦称阈值逻辑单元(threshold logic unit)
– 容易实现逻辑与、或、非运算, 假设 $y=f(\sum_{i}w_{i}x_{i}-\theta), f$ 是阶跃函数
– 与 ($x_{1}\wedge x_{2}$):
– $w_{1}=w_{2}=1, \theta =2$,则$y=f(1\cdot x_{1}+1 \cdot x_{2} -2)$
即 在 $x_{1}=x_{2}=1$ 时, $y=1$
– 或 ($x_{1}\vee x_{2}$):
– $w_{1}=w_{2}=1, \theta =0.5$,则$y=f(1\cdot x_{1}+1 \cdot x_{2} -0.5)$
即 当 $x_{1}=1$ 或 $x_{2}=1$ 时, $y=1$
– 非 ($\neg x_{1}$):
– $w_{1}=-0.6, w_{2}=0, \theta =-0.5$,则$y=f(-0.6\cdot x_{1}+0 \cdot x_{2} +0.5)$
即 当 $x_{1}=1$ 时, $y=0$;当 $x_{1}=0$ 时, $y=1$
数学表达
– 给定训练数据集后,权重 $w_{i}(i=1,2,\dots,n)$ 以及阈值 $\theta$ 可通过学习得到
– 阈值 $\theta$ 可看作一个固定输入为-1.0哑结点(dummy node)所对应的连接权重 $w_{n+1}$
– 这样,权重和阈值的学习就可统一为权重的学习
学习规则
– 对训练样例 $(x,y)$ , 若当前感知机的输出为 $\hat y$
权重调整
– [5.1] $w_{i} \leftarrow w_{i}+\Delta w_{i}$
– [5.2] $\Delta w_{i}=\eta (y-\hat y)x_{i}$
– $\eta$ 为学习率(learning rate)
– 感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functionalneuron) ,其学习能力非常有限
– 上述与、或、非问题都是线性可分(linearly separable)的问题
若两类模式是线性可分的,即存在一个线性超平面能将它们分开 [Minsky and Papert,1969]
– 感知机的学习过程一定会收敛(converge) 而求得 $w_{i}(i=1,2,\dots,n)$;
– 否则学习过程将会发生 振荡(fluctuation) , $w$ 难以稳定下来,不能求得合适解
– 要解决非线性可分问题,需考虑多层功能神经元
输出层与输入层之间的一层神经元,被称为隐层或隐含层(hidden layer)
多层前馈神经网络(multi-layer feedforward neural networks)
– 每层神经元与下一层神经元全互连
– 神经元之间不存在同层连接,也不存在跨层连接
– 输入层 接收外界输入
– 隐层与输出层 对信号进行加工
– 输出层 输出
– 只需包含隐层,即可称为多层网络
– 神经网络的学习过程,就是根据训练数据来调整神经元之间的连接权(connection weight) 以及每个功能神经元的阈值

5.3 误差逆传播算法

  • 误差逆传播(error BackPropagation,简称BP)算法
  • 可用于多层前馈神经网络,还可用于其他类型的神经网络
  • 数学表达
    • 训练集 $D=\{(x_{1},y_{1}),(x_{2},y_{2}),\dots ,(x_{m},y_{m})\}, x_{i} \in \R^{d}, y_{i} \in \R^{l}$
    • 假定 多层前馈网络结构
      • $d$ 个输入神经元
      • $l$ 个输出神经元
      • $q$ 个隐层神经元
      • $\theta_{j}$ 输出层第 $j$ 个神经元的阈值
      • $\gamma_{h}$ 隐层第 $h$ 个神经元的阈值
      • $v_{ih}$ 输入层第 $t$ 个神经元与隐层第 $h$ 个神经元之间的连接权
      • $w_{hj}$ 隐层第 $h$ 个神经元与输出层第 $j$ 个神经元之间的连接权
    • $\alpha_{h}=\sum^{d}_{i=1}v_{ih}x_{i}$ 隐层第 $h$ 个神经元接收到的输入
    • $\beta_{j}=\sum^{q}_{h=1}w_{hj}b_{h}$ 输出层第 $j$ 个神经元接收到的输入
      • $b_{h} $ 隐层第 $h$ 个神经元的输出
    • 假定 隐层和输出层的神经元都使用Sigmoid函数
      • 假定 对训练例$(x_{k},y_{k})$,输出$\hat y_{k}=(\hat y^{k}_{1},\hat y^{k}_{2}, \dots, \hat y^{k}_{l})$ 即
        [5.3] $\hat y^{k}_{j}=f(\beta_{j}-\theta_{j})$
      • 该网络在$(x_{k},y_{k})$上的均方误差
        [5.4] $E_{k}=\frac{1}{2}\sum^{l}_{j=1}(\hat y^{k}_{j}-y^{k}_{j})$
  • 网络中有 $(d+l+1)q+l$ 个参数需确定
    • $d \times q$ 个输入层到隐层的权值
    • $q \times l$ 个隐层到输出的权值
    • $q$ 个隐层神经元的阈值
    • $l$ 个输出层神经元的阈值
  • BP是一个迭代学习算法
    • 每一轮中采用广义的感知机学习规则对参数进行更新估计
      • 数学表达
        • 任意参数 $v$的更新值为
          [5.5]$v \leftarrow v+ \Delta v$
        • 算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整
          • 更新公式
            • [5.11] $\Delta w_{hj}=\eta g_{j}b_{h}$
            • [5.12] $\Delta \theta_{j}=-\eta g_{j}$
            • [5.13] $\Delta v_{ih}=\eta e_{h}x_{i}$
            • [5.14] $\Delta \gamma_{h}=-\eta e_{h}$
          • 对式(5.4)的误差$E_{k}$,给定学习率 $\eta$,有
            $\Delta w_{hj}=-\eta \frac{\partial E_{k}}{\partial w_{hj}}$

            1. 有[5.7] $\frac{\partial E_{k}}{\partial w_{hj}}=\frac{\partial E_{k}}{\partial \hat y^{k}_{j}}\cdot \frac{\partial \hat y^{k}_{j}}{\partial \beta_{j}} \cdot \frac{\partial \beta_{j}}{\partial \hat w_{hj}}$
            2. 根据 $\beta_{j}$ 的定义,显然有 $\frac{\partial \hat \beta_{j}}{\partial \hat w_{hj}}=b_{h}$
            3. Sigmoid函数有性质
              $f'(x)=f(x)(1-f(x))$
            • 得 $g_{j}$
              $\begin{aligned} g_{j} &=- \frac{\partial E_{k}}{\partial \hat y^{k}_{j}}\cdot \frac{\partial \hat y^{k}_{j}}{\partial \beta_{j}} \\ &=-(\hat y^{k}_{j})f'(\beta_{j}-\theta_{j}) \\ &=\hat y^{k}_{j} (1- \hat y^{k}_{j})(y^{k}_{j}-\hat y^{k}_{j}) \end{aligned}$
            • 得 $e_{h}=b_{h}(1-b_{h})\sum^{l}_{j=1}w_{hj}g_{j}$
              formula 5.15
        • 学习率 $\eta \in (0,1)$ε 控制着算法每一轮迭代中的更新步长,太大则容易振荡,太小则收敛速度又会过慢
          • 有时为了做精细调节,可令[5.11] 与 [5.12] 用 $\eta_{1}$,式 [5.13] 与 [5.14] 使用 $\eta_{2}$ ,两者未必相等.
  • 步骤
    1. 先将输入示例提供给输入层神经元
    2. 然后逐层将信号前传,直到产生输出层的结果
    3. 然后计算输出层的误差
    4. 再将误差逆向传播至隐层神经元
    5. 最后根据隐层神经元的误差来别连接权和阈值进行调整
    • 该法代过程循环进行,直到达到某些停止条件为止
  • 代码
    输入:训练集D
    学习率η
    过程:
    在(0 , 1)范固内随机初始化网络中所有连接权和阈值
    repeat
        for (x_k , y_k) in D
            根据当前参数和式(5.3) 计算当前样本的输出\hat y_k
            根据式(5.10) 计算输出层神经元的梯度项g_j
            根据式(5.15) 计算隐层神经元的梯度项e_h
            根据式(5.11)-(5.14) 更新连接权w_hj , v_ih 与阙值θ_j, γ_h
        end for
    until 达到停止条件
    输出:连接权与阈值确定的多层前馈神经网络
    
  • BP算法的目标是要最小化训练集 $D$ 上的累积误差
    $E=\frac{1}{m}\sum^{m}_{k=1}E_{k}$
  • 累积误差逆传播
    • 标准BP算法每次仅针对一个训练样例更新连接权和阈值
    • 类似地推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播(accumulated error backpropagation)算法
    • 标准BP算法 vs 累积误差逆传播
      • 更新频率
        • 标准BP算法往往需进行更多次数的迭代
        • 累积BP算法直接针对累积误差最小化,它在读取整个训练集 $D$ 一遍后才对参数进行更新,其参数更新的频率低得多
      • 效率
        • 累积误差下降到一定程度之后,进一步下降会非常缓慢
        • 标准BP往往会更快获得较好解,尤其是在训练集 $D$ 非常大时更明显
    • [Hornik et al., 1989] 证明,只需一个包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数
    • 如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠试错法(trial-by-error)调整
  • 过拟合
    • 有两种策略常用来缓解BP网络的过拟合
      • 早停(early stopping): 将数据分成训练集和验证集,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值
      • 正则化(regularization): 在误差目标函数中增加一个用于描述网络复杂度的部分
        • 例如连接权与阔值的平方和
        • [5.17] $E=\lambda \frac{1}{m}E_{k}+(1-\lambda)\sum_{i}w_{i}^{2}$
          • $\lambda \in (0,1)$ 用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计

5.4 全局最小与局部极小

  • 神经网络的训练过程可看作一个参数寻优过程
  • 2种最优:
    • 局部极小 (local minimum)
      • 对 $w^{*}$ 和 $\theta^{*}$,若存在 $\epsilon >0$
        使得 $\forall (w;\theta)\in \{(w;\theta)| || (w;\theta)-(w^{*};\theta^{*})|| \le \epsilon \}$ 都有$E(w;\theta)\ge E(w^{*};\theta^{*})$成立,则 $(w^{*};\theta^{*})$ 为局部极小解
      • 是参数空间中的某个点,其邻域点的误差函数值均不小于该点的函数值
      • 参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点
    • 全局最小 (global minimum)
      • 是指参数空间中所有点的误差函数值均不小于该点的误差函数值
    • 可能存在多个局部极小值,但却只会有一个全局最小值
  • 基于梯度的搜索
    • 从某些初始解出发,迭代寻找最优参数值
      • 每次迭代中,我们先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向
      • 若误差函数在当前点的梯度为零,则已达到局部极小,更新将在此停止
    • 如果有多个局部极小,则不能保证找到的解是全局最小,称参数寻优陷入了局部极小
      • “跳出”局部极小
        • 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数
        • 使用模拟退火(simulated annealing)技术
          • 每一步都以二定的概率接受比当前解更差的结果,从而有助于”跳出”局部极小
            • 接受”次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定
        • 使用随机梯度下降
          • 即便陷入局部极小点,它计算出的梯度仍可能不为零
        • 遗传算法(genetic algorithms)
      • 上述技术大多是启发式,理论尚缺乏保障

5.5 其他常见神经网络

5.5.1 RBF网络

  • RBF(Radial Basis Function,径向基函数)网络
    • 使用径向基函数作为隐层神经元激活函数
    • 输出层则是对隐层神经元输出的线性组合
  • 数学表达
    • 假定输入为 $d$ 维向量 $x$,输出为实值,则RBF网络可表示为
      [5.18] $\varphi(x)=\sum^{q}_{i=1}w_{i}\rho (x,c_{i}) $

      • $q$ 为隐层神经元个数
      • $c_{i}$ 和 $w_{i}$ 分别是第 $i$ 个隐层神经元所对应的中心和权重
      • $\rho(x,c_{i})$ 是径向基函数,这是某种沿径向对称的标量函数,通常定义为样本到数据中心之间欧氏距离的单调函数
        常用的高斯径向基函数形如 $\rho(x,c_{i})=e^{-\beta_{i}||x-c_{i}||^{2}}$
  • [Park and Sandberg, 1991]证明,具有足够多隐层神经元的RBF 网络能以任意精度逼近任意连续函数
  • 通常采用两步过程来训练RBF 网络
    1. 第一步,确定神经元中心 $c_{i}$
    2. 第二步,利用BP算法等来确定参数$w_{i}$ 和 $\beta_{i}$

5.5.2 ART网络

  • 竞争型学习(competitive learning) 是一种无监督学习策略
    • 网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制
      • 亦称”胜者通吃” (winner-take-all) 原则
  • ART(Adaptive Reson.ance Theory,自适应谐振理论)网络
    • 结构
      • 比较层
        • 负责接收输入样本,并将其传递给识别层神经元
      • 识别层
        • 每个神经元对应1个模式类
        • 神经元数目可在训练过程中动态增长,以增加新的模式类
      • 识别阈值
      • 重置模块
  • 在接收到比较层的输入信号后,识别层神经元之间相互竞争以产生获胜神经元
    • 最简单力自式是,计算输入向量与每个模式类代表向量之间的距离,距离最小者胜
  • 获胜神经元将向其他识别层神经元发送信号,抑制其激活
  • 若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值
    • 则当前输入样本将被归为该代表向量所属类别
    • 同时,网络连接权将会更新,使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,而使该获胜神经元有更大可能获胜
  • 若相似度不大于识别阑值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量
  • 识别阈值对ART网络的性能有重要影响
  • ART比较好地缓解了竞争型学习中的”可塑性-稳定性窘境” (stabilityplasticity dilemma)
    • 可塑性是指学习新知识的能力
    • 稳定性是指在学习新知识时要保持对旧知识的记忆
    • 优点:可进行增量学习(incremental learning)或在线学习(online learning)

5.5.3 SOM网络