• 神经网络(四)前馈神经网络


    一、神经元

            生物神经元的细胞状态仅有两种:兴奋抑制

            1.人工神经元

                             x_d:接收的信号   wd" role="presentation">wd:权重(连接的程度)  b" role="presentation">b:偏置阈值   a" role="presentation">a:人工神经元的状态

                    人工神经元可以被视为一个线性模型

            2.激活函数的性质

                    ①连续且可导(允许少数点不可导)

                    尽可能简单(提升计算效率)

                    ③值域要在一个合适的区间

                    单调递增(整体上升,局部可能下降)

            3.常用的激活函数

                     ①S型函数

                            σ(x)=11+exp(x)" role="presentation">σ(x)=11+exp(x)        tanh(x)=exp(x)exp(x)exp(x)+exp(x)=2σ(2x)1" role="presentation">tanh(x)=exp(x)exp(x)exp(x)+exp(x)=2σ(2x)1

                             性质:①饱和函数        ②Tanh函数零中心化的,logistic函数的输出恒大于0

                                                    !!! 非0中心化输出会使得下一层神经元出现偏置(使其梯度下降收敛速度减缓)

                    ②斜坡函数

                            ReLU(x)=max(0,x)" role="presentation">ReLU(x)=max(0,x)

                             性质:①高效        ②生物学合理性(单侧抑制、宽兴奋边界)        ③一定程度上缓解梯度消失问题

                             死亡ReLU问题:x小于0时,输出为0

                                    解决:①规划-避免参数过于集中

                                              ②LeakyReLU(x)=max(0,x)+γmin(0,x)" role="presentation">LeakyReLU(x)=max(0,x)+γmin(0,x) :使其左端不为0(具有极小的梯度)

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

                                    ELU(x)=x" role="presentation">ELU(x)=x                                如果x>0

                                                    =γ(exp(x)1)" role="presentation">=γ(exp(x)1)          如果x<=0

                          ReLu函数的平滑版本

                                    Softplus(x)=log(1+exp(x))" role="presentation">Softplus(x)=log(1+exp(x))

                    ③复合激活函数

                            1.Swish函数:一种自门控激活函数

                                    Swish(x)=xσ(βx)" role="presentation">Swish(x)=xσ(βx)

                                    σ" role="presentation">σ即为logsitic函数,近似电路的门电路(软门控,类似于模拟电路)

                                    可以通过改变β" role="presentation">β使其在x=y的上半部取值

                             2.高斯误差线性单元

                                    和Swish函数比较类似GELU(x)=xP(Xx)" role="presentation">GELU(x)=xP(Xx)

                                    其中P(Xx)" role="presentation">P(Xx)高斯分布N(μ,σ2)" role="presentation">N(μ,σ2)累积分布函数

                                    μ,σ" role="presentation">μ,σ超参数,一般μ=0,σ=1" role="presentation">μ=0,σ=1即可

                                    可以使用Tanh或Logistic函数来近似

                                            GELU(x)=0.5x(1+tanh(\sqrt{\frac{2}{\pi}}+(x+0.044715x^3)))

                                            FELU(x)=x\sigma(1.702x)

            4.神经元函数小结

     二、神经网络

            神经网络由大量神经元及其有向连接构成,需要考虑以下三个方面:

                    ①神经元的激活规则:神经元输入和输出的关系,一般为非线性

                    ②网络的拓扑结构

                    ③学习算法

            常见的神经网络结构如下:

                    ①前馈网络:单向流动

                    ②记忆网络:有内部循环      

                    ③图网络

             神经网络是一种主要的连接主义模型,其具有三个特点:

                    ①信息表示是分布式

                    ②记忆和知识是存储在单元之间的连接上

                    ③通过逐渐改变单元之间的连接强度来学习新的知识

    三、前馈神经网络

            之所有叫前馈神经网络,是因为其调优方式是从计算最后一层的导数反过来对激活函数进行调优(即与信息流动方向相反

             特点:            ①各神经元属于不同的层,层内无连接

                                    ②相邻两层之间的神经元全部两两连接

                                    ③无反馈,信号单向传递,可以形成有向无环

                    网络的层数不计算输入层

            1.前馈神经网络的描述

    记号含义
    L层数
    Ml" role="presentation">Mll层的神经元个数
    f_l(.)l层的激活函数
    W^{(t)}

    RMl×Ml1" role="presentation">RMl×Ml1        l -1层到 l 层的权重矩阵

    b(l)" role="presentation">b(l)

    RMl" role="presentation">RMl                    l -1层到l层的偏置

    z^{(l)}

    \in R^{(M_l)}                 l 层神经元的净输入(净活性值)

    a(l)" role="presentation">a(l)

    \in R^{(M_l)}                 l 层神经元输出(活性值)

            2.信息传递过程

                    z^{(l)}=W^{(l)}a_{(l-1)}+b^{(l)} 

                            本神经元输入 = 上一层的输入向量 X 权重矩阵 + 偏置      

                     a^{(l)}=f_l(z^{(l)})

                            输出 = 以本神经元输入为因变量激活函数

                    a^{(l)}=f_l(W^{(l)}a^{(l-1)}+b^{(l)})

                    前馈计算

             3.通用近似定理

                    对于具有线性输出层和使用“挤压”性质的激活函数的隐藏层组成的前馈神经网络,只要其中隐藏神经元的数量足够,它可以以任意的精度来近似任何一个定义在实数空间中的有界闭集函数

                    人话:拥有此性质的神经网络可以近似任意函数

            4.应用

                    神经网络可以作为一个“万能”函数 / 进行复杂特征转换 / 逼近复杂条件分布

                            y^=g(Φ(x);θ)" role="presentation">y^=g(Φ(x);θ)        其中\Phi (x)神经网路θ" role="presentation">θ分类器

                            !!!若g(.)为Logistic回归,则Logistic回归分类器可以视为神经网络的最后一层

                             越往后层,提取的特征越高级,最后一层为分类器

            5.参数学习

                    对于多分类问题

                    ①若使用Softmax回归分类器,相当于在网络最后一层设置C个神经元,

                            \hat y=softmax(z^{(l)})

                    若采用交叉熵损失函数

                            损失函数为:L(y,\hat y)=-y^Tlog \hat y

                    ③对于给定的训练集D,输入样本x(n)" role="presentation">x(n),其结构化风险函数为:

                            R(W,b)=\frac{1}{N}\sum_{n=1}^N L(y^{(n)},\hat y^{(n)})+\frac{1}{2}\lambda ||W||^2_F        ||W||F2=l=1Li=1Mlj=1Ml1(wij(l))2" role="presentation">||W||F2=l=1Li=1Mlj=1Ml1(wij(l))2

                    ④梯度下降

                           计算: σR(W,b)σW(l)" role="presentation">σR(W,b)σW(l)      σR(W,b)σb(l)" role="presentation">σR(W,b)σb(l)

                            链式法则

                     可以使用反向传播算法自动微分

           6.反向传播算法

                    !!!矩阵微积分:以向量来表示,使用分母布局

                            ①矩阵偏导数:yx=[yx1,...,yxM]T" role="presentation" style="position: relative;">yx=[yx1,...,yxM]T

                            ②向量的偏导数:

                    可以使用链式法则:求复合导 -> zx=yxzy" role="presentation" style="position: relative;">zx=yxzy

                    ①梯度计算

                             L(y,y^)wij(l)=z(l)wij(l)L(y,y^)z(l)" role="presentation" style="position: relative;">L(y,y^)wij(l)=z(l)wij(l)L(y,y^)z(l)                L(y,y^)b(l)=z(l)b(l)L(y,y^)z(l)" role="presentation" style="position: relative;">L(y,y^)b(l)=z(l)b(l)L(y,y^)z(l)

                                    

                    ②计算误差项

                            误差项:L(y,y^)z(l)" role="presentation" style="position: relative;">L(y,y^)z(l)

                             L(y,y^)W(l)=δ(l)(a(l1))T" role="presentation" style="position: relative;">L(y,y^)W(l)=δ(l)(a(l1))T

                    ③利用反向传播算法训练

             7.计算图与自动微分(优先使用)

                    利用链式法则,自动计算一个复合函数的梯度,计算图如下:

                     可以将每一步对应的函数的和导数记录,需要计算时候,由链式法则连乘即可

                    ①前向模式

                            计算方向与信息传播的方向一致(每走一步算一个导数)

                    ②反向模式

                            计算方向与信息传播的方向相反(先计算出h6,再返过去算导数--等同于反向传播算法

                    ③静态计算图

                            编译时构建的,程序运行时不再改变

                            优点:构建时可以进行优化,并行能力强

                            缺点:灵活性较差

                    ④动态计算图

                            程序运行时动态构建

                             优点:灵活性高

                             缺点:不易优化,难以并行计算

            8.优化问题

                    ①非凸优化

                            y=σ(w2σ(w1x))" role="presentation" style="position: relative;">y=σ(w2σ(w1x))

                     ②梯度消失

                            y=f(5f4(f3(f2(f1(x)))))" role="presentation" style="position: relative;">y=f(5f4(f3(f2(f1(x)))))        \frac{\partial y}{\partial x}= \frac{\partial f^1}{\partial x} \frac{\partial f^2}{\partial f^1} \frac{\partial f^3}{\partial f^2} \frac{\partial f^4}{\partial f^3} \frac{\partial f^5}{\partial f^4}

                     ③难点

                            非凸优化问题:存在局部最优解全局最优解,影响迭代

                            梯度消失问题:下层参数较难调(多段导数连乘容易趋近于0)

                            参数过多,影响训练。参数的解释也较为麻烦

                            需求:①计算资源大 ②数据多 ③算法效率高(快速收敛)

  • 相关阅读:
    CMT2380F32模块开发2-IDE软件配置
    Jmeter分布式压测
    基于SqlSugar的开发框架循序渐进介绍(17)-- 基于CSRedis实现缓存的处理
    西班牙知名导演:电影产业应与NFT及社区做结合
    VoIP之前向纠错(FEC)
    【快速上手系列】使用支付宝沙箱环境进行支付测试的快速上手
    什么是CMDB?为什么企业需要CMDB?
    基于JavaWeb的智慧停车管理系统设计与实现
    SpringBoot SpringBoot 开发实用篇 1 热部署 1.2 自动启动热部署
    【YOLO】YOLO简介
  • 原文地址:https://blog.csdn.net/weixin_37878740/article/details/126435688