zoukankan      html  css  js  c++  java
  • 深度学习知识点

    深度学习知识点

    Batch Normalization

    作用:神经网络在训练的时候随着网络层数的加深,激活函数的输入值的整体分布逐渐往激活函数的取值区间上下限靠近,从而导致在反向传播时低层的神经网络的梯度消失。而BatchNormalization的作用是通过规范化的手段,将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使得梯度变大,加快学习收敛速度,避免梯度消失问题。

    train和inference时的差别:在训练时,我们可以计算出batch的均值和方差,迭代训练过程中,均值和方差一直在发生变化。但是在推理时,均值和方差是固定的,它们在训练过程中被确定下来。TensorFlow中的方式,即采用滑动平均MovingAverage的方法,公式为: moving_average_value * momentum + value * (1 - momentum),其中value为当前batch的平均值或方差,moving_average_value为滑动均值或滑动方差。
    最终,模型训练完毕后,在推理时使用滑动平均值moving_mean和滑动方差moving_variance对feature maps进行变换。

    模型中的哪些位置插入BN层:推荐在Conv层或FC层之后,非线性变换激活层之前插入BN层
    link

    神经网络的激活函数

    公式、函数图像、导数
    Sigmoid函数

    tanh函数

    Relu函数

    )

    Leaky Relu函数

    ELU(Exponential Linear Units)函数

    梯度消失产生原因:隐藏层数过多;采用了不合适的激活函数

    梯度爆炸产生的原因:隐藏层数过多;权重的初始化值过大

    解决梯度消失和梯度爆炸的办法:换用Relu, LeakyRelu, Elu等激活函数;采用BatchNormalization; 预训练加finetunning; 梯度剪切、正则。

    Relu比Sigmoid的效果好在哪里?Sigmoid的导数只有在0的附近时有较好的激活性,而在正负饱和区域的梯度趋向于0,从而产生梯度弥散的现象,而relu在大于0的部分梯度为常数,所以不会有梯度弥散现象。Relu的导数计算的更快。Relu在负半区的导数为0,所以神经元激活值为负时,梯度为0,此时神经元不参与训练,具有稀疏性。

    激活函数的作用:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。

    dropout

    在神经网络的训练过程中,对于神经元按一定的概率将其随机从网络中丢弃,从而达到对于每个mini-batch都是在训练不同网络的效果,防止过拟合。
    在tensorflow中的实现方式?
    DropConnect的原理:防止过拟合方法的一种,与dropout不同的是,它不是按概率将隐藏层的节点输出清0,而是对每个节点与之相连的输入权值以一定的概率清0.

    Adam

    Adam算法和传统的随机梯度下降不同,随机梯度下降保持单一的学习率更新所有的权重,学习率在训练过程中并不会改变。而Adam通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

  • 相关阅读:
    51nod 1574 排列转换(猜结论)
    百度之星资格赛 1005 寻找母串(分块打表+组合数计算)
    百度之星资格赛 1004 度度熊的午饭时光(01背包+最小序号和+字典序+有bug)
    百度之星资格赛 1003 度度熊与邪恶大魔王(二维dp)
    HDU 4542 小明系列故事——未知剩余系 (数论|反素数)
    51nod 1060 最复杂的数(反素数)
    eclipse hadoop环境搭建 查看HDFS文件内容
    Windows jdk安装以及版本切换
    WIN10配置MongoDB
    Oracle 11g R2 for Win10(64位)的安装步骤
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13430737.html
Copyright © 2011-2022 走看看