神经网络

神经网络的学习就是学习如何利用矩阵的线性变换激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。

增加节点数:增加维度,即增加线性转换能力。

增加层数:增加激活函数的次数,即增加非线性转换次数。

对卡在局部极小值的处理方法

1.调节步伐:调节学习速率,使每一次的更新“步伐”不同;

2.优化起点:合理初始化权重(weights initialization)、预训练网络(pre-train),使网络获得一个较好的“起始点”,如最右侧的起始点就比最左侧的起始点要好。常用方法有:高斯分布初始权重(Gaussian distribution)、均匀分布初始权重(Uniform distribution)、Glorot 初始权重、He初始权、稀疏矩阵初始权重(sparse matrix)。

浅层VS深层

浅层神经网络可以模拟任何函数,但数据量的代价是无法接受的。深层解决了这个问题。相比浅层神经网络,深层神经网络可以用更少的数据量来学到更好的拟合。深层的前提是:空间中的元素可以由迭代发展而来的

防止过拟合

L2正则化Dropout(若规律不是在所有样本中都存在,则dropout会删除这样的规律),每个epoch之后shuffle训练数据,设置early-stopping。加Batch Normalization(BN首先是把所有的samples的统计分布标准化,降低了batch内不同样本的差异性,然后又允许batch内的各个samples有各自的统计分布),BN最大的优点为允许网络使用较大的学习速率进行训练,加快网络的训练速度(减少epoch次数),提升效果。

为何使用Batch Normalization

用多个梯度的均值来更新权重的批量梯度下降法可以用相对少的训练次数遍历完整个训练集,其次可以使更新的方向更加贴合整个训练集,避免单个噪音样本使网络更新到错误方向。然而也正是因为平均了多个样本的梯度,许多样本对神经网络的贡献就被其他样本平均掉了,相当于在每个epoch中,训练集的样本数被缩小了。batch中每个样本的差异性越大,这种弊端就越严重。一般的解决方法就是在每次训练完一个epoch后,将训练集中样本的顺序打乱再训练另一个epoch,不断反复。这样重新组成的batch中的样本梯度的平均值就会与上一个epoch的不同。而这显然增加了训练的时间。同时因为没办法保证每次更新的方向都贴合整个训练集的大方向,只能使用较小的学习速率。这意味着训练过程中,一部分steps对网络最终的更新起到了促进,一部分steps对网络最终的更新造成了干扰,这样“磕磕碰碰”无数个epoch后才能达到较为满意的结果。

为了解决这种“不效率”的训练,BN首先是把所有的samples的统计分布标准化,降低了batch内不同样本的差异性,然后又允许batch内的各个samples有各自的统计分布

1、为什么神经网络高效:并行的先验知识使得模型可用线性级数量的样本学习指数级数量的变体

2、学习的本质是什么:将变体拆分成因素和知识(Disentangle Factors of Variation)

  • 为什么深层神经网络比浅层神经网络更高效:迭代组成的先验知识使得样本可用于帮助训练其他共用同样底层结构的样本。
  • 神经网络在什么问题上不具备优势:不满足并行与迭代先验的任务

3、非迭代:该层状态不是由上层状态构成的任务(如:很深的CNN因为有max pooling,信息会逐渐丢失。而residual network再次使得迭代的先验满足)

CNN

1、卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核可以提取多种特征。一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算(哪怕是多个卷积核)提取的特征往往是局部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算 ,这也就是多层卷积。

2、池化:降维的方法,按照卷积计算得出的特征向量维度大的惊人,不但会带来非常大的计算量,而且容易出现过拟合,解决过拟合的办法就是让模型尽量“泛化”,也就是再“模糊”一点,那么一种方法就是把图像中局部区域的特征做一个平滑压缩处理,这源于局部图像一些特征的相似性(即局部相关性原理)。
3、全连接:softmax分类
训练过程:
卷积核中的因子(×1或×0)其实就是需要学习的参数,也就是卷积核矩阵元素的值就是参数值。一个特征如果有9个值,1000个特征就有900个值,再加上多个层,需要学习的参数还是比较多的。

CNN的三个优点:
sparse interaction(稀疏的交互),parameter sharing(参数共享),equivalent respresentation(等价表示)。适合于自动问答系统中的答案选择模型的训练。

CNN与DNN的区别

DNN的输入是向量形式,并未考虑到平面的结构信息,在图像和NLP领域这一结构信息尤为重要,例如识别图像中的数字,同一数字与所在位置无关(换句话说任一位置的权重都应相同),CNN的输入可以是tensor,例如二维矩阵,通过filter获得局部特征,较好的保留了平面结构信息。

filter尺寸计算:Feature Map的尺寸等于(input_size + 2 * padding_size − filter_size)/stride+1

RNN

1、为什么具有记忆功能?
这个是在RNN就解决的问题,就是因为有递归效应,上一时刻隐层的状态参与到了这个时刻的计算过程中,直白一点呢的表述也就是选择和决策参考了上一次的状态。
2、为什么LSTM记的时间长?
因为特意设计的结构中具有CEC的特点,误差向上一个状态传递时几乎没有衰减,所以权值调整的时候,对于很长时间之前的状态带来的影响和结尾状态带来的影响可以同时发挥作用,最后训练出来的模型就具有较长时间范围内的记忆功能。
误差回传的主力还是通过了Memory Cell而保持了下来。所以我们现在用的LSTM模型,依然有比较好的效果。
最后整个梳理一下误差回传的过程,误差通过输出层,分类器,隐层等进入某个时刻的Block之后,先将误差传递给了Output Gate和Memory Cell两个地方。
       到达输出门的误差,用来更新了输出门的参数w,到达Memory Cell之后,误差经过两个路径,
1是通过这个cell向前一个时刻传递或者更前的时刻传递,
2是用来传递到input gate和block的输入,用来更新了相应的权值(注意!不会经过这里向前一个时刻传递误差)。
最关键的问题就是,这个回传的算法,只通过中间的Memory Cell向更前的时刻传递误差。

在RNN中U、V、W的参数都是共享的,也就是只需要关注每一步都在做相同的事情,只是输入不同,这样来降低参数个数和计算量。

RNN特点:
时序长短可变(只要知道上一时刻的隐藏状态ht−1ht−1与当前时刻的输入xtxt,就可以计算当前时刻的隐藏状态htht。并且由于计算所用到的WxhWxh与WhhWhh在任意时刻都是共享的。递归网络可以处理任意长度的时间序列)顾及时间依赖,未来信息依赖(双向递归)

RNN主要包括LSTM,GRU

GRU对LSTM做了两个大改动:

1、将输入门、遗忘门、输出门变为两个门:更新门(Update Gate)和重置门(Reset Gate)。

2、将单元状态与输出合并为一个状态:。

GRU只用了两个gates,将LSTM中的输入门和遗忘门合并成了更新门。并且并不把线性自更新建立在额外的memory cell上,而是直接线性累积建立在隐藏状态上,并靠gates来调控

深度学习——CNN、RNN、DNN汇总相关推荐

  1. 从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具

    从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具 文章目录 1. 神经网络数据预处理 1.1 常规预测情景 1.2 文本预测场景 2.全连接神经网络 ...

  2. 多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)

    多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU 1.CNN模型 1.1 代码 1.2 运行结果 2.RNN模型 2 ...

  3. 机器学习(Machine Learning)深度学习(Deep Learning)资料汇总

    本文来源:https://github.com/ty4z2008/Qix/blob/master/dl.md 机器学习(Machine Learning)&深度学习(Deep Learning ...

  4. 转【重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

    原文出处:http://blog.csdn.net/zhongwen7710/article/details/45331915 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决 ...

  5. 深度学习——神经网络之DNN全连接神经网络、BP算法原理

    深度学习--神经网络之DNN全连接神经网络.BP算法原理 深度学习--神经网络之DNN全连接神经网络.BP算法原理 1.啥是人工神经网络 2.神经网络的应用 3.神经网络的组成 3.1.神经元 3.2 ...

  6. 深度学习cnn人脸检测_用于对象检测的深度学习方法:解释了R-CNN

    深度学习cnn人脸检测 介绍 (Introduction) CNN's have been extensively used to classify images. But to detect an ...

  7. 深度学习目标检测网络汇总对比,挺好的

    深度学习目标检测网络汇总对比 本文总阅读量次 欢迎star我的博客 2019-01-03 参考 :https://medium.com/@jonathan_hui/object-detection-s ...

  8. 【信号识别】基于matlab深度学习CNN信号调制分类【含Matlab源码 2066期】

    ⛄一.深度学习CNN信号调制分类概述 1 背景介绍 在通信信号处理领域, 特别是在非协作通信信号盲解调研究领域, 每时隙突发信号的调制方式不同, 必须进行信号的调制方式自动识别.信号的调制方式识别效果 ...

  9. 神经网络及深度学习CNN

    神经网络及深度学习CNN 一.传统人工神经网络(ANN) 二.CNN 1.CNN层次 1.1 输入层 1.2 卷积层 1.3 激励层 1.4 池化层 1.4 全连接层 1.5 归一化层 2.CNN的应 ...

  10. 深度学习相关阅读论文汇总(持续更新)

    深度学习相关阅读论文汇总(持续更新) 1 Long-Term Temporal Convolutions(LTC)for Action Recognition IEEE Transactions on ...

最新文章

  1. wp7 关于真机调试,部署注意事项
  2. FD.io/VPP — VPP Agent — 架构设计
  3. 32. Leetcode 141. 环形链表 (链表-双指针-环形链表)
  4. Kafka设计解析(五): Kafka Consumer设计解析
  5. 道路交通安全违法行为图像取证技术规范_海康移动取证方案中的设备介绍
  6. P5675-[GZOI2017]取石子游戏【博弈论,dp】
  7. 使用Mockito在Java中进行模拟入门
  8. 鸿蒙系统空城计,鸿蒙系统到底什么时候用在手机上?
  9. COOKIESESSION 入门
  10. 洛谷——P1075 [NOIP2012 普及组] 质因数分解
  11. 面色红润从滋补五脏开始
  12. Windows批量装机平台搭建(三)之MDT配置
  13. rtf文件怎么打开_什么是RTF文件(以及如何打开一个文件)?
  14. cmd脚本(WIN10下)
  15. Java_08 快速入门 Java常用类库
  16. C++的简单数学运算
  17. HTML5第十课时,会员卡号返利练习
  18. 宇信易诚 两季度亏损与高管出走的背后
  19. 如何做好机器人方向的毕业设计?(毕业论文基本流程+机器人课程学习计划)
  20. 微信公众号开发API

热门文章

  1. MySQL · 引擎介绍 · Sphinx源码剖析(二)
  2. ajax修改属性后如何遍历,Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)...
  3. td外边加div为啥不隐藏_那些不常见,但却非常实用的 css 属性
  4. mysql配置主从数据库_mysql配置主从数据库
  5. TurboMail邮件服务器腾云驾务云化邮件办公
  6. sql 获取一个周的周一和周日
  7. org.springframework.web.client.RestClientException: Could not extract response
  8. 将一个字段的多个记录值合在一行
  9. 微软Windows7将捆绑杀软 众厂商面临生死抉择
  10. Formview的自动绑定