• 神经网络与深度学习(二):前馈神经网络


    神经元

    激活函数的性质

    • 连续并可导(允许少数点上不可导)的非线性函数。
      • ​ 可导的激活函数可以直接利用数值优化的方法来学习网络参数。
    • 激活函数及其导函数要尽可能的简单
      • ​ 有利于提高网络计算效率。
    • 激活函数的导函数的值域要在一个合适的区间内
      • ​ 不能太大也不能太小,否则会影响训练的效率和稳定性。
    • 单调递增

    常用的激活函数

    image-20221107191954701

    复合函数=S型函数+斜坡函数

    S型函数

    Logistic函数

    σ(x)=11+exp(x)

    tanh(x)=exp(x)exp(x)exp(x)+exp(x)tanh(x)=2σ(2x)1

    性质:

    • 饱和函数
    • Tanh函数是零中心化的,而logistic函数的输出恒大于0

    斜坡函数

    Relu(x)=max(0,x)

    • 计算上更加高效
    • 生物学合理性
      • 单侧抑制、宽兴奋边界
    • 在一定程度上缓解梯度消失问题

    死亡ReLU问题(Dying ReLU Problem)

    LeakyReLU(x)={x if x>0γx if x0=max(0,x)+γmin(0,x)

    近似的零中心化的非线性函数

    ELU(x)={x if x>0γ(exp(x)1) if x0=max(0,x)+min(0,γ(exp(x)1))

    Rectifier函数的平滑版本

    Softplus(x)=log(1+exp(x))

    复合函数

    Swish函数:一种自门控(Self-Gated)激活函数

    swish(x)=xσ(βx)

    高斯误差线性单元(Gaussian Error Linear Unit,GELU)

    GELU(x)=xP(Xx)

    image-20221107193345779

    神经网络

    人工神经网络主要由大量的神经元以及它们之间的有向连接构成。因此考虑三方面:

    • 神经元的激活规则
      • ​ 主要是指神经元输入到输出之间的映射关系,一般为非线性函数。
    • 网络的拓扑结构
      • ​ 不同神经元之间的连接关系。
    • 学习算法
      • ​ 通过训练数据来学习神经网络的参数。

    网络结构

    人工神经网络由神经元模型构成,这种由许多神经元组成的信息处理网络具有并行分布结构。

    image-20221107193700166

    神经网络是一种主要的连接主义模型

    ​ 20世纪80年代后期,最流行的一种连接主义模型是分布式并行处理(Parallel Distributed Processing,PDP)网络,其有3个主要特性:

    1. 信息表示是分布式的(非局部的);
    2. 记忆和知识是存储在单元之间的连接上;
    3. 通过逐渐改变单元之间的连接强度来学习新的知识。

    引入误差反向传播来改进其学习能力之后,神经网络也越来越多地应用在各种机器学习任务上。

    前馈神经网络

    全连接神经网络、多层感知器

    • 各神经元分别属于不同的层,层内无连接。
    • 相邻两层之间的神经元全部两两连接。
    • 整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。
    image-20221107194139768

    给定一个前馈神经网络,用下面的记号来描述这样网络:

    image-20221107194301313

    信息传递过程

    前馈神经网络通过下面公式进行信息传播。

    z(l)=W(l)a(l1)+b(l)a(l)=fl(z(l))

    a(l)=fl(W(l)a(l1)+b(l))

    前馈计算:

    image-20221107195019787

    应用到机器学习

    神经网络可以作为一个“万能”函数来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布。

    y^=g(ϕ(x);θ)

    image-20221107195727314

    深层前馈神经网络

    image-20221107195922056

    参数学习

    对于多分类问题

    如果使用Softmax回归分类器,相当于网络最后一层设置C个神经元,其输出经过Softmax函数进行归一化后可以作为每个类的条件概率。

    y^=softmax(z(L))

    采用交叉熵损失函数,对于样本(X,y),其损失函数为

    L(y,y^)=ylogy^

    给定训练集为 $D=\left{\left(\boldsymbol{x}^{(n)}, y{(n)}\right)\right}_{n=1}{N} $, 将每个样本 x(n) 输入 给前馈神经网络, 得到网络输出为y^(n), 其在数据集 D 上的 结构化风险函数为:

    R(W,b)=1Nn=1NL(y(n),y^(n))+12λWF2

    Frobenius范数

    WF2=l=1Li=1Mlj=1Ml1(wij(l))2

    梯度下降

    计算

    R(W,b)W(t)

    R(W,b)b(t)

    如何计算梯度?

    神经网络为一个复杂的复合函数

    链式法则?

    y=f5(f4(f3(f2(f1(x)))))yx=f1xf2f1f3f2f4f3f5f4

    反向传播算法

    ​ 根据前馈网络的特点而设计的高效方法

    一个更加通用的计算方法

    ​ 自动微分(Automatic Differentiation,AD)

    反向传播算法

    矩阵微积分

    • 矩阵微积分(Matrix Calculus)是多元微积分的一种表达方式,即使用矩阵和向量来表示因变量每个成分关于自变量每个成分的偏导数。

    • 分母布局

      • 标量关于向量的偏导数

      yx=[yx1,,yxM]RM×1

      • 向量关于向量的偏导数

      f(x)x=[y1x1yNx1y1xMyNxM]RM×N

      image-20221107202932002
    image-20221107203321837 image-20221107203821827 image-20221107203952655

    使用反向传播算法的随机梯度下降训练过程

    image-20221107204130058

    自动梯度计算

    计算图与自动微分

    自动微分是利用链式法则来自动计算一个复合函数的梯度。

    f(x;w,b)=1exp((wx+b))+1

    计算图

    image-20221107204404304

    自动微分

    反向模式和反向传播的计算梯度的方式相同,通常使用反向模式

    image-20221107205216477

    如果函数和参数之间有多条路径,可以将这多条路径上的导数再进行相加,得到最终的梯度。

    反向传播算法(自动微分的反向模式)

    前馈神经网络的训练过程可以分为以下三步

    1. 前向计算每一层的状态和激活值,直到最后一层
    2. 反向计算每一层的参数的偏导数
    3. 更新参数

    静态计算图和动态计算图

    • 静态计算图是在编译时构建计算图,计算图构建好之后在程序运行时不能改变。
      Theano和Tensorflow
    • 动态计算图是在程序运行时动态构建。
      DyNet,Chainer和PyTorch

    两种构建方式各有优缺点

    • 静态计算图在构建时可以进行优化,并行能力强,但灵活性比较差低。
    • 动态计算图则不容易优化,当不同输入的网络结构不一致时,难以并行计算,但是灵活性比较高。

    Keras

    深度学习的三个步骤

    1. 定义网络
    2. 损失函数
    3. 优化

    优化问题

    非凸优化问题

    y=σ(w2σ(w1x))

    image-20221107211416590

    梯度消失问题(Vanishing Gradient Problem)

    image-20221107211731977

    难点

    • 非凸优化问题:即存在局部最优而非全局最优解,影响迭代
    • 梯度消失问题,下层参数比较难调
    • 参数过多,影响训练
      • ​ 参数解释起来比较困难

    需求

    • 计算资源要大
    • 数据要多
    • 算法效率要好:即收敛快

    课程视频传送门:https://www.bilibili.com/video/BV1P3411u7c1?p=30

    原创作者:孤飞-博客园
    原文链接:https://www.cnblogs.com/ranxi169/p/16867528.html

  • 相关阅读:
    git撤销某一次commit提交
    数据结构(3.9_1)——特殊矩阵的压缩存储
    10:STM32------I2C通信
    使用JacORB编译idl文件生成依赖的开发jar---Corba北向接口开发001
    微信小程序项目实例SSM农产品销售系统|商城|电商系统+后台
    Android实验三:音乐播放器——图解详细教程
    个人信贷违约预测代码实战
    C++模板
    你还不知道吗?新一代隐私保护技术已被应用到笔记本电脑中!
    公众号的附件怎么上传(如Word、Excel、Pdf等)
  • 原文地址:https://www.cnblogs.com/ranxi169/p/16867528.html