首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何学习语言模型?

如何学习语言模型?
EN

Stack Overflow用户
提问于 2017-11-15 00:05:14
回答 1查看 86关注 0票数 0
  1. 我正在尝试使用基于Penn Treebank (PTB)语料库的LSTM来训练语言模型。 我在想,我应该对语料库中的每一个双字母进行简单的训练,这样它就可以预测出下一个单词,但这样它就不能基于多个前面的words.So来预测下一个单词了--训练语言模型到底是什么?
  2. 在我当前的实现中,我有批处理size=20,词汇表大小为10000,因此我有20个由10k项组成的矩阵(参数?)而损失是通过与10k个条目的20个地面真相矩阵的比较计算出来的,其中只有实际下一个词的索引为1,而其他条目为零。这是一个正确的实现吗?我有大约2的困惑,它几乎不会在迭代中改变,这肯定不是在通常的范围内,比如大约100。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 02:27:35

那么,培训语言模型到底是什么呢?

我觉得你不需要训练语料库里的每一个字。只需使用一个序列序列模型,当你预测下一个词,给定先前的单词,你只需选择一个概率最高的。

因此,我有20个由10k个条目组成的矩阵(参数?)

是的,每一步解码。

这是一个正确的实现吗?我有大约2的困惑,它几乎不会在迭代中改变,这肯定不是在通常的范围内,比如大约100。

您可以首先阅读一些开源代码作为参考。例如:word-rnn-tensorflowchar-rnn-tensorflow。-log(1/10000)是一个很大的困惑,约为每字9(这意味着该模型完全不经过训练,完全随机选择单词,因为调整后的模型会降低复杂度,所以2是合理的)。我认为你的陈述中有100句可能意味着每句话的复杂性。

例如,如果使用损失计算复杂性,则如果将average_across_timestepsaverage_across_batch都设置为True为默认值,则结果将小于10;但如果将average_across_timesteps设置为False,且序列的平均长度约为10,则大约为100。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47297321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档