放牧代码和思想
专注自然语言处理、机器学习算法
    时间有限,只有GitHub上的issue能及时处理,大约每周末一次。另外,不要叫我楼主,谢谢。

CS224n研究热点7 迈向更好的语言模型

目录

hankcs.com 2017-06-23 上午11.29.06.png

我们已经知道一些手段来改进语言模型,比如:

  1. 更好的输入:词→词根→字符

  2. 更好的正则化/预处理

  3. 这些手段综合起来得到了更好的语言模型

更好的输入

文本的多种颗粒度:

hankcs.com 2017-06-23 下午2.36.49.png

更细的颗粒度相当于减小了词表,让模型更容易做对选择。试验表明的确降低了error:

hankcs.com 2017-06-23 下午2.39.19.png

更好的正则化和预处理

正则化就不说了。

预处理指的是,随机地将句子中的一些单词替换成另外的单词(比如把一个地名替换为另一个),或者使用BiGram统计信息来生成替换。

这样会得到一个更加平滑的分布,高频词将一些出场机会匀给了低频词。

hankcs.com 2017-06-23 下午2.51.03.png

对错误率的降低效果如下(左边是正则化,右边是预处理):

hankcs.com 2017-06-23 下午2.53.41.png

更好的模型?

hankcs.com 2017-06-23 下午3.09.10.png

Noise Contrastive Estimation(NCE)

与其用昂贵的交叉熵损失函数,不如用一种叫NCE损失的近似,理论证明当k值足够大时,两者梯度是接近的。

更大的LSTM单元数

LSTM单元数增加到1024,k值越大越好,直到吃满GPU显存。

用上了这些种种改进之后,总算是拿到如下成绩:

hankcs.com 2017-06-23 下午3.08.50.png

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n研究热点7 迈向更好的语言模型

分享到:更多 ()

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机