zoukankan      html  css  js  c++  java
  • 神经网络的复杂度&指数衰减学习率&激活函数

    1.神经网络复杂度(空间复杂度+时间复杂度)

    • 空间复杂度

    空间复杂度用神经网络层数和神经网络中待优化参数的个数表示

    我们计算神经网络层数时,只统计具有运算能力的层,输入层仅把数据传输过来,没有运算,所以在统计神经网络层数时,不把输入层算进来

    输入层和输出层之间都是隐藏层

    • 时间复杂度

    时间复杂度可以用神经网络中的乘加运算的次数表示

    有几条权重线,就有几次乘加运算

     2.学习率

     指数衰减学习率可以根据当前迭代次数,动态改变学习率的值

    当前轮数有两种表示方法:

    • epoch可以用当前迭代了多少次数据集
    • global_step表示当前一共迭代了多少次batch

    多少轮衰减一次:

    迭代多少次数据集,或迭代多少次batch更新一次学习率,决定了学习率的更新频率

    代码运行输出:

    可以看到随着迭代轮数增加,学习率在指数衰减

     3.激活函数

    激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。引入非线性激活函数,可使深层神经网络的表达能力更加强大 

    也正是非线性函数的加入,使得多层神经网络不再是输入x的线性组合,神经网络可以随层数的增加提升表达力了

     

    如果激活函数的输出为有限值,权重对特征的影响更显著,用梯度下降的方法更新参数会更稳定

    如果激活函数的输出为无限值,参数的初始值对模型的影响非常大,要使用更小的学习率

     

    优点:
    •  输出映射在(0,1)之间,单调连续,输出范围有限,优化稳定,可用作输出层;
    •  求导容易。 

     

     

     解释Dead Relu问题

    送入激活函数的输入特征是负数时,激活函数的输出为0,反向传播得到的梯度是0,导致参数无法更新,造成神经元死亡。

    其实造成神经元死亡的根本原因是经过relu函数的负数特征过多导致的,我们可以改进随机初始化,避免过多的负数特征送入relu函数,可以通过设置更小的学习率,减少参数分布的巨大变化,避免训练中产生过多的负数特征进入relu函数。

  • 相关阅读:
    IE不支持 ES6 Promise 对象的解决方案
    微信小程序使用阿里图标
    IE浏览器 ajax传参数值为中文时出现乱码的解决方案
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
    常见的一些浏览器兼容问题
    移动端rem设置(部分安卓机型不兼容)
    element ui el-menu样式调整
    原生login页面
    elemet ui去除table 样式
    项目上线
  • 原文地址:https://www.cnblogs.com/GumpYan/p/13575180.html
Copyright © 2011-2022 走看看