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


    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、总结

        

  • 相关阅读:
    【Go语言系列】2.3、Go语言基本程序结构:变量及常量
    【Go语言系列】2.2、Go语言基本程序结构:关键字与标识符
    【Go语言系列】2.1、Go语言基本程序结构:注释
    【Go语言系列】第三方框架和库——GIN:快速入门
    【Go语言系列】第三方框架和库——GIN:GIN介绍
    【Go语言系列】1.4、GO语言简介:第一个Go语言程序
    【Go语言系列】1.3、GO语言简介:Go语言开发的知名项目
    【Go语言系列】1.2、GO语言简介:哪些大公司正在使用Go语言
    【Go语言系列】1.1、GO语言简介:什么是GO语言
    CentOS自行编译升级Git
  • 原文地址:https://www.cnblogs.com/xxlad/p/11237862.html
Copyright © 2020-2023  润新知