NLP经典论文:NNLM 笔记

  • 论文
  • 介绍
  • 优点
  • 缺点
  • 模型结构
  • 整体模型
  • 输入
  • 输出
  • 整体流程
  • 输入层
  • 输入
  • 输出
  • 隐藏层
  • 输入
  • 输出
  • 输出层
  • 输入
  • 输出
  • 过程
  • softmax结构
  • 优化目标
  • 交叉熵cross entropy loss
  • NNLM模型的优化目标
  • 示例
  • 文章部分翻译
  • Abstract
  • 相关的笔记
  • 相关代码
  • pytorch
  • tensorflow
  • keras
  • pytorch API:


论文


介绍

2003/02发表的文章,提出了神经网路语言模型。该模型使用前 NLP中的句子级任务 nlp经典语句_NLP中的句子级任务 个词来预测第 NLP中的句子级任务 nlp经典语句_自然语言处理_02 个词,计算概率 NLP中的句子级任务 nlp经典语句_自然语言处理_03。首先将前 NLP中的句子级任务 nlp经典语句_NLP中的句子级任务 个词用 one-hot 表示,然后使用投影矩阵降维,再将降维后的 NLP中的句子级任务 nlp经典语句_NLP中的句子级任务

优点

由于NNLM模型使用了低维紧凑的词向量对上文进行表示,这解决了词袋模型带来的数据稀疏、语义鸿沟等问题。

缺点

模型在神经网络层参数量巨大。

模型结构

NLP中的句子级任务 nlp经典语句_人工智能_06

整体模型

输入

NLP中的句子级任务 nlp经典语句_网络层_07为输入长度为n-1的一串文本,文本通过one-hot表示,NLP中的句子级任务 nlp经典语句_自然语言处理_08,V为字典大小,包含词的总数。

输出

NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_09NLP中的句子级任务 nlp经典语句_nlp_10为预测词,为NLP中的句子级任务 nlp经典语句_nlp_11所对应的词,其中

NLP中的句子级任务 nlp经典语句_自然语言处理_12

意思就是给定n-1个输入词(NLP中的句子级任务 nlp经典语句_网络层_07),预测第n个词NLP中的句子级任务 nlp经典语句_人工智能_14时,NLP中的句子级任务 nlp经典语句_人工智能_15中概率最大的那个NLP中的句子级任务 nlp经典语句_自然语言处理_16所对应的那个词NLP中的句子级任务 nlp经典语句_网络层_17,就是预测输出的词。

整体流程

NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_18

输入层

NLP中的句子级任务 nlp经典语句_nlp_19

输入

NLP中的句子级任务 nlp经典语句_网络层_07为输入长度为n-1的一串文本,文本通过one-hot表示,NLP中的句子级任务 nlp经典语句_自然语言处理_08,V为字典大小,包含词的总数。

输出

NLP中的句子级任务 nlp经典语句_nlp_22

其中,NLP中的句子级任务 nlp经典语句_自然语言处理_23为拼接操作,NLP中的句子级任务 nlp经典语句_nlp_24NLP中的句子级任务 nlp经典语句_自然语言处理_25NLP中的句子级任务 nlp经典语句_网络层_26为变换矩阵,投影矩阵,NLP中的句子级任务 nlp经典语句_nlp_27,把one-hot表示的稀疏向量从稀疏的V维空间投影到稠密的m维空间。然后再将NLP中的句子级任务 nlp经典语句_人工智能_28拼接起来,形成上下文信息,传递给下一层。

隐藏层

NLP中的句子级任务 nlp经典语句_人工智能_29

输入

NLP中的句子级任务 nlp经典语句_nlp_22

输出

NLP中的句子级任务 nlp经典语句_nlp_31,h为隐藏层神经元个数。

这层提取输入的特征,传给下一层。

输出层

NLP中的句子级任务 nlp经典语句_人工智能_32

输入

  1. 输入层与输出层连接时:NLP中的句子级任务 nlp经典语句_nlp_33NLP中的句子级任务 nlp经典语句_网络层_34
  2. 输入层与输出层不连接时:NLP中的句子级任务 nlp经典语句_网络层_35

输出

NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_36

过程

  1. 输入层与输出层连接时:
    NLP中的句子级任务 nlp经典语句_自然语言处理_37
    其中NLP中的句子级任务 nlp经典语句_nlp_38,通常NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_39NLP中的句子级任务 nlp经典语句_人工智能_40
  2. 输入层与输出层不连接时:
    NLP中的句子级任务 nlp经典语句_网络层_41

NLP中的句子级任务 nlp经典语句_网络层_42可以理解为融合特征之后,对每一个字典里面的词进行预测值打分,打分的值并不为概率,NLP中的句子级任务 nlp经典语句_网络层_42经过softmax,才是最后的预测概率NLP中的句子级任务 nlp经典语句_网络层_44

NLP中的句子级任务 nlp经典语句_nlp_45

softmax结构

NLP中的句子级任务 nlp经典语句_nlp_46


本文的分值y为图中的z,本文的概率p为图中的y。

NLP中的句子级任务 nlp经典语句_人工智能_15中概率最大的那个NLP中的句子级任务 nlp经典语句_自然语言处理_16所对应的那个词NLP中的句子级任务 nlp经典语句_网络层_17,就是预测输出的词。

优化目标

交叉熵cross entropy loss

这里使用的是交叉熵cross entropy loss
NLP中的句子级任务 nlp经典语句_人工智能_50
其中NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_51为x的取值范围,多分类任务中代表类别。
这里有2个模型,一个x的真实模型,一个是构造的模型,我们希望构造的模型尽量接近真实模型。交叉熵越小,表示两个概率分布越靠近。p(x)为x的真实概率分布,q(x)为构造模型的概率分布。

NNLM模型的优化目标

NLP中的句子级任务 nlp经典语句_网络层_52
待优化的参数为:NLP中的句子级任务 nlp经典语句_nlp_53

对于一个输入样本NLP中的句子级任务 nlp经典语句_网络层_07来说,真实概率为one-hot编码值,模型的预测概率为NLP中的句子级任务 nlp经典语句_人工智能_55

示例

原文为:我/爱/中国/共产党,假设字典大小V=4

NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_09
NLP中的句子级任务 nlp经典语句_网络层_07为:我/爱/中国
预测词NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_36为:共产党


one-hot编码


[1,0,0,0]


[0,1,0,0]

中国

[0,0,1,0]

共产党

[0,0,0,1]

输入到NNLM模型中,最后得到的概率NLP中的句子级任务 nlp经典语句_网络层_59

NLP中的句子级任务 nlp经典语句_网络层_60

概率值

NLP中的句子级任务 nlp经典语句_自然语言处理_61

0.1

NLP中的句子级任务 nlp经典语句_自然语言处理_62

0.1

NLP中的句子级任务 nlp经典语句_网络层_63

0.2

NLP中的句子级任务 nlp经典语句_网络层_64

0.6

NLP中的句子级任务 nlp经典语句_NLP中的句子级任务_65的概率最大,预测的词为:共产党

文章部分翻译

Abstract

相关的笔记

相关代码

pytorch

tensorflow

keras

pytorch API: