NLP经典论文:NNLM 笔记
- 论文
- 介绍
- 优点
- 缺点
- 模型结构
- 整体模型
- 输入
- 输出
- 整体流程
- 输入层
- 输入
- 输出
- 隐藏层
- 输入
- 输出
- 输出层
- 输入
- 输出
- 过程
- softmax结构
- 优化目标
- 交叉熵cross entropy loss
- NNLM模型的优化目标
- 示例
- 文章部分翻译
- Abstract
- 相关的笔记
- 相关代码
- pytorch
- tensorflow
- keras
- pytorch API:
论文
介绍
2003/02发表的文章,提出了神经网路语言模型。该模型使用前 个词来预测第 个词,计算概率 。首先将前 个词用 one-hot 表示,然后使用投影矩阵降维,再将降维后的
优点
由于NNLM模型使用了低维紧凑的词向量对上文进行表示,这解决了词袋模型带来的数据稀疏、语义鸿沟等问题。
缺点
模型在神经网络层参数量巨大。
模型结构
整体模型
输入
为输入长度为n-1的一串文本,文本通过one-hot表示,,V为字典大小,包含词的总数。
输出
,为预测词,为所对应的词,其中
意思就是给定n-1个输入词(),预测第n个词时,中概率最大的那个所对应的那个词,就是预测输出的词。
整体流程
输入层
输入
为输入长度为n-1的一串文本,文本通过one-hot表示,,V为字典大小,包含词的总数。
输出
其中,为拼接操作,,,为变换矩阵,投影矩阵,,把one-hot表示的稀疏向量从稀疏的V维空间投影到稠密的m维空间。然后再将拼接起来,形成上下文信息,传递给下一层。
隐藏层
输入
输出
,h为隐藏层神经元个数。
这层提取输入的特征,传给下一层。
输出层
输入
- 输入层与输出层连接时:,
- 输入层与输出层不连接时:
输出
过程
- 输入层与输出层连接时:
其中,通常为 - 输入层与输出层不连接时:
可以理解为融合特征之后,对每一个字典里面的词进行预测值打分,打分的值并不为概率,经过softmax,才是最后的预测概率
softmax结构
本文的分值y为图中的z,本文的概率p为图中的y。
中概率最大的那个所对应的那个词,就是预测输出的词。
优化目标
交叉熵cross entropy loss
这里使用的是交叉熵cross entropy loss
其中为x的取值范围,多分类任务中代表类别。
这里有2个模型,一个x的真实模型,一个是构造的模型,我们希望构造的模型尽量接近真实模型。交叉熵越小,表示两个概率分布越靠近。p(x)为x的真实概率分布,q(x)为构造模型的概率分布。
NNLM模型的优化目标
待优化的参数为:
对于一个输入样本来说,真实概率为one-hot编码值,模型的预测概率为
示例
原文为:我/爱/中国/共产党,假设字典大小V=4
为:我/爱/中国
预测词为:共产党
词 | one-hot编码 |
我 | [1,0,0,0] |
爱 | [0,1,0,0] |
中国 | [0,0,1,0] |
共产党 | [0,0,0,1] |
输入到NNLM模型中,最后得到的概率
概率值 | |
0.1 | |
0.1 | |
0.2 | |
0.6 |
的概率最大,预测的词为:共产党
文章部分翻译
Abstract
相关的笔记
相关代码
pytorch
tensorflow
keras
pytorch API: