神经网络的基础原理介绍(网络、传播、梯度、以及一些常见的神经网络原型介绍)

发布于:2025-07-14 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、神经元模型

  • 神经元接受输入,与自身的阈值进行比较,再通过激活函数处理得到神经元的输出。
  • 激活函数

    • 阶跃函数( \mathrm{sgn(x)} ):

    • \mathrm{Sigmoid} 函数:

      \mathrm{sigmoid}=\frac{1}{1+e^{-x}}

二、感知机、多层网络

感知机(两层神经网络)

  • 输出层又叫阈值逻辑单元。

  • y=f\Big(\sum_{i}w_ix_i-\theta\Big) ,其中 f 是定义好的激活函数。
  • 通过一层网络后,若感知机的输出与期望结果相同则不必更新权重,否则权重将按照下面这种方式调整:

    w_i\leftarrow w_i+\Delta w_i\space,\\ \Delta w_i=\eta(y-\hat{y})x_i\space.

    其中 \eta 为学习率。

多层前馈神经网络

  • 每层神经元与下层相连,不存在同层相连和跨层相连。

:感知机在线性可分的问题上一定会收敛,即求得合适的权重向量矩阵,否则感知机在学习过程中会发生振荡,w 无法稳定;非线性可分问题要考虑使用多层功能神经元。

三、误差逆传播

  • 下述的 j 为输出层的第 j 个神经元,l 为输出层的神经元个数;q 为隐层的神经元个数,h 为隐层的第 h 个神经元;i 为输入层的第 i 个神经元,d 为输入层的神经元个数。

  • 神经网络输出 \hat{y_k}=f(\beta_j-\theta_j)
  • 神经网络的均方误差为:

    E_k=\frac{1}{2}\sum^{l}_{j=1}(\hat{y}_j^k-y_j^k)^2

  • \mathrm{BP} 算法是基于梯度下降策略的,沿着目标负梯度方向调整参数,即:

    \Delta w_{hj}=-\eta\frac{\partial E_k}{\partial w_{hj}}\space.

    其中 \eta 为学习率(参考一下下面梯度下降部分的内容)。

    \frac{\partial E_k}{\partial w_h^j}=\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}}\space .

    由上述式子可以得到

    其中主要利用了 \mathrm{Sigmoid} 函数的导数性质:f'(x)=f(x)(1-f(x))。由上述可得:

    \Delta w_{hj}=\eta g_j b_h\space.

    同理有:

    其中,

  • \mathrm{BP} 算法的目标是要最小化训练集上的累积误差:

    E=\frac{1}{m}\sum^{m}_{k=1}E_k\space,

    还有就是,前述是单个 E_k 的推导结果(标准 \mathrm{BP} 算法(每次参数更新只涉及单个用例,很频繁)),而按照上式对每个特征的平均就得到了累积误差逆传播(读取完整个数据集再更新参数)算法。

  • 早停\mathrm{early} \mathrm{stopping}):将数据划分为训练集、验证集,一旦训练集上误差降低但是验证机上误差升高,则立即停止训练,并返回最小验证集误差的连接权重和阈值。

  • 正则化:增加一个描述网络复杂度的度量,使用交叉验证法进行折中估计。

四、全局最小、局部最小

  • 局部最小和全局最小都是针对 w\theta 的,具体理解参考数学中的极值和最值(针对 E(w;\theta) ,也就是误差函数值)。

  • 基于梯度(负梯度方向是函数值下降最快的方向)的搜索进行参数寻优

  • 从“局部最小” \rightarrow “全局最小”的方法:

    • 多组参数初始化多个神经网络来选最小;

    • 每一步都以一定概率接受比当前参数解更差的参数的结果,但这个概率必须要随着时间推移而降低;

    • 随机梯度下降,也就是再计算梯度的时候加入随机因素;

五、一些常见神经网络

    RBF 网络

    • 使用径向基函数作为隐层神经元激活函数,

    \varphi(x)=\sum^{q}_{i=1}w_i\rho(x,c_i)\space,

            其中 q 为隐层神经元个数,c_iw_i 分别是第 i 个隐层神经元所对应的中心和权重,\rho(x,c_i)径向基函数(一般来说就是某种径向对称的标量函数,比如说欧氏距离等)。

    ART 网络

    • 由比较层、识别层、识别阈值、重置模块组成,其中识别层接收比较层的输入信号后神经元之间相互竞争(识别层神经元与所对应的模式类的代表向量之间的距离,选出距离最小的),如果输出的向量与选出的代表向量之间的相似度大于识别阈值,则该样本被归入代表向量的类别,然后就会更新权重(增大该神经元被选出的概率,相似度增大),如果低于识别阈值,那么重置模块就会在识别层新设置一个神经元,其代表向量就设置为当前的输入向量。

    • 该网络可进行增量学习在线学习

    SOM 网络(无监督学习)

    • 输出层神经元以矩阵方式排放在二维空间,每个神经元都有一个权向量,每个神经元计算样本和自身的权向量之间的距离,距离最近的为最佳匹配单元,该单元及其邻近单元的权向量将被调整使得与当前样本的距离缩小,反复进行指导收敛。

    级联相关网络

    • 首先它只有输入和输出层,随着训练进行,新的隐层神经元逐步加入(刚加入时,连接权值固定),即出现层级结构。

    • 好处:无需设置网络层数、隐层神经元,并且训练速度快;坏处:数据较小时易过拟合。

    Elman 网络(递归神经网络)

    • 结构上相似于多层前馈网络,但是隐层神经元的输出会被反馈回来与下一时刻输出层神经元的输入一起作为隐层神经元下一时刻的输入,隐层一般采用 \mathrm{Sigmoid} 激活函数,训练一般使用 \mathrm{BP} 算法进行。

    Boltzmann 机

    • 一般来说也是两层的神经元(显层、隐层),前者用于数据的输入和输出,后者为数据的内在表达(布尔型,状态 1 表示激活,状态 0 表示抑制)。

    • 令向量 s\in\{0,1\}^n 表示 n 个神经元的状态,w_{ij} 表示神经元 ij 之间的连接权重,\theta_i 表示神经元 i 的阈值,则该状态对应的 \mathrm{Boltzmann} 机能量为:

      E(s)=-\sum^{n-1}_{i=1}\sum^{n}_{j=i+1}w_{ij}s_is_j-\sum^{n}_{i=1}\theta_is_i\space.

    • 某种状态的出现概率,也就是该状态向量 s 的出现概率为:

      P(s)=\frac{e^{-E(s)}}{\sum_te^{-E(t)}}

      其中分式下方的为所有可能的状态向量的能量和。

    • 训练方法:对比散度算法,假如说网络中由 d 个显层的神经元和 q 个隐层神经元,而 vh 分别表示显层和隐层的状态向量,则由于同一层内不存在连接,则:

      P(v|h)=\prod^{d}_{i=1}P(v_i|h),\\ P(h|v)=\prod^{q}_{j=1}P(h_j|v).

    • 权重更新方法:首先由上述的第二个式子得出隐层神经元状态的概率分布,然后由这个概率分布采样得到 h ,再从上述第一个式子得到 v' ,然后第二个式子得到 h' ,最后得到权重更新公式:

      \Delta w=\eta\space(vh^{\top}-v'h'^{\top})\space.

    六、深度学习(特征学习)简述

    • 深度学习模型基本上就是很深层的神经网络。

    • 节省训练开销的方法:

      • 预训练+微调:大量参数分组,每组训练寻优,最后基于每组的局部最优寻找全局最优;

      • 权共享:同组的神经元使用相同的连接权重;


    网站公告

    今日签到

    点亮在社区的每一天
    去签到