李宏毅机器学习笔记05(Deep Learning->DNN)

Deep Learning-------->DNN(深度神经网络)

思路:

1、什么是深度学习

2、深度学习的步骤

3、如何优化(调参问题描述)

  问题描述:参数更新的过程、training data 与参数更新的关系(训练过程)

4、Back Propagation方法update DNN参数

 

1、什么是深度学习

  • 深度学习的model是一个深度神经网络结构(neural structure)
  • 深度学习的“深度”是指神经网络的隐层(hidden layer)数量足够多
  • 深度学习是自动提取特征(Feature extractor),不需要像逻辑回归那样特征转换(Feature engineering)

2、深度学习的步骤

  Step1、定义一个神经网络结构(neural structure)

    神经网络的创建包括3部分:一是神经网络有多少隐层(layer)、二是每一层有多少神经元(neuron)、三是每个神经元之间如何连接

    往往需要 尝试发现错误+直觉

    

 

      1)神经元:每个神经元都有一个 bias 和一个 function ,每条输入的边都有一个 weight

 

            

 

    2)举个栗子:下面是一个 3个隐层两个神经元全连接的神经网络

   

 

     3)神经网络如何工作的呢

      假设已经定义好了神经网络之后(也就是function找到了),输入和输出都是一个 向量(vector)

      

 

      现在给定一个输入(vector),神经网络内部如何计算,然后得到输出呢?

      矩阵运算(可以用GPU加速),先算第一层:

    

      其他层也一样:

    

      三层都计算完之后:

      

        

        举个栗子:手写数字识别

      

 

  Step2、确定损失函数

  跟逻辑回归一样,用交叉熵

  

    算总Loss:

    

 

  Step3、找到一个最好的函数(最佳参数)

       

 

3、如何优化(调参问题描述)

  问题描述:参数更新的过程、training data 与参数更新的关系(训练过程)

      如果想要做好优化问题,也就是调到好的参数,那么前提是要很清楚参数更新的过程。

  参数更新主要出现在step 3部分,也就是说参数在梯度下降的过程中更新的。

  1)普通梯度下降(批量)

    一、随机选取一组参数

    二、输入所有的training data【(x1,y1^),(x2,y2^),……(xn,yn^)】

    三、然后data不变,参数不断变,用梯度下降法更新参数

  

    此时的LOSS函数是计算所有training data的损失值相加的和,然后更新一次参数

    

 

     2)随机梯度下降  (快,但是不稳定

    一、先随机选取一组参数

    二、再输入第一个training data(x1,y1^)

    三、然后data变一次,参数变一次,用梯度下降法更新参数

    四、再输入第二个training data(x2,y2^).....循环

    

 

 

     此时的LOSS函数是计算一个training data的损失值,就更新一次参数,假如有100个data,当data全部加入时参数就更新了100次

     

 

  3)小批量梯度下降(MBGD)(用batch、epoch又快又稳定

    一、先随机选取一组参数

    一、设置batch、epoch,然后data变batch次,参数变一次

     二、根据设置的batch size,每输入一个batch的数据,用梯度下降法更新参数,直到算完所有的batch就完成了一个epoch。

    三、根据设置的epoch,重复步骤二,一直到epoch次

 

                   

 

     又快又稳的原因:

    在一个batch=2里面,由于数据每输入两次,参数更新一次,所以一个batch里面的下一个数据输入不会用到前一组参数(同一组参数),因此可以用GPU并行计算

   

 

     对比:

           

 

4、Back Propagation方法update DNN参数

  1、BP(后向传播)是用来快速计算DNN梯度

   

 

 

   2、前向传播+后向传播是如何计算DNN梯度的

     先看清楚损失函数C所处的位置:输入经过一个DNN网络输出,再与理论值的比较才得到损失函数,所以C对W的偏导是经过长长的神经网络每一层的链式传导

 

    

     开始求导,分为前向传递部分后向传递部分              

     

     前向传递很好求,就是权值所对应的输入量

    

     后向传递开始表演:要从输出端往回传

      

              

 

      要怎么从后往前计算呢

         

 

       3、总结

    

 

posted @ 2019-07-26 13:13  zr-zhang2019  阅读(1283)  评论(0编辑  收藏  举报