标签:for dem 相似度 vol clu 组合 距离 agg 生成
前言
2017.10.2博客园的第一篇文章,Mark。
由于实验室做的是NLP和医疗相关的内容,因此开始啃NLP这个硬骨头,希望能学有所成。后续将关注知识图谱,深度强化学习等内容。
进入正题,该文章是用神经网络处理NLP问题的Introduciton。希望读完此文能够对自然语言处理(using NN)有一个基本的概念。
本文所有引用的文字和图片来自于论文《A Primer on Neural Network Models for Natural Language Processing》,作者Yoav Goldberg。
一、术语解释
Feature :a concrete, linguistic input such as a word, a suffix, or a part-of-speech(词性,词类) tag.特征,一个单词,或者一个下标,或者一个词类标签
Input vector:actual input that is fed to the neural-network classifier.神经网络的实际输入
Input vector entry: a specific value of the input。输入的特征值
二、两类神经网络介绍
1. 全连接前馈神经网络在分类任务上相比之传统的方法有很多的优点。
应用:A series of works2 managed to obtain improved syntactic parsing results by simply replacing the linear model of a parser with a fully connected feed-forward network. Straight-forward applications of a feed-forward network as a classifier replacement (usually coupled with the use of pre-trained word vectors) provide benefits also for CCG supertagging,3 dialog state tracking,4 pre-ordering for statistical machine translation5 and language modeling.6 Iyyer, Manjunatha, Boyd-Graber, and Daum′e III (2015) demonstrate that multi-layer feed-forward networks can provide competitive results on sentiment classi- fication and factoid question answering.
2. CNN(主要是卷积和池化层)能够找到非固定位置的关键特征。
应用:Convolutional and pooling architecture show promising results on many tasks, including document classification,7 short-text categorization,8 sentiment classification,9 relation type classification between entities,10 event detection,11 paraphrase identification,12 semantic role labeling,13 question answering,14 predicting box-office revenues of movies based on critic reviews,15 modeling text interestingness,16 and modeling the relation between character-sequences and part-of-speech tags.17
3.卷积神经网络允许我们将任意长度的句子编码到固定大小的序列,该序列能体现出这个句子最主要的特征,但是这是在牺牲了大部分句子的结构信息上实现的。而循环神经网络和递归神经网络允许我们在保留大部分结构信息的情况下处理序列和树。循环神经网络被设计用来生成序列,递归神经网络是一般化的循环神经网络,被用来处理树状结构,同时递归神经网络还可以用来处理堆(stacks)。
三、特征描述
1. 神经网络通常都被看作是一个分类器,输入x的维度为Din,选择Dout种输出中的一种作为输出。输入x是对单词,词性标注,或是其他语义词汇进行编码。从稀疏输入的线性模型到神经网络的最大区别就是停止使用了一维编码(例如one-hot编码),转而采取了稠密向量编码。即每一个特征被编码为一个d维空间中的向量。这些核心特征能够像神经网络的参数一样被训练。不同的特征其维度也可能不同,如词特征可能需要100维,但词性特征可能只需要20维。如下图所示。
通常的NLP鉴别器处理流程如下:
A 提取出与输出类别相关的核心特征集合。
B 对每一个特征找到其对应的向量。
C 将每个向量整合到输入向量x(可以采取多种合并方法)。
D 将输入向量传给NN。
这其间有两个难点,一是将向量的稀疏表示转换为稠密表示,二是仅仅提取核心向量。
2.one-hot编码和稠密编码的区别
One-hot编码的特征:A 维度等于总特征个数 B 特征之间没有任何相关性
Dense编码特征:A 维度为d,小于总特征 B 特征之间相似的距离将会比较近。
Dense编码的主要好处还是在于能够将类似的词进行相似的编码。那么NN就能够用相同的办法来处理十分相似的两个向量。
3.不定数量的特征的表示,CBOW和WCBOW
CBOW就是将特征取均值,而WCBOW则是为每个特征加上了权重。
4.距离和位置特征
在传统的NLP处理任务中,词与词之间的距离通过距离来表示,如从1到10或更多,并且每个距离对应一个one-hot编码。但是在NN中,距离向量与其他特征的编码类似,每个距离被分配一个d维向量,与神经网络的参数一起被训练。
5.特征组合
NN仅处理核心特征,而传统的线性NLP处理系统需要手工的指定特征和它们之间的关系。传统的NLP需要很谨慎的设计特征之间的关系,以保证特征之间的线性可分,并且还要处理随着特征组合而不断增长的输入序列。但是NN的设计者可以期望NN网络自行发现潜在的特征关系,而不需要人们去手工的设置特征关系。这大大的减少了工作量。
核方法,特别是多项式核方法,与NN类似,可以只关注核心特征。但是核方法的计算规模同输入数据的大小相关。如果输入过大,则处理速度会非常慢。
6.维度
数据的维度没有通用的方法来进行确定,一般来说,词的维度会比词性的维度大。词的维度大概从50到几百维,有的可能达到上千维。比较好的方法是多测试一些维度,从中找到最适合的。
7.向量共享
对于同一个词在上下文中可能代表不同意义的情况,需要按照经验进行判定。如果在上下文中,同一个单词的意义不同,我们则需要联系语境,分配不同的向量。
8.NN的输出
一般来说还是一个d类的分类器。但是也可以构造一个d*k的输出矩阵,表示有d类输出,但是输出之间有k种联系。也就是说输出不是完全独立的,是有关联的。
四、前馈神经网络
讲述神经网络基本原理,不需额外赘述。
1.常见的非线性函数
A SIGMOID 最常见的激活函数,但现在在网络内层不经常用,下面几种函数是它的替代。
B TANH
C HARD TANH 相比起TANH来说更容易计算。
D ReLU 该函数是在实际中,表现最好的函数。
2.输出层
基本上就是sigmoid函数,选取概率最大的项进行输出。一般需要网络能够计算输出的概率,例如交叉熵。当网络不含有隐层时,就是有名的最大熵模型。
3.嵌入层Embedding Layer
负责实现词嵌入。一般认为是神经网络的一部分。
五、词嵌入
当有足够多的数据时,词嵌入和训练神经网络一样,初始化网络为随机值,然后进行训练。有些论文研究了初始化参数值的范围(一般会根据向量的维度来确认)。
在实际中,一般一些经常出现的特征,如词性标注和独立的字母,会用随机值来初始化。而一些存在潜在关系的词,例如一些独立的单词,将会用有监督或无监督的方式来初始化。这些预训练的向量能在网络训练过程中看作是固定的参数,或者,更常见的,同随机初始化的值一样进行对待。
在大部分情况下,提供训练的语料标注往往不足,这样就不能很好的进行监督学习的预训练,所以无监督训练可能会更加常见。无监督训练的目的是为了发现词与词之间的相似性,通常根据这样一条准则,即,相似上下文环境的词的相似度很高。
通过大量无监督训练,能很好的提升模型的泛化能力,能对在监督训训练未出现的词进行更好的处理。
常见的词嵌入方法包括Word2Vec,GloVE,和the Collobert and Weston (2008, 2011) embeddings algorithm。
论文阅读:A Primer on Neural Network Models for Natural Language Processing(1)
标签:for dem 相似度 vol clu 组合 距离 agg 生成
原文地址:http://www.cnblogs.com/zhuyu1988/p/7622458.html