热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论文阅读:《APrimeronNeuralNetworkModelsforNaturalLanguageProcessing》(一)

https:blog.csdn.netu011239443articledetails80055046论文地址:http:u.cs.biu.ac.il~yogonnl

https://blog.csdn.net/u011239443/article/details/80055046
论文地址:http://u.cs.biu.ac.il/~yogo/nnlp.pdf

本论文很长,设计了许多神经网络与深度学习的基础知识。本文,我们将只针对和自然语言处理领域相关的章节进行深入的研读。

摘要

在过去的几年中,神经网络作为强大的机器学习模型重新出现,在图像识别和语音处理等领域产生了最先进的结果。最近,神经网络模型也开始应用到文本自然语言信号,再次得到非常好的结果。本教程从自然语言处理研究的角度调查神经网络模型,试图使自然语言研究者跟上神经网络技术的速度。本教程涵盖了自然语言任务、前馈网络、卷积网络、递归网络,以及自动梯度计算的计算图抽象。

介绍(略)

神经网络介绍(略)

特征表示

在更深入地讨论网络结构之前,重要的是要注意特征是如何表示的。现在,我们可以考虑前馈神经网络作为函数NN(x),其输入DIN维向量X并产生DUT维输出向量。该函数通常用作分类器,在一个或多个DOUT类中分配输入X。该函数可以是复杂的,并且几乎总是非线性的。该函数的共同结构将在第4节中讨论。这里,我们关注输入X。当处理自然语言时,输入X编码诸如单词、词性标记或其他语言信息的特征。当从稀疏输入线性模型到基于神经网络的模型移动时,最大的进步可能是不再将每个特征表示为唯一的维度(所谓的 one-hot 表示),而是将它们表示为密集向量。也就是说,每个核心特征被嵌入到一个D维空间中,并表示为该空间中的一个向量,然后可以像函数“NN”的其他参数一样训练嵌入(每个核心特征的向量表示)。图1显示了两种用于特征表示的方法。

稀疏与密集的特征表示。信息的两个编码:当前单词是“狗”;前一个单词是“the”;以前的POS标记是“DET”。(a)稀疏特征向量。每个维度代表一个特征。特征组合接收它们自己的维度。特征值是二进制的。维数很高。(b)基于密集、嵌入的特征向量。每个核心特征被表示为向量。每个特征对应于多个输入向量条目。没有显式编码的特征组合。维数很低。向量映射的特征来自嵌入表。

特征嵌入(每个特征的向量项的值)被视为需要与网络的其他组件一起训练的模型参数。稍后将讨论训练(或获得)特征嵌入的方法。现在,考虑给定的特征嵌入。

因此,基于前馈神经网络的NLP分类系统的一般结构是:

1.提取一组核心语言特征“F1,.…FK“,这与预测输出类有关。
2.对于感兴趣的每个特征FI,检索对应的向量V(FI)。
3.将向量(通过级联、求和或两者的组合)组合成输入向量X。
4.将X馈入非线性分类器(前馈神经网络)。


可变数量的特征:连续的单词袋

前馈网络假设一个固定的维输入。这可以容易地适应特征提取函数的情况,该特征提取出固定数量的特征:每个特征被表示为向量,并且向量被级联。这样,所得到的输入向量的每个区域对应于不同的特征。然而,在某些情况下,特征的数量事先不知道(例如,在文档分类中,句子中的每个词是一个特征是常见的)。因此,我们需要使用固定大小的向量来表示无限数量的特征。实现这一点的一种方式是通过所谓的连续字袋(CBOW)表示。CBOW非常类似于传统的词表示袋,其中我们丢弃顺序信息,并通过对相应特征的嵌入向量进行求和或平均来工作:

WCBOW表示的一个简单的变化是加权CBOW,其中不同的向量接收不同的权重:

这里,每个特征FI具有相关联的权重AI,指示特征的相对重要性。例如,在文档分类任务中,特征FI可以对应于文档中的单词,并且相关联的权重AI可以是单词的TF-IDF得分。

距离和位置特征

句子中两个词之间的线性距离可以作为信息特征。

特征组合。

注意,神经网络设置中的特征提取阶段只处理核心特征的提取。这与传统的基于线性模型的NLP系统形成了对比,在该系统中,特征设计者不仅要手动指定兴趣的核心特征,还必须手动地指定它们之间的交互。组合特征在线性模型中是至关重要的,因为它们将更多的维度引入到输入中,将其转换成数据点更接近线性可分离的空间。另一方面,可能的组合的空间非常大,特征设计者必须花费大量的时间来生成一组有效的特征组合。非线性神经网络模型的一个优势是,只需要定义核心特征。由网络结构定义的分类器的非线性预期会寻找指示性特征组合,从而减轻了特征组合工程的工作量。

维度大小

我们应该为每个特征分配多少维度?不幸的是,在这个空间中没有理论界限,甚至没有建立最佳实践。很明显,维度应该随着类别的数量而增长,但是多少才够呢?在当前的研究中,字嵌入向量的维数在大约50到几百之间,并且在一些极端情况下,数以千计。由于向量的维数对内存需求和处理时间有直接的影响,一个好的经验法则是用几个不同的大小进行实验,并且在速度和任务精度之间选择一个很好的折衷。

向量共享

考虑一个有几个共享相同词汇的特征的情况。例如,当给一个给定的单词分配一个词性时,我们可以考虑一组特征,考虑前一个单词,以及一组考虑下一个单词的特征。当构建分类器的输入时,我们将将前一个单词的向量表示连接到下一个单词的向量表示。然后分类器能够区分两个不同的指标,并对它们进行不同的处理。但是,这两个特征是否应该共享相同的向量?“狗:前一个词”的向量应该与“狗:下一个单词”的向量相同吗?或者我们应该给它们分配两个不同的向量?这又是一个经验问题。如果你相信单词出现在不同的位置时会有不同的行为,那么使用两个不同的词汇表并为每个特征类型分配不同的向量集可能是个好主意。但是,如果你相信单词在两个位置都是类似的,那么可以通过使用两个特征类型的共享词汇来获得信息。

网络输出

对于具有K类的多类分类问题,网络的输出是k维向量,其中每个维度表示特定输出类的强度。


推荐阅读
author-avatar
淘老婆桃桃_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有