cs231n笔记(8++)——扔掉层(drop)
来源:互联网 发布:端游的没落 知乎 编辑:程序博客网 时间:2024/06/03 23:07
简单来说就是将一些神经元随机失活,防止过拟合。注意dropout层的本质是为了减少过拟合的的,是通过随机不激活一部分神经元实现的(每次不激活的部分并不相同),而不是为了去除掉不激活的神经元。
具体理解:
Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。
在样本的训练阶段,在没有采用pre-training的网络时(Dropout当然可以结合pre-training一起使用),hintion并不是像通常那样对权值采用L2范数惩罚,而是对每个隐含节点的权值L2范数设置一个上限bound,当训练过程中如果该节点不满足bound约束,则用该bound值对权值进行一个规范化操作(即同时除以该L2范数值),说是这样可以让权值更新初始的时候有个大的学习率供衰减,并且可以搜索更多的权值空间(没理解)。
在模型的测试阶段,使用”mean network(均值网络)”来得到隐含层的输出,其实就是在网络前向传播到输出层前时隐含层节点的输出值都要减半(如果dropout的比例为50%),其理由文说了一些,可以去查看(没理解)。
关于Dropout,文章中没有给出任何数学解释,Hintion的直观解释和理由如下:由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点每次都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。可以将dropout看作是模型平均的一种。对于每次输入到网络中的样本(可能是一个样本,也可能是一个batch的样本),其对应的网络结构都是不同的,但所有的这些不同的网络结构又同时share隐含节点的权值。这样不同的样本就对应不同的模型,是bagging的一种极端情况。个人感觉这个解释稍微靠谱些,和bagging,boosting理论有点像,但又不完全相同。
这个层常常出现在全连接层的地方,因为全连接层中的结点与结点连接太多了,消耗了CNN中绝大多数的内存资源,而这中间有一大部分是没有必要的。
- cs231n笔记(8++)——扔掉层(drop)
- cs231n笔记(8+)——全连接层
- cs231n笔记(3)—误差函数
- cs231n笔记(1)——-KNN算法
- cs231n笔记(2)——线性分类器
- cs231n笔记(4)——正则化
- cs231n笔记(7)——图像处理中的卷积
- cs231n笔记(9+)——非极大值抑制
- cs231n笔记(8)--卷积神经网络CNN
- CS231n(8):线性分类笔记(中)
- CS231n 学习笔记(1)——神经网络 part1 :图像分类与数据驱动方法
- CS231n 学习笔记(2)——神经网络 part2 :线性分类器,SVM
- CS231n 学习笔记(2)——神经网络 part2 :Softmax classifier
- CS231n 学习笔记(3)——神经网络 part3 :最优化
- CS231n 学习笔记(4)——神经网络 part4 :BP算法与链式法则
- cs231n 学习笔记(5)——神经网络part1:建立神经网络架构
- 斯坦福CS231n-计算机视觉—笔记汇总
- 简述K最近邻(cs231n笔记)
- Hera-将小程序打包成移动APP的开发框架
- 在Angular指令中使用NgModelController做数据绑定
- oralce 第一篇 Oracle跨数据库Dblink的使用以及跨用户同义词创建
- hibernate 一对多,多对多查询
- maven的三大生命周期
- cs231n笔记(8++)——扔掉层(drop)
- Python实例3-获取某文件夹下指定类型的图片名,翻转和旋转图片
- android colors.xml 包含了大多数 rgb 颜色
- python中文(汉字)转拼音
- C++的学习笔记(第一章:C++的基本概述)
- 数据结构实验之排序五:归并求逆序数
- JNI之 c/c++调用java构造函数
- shuffle 调优之合并map端的输出
- 《算法艺术与信息学竞赛》之 并查集 银河英雄传说