zoukankan      html  css  js  c++  java
  • 深度学习中网络设计的几点经验

    1.CNN网络中的池化方式选择

      池化方式有两种:1)最大池化;2)平均池化

      在实验中我发现,最大池化要比平均池化慢很多,效果也不如平均池化好。所以,池化的方式我们尽量选择平均池化。

    2.CNN卷积核的设计

      卷积的大小,遵守奇数设计原则,如【1,3,5,7】

    3.CNN和RNN网络输出到全连接层数据shape的确定

      两个网络最终都要接一个全连接,你一定要保证输入全连接网络的shape是二维的,即(?,网络最终抽取特征的维数),“?”表示是batch的大小,后面是维数。

      这样无论你接下来如何处理,如两个网络的特征拼接,还是能够保持相同的shape,那么直接输入到全连接层就可以了。

     4.RNN网络中,深度和方向的考虑

      input的方向性 - 单向或双向
      深度 - 单层或多层
      类型– RNN,LSTM或GRU

      目前的RNN网络,最多也就是两层。

    5.embeddings加入位置信息

      数据表示时,对于字符、单词、句子信息

    6.加入注意力机制

      虽然RNN网络能够捕捉长时信息,但毕竟能力有限,在对待全局时序信息时需要我们引入注意力机制,可以显著提高模型的准确率。无论你的模型效果如何,引入注意力是一个不错的选择。

      我们摒弃之前的固有思维,不再依赖于递归神经网络和卷积神经网络,转而使用一种更为简单的网络架构来做序列变换,即注意力机制的序列变换器(Transformer)。

      在大部分任务中,注意力机制通常和递归神经网络联合起来使用。

      在这种情况下,远距离计算序列中的依赖性关系就会变得非常困难。在我们提出的转换器结构中,我们对序列中的位置进行注意力加权,然后取均值,因此运算量可以被缩减为固定数。不过这种操作的显著弊端在于加权求均值的操作,会在一定程度上牺牲运算的精度,需要级联多级注意力机制进行精度补偿。

      所谓 Self Attention,其实就是 Attention(X,X,X),X 就是前面说的输入序列。也就是说,在序列内部做 Attention,寻找序列内部的联系。 

    7.Transformer网络

      完全抛弃了CNN, RNN,全部使用注意力来实现。值得注意的是,Feed Forward网络用到了1维卷积,增加卷积核的数量,对模型的提高帮助很大。这点需要注意。

     8.NLP任务,去停用词对训练模型的影响

      文本中一般都会有噪声,我们需要去停用词,目前来看停用词表内容有大有小,到底选取哪一个来作为停用词表,需要根据实际训练的情况来考虑。目前我正在尝试,给出一个结论。

      优秀的预处理确实可以提高模型的精度,停用词表越大,去掉的停用词越多,留下的信息就越有用,模型表现的越好。提高停用词表的质量,可以整体提升模型的2到3个点

    9.向网络中引入残差

      Transformer网络中,用到了残差计算,也是提高优化性能的方式之一

    10.Layer Normalization

      对每一层做normalization,可以很快滴提高网络的收敛速度。transformer网络本身就没有用LSTM,在加上使用了normalization,让模型训练变得非常快,往往在5个epoch就可以达到比较好的效果

    11. BERT和ELMO的比较

      在特征抽取器选择方面,elmo选择了LSTM;bert选择了Transform。很多研究已经证明,transform提取特征的能力要远远强于LSTM.

      elmo这种使用双向拼接融合特征的能力可能比bert一体化的特征融合方案要弱

    12.训练数据集的长度截取标准

      由于模型的限定,输入到模型的数据长度要求是定长的,输入长度的选取也是要讲究的,我们要观察数据长度的分布,找出一个合理的长度。

      长度过长,那么较短的样本就会引入过多的padding符号。但这一点可以弥补,transformer网络能够将padding进行mask,这些信息不会有干扰。

      长度过短,有些信息就会丢失,对模型来说缺乏有更为表征的样本。

      这样看来,选取的长度稍微长一点,效果会好。但这样也会更耗时些。

      这里需要注意的一点,padding的方式有在句前和句后做padding,个人认为将padding放在句前效果会好一些,就是所谓的“冷启动”

    13.各类模型优劣总结

      

    待续

  • 相关阅读:
    django页面分类和继承
    django前端从数据库获取请求参数
    pycharm配置django工程
    django 应用各个py文件代码
    CF. 1428G2. Lucky Numbers(背包DP 二进制优化 贪心)
    HDU. 6566. The Hanged Man(树形背包DP DFS序 重链剖分)
    小米邀请赛 决赛. B. Rikka with Maximum Segment Sum(分治 决策单调性)
    区间树 学习笔记
    CF GYM. 102861M. Machine Gun(主席树)
    2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) (B, D, G, H)
  • 原文地址:https://www.cnblogs.com/demo-deng/p/10188771.html
Copyright © 2011-2022 走看看