深度学习: 随机失活 (dropout)
2018-02-02 15:49
253 查看
Introduction
随机失活,dropout,2012年于AlexNet中被提出。Note :
- 只针对 全连接层 进行操作;
- 训练阶段和测试阶段的操作不同。
训练阶段
按概率p 随机 将神经元 置 0[如下(b)图],以 缓解 神经元之间 隐形的协同适应,从而达到降低模型复杂度的目的:
别看dropout之后的网络只是原网络的一个 子网络 ,复杂度不比原网络。但由于每个神经元的dropout是 随机dropout,因此每一轮都相当于在一个 新的 子网络上训练。那么最终得到的模型便是 无数个 子网络 共同训练 的成果,效果自然会更好。
然后麻烦也来了,训练阶段的每个神经元要事先添加一道概率流程:
对应的公式变化如下如下:
没有dropout的神经网络:
有dropout的神经网络:
Tensorflow 中的 dropout API 如下:
tf.nn.dropout
其中,根据 keep_prob参数项 随机进行 dropout 。
# coding=utf-8 import tensorflow as tf import numpy as np inputs = np.random.uniform(-10, 10, size=[3, 3]) features = tf.placeholder_with_default(input=inputs, shape=[3, 3]) # 随机失活 output_dropout = tf.nn.dropout(features, keep_prob=0.5) with tf.Session() as sess: print ("\nfeatures :\n{}".format(sess.run(features))) print ("\n----------\n") print ("\ndropout :\n{}".format(sess.run(output_dropout)))
features : [[ 0.53874537 -3.09047282 -2.88714205] [-1.92602402 -1.56025457 3.64309646] [-9.13147387 8.37367913 -7.9849204 ]] ---------- dropout : [[ 0. -6.18094565 -5.77428411] [ -0. -3.12050914 7.28619293] [-18.26294775 16.74735827 -0. ]]
测试阶段
所有 神经元均呈 激活态,但其权重 需乘上 (1−p)(1−p) 以保证各权重能有和 训练阶段 相同的 期望值 :[1] 解析卷积神经网络—深度学习实践手册
[2] 理解dropout
相关文章推荐
- caffe+报错︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization
- 【深度学习:CNN】Dropout解析(2)
- 神经网络抵制过拟合神器:Dropout 手把手论文入门 — 深度学习 DL 番外篇
- 深度学习小白——神经网络3(数据预处理,dropout,正则化)
- 深度学习理解tensorflow之Dropout
- 深度学习正则化之dropout
- 深度学习Deep Learning: dropout策略防止过拟合
- 关于深度学习中Dropout的理解
- 系统学习深度学习(十一)--dropout,dropconect
- 深度学习Deep learning:四十一(Dropout简单理解)
- 浅谈深度学习尝常识:泛化、过拟合、Dropout、Attention
- 深度学习中 --- 解决过拟合问题(dropout, batchnormalization)
- Dropout 深度学习
- 深度学习中的epoch、 iteration、batchsize和dropout的含义
- 深度学习中dropout策略的理解
- caffe+报错︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization
- 深度学习lstm防止过拟合之dropout
- 深度学习中Dropout优化的原理分析
- 深度学习之----Dropout浅层理解与实现
- 机器学习、深度学习实战细节(batch norm、relu、dropout 等的相对顺序)