在此存储库中,我们在规范的Penn Treebank(PTB)语料库上训练三种语言模型。该语料库分别分为大约929k和73k令牌的训练和验证集。我们实施了(1)具有线性插值的传统Trigram模型,(2)(Bengio等人,2003年)所述的神经概率语言模型,以及(3)具有长短记忆(LSTM)单元(Zaremba等人(Zaremba等人)(Zaremba等人)(Zaremba等人,2015年,2015年)。我们还对LSTM模型进行了一系列修改,并在具有多层模型的验证集上实现了92.9的困惑。
在斯坦福情感树库情感分类任务中,我们获得了电影评论中的一系列句子。每个句子都被标记为正,负或中立。我们遵循(Kim,2014年)去除中性示例,并将任务制定为正面和负面句子之间的二进制决策。
对于每个模型变体,我们正式化预测
对于测试案例
作为

在哪里
是一个激活函数,
是我们博学的体重,
是我们输入的功能向量
, 和
是偏见向量。请注意,在此问题集中, 

所有人
由于我们仅考虑SST-2数据集中的正面和负面情感输入。我们使用Pytorch进行所有模型实现,所有模型均使用10个时代的训练,每个模型使用尺寸10,学习率为1E-4,ADAM Optimizer和负数日志可能性损失函数。该设置的唯一例外是多项式幼稚的贝叶斯,该贝叶斯与学习参数适合一个时代
= 1.0。
让

成为训练案例的功能计数矢量
带有分类标签
。
是一组功能,
表示功能的出现数量
在培训案例中
。定义计数向量
作为
=
+
,用于平滑参数
。我们跟随Wang和Manning进行统计;
= 
。关于等式(1),
是正面和负面示例数量之间的对数计数比率,
= log(
/
) 在哪里
和
是培训数据集中正面和负面培训案例的数量,
是输入的出现数量
, 和
是映射的二进制指标函数
如果大于0和0,则为1。我们仅将摘要视为特征。
我们学习体重和偏见矩阵
和
这样的优化

在哪里
是
- 代表每个培训样本的词袋的数量矢量。在我们的实施中,我们代表
和
带有单个完全连接的层,该层直接映射到Sigmoid激活下的两个单位输出层。
在cbow架构中,每个单词在句子长度的句子输入中
被映射到
- 维嵌入向量。平均所有单词的嵌入向量以产生单个特征向量
这代表了整个输入。尤其,

在哪里

和

, 和
=
所有人
分别是句子嵌入和单词嵌入的维度。这个编码
然后将其传递到一个完全连接的层中,该图层直接映射到SoftMax激活下代表输出类的两个输出单元。
让

成为
- 维单词向量对应于
- 输入句子中的单词。将所有句子填充后,输入批次达到相同的长度
, 在哪里
是批处理中所有句子的最大长度句子,然后将每个句子表示为

在哪里
是串联操作。让
代表单词的串联
,,,,
,...,,
。在卷积神经网络中,我们采用卷积操作

带过滤器尺寸
为了产生特征,其中滤波器大小有效地是单词的窗口大小要卷积。让
成为此操作生成的功能。然后

在哪里
是一个偏见和
是整流的线性单元(relu)函数。施加滤波器长度尺寸
在我们输入句子中所有可能的单词的窗口中,会产生特征图

在我们的实施中,我们在过滤大小上进行卷积

然后加入每个功能
进入一个向量。我们将最高列出的合并操作(Collobert等,2011)应用于该串联特征图的矢量,表示为
,得到
= max(
)。然后,我们将辍学
= 0.50至
作为针对过度拟合的正则化度量,将其传递到完全连接的层中,然后在输出上计算软态。
最后,我们还对CNN体系结构进行了一系列修改,以对SST-2数据集进行略有性能改进。在此实施中,我们利用了斯坦福大学的手套预训练的载体(Pennington等,2014),我们进行了这些更改:
之后(Kim,2014年),我们在卷积和最大通知步骤中使用两个单词嵌入式表 - 一个是非静态的,或在培训期间作为模型中的常规模块进行更新,而在整个训练运行中将其保存为静态。在模型的正向传球中,这两组嵌入沿“通道”维度将其连接在一起,然后作为单个张量传递到三个卷积层中,其中两个值中的300个维度为两个值。
在产生代表三个卷积内核的最大功能的组合特征向量之后,我们只需将输入的非填充单词计数添加为单个额外的维度,从而产生301维张量,然后将其映射到2个单位输出中。从工程的角度来看,我们发现这种情况略有提高了SST-2数据集的性能,其中平均而言,正面句子比负句子稍长 - 19.41单词与19.17。目前尚不清楚这是否会在不同的数据集中存在,还是特定于SST-2。 (尽管也不完全清楚,这不会,并且似乎暗示了一个有趣的语料库问题 - “积极”的句子通常比“消极”的句子更长吗?)
除了上述两个更改外,我们还对CNN体系结构进行了广泛的其他修改,包括:
通过将Maxpooled CNN向量与平均CBOW矢量串联到最终输出单元之前,将CBOW模型与CNN体系结构相结合。
用Googlenews嵌入代替了手套的嵌入(Mikolov等,2013)。这个想法来自这样一个想法,即PTB可能会有一些有用的领域特异性,因为这些嵌入者接受了新闻文章的培训。
如(Kim,2014年)在CNN体系结构的背景下实现了“多通道”嵌入。预先训练的权重矩阵不仅使用单个嵌入式层,还将其复制为两个单独的嵌入层:一个在训练过程中进行更新的层,另一个是从优化器中省略的,并允许在训练过程中保持不变。在正向通行字期间,将索引分别映射到每个表格,然后将两个张量沿嵌入尺寸加入,以产生每个令牌的单个600次嵌入张量。
尝试了不同的批处理方法。我们尝试将语料库建模为训练期间的单个,不间断的序列(例如使用TorchText的BPTTIterator ),而是尝试将语料库分配到单个句子中,然后为每个句子中的每个句子生成单独的训练案例。例如,对于“我喜欢黑猫”的句子,我们产生了五个上下文:
一个。 “ <SOS> i”
b。 “ <SOS>我喜欢”
c。 “ <SOS>我喜欢黑色”
d。 “ <SOS>我喜欢黑猫”
e。 “ <SOS>我喜欢黑猫<EOS> ”
并且对模型进行了训练,以预测第一个t -1代币的时间步骤t的每个上下文中的最后一个令牌。我们使用pytorch的pack_padded_sequence函数来处理LSTM的可变长度输入。实际上,这很有吸引力,因为它使在单词之前的上下文中更容易地设计更广泛的功能 - 例如,在t -1上下文中既可以在t -1上下文中实现双向LSTM,据我们所知,在原始训练方面是由BPTTIterator强制执行的,这将是很难或不可能的。不过,我们意识到这是在尝试这件事之后,它永远不会与BPTTIterator对语料库的持续表示,因为语料库中的句子是按文章分组的,因此也将其分组为主题 /概念层面。这意味着该模型可以在句子边界上学习有用的信息,以了解接下来哪种类型的单词。
尝试不同的正则化策略,例如改变辍学百分比,将辍学术应用于初始嵌入层等。
这些更改在初始单层1000单位LSTM上没有改善。我们表现最好的模型是第3.4节中描述的模型。表1描述了我们第3节模型中的每个模型的困惑。
| 模型 | 困惑 |
|---|---|
| 线性插值的曲子 | 178.03 |
| 神经语言模型(5克) | 162.2 |
| 1层LSTM | 101.5 |
| 3层LSTM +连接 | 92.9 |
尽管具有连接的多层LSTM击败了简单的LSTM基线,但我们无法使用相同的语料库和相似的体系结构复制(Zaremba等,2015)所描述的78.4验证困惑性能。也就是说,当使用论文中描述的配置(2层,650和1500个单位架构)时,即使以5-6个时代的范围内,我们的模型都过度贴合,即使以与论文中描述的方法相匹配的方式进行辍学。相反,(Zaremba等,2015)提到了多达55个时期的训练。)
我们训练了四类模型 - 一种传统的Trigram模型,具有线性插值,并通过期望最大化学习了权重。一个简单的神经网络语言模型以下(Bengio等,2003);单层LSTM基线;以及该模型的扩展,该模型使用三层不同尺寸的层,跳过前两层的连接以及(Zaremba等人,2015年)所述的正则化。最终模型的困惑度为92.9,而(Zaremba等,2015)使用大致等效的超参数报道了78.4和82.7。
Y. Bengio,R。Ducharme,P。Vincent,C。Jauvin。 “神经概率语言模型。”机器学习研究杂志3,第1137–1155页。 2003。
D. Jurafsky。 “语言建模:N-Grams简介。”演讲。斯坦福大学CS124。 2012。
Y. Kim。 “用于句子分类的卷积神经网络。” 2014年自然语言处理经验方法会议论文集(EMNLP),第1746-1751页。 2014。
T. Mikolov,K。Chen,G。Corrado,J。Dean。 “对向量空间中单词表示的有效估计。” ARXIV预印型ARXIV:1301.3781。 2013。
J. Pennington,R。Socher,C。Manning。 “手套:单词表示的全球向量。” 2014年自然语言处理经验方法会议论文集(EMNLP),第1532-1543页。 2014。
W. Zaremba,I。Sutskever,O。Vinyals。 2015年。“经常性神经网络正规化”。 ARXIV预印型ARXIV:1409.2329。 2015。