码迷,mamicode.com
首页 > 其他好文 > 详细

(<BEG> 与 <EOF>),它们会当作预测第一个单词。

时间:2020-07-03 11:00:54      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:训练   embed   nbsp   没有   内存   不同   需要   索引   最可   

以下是踩过的坑一览??:

  • 输入和输出的编码需要分开 (使用不同的向量)
  • 输入的编码最好不固定 (跟随训练调整),输出的编码需要固定 (否则模型会作弊让所有单词的输出编码相同)
  • 输出的编码只能由 0 和 1 组成,不能直接使用浮点数组成的向量 (模型无法调整所有输出到精确的向量,只能调整到方向大致相同的值然后用 Sigmoid 处理)
  • 输出的编码向量长度大约 50 以上即可避免 13000 个单词转换到 0 和 1 以后的编码冲突,向量长度越大效果越好但需要更多内存和训练时间
  • 每个句子需要添加表示开头和结尾的符号 (<BEG> 与 <EOF>),它们会当作预测第一个单词和最后一个单词的输入,比使用 0 效果要好一些
  • 输出中表示开头和结尾的向量不参与损失的计算 (预测它们没有意义)
  • 根据预测输出的向量查找对应的单词可以计算欧几里得距离,找出距离最接近的单词
  • 参数调整器可以使用 Adam,在这个例子中比 Adadelta 快一些

这个例子最大的特点是输出的编码使用了 Embedding 的变种,使得编码近似于 binary。传统的做法是使用 onehot + softmax,但随着单词数量增多需要的处理时间和内存大小会暴增,我目前的机器是训练不过来的。输出编码使用 Embedding 变种的好处还有可以同时找出接近的单词,但计算欧几里得距离的效率会比 onehot + softmax 直接得出最可能单词索引的时间差很多。

(<BEG> 与 <EOF>),它们会当作预测第一个单词。

标签:训练   embed   nbsp   没有   内存   不同   需要   索引   最可   

原文地址:https://www.cnblogs.com/byjsokl/p/13228686.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!