神经网络训练细节part2下

  1. 集成模型
  2. dropout

集成模型

训练:单独训练多个模型

测试:采用多个模型的测试结果均值做为结果

可以提升2%。

单模型:在训练过程中设置检查点,然后验证验证集中的数据。

集成模型:在不同的模型中分贝设置检查点,然后用每个模型对验证集中的数据结果得到的均值作为验证结果。

dropout

随机失活:在前向传播和反向传播过程中,随机地使网络中的神经元输出为0。

p = 0.5 #随机失活概率def train_step(X):H1 = np.maximum(0, np.dot(W1, X) + b1)U1 = np.random.rand(*H1.shape) < pH1 *= U1H2 = np.maximum(0, np.dot(W2, H1) + b2)U2 = np.random.rand(*H2.shape) < pH2 *= U2out = np.dot(W3, H2) + b3

随机失活为什么会取得较好的结果?(1)第一种解释:随机地让网络中的一部分神经元失活,降低了网络的表达能力,减少了网络过拟合的概率。强制地认为网络的表达能力是冗余的,被失活的神经元是冗余的。(2)第二种解释:每一次失活都相当于是得到了一个新的网络,相当于每一次在网络中采样一部分作为当前网络,这些网络的训练数据不同,但却共享着一部分权值(共享权值可以这样理解,比如第一层有4个神经元,第一个batch失活第一个神经元,得到网络1,然后训练网络,第二个batch失活第二个神经元,得到网络2,然后训练网络2,网络1训练后第二、三、四个神经元的参数更新,然后网络2训练的时候是在网络1的基础上训练的,即网络2训练时第三、四个神经元的参数与网络1训练后的参数相同。)所以相当于训练一个由很多小网络融合而成的集成网络。

测试时:全部的神经元都是存活的状态,相当于是没使用dropout。而训练时是以概率p失活神经元的。

如下图两个神经元:

假设以p=0.5的概率随机失活神经元,测试时:a=w0*x+w1*y

而训练时,神经元失活的情况有四种,a的期望E(a)=0.5*0.5(w1*0+w2*y)+0.5*0.5(w1*0+w2*0)+0.5*0.5(w1*0+w2*0)+0.5*0.5(w1*x+w2*0)+0.5*0.5(w1*x+w2*y)=0.5(w1*x+w2*y)所以训练时a的期望值是测试时a的值得p=0.5倍。

所以为了弥补这种差异,要在测试时让输出值乘以p。

def predict(X):H1 = np.maximum(0, np.dot(W1, X) + b1 ) * pH2 = np.maximum(0, np.dot(W2, H1) + b2 ) * pout = np.dot(W3, H2) + b3

反向失活:在失活中,训练过程和测试过程都要处理,且训练的输出期望值是测试输出的p倍,所以让测试的输出乘以p。还有一种方法就是反向失活,即在训练时让结果除以p,而不需要测试时做任何操作。同样弥补了差异。

p = 0.5 #随机失活概率def train_step(X):H1 = np.maximum(0, np.dot(W1, X) + b1)U1 = ( np.random.rand(*H1.shape) < p ) / pH1 *= U1H2 = np.maximum(0, np.dot(W2, H1) + b2)U2 = ( np.random.rand(*H2.shape) < p ) / pH2 *= U2out = np.dot(W3, H2) + b3

CS231n李飞飞计算机视觉 神经网络训练细节part2下相关推荐

  1. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 7笔记

    内容列表 Lecture 7 Convolutional Neural Networks 卷积神经网络历史 卷积神经网络具体结构 卷积层 池化层 全连接层 神经网络架构发展 LeNet AlexNet ...

  2. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 5笔记

    内容列表 Lecture 5 Training Neural Networks,Part I 神经网络的历史 训练神经网络 激活函数 数据预处理 权重初始化 批量归一化 检查学习过程 超参数优化 小结 ...

  3. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 1笔记

    前言:目前做深度学习也有一段时间了,系统的知识也学了很多,但是大多数都是自己在网上所获得的零散的知识,最近看了李飞飞的斯坦福网上公开课,觉得可以好好的巩固一下基础,对每个Lecture做一下笔记,De ...

  4. 李飞飞计算机视觉笔记(5)--神经网络训练细节part2

    参数更新算法 动量更新(Momentum) 复习一下SGD公式 W i = W i − l r ∗ g r a d W_i=W_i-lr*grad Wi​=Wi​−lr∗grad 我们在使用SGD时比 ...

  5. 斯坦福CS231n李飞飞计算机视觉之线性分类上

    线性分类器简介 线性评分函数 阐明线性分类器 译者注:上篇翻译截止处 损失函数 多类SVM Softmax分类器 SVM和Softmax的比较 基于Web的可交互线性分类器原型 小结 线性分类 上一篇 ...

  6. CS231N斯坦福李飞飞-计算机视觉-损失函数和优化

    CS231N斯坦福李飞飞-计算机视觉-损失函数和优化

  7. 李飞飞计算机视觉课CS231n第一天

    李飞飞计算机视觉课CS231n第一天 数据集 Pascal Visual Object Challenge: 20 catagories ImageNet: 22000 catagories and ...

  8. 李飞飞计算机视觉-自用笔记(第八周)

    李飞飞计算机视觉-自用笔记(八) 15 深度学习高效方法与硬件 15 深度学习高效方法与硬件 庞大模型的三大挑战: 大小.速度.能源效率 解决方法: 1.算法优化: 剪枝(pruning):并非神经网 ...

  9. 李飞飞计算机视觉-自用笔记(第一周)

    李飞飞计算机视觉-自用笔记(一) 1 课程介绍-计算机视觉概述 1.1 课程介绍-历史背景 2 图像分类 2.1 数据-驱动方法(机器学习) 2.2 K最近邻算法 2.3 线性分类I 3 损失函数和优 ...

  10. 李飞飞计算机视觉笔记(2)--线性分类器损失函数与最优化

    文章中的词语解释: 分类器:完整的神经网络 类别分类器:分类器中的某一个输出对应的所有权值(单层全连接神经网络) 损失函数:不包括正则式的损失函数 正则化损失函数:包括正则式的损失函数 多类SVM损失 ...

最新文章

  1. IBM AI辩手对战世界级人类辩手,炒作还是秀肌肉?
  2. 开启ntp服务_Linux入门:Linux自有服务及软件包
  3. eclipse版本详解以及下载安装步骤及启动eclispe报错整理
  4. 正确关闭WCF代理对象
  5. 苹果开发者_苹果优秀开发者实锤 微软VS Code将支持Apple Silicon
  6. 未来码农或可以备份一个自己的大脑
  7. 关于SVG的viewBox
  8. libuv 原理_Nodejs的运行原理-libuv篇
  9. 4场直播丨站撸Oracle、MySQL、医疗、航空
  10. Kalman Filter 递归算法
  11. Chrome打开cocos2d-html5官方Demo黑屏
  12. 树莓派笔记8:UDP传输视频帧
  13. 报错——xxx is not defined
  14. getMonthsetMonth方法
  15. 程序猿生存指南-57 故友来京
  16. java bean 首字母大写_javaBean命名规范 get / set 后的首字母大写
  17. 六大原则之依赖倒转(倒置)原则
  18. Zerotier 搭建moon
  19. Mac电脑使用:下载安装SourceTree的步骤以及使用方法
  20. BZOJ1067: [SCOI2007]降雨量(线段树)

热门文章

  1. ESP32 GPIO入门之闪灯
  2. 虹膜识别应用多样化 6亿美元市场待挖掘
  3. 为表单加上即时通讯的能力
  4. 闲谈 Kubernetes 的主要特性和经验分享
  5. XCode6自定义pch文件
  6. 计算两个路径的父亲路径
  7. Redis安装和启动报错解决
  8. HTTP method POST is not supported by this URL解决方案
  9. react实现div隐藏_在React中显示或隐藏元素
  10. python经典题库及答案文库_Python经典题库及答案