前言

这是《一天搞懂深度学习》的第二部分

一、选择合适的损失函数

  典型的损失函数有平方误差损失函数和交叉熵损失函数。

  交叉熵损失函数:

  选择不同的损失函数会有不同的训练效果

二、mini-batch和epoch

  (1)什么是mini-batch和epoch

    所谓的mini-batch指的是我们将原来的数据分成不重叠的若干个小的数据块。然后在每一个epoch里面分别的运行每个mini-batch。ecpoch的次数和mini-batch的大小可以由我们自己设置。

  (2)进行mini-batch和epoch划分的原因

    之所以要进行mini-batch和epoch的改变,一个很重要的原因是这样就可以实现并行计算。但是这样的话,每一次的L就不是全局损失而是局部损失。mini-batch采用了并行计算会比之前传统算法的速度更快。并且mini-batch的效果会比传统的方法好

  (3)mini-batch和epoch的缺点

    mini-batch是不稳定的。mini-batch不一定会收敛。

三、新的激励函数

深度学习并不是说神经网络的层数越多越好。因为神经网络的深度越深那么在误差回传的过程中,因为层数过多可能会有梯度消失的问题。所谓梯度消失问题指的是在训练的过程中,越靠近输出层的学习的越快越靠近输入层的学习的越慢。那么随着深度的增加,靠近输出层的隐含层权重已经收敛了,但是靠近输入层的隐含层却还没有什么变化,相当于还是像初始的时候一样权重是随机的。

为了梯度消失的问题,学者提出了使用ReLU函数作为激励函数。以下是ReLU函数:

(1)为什么要选择ReLU函数作为激励函数

  1.很容易计算

  2.Relu函数和我们神经元的激励机制很像:神经元只有在接收一定量的刺激才能够产生反应

  3.infinite sigmoid with different biases【这句话不知道咋解释】

  4.解决梯度消失问题

(2)ReLU函数的变种

  ReLU函数有很多种形式,上面的函数图像只是其中最原始的一种。还有Leaky ReLU和Parametric ReLU

(3)Maxout激励函数

Maxout激励函数先将隐含层的神经元进行分组然后利用分段函数得到组中每一个elements的值,取最大的输出。这个分段函数分的段数是取决于一个group里面有多少个elements。其实ReLU就是一个group里面只有一个element的Maxout激励函数

四、自适应的学习率

学习率是一个很重要的参数,如果学习率选择的太大的话就会出现无法收敛的情况,如果学习率选择的太小的话收敛的太慢,训练过程太长。

我们选择学习率一般不是选择一个固定的值,而是让它随着训练次数的不断增加而减少。学习率针对不同的参数应该是不同的。并且对于所有的参数来说学习率应该越来越小。导数越大,学习率越小;导数越小,学习率越大。【这里导数是有正负性的】

五、Momentum

单纯的使用导数用于改变学习率,很容易陷入局部最小,或者极值点。为了避免这一点,我们使用了Momentum。虽然加上Momentum并不能完全的避免陷入局部最小,但是可以从一定的程度上减缓这个现象。

六、过拟合

所谓的过拟合,就是过度的学习训练集的特征,将训练集独有的特征当做了数据的全局特征,使得其无法适应测试集的分布。

防止过拟合的方法叫做正则化,正则化的方式有很多。

在神经网络中正则化的方法主要有四种:

  1.早起停止(eary stopping):比如我们可以设置训练的最大轮数等

  2.权重衰减:减少无用的边的权重

  3.droupout:每次训练的时候都删除一些节点单元,这样会使网络结构变得简单,训练过程也变得更加简单。它的定义是如果你在训练的阶段对于某一层删除了p%节点,那么你在训练时该层的神经元的权重也要衰减p%。droupout可以看做是一个ensamble的过程。

  4.网络结构:比如CNN

一天搞懂深度学习-训练深度神经网络(DNN)的要点的更多相关文章

  1. java web应用调用python深度学习训练的模型

    之前参见了中国软件杯大赛,在大赛中用到了深度学习的相关算法,也训练了一些简单的模型.项目线上平台是用java编写的web应用程序,而深度学习使用的是python语言,这就涉及到了在java代码中调用p ...

  2. 中文译文:Minerva-一种可扩展的高效的深度学习训练平台(Minerva - A Scalable and Highly Efficient Training Platform for Deep Learning)

    Minerva:一个可扩展的高效的深度学习训练平台 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2015-12-1 声明 ...

  3. TensorRT深度学习训练和部署图示

    TensorRT深度学习训练和部署 NVIDIA TensorRT是用于生产环境的高性能深度学习推理库.功率效率和响应速度是部署的深度学习应用程序的两个关键指标,因为它们直接影响用户体验和所提供服务的 ...

  4. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

  5. MLPerf结果证实至强® 可有效助力深度学习训练

    MLPerf结果证实至强 可有效助力深度学习训练 核心与视觉计算事业部副总裁Wei Li通过博客回顾了英特尔这几年为提升深度学习性能所做的努力. 目前根据英特尔 至强 可扩展处理器的MLPerf结果显 ...

  6. 深度学习训练过程中的学习率衰减策略及pytorch实现

    学习率是深度学习中的一个重要超参数,选择合适的学习率能够帮助模型更好地收敛. 本文主要介绍深度学习训练过程中的6种学习率衰减策略以及相应的Pytorch实现. 1. StepLR 按固定的训练epoc ...

  7. 学习笔记︱Nvidia DIGITS网页版深度学习框架——深度学习版SPSS

    DIGITS: Deep Learning GPU Training System1,是由英伟达(NVIDIA)公司开发的第一个交互式深度学习GPU训练系统.目的在于整合现有的Deep Learnin ...

  8. 深度学习之卷积神经网络(CNN)的应用-验证码的生成与识别

    验证码的生成与识别 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10755361.html 目录 1.验证码的制 ...

  9. 深度学习之循环神经网络RNN概述,双向LSTM实现字符识别

    深度学习之循环神经网络RNN概述,双向LSTM实现字符识别 2. RNN概述 Recurrent Neural Network - 循环神经网络,最早出现在20世纪80年代,主要是用于时序数据的预测和 ...

随机推荐

  1. OC语言大总结(上)

    根据OC学习的知识点,总结了一下,希望能帮到大家! 作者:韩俊强  未经允许,请勿转载! 关注博主:http://weibo.com/hanjunqiang 第一节类于对象   类与对象http:// ...

  2. C++对象模型(二):The Semantics of Copy Constructors(拷贝构造函数之编译背后的行为)

    本文是 Inside The C++ Object Model's Chapter 2  的部分读书笔记. 有三种情况,需要拷贝构造函数: 1)object直接为另外一个object的初始值 2)ob ...

  3. Java 与 C++ 不一样的地方(持续更新中...)

    本文仅以记录 Java 与 C++ 不同之处,以备随时查询. Java 程序运行机制 Java 是一门编译解释型的语言,即它在运行的过程中既需要编译也需要解释.如下图表示的是 Java 程序运行机制: ...

  4. 2013 QCon北京演讲:跨终端的WebKit渲染机制

    转载请注明原文地址:http://blog.csdn.net/milado_nju 1. 该演讲主要介绍WebKit的渲染机制的内部工作原理和一些新的技术,特别是针对不断出现的多种终端所做的一些努力. ...

  5. FFMPEG结构体分析:AVStream

    注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...

  6. Linux下简易线程池

    线程池简介 线程池是可以用来在后台执行多个任务的线程集合. 这使主线程可以自由地异步执行其他任务.线程池通常用于服务器应用程序. 每个传入请求都将分配给线程池中的一个线程,因此可以异步处理请求,而不会 ...

  7. droid invalidate和postinvalidate的区别

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中 ...

  8. HOW to Use QP_PREQ_PUB.PRICE_REQUEST API to Price an Item

    In this Document Goal   Solution   References APPLIES TO: Oracle Advanced Pricing - Version 11.5.10 ...

  9. Android特效专辑(十一)——仿水波纹流量球进度条控制器,实现高端大气的主流特效

    Android特效专辑(十一)--仿水波纹流球进度条控制器,实现高端大气的主流特效 今天看到一个效果挺不错的,就模仿了下来,加上了一些自己想要的效果,感觉还不错的样子,所以就分享出来了,话不多说,上图 ...

  10. Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

    Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...