zoukankan      html  css  js  c++  java
  • DNN模型

    Deep Neural Network(DNN)模型是基本的深度学习框架;

    (一)神经元计算模型(感知机模型)

    1.计算公式:

    2.常见响应函数(非线性函数):

    (1)logistic/sigmoid function:

    (2)tanh function:

    (3)step/binary function:

    (4)rectifier function:

    其中analytic function是rectifier function的平滑近似:

    (二)DNN模型

    1.结构:输入层(1层)——隐层(可以有多层)——输出层(1层)

    2.符号表示:

    3.计算公式:

    (三)训练DNN模型

    1.代价函数:

    其中:

      ps:(1)第一项是损失函数,采用平均平方误差(MSE);第二项是正则化约束,防止过拟合;

              (2)代价函数J是非凸函数,优化时采用批量梯度下降法;

               

    其中:

              

    2.反向传播算法(BP算法):

    (1)进行前向传导计算;

    (2)计算残差:

             

         

    (3)计算梯度:

       ps:针对的是一个样本进入网络时的计算;

    3.批量梯度下降法:

    (1)初始化:;w,b则随机初始化为比较小的数值;

    (2)对于一个数量为m的batch,i = 1到m,依次用BP算法计算出梯度并进行累加:

           

     (3)更新参数:

     ( 4)回到步骤(2),重新选择一个batch,继续迭代,不断减小J函数的值,从而求出参数w,b;

    4.训练难度:

    (1)标注数据稀少导致训练出来的深度神经网络过拟合;

    (2)对于深度神经网络,通常会涉及到求解一个高度非凸优化问题,这种非凸优化问题的搜索区域中充斥着大量“坏”的局部极值,使用梯度下降法效果并不理想;

    (3)使用梯度下降法之前会对深度神经网络进行权重的随机初始化,在利用反向传播算法计算残差时,随着网络层次的增加,残差会下降得特别快,导致前几层得权重更新缓慢;因此训练得到得深度神经网络只有后面几层网络具有效果;(梯度弥散问题)

    ps:逐层贪婪训练方法可以很好地解决上述问题;

    5.逐层贪婪训练方法:

    (1)思想:逐层贪婪算法的主要思路是每次只训练网络中的一层,即我们首先训练一个只含一个隐藏层的网络,仅当这层网络训练结束之后才开始训练一个有两个隐藏层的网络,以此类推;在每一步中,我们把已经训练好的前 	extstyle k-1  层固定,然后增加第 	extstyle k  层(也就是将我们已经训练好的前 	extstyle k-1  的输出作为输入);每一层的训练通常使用无监督方法(例如自动编码);这些各层单独训练所得到的权重被用来初始化深度网络的权重,然后对整个网络进行“微调”(即把所有层放在一起来优化有标签训练集上的训练误差);

    (2)优点:

       1)预训练阶段采用的是无监督学习方法,所需要的没有标签的数据来源广泛,极易获取;

       2)当用无标签数据训练完网络后,相比于随机初始化而言,各层初始权重会位于参数空间中较好的位置上;然后我们可以从这些位置出发进一步微调权重;从经验上来说,以这些位置为起点开始梯度下降更有可能收敛到比较好的局部极值点,这是因为无标签数据已经提供了大量输入数据中包含的模式的先验信息;

    (四)BP算法

    Backpropagation Algorithm(BP)算法是一种利用神经网络求解梯度的算法,适用于从矩阵到实数的函数:

    1.将目标函数化解成神经网络的形式,其中的未知数一般以输入或者权重的形式存在;

    (1)网络的描述:

             1)把 A 作为第一层到第二层的权重;

             2)将第二层的激励减 x ,第二层使用了单位激励函数;

             3)通过单位权重将结果不变地传到第三层,在第三层使用平方函数作为激励函数;

             4)将第三层的所有激励相加;

    (2)网络参数如下:

    该层输入z 权重 激励函数 f 激励函数的导数f' Delta
    1 s A f(zi) = zi f'(zi) = 1 left( A^T delta^{(2)} 
ight) ullet 1
    2 As I (单位向量) f(zi) = zi − xi f'(zi) = 1 left( I^T delta^{(3)} 
ight) ullet 1
    3 As − x   f(z_i) = z_i^2 f'(zi) = 2zi f'(zi) = 2zi

    2.残差计算公式

    (1)最后一层的残差:

    (2)其他层的残差:

    3.基于残差计算出梯度;

    (1)未知数是输入:

    (2)未知数是权重:

    因此:

    4.BP的思想:设目标函数为F,形式一般为范数形式,其残差的计算其实就是分别对每一层的z求导

  • 相关阅读:
    mysql同步故障解决
    linux环境变量
    shell脚本中的交互式输入自动化
    ERROR oslo_service.service PlacementNotConfigured 解决办法
    openstack源
    rabbitmq——用户管理
    linux lvm扩容
    UWB DWM1000 开源项目框架 之 信号强度指示RSSI
    UWB DWM1000 开源项目框架 之 温度采集
    UWB DWM1000 开源项目框架
  • 原文地址:https://www.cnblogs.com/linyuanzhou/p/4996793.html
Copyright © 2011-2022 走看看