• 关于深度学习的小知识点


      转载请注明出处:http://www.cnblogs.com/Peyton-Li/

      Q:CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?

      以上几个不相关问题的相关性在于,都存在局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。

      CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。

      局部连接使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积;池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。

      卷积神经网络有三个结构上的特性:局部连接,权重共享以及空间或时间上的次采样。这些特性使得卷积神经网络具有一定程度上的平移、缩放和扭曲不变性。

      

      

      Q:如何防止过拟合问题?

      1、 从简单模型开始尝试;

      2、 进行数据清洗(去除掉噪声比较大的数据);

      3、 数据集扩增(利用已有资料人工生成一些相似数据);

      4、 加正则项;

      5、 做交叉验证;

      6、 如果是深度学习,可以使用dropout层;

      7、提前终止(当验证集上的效果变差的时候);

      

      Q:如何解决欠拟合:

      1、 添加其他特征项,有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。

      2、 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。

      3、 减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

      

      Q:什么造成梯度消失?

      梯度消失会造成权值更新缓慢,模型训练难度增加。造成梯度消失的一个原因是,许多激活函数将输出值挤压在很小的区间内,在激活函数两端较大范围的定义域内梯度为0。造成学习停止。

      减轻梯度消失问题的一个方法是使用线性激活函数(比如rectifier函数,即ReLu激活函数)或近似线性函数(比如softplus函数)。这样,激活函数的导数为1,误差可以很好地传播,训练速度得到了很大的提高。

      

      卷积神经网络的一些准则:

      1、 避免表达瓶颈,特别是在网络靠前的地方。信息流前向传播过程中显然不能经过高度压缩的层,即表达瓶颈。从input到output,feature map的宽和高基本都会逐渐变小。比如一开始就来个kernel=7,stride=5,这样显然不合适。另外输出的维度channel,一般来说会逐渐增多(每层的num_output),否则网络会很难训练。(特征维度并不代表信息的多少,只是作为一种估计的手段)

      2、 高维特征更易处理。高维特征更易区分,会加快训练。

      3、 可以在低维嵌入上进行空间汇聚而无需担心丢失很多信息。比如在进行3*3卷积之前,可以对输入先进行降维而不会产生严重的后果。假设信息可以被简单压缩,那么训练就会加快。

      这些并不能直接用来提高网络质量,而仅用来在大环境下指导。

      大尺寸的卷积核可以带来更大的感受野,但也意味着更多的参数,比如5*5卷积核的参数是3*3卷积核的25/9=2.78倍。为此,可以用2个连续的3*3卷积层(stride=1)组成的小网络来代替单个5*5卷积层(保持感受野范围的同时又减少参数量)

  • 相关阅读:
    js学习笔记之标准库
    js学习笔记
    html5学习
    C#调用win32 api程序实例
    javascript计算字符串中出现最多的字符和个数
    javascript中的promise和deferred:实践(二)
    jquery animate 详解
    jquery animate stop函数解析
    javascript继承的写法
    css3 改变滚动条样式
  • 原文地址:https://www.cnblogs.com/Peyton-Li/p/7538811.html
Copyright © 2020-2023  润新知