联系我们
- 地 址:北京市海淀区北四环西路9号 ,主 营:人脸识别,活体检测,身份证识别,银行卡识别,名片识别,车牌识别,OCR识别等及智能识别技术。
- 电 话:13146317170 廖经理
- 传 真:
- 邮 箱:398017534@qq.com
深度学习自然语言处理神经网络简介
深度学习自然语言处理神经网络简介
主要内容
input encoding for natural language tasks
feed-forward networks
convolutional networks,
recurrent networks
recursive networks
the computation graph abstraction for automatic gradient computation
神经网络中的术语
feature:concrete, linguistic input
input vector: the actual input that is fed to the neural-network classifier
input vector entry: a specific value of the input
数学符号
加粗大写字母(X,Y, Z ) 表示矩阵
加粗小写字母代表向量 b
W1表示神经网络中的第一层
(W)2 (W1)2 矩阵的幂
[v1;v2] 表示向量衔接
神经网络架构
feed-forward networks
include networks with fully connected layers,such as the multi-layer perceptron, as well as networks with convolutional and pooling layers. All of the networks act as classifiers, but each with different strengths.
Fully connected feed-forward neural networks
can be used as a drop-in replacement(替代品) wherever a linear learner is used
The non-linearity of the network, as well as the ability to easily integrate pre-trained word embeddings, often lead to superior classification accuracy(非线性网络以及容易集成预锻炼的字嵌入才能,通常能够进步分类的精确性)
As a classifier replacement,provide benefits for CCG supertagging, dialog state tracking, pre-ordering for statistical machine translation and language modeling.
Networks with convolutional and pooling layers
are useful for classification tasks in which we expect to find strong local clues regarding class membership, but these clues can appear in different places in the input
allow the model to learn to find such local indicators,regardless of their position.
show promising results(有希望的结果) on many tasks, including document classification,short-text categorization(短文本分类),sentiment classification,relation type classification between entities(实体之间的关系类型分类), event detection, paraphrase identification(释义辨认), semantic role labeling(语义角色标注),question answering,predicting box-office revenues of movies based on critic reviews(基于评论的票房预测),modeling text interestingness(建模文本的兴趣性),and modeling the relation between character-sequences and part-of-speech tags(模仿字符序列和词性标签之间的关系).
缺陷:In order to encode arbitrary large items as fixed size vectors capturing their most salient features,it sacrifices most of the structural information.
更好的是, Recurrent and recursive architectures, allow us to work with sequences and trees while preserving a lot of the structural information
recursive networks
designed to model sequences
can produce very strong results for language modeling, sequence tagging,machine translation,dependency parsing(依存关系句法剖析),sentiment analysis,noisy text normalization(噪杂文本标准化),dialog state tracking,response generation(响应生成),modeling the relation between character sequences and part-of-speech tags
recurrent networks
can handle trees
can produce state-of-the-art or near state-of-the-art results for constituency and dependency parse re-ranking(选区和依赖解析重排序), discourse parsing(语义关系分类),semantic relation classification(语义关系分类),political ideology detection based on parse trees(政治认识形态检测),sentiment classification,target-dependent sentiment classification(依赖目的的心情分类),question answering.
特征表示
a feed-forward neural network 是一个函数 NN(x),其输入是一个din dimensional vector x,输出是doutdimensional output vector
该函数作为一个分类器,assigning the input x a degree of membership in one or more of dout classes(为输入x在一个或多个dout类中分配一个从属度)
不再将每个特征表示为独一维度而是将其表示为密集向量。也就是说,将每个中心特征嵌入到d维空间中,并表示为该空间的向量。然后能够像函数NN的其他参数一样锻炼这种嵌入。
基于前馈神经网络的NLP分类系统的根本架构如下:
提取一系列与预测输进项相关的中心言语特征f1,…,fk
关于每个感兴味的特征fi,检索对应的向量v(fi)
将这些向量组合成输入向量x
将x馈入非线性分类器
这个构造的关键在于运用密集型特征向量而不是稠密特征向量,运用中心特征而不是特征组合
关于这些中心特征的表示主要有稠密和稠密两种表现方式即one-hot和Dense Vectors,如上图所示。其主要区别为:
1)one-hot:每个维度表示一个特征,其特征值是二维的,即若该特征值存在即为1,不存在则为0。每个特征都有其本身的维度。
2)Dense Vectors:每个中心特征代表一个向量,每个输入向量X对应几个输入向量条目。特征到向量的映射来自于嵌入表。每个特征都是d维向量,锻炼会使得类似的特征具有类似的向量。
应用场景
1)假如我们在一个类别中具有相对较少的不同特征,并且我们置信在不同特征之间没有关系,这时采用one-hot表示。
2)假如我们置信在一个组的不同特征之间存在联络,那么此时应该采用Dense Vectors,能够让神经网络弄分明特征间的相关性并经过共享参数取得一些统计强度
可变数量的特征
在很多状况下,特征的数量我们提早是不晓得的。因而,我们需求用一个固定长度的向量表示一组无限数量的特征。一种办法就是CBOW(连续词袋),它与传统的词袋表示十分类似但是丢弃了次第信息。
CBOW(f1,…,fk) =1k1k \frac{1}{k}1kk1 ∑i=ki=1v(fi)∑i=1i=kv(fi) \sum_{i=1}^{i=k} v(f_{i})∑i=1i=kv(fi)∑i=1i=kv(fi)
一个CBOW表示的变体就是权重CBOW,不同的向量有不同的权重:
WCBOW(f1,…,fk) =1∑i=ki=1ai1∑i=1i=kai \frac{1}{\sum_{i=1}^{i=k}a_{i}}1∑i=1i=kai∑i=1i=kai1 ∑i=ki=1aiv(fi)∑i=1i=kaiv(fi) \sum_{i=1}^{i=k} a_{i}v(f_{i})∑i=1i=kaiv(fi)∑i=1i=kaiv(fi)
aiai a_{i}aiai:表示不同特征的相对重要性。例如,aiai a_{i}aiai能够是TF-IDF分数
间隔和位置特征
句子中两个词的先行间隔能够被看成一个informative feature
间隔特征编码:将间隔分红几组,每一组(bin)与一个d维向量相关联(得到distance-embedding vector),然后将这些向量作为网络中的常规参数去锻炼
特征组合
在神经网络中,特征提取仅触及中心特征
在传统的基于线性模型的神经网络中,功用设计师不只要手动指定感兴味的中心特征,还要指定这些特征之间的互相关系。
在线性模型中特征组合很重要,由于他们为输入引入了更多的维度,使无暇间数据点更接近线性可分。?
而在神经网络中定义的非线性的分类器用于寻觅指定的特征组合,减少了工程量
-Kernel methods(核办法)允许功用设计师仅指定中心特征,而将特征组合的方面留给学习算法,它允许准确的最优化问题。但是,其运算复杂度与锻炼的数据量成线性关系,因而不适用于很大的数据集。神经网络的分类的复杂度与锻炼的数据大小无关,而只与神经网络的大小线性相关。
Dimensionality(维度 )
维度随着类成员的数量增加而增长。
由于维度对内存需求和处置时间有直接的影响,所以要多尝试几次不同的大小,选择一个在速度和任务精确性上选择一个最好的。
Vector Sharing(特征共享)
在一些状况下,一些特征共享相同的词汇表(vocabulary)。
关于两个向量,能否共享词汇表是一个经历问题。假如以为单词呈现在不同位置时表现不同,那么久运用两个不同的词汇表。否则就共享一个词汇表。
Network’s Output(网络输出)
在多类分类问题中,网络的输出是一个k维向量,每个维度代表一个特定输出类的强度。也就是说,输出依然坚持在传统的线性模型中。
在第四章中,输出层对应一个d*k维的矩阵。其中,每一列表示d维embeddings,向量表示之间的类似性表示输出类之间模型学习的类似性。
第四章:前馈神经网络
representation power
common non-linearities
loss function
4.1一个典型的神经网络如下图所示:
1)其中,每个圆圈代表一个神经元,射入箭头是神经元的输入,射出箭头是神经元的输出。每个箭头都携带一个权重,代表其重要性。
2)最底层没有传入箭头,是网络的输入层。最顶层没有外出箭头,是网络的输出层。其他层称之为“躲藏层”。神经元中的∫∫ \int∫∫代表一个非线性函数,通常是11+e−xa11+e−xa \frac{1}{1+e^{-xa}}11+e−xa1+e−xa1
3)在这个图的表示中,每一个神经元都与下一层的一切神经元相衔接,关于相似网络构造称之为完整衔接层或者仿射层
4)将具有标量输入和输出的计算单元看作神经元,计算出每个神经元与其权重的乘积,在停止加和,之后经过一个非线性函数对该加和停止运算,得到输出。
5)下面,用一些简约的数学符号来描绘整个运算过程。
把输入层看成一个4维的向量x,其上层是一个6维向量(h1)
h = xW,其中W是一个向量矩阵,WijWij W_{ij}WijWij指的是输入行中第i个神经元与其衔接的第j个神经元的权重
每次向下层传送时,都要经过激活函数g的变换
因而,第三层得到的输入为:(g(x****W1))W2
4.2用数学符号表示
最简单的神经网络是感知机,是关于输入的一个线性函数:
NNPerception(x)NNPerception(x) NN_{Perception}(x)NNPerception(x)NNPerception(x) = xW + b (x∈RdinRdin R^{d_{in}}RdinRdin,W∈Rdin∗doutRdin∗dout R^{d_{in}*d_{out}}Rdin∗doutRdin∗dout, b∈RdoutRdout R^{d_{out}}RdoutRdout)
其中,W是权重矩阵,b是偏向项
包含一个躲藏层的多层感知机(MLP1):
NNMLP1(x)NNMLP1(x) NN_{MLP1}(x)NNMLP1(x)NNMLP1(x) = g(xW1+b1xW1+b1 xW^{1} + b^{1}xW1+b1xW1+b1)W2W2 W^{2}W2W2 +b2b2 b^{2}b2b2
(x∈RdinRdin R^{d_{in}}RdinRdin,W1W1 W^{1}W1W1∈Rdin∗d1Rdin∗d1 R^{d_{in}*d_{1}}Rdin∗d1Rdin∗d1, b1b1 b^{1}b1b1∈Rd1Rd1 R^{d_{1}}Rd1Rd1, W2W2 W^{2}W2W2∈Rd1∗d2Rd1∗d2 R^{d_{1}*d_{2}}Rd1∗d2Rd1∗d2,b2b2 b^{2}b2b2∈Rd2Rd2 R^{d_{2}}Rd2Rd2)
包含两个躲藏层的多层感知机(如上图所示):
NNMLP2(x)NNMLP2(x) NN_{MLP2}(x)NNMLP2(x)NNMLP2(x) = g2(g1(xW1+b1)g2(g1(xW1+b1) g^{2}(g^{1}(xW^{1} + b^{1})g2(g1(xW1+b1)g2(g1(xW1+b1)W2W2 W^{2}W2W2 +b2)W3b2)W3 b^{2})W^{3}b2)W3b2)W3
运用中间变量可能更明晰:
NNMLP2(x)NNMLP2(x) NN_{MLP2}(x)NNMLP2(x)NNMLP2(x) = y
h1=g1(xW1+b1)h1=g1(xW1+b1) h^{1} = g^{1}(xW^{1} + b^{1})h1=g1(xW1+b1)h1=g1(xW1+b1)
h2=g2(h1W2+b2)h2=g2(h1W2+b2) h^{2} = g^{2}(h^{1}W^{2} + b^{2})h2=g2(h1W2+b2)h2=g2(h1W2+b2)
y = h2W3h2W3 h^{2}W^{3}h2W3h2W3
1)由每个线性变换产生的向量成为"layer",最外层变换结果成为输出层(其偏向项常常为0),其他线性变换称为"hidden layer"(每个"hidden layer"都要经过一个非线性的激活函数)。
2)具有多个躲藏层的网络称为是深度网络,因而也称深度学习
3)神经网络的每一层将dindin d_{in}dindin维向量作为其输入,并将其转换为doutdout d_{out}doutdout维向量。层的维度被视为其输出的维度。关于感知机来说,x的维度是1*dindin d_{in}dindin,W的维度是din∗doutdin∗dout d_{in}*d_{out}din∗doutdin∗dout,b的维度是1*doutdout d_{out}doutdout
4)关于doutdout d_{out}doutdout,
假如doutdout d_{out}doutdout=1,那么网络的输出是一个标量,以经过输出的值来用于回归(或评分),或者经过查询输出的符号用于二进制分类
假如doutdout d_{out}doutdout=k > 1,能够将每一个维度与一个类相关联,并找出具有最大值的维度,以此用于k-class分类。假如输出向量条目为正并且总和为1,则能够将输出看作为类分配上的散布。(这种输出归一化常在输出层上应用,经过softmax变换来完成)
4.3 表现力
MLP1是一种通用的迫近器,他能够用所需的非零误差迫近一系列函数,包括RnRn R^{n}RnRn有界子集上的一切连续函数,以及从任何有限维离散空间到另一个有限维离散空间的任何函数映射
但是,MPL1并不能保证锻炼算法能够找到生成锻炼数据的正确函数,也没有阐明躲藏层应该有多大。
因而,在理论中,我们运用本地搜索算法在相对少量的数据上锻炼,并且运用相对适中的躲藏层(上限几千)。
4.4 Common Non-linearities(常见的非线性,即激活函数g)
在什么场景下运用哪种非线性函数,目前还没有一个很好的结论,这大多还是一个经历问题。常见的非线性函数大约有如下几种:
Sigmoid(S型)
σ(x) = 11+e−x11+e−x \frac{1}{1+e^{-x}}11+e−x1+e−x1, σ(x)∈∈ \in∈∈[0,1]
TANH(双曲正切)
tanh(x) = e2x−1e2x+1e2x−1e2x+1 \frac{e^{2x}-1}{e^{2x}+1}e2x−1e2x+1e2x+1e2x−1,tanh(x)∈∈ \in∈∈[-1,1]
3.HARD TANH(是tanh的近似值,其计算速度更快)
hardtanh(x) = ⎧⎩⎨⎪⎪−11xx<−1x>1otherwise{−1x<−11x>1xotherwise \begin{cases} -1 \qquad & x \lt -1 \\ 1 \qquad & x \gt 1 \\ x \qquad & otherwise \end{cases}{−1x<−11x>1xotherwise
-1 \qquad & x \lt -1 \\
1 \qquad & x \gt 1 \\
x \qquad & otherwise
\end{cases}⎩⎪⎨⎪⎧−11xx<−1x>1otherwise
4.RELU(整流线性单元,易于运用,结果出色)
ReLU(x) = max(0, x) = = {0xx<0otherwise{0x<0xotherwise \begin{cases} 0 \qquad & x \lt 0 \\ x \qquad & otherwise \end{cases}{0x<0xotherwise
0 \qquad & x \lt 0 \\
x \qquad & otherwise
\end{cases}{0xx<0otherwise
5.依据经历,其工作性能:RELU > tanh > singmoid
注:另外两种的工作性能在不同状况下有很好的非线性
1)Cube:g(x) = x3x3 x^{3}x3x3 ,它在用于预测行动的前馈网络中更有效
2)tanhCube: g(x) = tanh(x3x3 x^{3}x3x3 + x), 在用于基于图形的依赖解析器的构造预测中的一个组件更有效。
这些激活功用在某些状况下能够改善性能,但其通用性还不肯定
Output Transformations(输出转换)
当我们对可能的输出类的概率散布建模感兴味时,我们能够采用softmax转换,将输出向量转换成为一个非负实数的向量且总和为1,并使其成为k个可能结果的离散概率散布。
x =x1, . . . , xk
softmax(xi) = exi∑kj=1exjexi∑j=1kexj \frac{e^{x_{i}}}{\sum_{j=1}^{k}e^{x_{j}} }exi∑j=1kexj∑j=1kexjexi
为了更高效,softmax通常与概率锻炼目的一同运用,例如穿插熵
当softmax应用于没有躲藏层的output时,结果是著名的多项逻辑回归模型,也称最大熵分类器
4.6 Embedding Layers(嵌入层)
在NLP应用中,输入向量x由几个嵌入向量组成。我们能够明白x的来源,并将其包含在网络的定义中。我们引入c(·),一个从中心特征到输入向量的函数。
1)c通常提取与每个特征相关联的嵌入向量,并停止衔接。
x = c(f1, f2, f3) =[v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)] [v(f_{1}); v(f_{2}); v(f_{3})][v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)]
NNMLP1(x)NNMLP1(x) NN_{MLP1}(x)NNMLP1(x)NNMLP1(x) =NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1(c(f1,f2,f3f1,f2,f3 f_{1},f_{2},f_{3}f1,f2,f3f1,f2,f3))
=NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1([v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)] [v(f_{1}); v(f_{2}); v(f_{3})][v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)])
=(g([v(f1);v(f2);v(f3)](g([v(f1);v(f2);v(f3)] (g([v(f_{1}); v(f_{2}); v(f_{3})](g([v(f1);v(f2);v(f3)](g([v(f1);v(f2);v(f3)]W1W1 W^{1}W1W1 + b1b1 b^{1}b1b1))W2W2 W^{2}W2W2 + b2b2 b^{2}b2b2
2)另一个常见的选择是c对嵌入向量求和(假定嵌入向量具有相同的维度)
x = c(f1, f2, f3) =[v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)] [v(f_{1})+v(f_{2})+v(f_{3})][v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)]
NNMLP1(x)NNMLP1(x) NN_{MLP1}(x)NNMLP1(x)NNMLP1(x) =NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1(c(f1,f2,f3f1,f2,f3 f_{1},f_{2},f_{3}f1,f2,f3f1,f2,f3))
=NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1([v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)] [v(f_{1})+v(f_{2})+v(f_{3})][v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)])
=(g([v(f1)+v(f2)+v(f3)](g([v(f1)+v(f2)+v(f3)] (g([v(f_{1})+v(f_{2})+v(f_{3})](g([v(f1)+v(f2)+v(f3)](g([v(f1)+v(f2)+v(f3)]W1W1 W^{1}W1W1 + b1b1 b^{1}b1b1))W2W2 W^{2}W2W2 + b2b2 b^{2}b2b2
假定有一个V个单词的词表,每个词嵌入d维向量 。则能够将向量汇合视为| V |×d的嵌入矩阵E,其中每行对应嵌入特征。令:
fifi f_{i}fifi: 1 x |V|向量,除了一个索引值为1外全为0(该索引对应第i个特征的值)
fifi f_{i}fifiE将选择相应的E的行,因而,v(fifi f_{i}fifi)能够用E和fifi f_{i}fifi来定义,即:v(fifi f_{i}fifi) = fifi f_{i}fifiE
例如:
f2f2 f_{2}f2f2 = (0,1,0),E=⎛⎝⎜a1b1c1a2b2c2a3b3c3a4b4c4⎞⎠⎟(a1a2a3a4b1b2b3b4c1c2c3c4) \begin{pmatrix} a_{1} & a_{2} & a_{3} & a_{4} \\ b_{1} & b_{2} & b_{3} & b_{4} \\ c_{1} & c_{2} & c_{3} & c_{4} \\ \end{pmatrix}(a1a2a3a4b1b2b3b4c1c2c3c4)
a_{1} & a_{2} & a_{3} & a_{4} \\
b_{1} & b_{2} & b_{3} & b_{4} \\
c_{1} & c_{2} & c_{3} & c_{4} \\
\end{pmatrix}⎝⎛a1b1c1a2b2c2a3b3c3a4b4c4⎠⎞
因而,v(f2f2 f_{2}f2f2) = (b1,b2,b3,b4b1,b2,b3,b4 b_{1} ,b_{2} ,b_{3} ,b_{4}b1,b2,b3,b4b1,b2,b3,b4)
相似的,
CBOW(f1f1 f_{1}f1f1,…,fkfk f_{k}fkfk) = ∑ki=1(fiE)∑i=1k(fiE) \sum_{i=1}^{k}(f_{i}E)∑i=1k(fiE)∑i=1k(fiE) = (∑ki=1fi∑i=1kfi \sum_{i=1}^{k}f_{i}∑i=1kfi∑i=1kfi)E
然后,网络的输入被以为是一个one-hot向量的汇合。固然这在数学上很好地定义,但是有效的完成通常触及基于散列的数据构造,将特征映射到它们对应的嵌入向量,而不是经过one-hot表示
在本文中,我们将c与网络架构分开:网络的输入一直是密集的实值输入向量,并且在输入传送到网络之前应用c
4.6.2 A Note on Notation(关于符号的注记)
当一个网络的输入是几个向量的的衔接时,
1)显式衔接:([x;y;z]W+b)
2) 仿射变换:(xU + yV + zW +b),假如矩阵U,V,W彼此不同,那么这两种向量表示等价
4.6.2 A Note on Sparse vs. Dense Features(关于稠密与密集特征的注记)
思索传统的没有嵌入层的网络,其中
V是一切可用的特征组合,
f1,....,fkf1,....,fk f_{1},....,f_{k}f1,....,fkf1,....,fk个特征, fi∈fi∈ f_{i}\infi∈fi∈V
网络输入:x = ∑ki=1fi∑i=1kfi \sum_{i=1}^{k}f_{i}∑i=1kfi∑i=1kfi, x∈∈ \in∈∈N∣V∣+N+∣V∣ N^{|V|}_{+}N+∣V∣N+∣V∣
因而第一层(疏忽非线性激活函数):
xW + b = (∑ki=1fi∑i=1kfi \sum_{i=1}^{k}f_{i}∑i=1kfi∑i=1kfi)W
W∈R∣V∣∗d∈R∣V∣∗d \in R^{|V|*d}∈R∣V∣∗d∈R∣V∣∗d,b∈Rd∈Rd \in R^{d}∈Rd∈Rd
这十分相似于在特征上产生CBOW表示的嵌入层,其中矩阵
W充任嵌入矩阵
主要区别在于偏置矢量b的引入,以及嵌入层通常不阅历非线性激活而是直接传送到第一层
另一个区别是上述状况迫使每个特征接纳一个单独的向量(W中的行),而嵌入层提供更大的灵敏性,例如允许特征“next word is dog”和“previous word is dog”共享相同的向量。
4.7 Loss Function(损失函数)
锻炼神经网络时,就像锻炼线性分类器时一样,需求定义一个损失函数L(y¯yˉ \bar{y}yˉyˉ,y),阐明当真实输出为y时预测y¯yˉ \bar{y}yˉyˉ的丧失(y¯yˉ \bar{y}yˉyˉ是网络的输出,y则是真实的输出)。锻炼的目的是最小化这种损失。
给定真实预期输出y时,损失函数L(y¯yˉ \bar{y}yˉyˉ,y)将为网络的输出y¯yˉ \bar{y}yˉyˉ指定数值分数(标量)。损失函数能够是将两个向量映射到标量的恣意函数,出于优化的实践目的,我们将其局限于能够轻松计算梯度(或子梯度)的函数。下面给出一些常用的Loss Function:
Hinge(二进制)
关于一个二元分类问题,网络的输出是一个单个的标量y¯yˉ \bar{y}yˉyˉ,预期输出y∈∈ \in∈∈{+1,-1}。
Hinge loss,也称为边缘损失或SVM loss
Lhinge(binary)(y¯,y)Lhinge(binary)(yˉ,y) L_{hinge(binary)}(\bar{y},y)Lhinge(binary)(yˉ,y)Lhinge(binary)(yˉ,y) = max(0,1-y*y¯yˉ \bar{y}yˉyˉ)
只要当y*y¯yˉ \bar{y}yˉyˉ > 0(也就是说,两者同号)时,分类才正确
假如y*y¯yˉ \bar{y}yˉyˉ > 0并且|y¯yˉ \bar{y}yˉyˉ| ≥≥ \ge≥≥ 1,那么loss为0。也就是说,二元hinge函数要实行正确的分类,其边境至少为1。
Hinge (multiclass)
y¯yˉ \bar{y}yˉyˉ = y¯1,....,y¯nyˉ1,....,yˉn \bar{y}_{1},....,\bar{y}_{n}yˉ1,....,yˉnyˉ1,....,yˉn,网络的输出向量。
y:one-hot vector,正确的output class
分类规则:选择具有最高分数的class:
prediction = arg maxy¯iyˉi \bar{y}_{i}yˉiyˉi
t= arg maxiyimaxiyi max_{i}y_{i}maxiyimaxiyi : 正确的的class
k = arg maxi≠tmaxi≠t max_{i\ne t}maxi≠tmaxi̸=t : 最高得分的类
并且使得k≠tk≠t k \ne tk≠tk̸=t
那么,Lhinge(multiclass)(y¯,y)Lhinge(multiclass)(yˉ,y) L_{hinge(multiclass)}(\bar{y},y)Lhinge(multiclass)(yˉ,y)Lhinge(multiclass)(yˉ,y) = max(0,1 - (y¯t−y¯kyˉt−yˉk \bar{y}_{t} - \bar{y}_{k}yˉt−yˉkyˉt−yˉk))
每当我们需求一个 hard decision rule时并且不需求去模仿类成员概率,该办法就很有效
Log Loss
是一个 hinge loss的一个变体,with an infinite margin
Llog(y¯,y)Llog(yˉ,y) L_{log}(\bar y,y)Llog(yˉ,y)Llog(yˉ,y) = log(1+exp(−(y¯t−y¯k)))log(1+exp(−(yˉt−yˉk))) log(1 + exp(-(\bar{y}_{t} - \bar{y}_{k} )))log(1+exp(−(yˉt−yˉk)))log(1+exp(−(yˉt−yˉk)))
Categorical Cross-Entropy Loss(分类穿插熵)
当分数的概率解释理想时,该办法有效
y = y1,...,yny1,...,yn y_{1}, . . . , y_{n}y1,...,yny1,...,yn,在标签1,…,n上代表真正的多项散布
y¯yˉ \bar{y}yˉyˉ = y¯1,....,y¯nyˉ1,....,yˉn \bar{y}_{1},....,\bar{y}_{n}yˉ1,....,yˉnyˉ1,....,yˉn,是被sonftmax激活函数转化过的网络输出,表示class membership的条件散布,y¯iyˉi \bar{y}_{i}yˉiyˉi = P(y = i | x)
分类穿插熵Loss丈量真实标签散布y和预测标签y¯yˉ \bar{y}yˉyˉ的不类似性,并定义为穿插熵:LLcross−entropy(y¯,y)LLcross−entropy(yˉ,y) L_{Lcross-entropy}(\bar{y},y)LLcross−entropy(yˉ,y)LLcross−entropy(yˉ,y) = - ∑iyilog(y¯i)∑iyilog(yˉi) \sum_{i} y_{i}log(\bar{y}_{i})∑iyilog(yˉi)∑iyilog(yˉi)
关于hard classification problems(硬分类问题),其中每个锻炼示例仅有一个正确的类分配。此时y是一个one-hot vector,表示正确的class,其穿插熵简化为:LLcross−entropy(hardclassification)(y¯,y)LLcross−entropy(hardclassification)(yˉ,y) L_{Lcross-entropy(hard classification)}(\bar{y},y)LLcross−entropy(hardclassification)(yˉ,y)LLcross−entropy(hardclassification)(yˉ,y) = - log(y¯t)log(yˉt) log(\bar{y}_{t})log(yˉt)log(yˉt)
其中,t为correct class assignment。
目的:将正确的分类的概率质量设置为1。由于分数y¯yˉ \bar{y}yˉyˉ运用softmax函数转换并表示条件散布,所以增加the mass assigned to the correct class意味着减少 the mass assigned to all the other classes。
好处:不只能预测 the one-best class label,而且也能预测a distribution over the possible labels。
但是要运用分类穿插熵Loss时,必需保证网络输出曾经运用softmax停止了转换
Ranking Losses
有时,我们并没有对标签停止监视,而是依据对正确和不正确的条目x,x′x,x′ x,x^{'}x,x′x,x′停止监视,并且我们要将正确条目的得分高于错误的。当我们只要positive examples时才会呈现这样的锻炼状况,从而我们需求经过毁坏一个positive examples来得到一个negative examples。在这种状况下有效的损失函数是margin-based ranking loss,定义如下:
Lranking(margin)(x,x′)Lranking(margin)(x,x′) L_{ranking(margin)}(x,x^{'})Lranking(margin)(x,x′)Lranking(margin)(x,x′) = max(0,1−(NN(x)−NN(x′)))(0,1−(NN(x)−NN(x′))) (0,1 - (NN(x) - NN(x^{'})))(0,1−(NN(x)−NN(x′)))(0,1−(NN(x)−NN(x′)))
NNxNNx NN_{x}NNxNNx:网络给input vector x的打分
目的:正确的inputs score高于不正确的
一个通常的变体是运用ranking loss的log version:
Lranking(log)(x,x′)Lranking(log)(x,x′) L_{ranking(log)}(x,x^{'})Lranking(log)(x,x′)Lranking(log)(x,x′) = log(1+exp(−(NN(x)−NN(x′))))log(1+exp(−(NN(x)−NN(x′)))) log(1 + exp(-(NN(x) - NN(x^{'}))))log(1+exp(−(NN(x)−NN(x′))))log(1+exp(−(NN(x)−NN(x′))))
在言语任务中运用ranking hinge loss的例子是,锻炼导出预锻炼的字嵌入的辅助任务的锻炼。我们给出一个正确的单词序列和损坏的单词序列,我们的目的是正确序列的得分高于损坏的。
5.Word Embeddings(词嵌入)
神经网络办法的一个重要要组成局部是运用嵌入 - 将每个特征表示为低维空间中的向量。但是这些vector来自于何处?这就是本节要讨论的内容。
5.1 Random Initialization(随机初始化)
当有足够的监视锻炼数据时,能够将特征嵌入视为与其他模型参数相同:将嵌入向量初始化为随机值,并让网络锻炼程序将它们调整为“good”vectors。
执行初始化的方式
word2vec implementation
将单词向量初始化为[−12d,12d−12d,12d -\frac{1}{2d},\frac{1}{2d}−12d,12d−2d1,2d1]范围内的平均采样随机数,其中d是维数
xavier initialization
运用[−6√d√,6√d√−6d,6d -\frac{\sqrt{6}}{\sqrt{d}}, \frac{\sqrt{6}}{\sqrt{d}}−6d,6d−d6,d6] 的平均采样值停止初始化
在理论中
运用随机初始化办法初始化常见特征的嵌入向量,例如词性标签或单个字母
运用某种方式的监视或无监视预锻炼来初始化潜在的稀有特征,例如单个单词的功用。预锻炼的vector在网络锻炼过程中被视为fixed vectors或者randomly-initialized vectors
5.2 Supervised Task-Specific Pre-training(有监视的特定任务的预锻炼)
假如我们对任务A感兴味,但只要有限数量的标志数据(例如:语法剖析)
若此时有一个辅助任务B,有比拟多的标志数据(比方:词性标志)
我们想要预先锻炼我们的word vectors,以便它们作为任务B的预测变量时表现的更好,然后再运用这些锻炼过的词向量来锻炼任务A。这样,我们就能够应用任务B所具有的大量标志数据。
在锻炼任务A时,我们能够将预锻炼的vector视为fixed,或者将其进一步伐整他们用于任务A.另一种选择是将两个目的结合锻炼。
5.3 Unsupervised Pre-training(无监视的预锻炼)
常见的状况是,我们没有具有足够大量的注释数据的辅助任务。在这种状况下,我们采用“无监视的“办法,能够在大量未注释的文本上停止锻炼。
锻炼单词向量的技术实质上是监视学习的技术,但我们不是监视我们关怀的任务,而是从原始文本创立简直无限数量的监视锻炼实例,从而希望我们创立的任务与我们关怀的最终任务相匹配(或足够接近)。
key idea: “similar” words的嵌入向量具有类似的向量
由于词的类似性很难定义,因而当前所运用的办法来自于散布假定,即假如两个词的上下文相同,那么这两个词的表示也是类似的
不同的办法都创立了有监视的锻炼实例,其目的是从其上下文预测单词,或从单词预测上下文。
在大量未注释的数据上锻炼词嵌入的一个重要益处是,它为未呈现在监视锻炼集中的词提供了向量表示。理想状况下,这些单词的表示将与锻炼集中呈现的相关单词的表示类似,从而允许模型更好的概括unseen events。
常用的无监视学习算法:
word2vec
GloVe
Collobert and Weston embeddings algorithm
这些模型的灵感来自于神经网络,并基于随机梯度锻炼(stochastic gradient training)
能够说,辅助问题的选择(基于什么样的上下文预测的内容)对结果向量的影响远远超越用于锻炼它们的学习办法的选择。因而,我们专注于可用的辅助问题的不同选择,并且仅略过锻炼办法的细节。
值得留意的是,由无监视锻炼算法导出的词嵌入在NLP中除了用于初始化神经网络模型的词嵌入层之外,还有普遍的应用。
5.4 锻炼目的
给定单词w及其上下文c,不同的算法构成不同的辅助任务。在一切状况下,每个单词被表示为d维向量,其被初始化为随机值。锻炼该模型以很好地执行辅助任务将产生用于把词和上下文联络起来的good word embeddings,这反过来将会使得类似单词的嵌入向量也彼此类似。
Language-modeling inspired approaches(言语建模的启示式办法),目的是依据其上下文预测单词。这是在概率设置中提出的,试图去模仿条件概率P(w|c)
其他办法将问题简化到了二进制分类的问题。除了察看到的 ”word-context pairs“的汇合D之外,还生成了一个"random words andcontext pairings"的汇合D¯¯¯Dˉ \bar{D}DˉDˉ。
二元分类的问题是:给定的(w,c)对能否来自汇合D?这些办法在如何结构汇合D¯¯¯Dˉ \bar{D}DˉDˉ、分类器的构造以及优化的目的等方面存在差别。
input encoding for natural language tasks
feed-forward networks
convolutional networks,
recurrent networks
recursive networks
the computation graph abstraction for automatic gradient computation
神经网络中的术语
feature:concrete, linguistic input
input vector: the actual input that is fed to the neural-network classifier
input vector entry: a specific value of the input
数学符号
加粗大写字母(X,Y, Z ) 表示矩阵
加粗小写字母代表向量 b
W1表示神经网络中的第一层
(W)2 (W1)2 矩阵的幂
[v1;v2] 表示向量衔接
神经网络架构
feed-forward networks
include networks with fully connected layers,such as the multi-layer perceptron, as well as networks with convolutional and pooling layers. All of the networks act as classifiers, but each with different strengths.
Fully connected feed-forward neural networks
can be used as a drop-in replacement(替代品) wherever a linear learner is used
The non-linearity of the network, as well as the ability to easily integrate pre-trained word embeddings, often lead to superior classification accuracy(非线性网络以及容易集成预锻炼的字嵌入才能,通常能够进步分类的精确性)
As a classifier replacement,provide benefits for CCG supertagging, dialog state tracking, pre-ordering for statistical machine translation and language modeling.
Networks with convolutional and pooling layers
are useful for classification tasks in which we expect to find strong local clues regarding class membership, but these clues can appear in different places in the input
allow the model to learn to find such local indicators,regardless of their position.
show promising results(有希望的结果) on many tasks, including document classification,short-text categorization(短文本分类),sentiment classification,relation type classification between entities(实体之间的关系类型分类), event detection, paraphrase identification(释义辨认), semantic role labeling(语义角色标注),question answering,predicting box-office revenues of movies based on critic reviews(基于评论的票房预测),modeling text interestingness(建模文本的兴趣性),and modeling the relation between character-sequences and part-of-speech tags(模仿字符序列和词性标签之间的关系).
缺陷:In order to encode arbitrary large items as fixed size vectors capturing their most salient features,it sacrifices most of the structural information.
更好的是, Recurrent and recursive architectures, allow us to work with sequences and trees while preserving a lot of the structural information
recursive networks
designed to model sequences
can produce very strong results for language modeling, sequence tagging,machine translation,dependency parsing(依存关系句法剖析),sentiment analysis,noisy text normalization(噪杂文本标准化),dialog state tracking,response generation(响应生成),modeling the relation between character sequences and part-of-speech tags
recurrent networks
can handle trees
can produce state-of-the-art or near state-of-the-art results for constituency and dependency parse re-ranking(选区和依赖解析重排序), discourse parsing(语义关系分类),semantic relation classification(语义关系分类),political ideology detection based on parse trees(政治认识形态检测),sentiment classification,target-dependent sentiment classification(依赖目的的心情分类),question answering.
特征表示
a feed-forward neural network 是一个函数 NN(x),其输入是一个din dimensional vector x,输出是doutdimensional output vector
该函数作为一个分类器,assigning the input x a degree of membership in one or more of dout classes(为输入x在一个或多个dout类中分配一个从属度)
不再将每个特征表示为独一维度而是将其表示为密集向量。也就是说,将每个中心特征嵌入到d维空间中,并表示为该空间的向量。然后能够像函数NN的其他参数一样锻炼这种嵌入。
基于前馈神经网络的NLP分类系统的根本架构如下:
提取一系列与预测输进项相关的中心言语特征f1,…,fk
关于每个感兴味的特征fi,检索对应的向量v(fi)
将这些向量组合成输入向量x
将x馈入非线性分类器
这个构造的关键在于运用密集型特征向量而不是稠密特征向量,运用中心特征而不是特征组合
关于这些中心特征的表示主要有稠密和稠密两种表现方式即one-hot和Dense Vectors,如上图所示。其主要区别为:
1)one-hot:每个维度表示一个特征,其特征值是二维的,即若该特征值存在即为1,不存在则为0。每个特征都有其本身的维度。
2)Dense Vectors:每个中心特征代表一个向量,每个输入向量X对应几个输入向量条目。特征到向量的映射来自于嵌入表。每个特征都是d维向量,锻炼会使得类似的特征具有类似的向量。
应用场景
1)假如我们在一个类别中具有相对较少的不同特征,并且我们置信在不同特征之间没有关系,这时采用one-hot表示。
2)假如我们置信在一个组的不同特征之间存在联络,那么此时应该采用Dense Vectors,能够让神经网络弄分明特征间的相关性并经过共享参数取得一些统计强度
可变数量的特征
在很多状况下,特征的数量我们提早是不晓得的。因而,我们需求用一个固定长度的向量表示一组无限数量的特征。一种办法就是CBOW(连续词袋),它与传统的词袋表示十分类似但是丢弃了次第信息。
CBOW(f1,…,fk) =1k1k \frac{1}{k}1kk1 ∑i=ki=1v(fi)∑i=1i=kv(fi) \sum_{i=1}^{i=k} v(f_{i})∑i=1i=kv(fi)∑i=1i=kv(fi)
一个CBOW表示的变体就是权重CBOW,不同的向量有不同的权重:
WCBOW(f1,…,fk) =1∑i=ki=1ai1∑i=1i=kai \frac{1}{\sum_{i=1}^{i=k}a_{i}}1∑i=1i=kai∑i=1i=kai1 ∑i=ki=1aiv(fi)∑i=1i=kaiv(fi) \sum_{i=1}^{i=k} a_{i}v(f_{i})∑i=1i=kaiv(fi)∑i=1i=kaiv(fi)
aiai a_{i}aiai:表示不同特征的相对重要性。例如,aiai a_{i}aiai能够是TF-IDF分数
间隔和位置特征
句子中两个词的先行间隔能够被看成一个informative feature
间隔特征编码:将间隔分红几组,每一组(bin)与一个d维向量相关联(得到distance-embedding vector),然后将这些向量作为网络中的常规参数去锻炼
特征组合
在神经网络中,特征提取仅触及中心特征
在传统的基于线性模型的神经网络中,功用设计师不只要手动指定感兴味的中心特征,还要指定这些特征之间的互相关系。
在线性模型中特征组合很重要,由于他们为输入引入了更多的维度,使无暇间数据点更接近线性可分。?
而在神经网络中定义的非线性的分类器用于寻觅指定的特征组合,减少了工程量
-Kernel methods(核办法)允许功用设计师仅指定中心特征,而将特征组合的方面留给学习算法,它允许准确的最优化问题。但是,其运算复杂度与锻炼的数据量成线性关系,因而不适用于很大的数据集。神经网络的分类的复杂度与锻炼的数据大小无关,而只与神经网络的大小线性相关。
Dimensionality(维度 )
维度随着类成员的数量增加而增长。
由于维度对内存需求和处置时间有直接的影响,所以要多尝试几次不同的大小,选择一个在速度和任务精确性上选择一个最好的。
Vector Sharing(特征共享)
在一些状况下,一些特征共享相同的词汇表(vocabulary)。
关于两个向量,能否共享词汇表是一个经历问题。假如以为单词呈现在不同位置时表现不同,那么久运用两个不同的词汇表。否则就共享一个词汇表。
Network’s Output(网络输出)
在多类分类问题中,网络的输出是一个k维向量,每个维度代表一个特定输出类的强度。也就是说,输出依然坚持在传统的线性模型中。
在第四章中,输出层对应一个d*k维的矩阵。其中,每一列表示d维embeddings,向量表示之间的类似性表示输出类之间模型学习的类似性。
第四章:前馈神经网络
representation power
common non-linearities
loss function
4.1一个典型的神经网络如下图所示:
1)其中,每个圆圈代表一个神经元,射入箭头是神经元的输入,射出箭头是神经元的输出。每个箭头都携带一个权重,代表其重要性。
2)最底层没有传入箭头,是网络的输入层。最顶层没有外出箭头,是网络的输出层。其他层称之为“躲藏层”。神经元中的∫∫ \int∫∫代表一个非线性函数,通常是11+e−xa11+e−xa \frac{1}{1+e^{-xa}}11+e−xa1+e−xa1
3)在这个图的表示中,每一个神经元都与下一层的一切神经元相衔接,关于相似网络构造称之为完整衔接层或者仿射层
4)将具有标量输入和输出的计算单元看作神经元,计算出每个神经元与其权重的乘积,在停止加和,之后经过一个非线性函数对该加和停止运算,得到输出。
5)下面,用一些简约的数学符号来描绘整个运算过程。
把输入层看成一个4维的向量x,其上层是一个6维向量(h1)
h = xW,其中W是一个向量矩阵,WijWij W_{ij}WijWij指的是输入行中第i个神经元与其衔接的第j个神经元的权重
每次向下层传送时,都要经过激活函数g的变换
因而,第三层得到的输入为:(g(x****W1))W2
4.2用数学符号表示
最简单的神经网络是感知机,是关于输入的一个线性函数:
NNPerception(x)NNPerception(x) NN_{Perception}(x)NNPerception(x)NNPerception(x) = xW + b (x∈RdinRdin R^{d_{in}}RdinRdin,W∈Rdin∗doutRdin∗dout R^{d_{in}*d_{out}}Rdin∗doutRdin∗dout, b∈RdoutRdout R^{d_{out}}RdoutRdout)
其中,W是权重矩阵,b是偏向项
包含一个躲藏层的多层感知机(MLP1):
NNMLP1(x)NNMLP1(x) NN_{MLP1}(x)NNMLP1(x)NNMLP1(x) = g(xW1+b1xW1+b1 xW^{1} + b^{1}xW1+b1xW1+b1)W2W2 W^{2}W2W2 +b2b2 b^{2}b2b2
(x∈RdinRdin R^{d_{in}}RdinRdin,W1W1 W^{1}W1W1∈Rdin∗d1Rdin∗d1 R^{d_{in}*d_{1}}Rdin∗d1Rdin∗d1, b1b1 b^{1}b1b1∈Rd1Rd1 R^{d_{1}}Rd1Rd1, W2W2 W^{2}W2W2∈Rd1∗d2Rd1∗d2 R^{d_{1}*d_{2}}Rd1∗d2Rd1∗d2,b2b2 b^{2}b2b2∈Rd2Rd2 R^{d_{2}}Rd2Rd2)
包含两个躲藏层的多层感知机(如上图所示):
NNMLP2(x)NNMLP2(x) NN_{MLP2}(x)NNMLP2(x)NNMLP2(x) = g2(g1(xW1+b1)g2(g1(xW1+b1) g^{2}(g^{1}(xW^{1} + b^{1})g2(g1(xW1+b1)g2(g1(xW1+b1)W2W2 W^{2}W2W2 +b2)W3b2)W3 b^{2})W^{3}b2)W3b2)W3
运用中间变量可能更明晰:
NNMLP2(x)NNMLP2(x) NN_{MLP2}(x)NNMLP2(x)NNMLP2(x) = y
h1=g1(xW1+b1)h1=g1(xW1+b1) h^{1} = g^{1}(xW^{1} + b^{1})h1=g1(xW1+b1)h1=g1(xW1+b1)
h2=g2(h1W2+b2)h2=g2(h1W2+b2) h^{2} = g^{2}(h^{1}W^{2} + b^{2})h2=g2(h1W2+b2)h2=g2(h1W2+b2)
y = h2W3h2W3 h^{2}W^{3}h2W3h2W3
1)由每个线性变换产生的向量成为"layer",最外层变换结果成为输出层(其偏向项常常为0),其他线性变换称为"hidden layer"(每个"hidden layer"都要经过一个非线性的激活函数)。
2)具有多个躲藏层的网络称为是深度网络,因而也称深度学习
3)神经网络的每一层将dindin d_{in}dindin维向量作为其输入,并将其转换为doutdout d_{out}doutdout维向量。层的维度被视为其输出的维度。关于感知机来说,x的维度是1*dindin d_{in}dindin,W的维度是din∗doutdin∗dout d_{in}*d_{out}din∗doutdin∗dout,b的维度是1*doutdout d_{out}doutdout
4)关于doutdout d_{out}doutdout,
假如doutdout d_{out}doutdout=1,那么网络的输出是一个标量,以经过输出的值来用于回归(或评分),或者经过查询输出的符号用于二进制分类
假如doutdout d_{out}doutdout=k > 1,能够将每一个维度与一个类相关联,并找出具有最大值的维度,以此用于k-class分类。假如输出向量条目为正并且总和为1,则能够将输出看作为类分配上的散布。(这种输出归一化常在输出层上应用,经过softmax变换来完成)
4.3 表现力
MLP1是一种通用的迫近器,他能够用所需的非零误差迫近一系列函数,包括RnRn R^{n}RnRn有界子集上的一切连续函数,以及从任何有限维离散空间到另一个有限维离散空间的任何函数映射
但是,MPL1并不能保证锻炼算法能够找到生成锻炼数据的正确函数,也没有阐明躲藏层应该有多大。
因而,在理论中,我们运用本地搜索算法在相对少量的数据上锻炼,并且运用相对适中的躲藏层(上限几千)。
4.4 Common Non-linearities(常见的非线性,即激活函数g)
在什么场景下运用哪种非线性函数,目前还没有一个很好的结论,这大多还是一个经历问题。常见的非线性函数大约有如下几种:
Sigmoid(S型)
σ(x) = 11+e−x11+e−x \frac{1}{1+e^{-x}}11+e−x1+e−x1, σ(x)∈∈ \in∈∈[0,1]
TANH(双曲正切)
tanh(x) = e2x−1e2x+1e2x−1e2x+1 \frac{e^{2x}-1}{e^{2x}+1}e2x−1e2x+1e2x+1e2x−1,tanh(x)∈∈ \in∈∈[-1,1]
3.HARD TANH(是tanh的近似值,其计算速度更快)
hardtanh(x) = ⎧⎩⎨⎪⎪−11xx<−1x>1otherwise{−1x<−11x>1xotherwise \begin{cases} -1 \qquad & x \lt -1 \\ 1 \qquad & x \gt 1 \\ x \qquad & otherwise \end{cases}{−1x<−11x>1xotherwise
-1 \qquad & x \lt -1 \\
1 \qquad & x \gt 1 \\
x \qquad & otherwise
\end{cases}⎩⎪⎨⎪⎧−11xx<−1x>1otherwise
4.RELU(整流线性单元,易于运用,结果出色)
ReLU(x) = max(0, x) = = {0xx<0otherwise{0x<0xotherwise \begin{cases} 0 \qquad & x \lt 0 \\ x \qquad & otherwise \end{cases}{0x<0xotherwise
0 \qquad & x \lt 0 \\
x \qquad & otherwise
\end{cases}{0xx<0otherwise
5.依据经历,其工作性能:RELU > tanh > singmoid
注:另外两种的工作性能在不同状况下有很好的非线性
1)Cube:g(x) = x3x3 x^{3}x3x3 ,它在用于预测行动的前馈网络中更有效
2)tanhCube: g(x) = tanh(x3x3 x^{3}x3x3 + x), 在用于基于图形的依赖解析器的构造预测中的一个组件更有效。
这些激活功用在某些状况下能够改善性能,但其通用性还不肯定
Output Transformations(输出转换)
当我们对可能的输出类的概率散布建模感兴味时,我们能够采用softmax转换,将输出向量转换成为一个非负实数的向量且总和为1,并使其成为k个可能结果的离散概率散布。
x =x1, . . . , xk
softmax(xi) = exi∑kj=1exjexi∑j=1kexj \frac{e^{x_{i}}}{\sum_{j=1}^{k}e^{x_{j}} }exi∑j=1kexj∑j=1kexjexi
为了更高效,softmax通常与概率锻炼目的一同运用,例如穿插熵
当softmax应用于没有躲藏层的output时,结果是著名的多项逻辑回归模型,也称最大熵分类器
4.6 Embedding Layers(嵌入层)
在NLP应用中,输入向量x由几个嵌入向量组成。我们能够明白x的来源,并将其包含在网络的定义中。我们引入c(·),一个从中心特征到输入向量的函数。
1)c通常提取与每个特征相关联的嵌入向量,并停止衔接。
x = c(f1, f2, f3) =[v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)] [v(f_{1}); v(f_{2}); v(f_{3})][v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)]
NNMLP1(x)NNMLP1(x) NN_{MLP1}(x)NNMLP1(x)NNMLP1(x) =NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1(c(f1,f2,f3f1,f2,f3 f_{1},f_{2},f_{3}f1,f2,f3f1,f2,f3))
=NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1([v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)] [v(f_{1}); v(f_{2}); v(f_{3})][v(f1);v(f2);v(f3)][v(f1);v(f2);v(f3)])
=(g([v(f1);v(f2);v(f3)](g([v(f1);v(f2);v(f3)] (g([v(f_{1}); v(f_{2}); v(f_{3})](g([v(f1);v(f2);v(f3)](g([v(f1);v(f2);v(f3)]W1W1 W^{1}W1W1 + b1b1 b^{1}b1b1))W2W2 W^{2}W2W2 + b2b2 b^{2}b2b2
2)另一个常见的选择是c对嵌入向量求和(假定嵌入向量具有相同的维度)
x = c(f1, f2, f3) =[v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)] [v(f_{1})+v(f_{2})+v(f_{3})][v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)]
NNMLP1(x)NNMLP1(x) NN_{MLP1}(x)NNMLP1(x)NNMLP1(x) =NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1(c(f1,f2,f3f1,f2,f3 f_{1},f_{2},f_{3}f1,f2,f3f1,f2,f3))
=NNMLP1NNMLP1 NN_{MLP1}NNMLP1NNMLP1([v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)] [v(f_{1})+v(f_{2})+v(f_{3})][v(f1)+v(f2)+v(f3)][v(f1)+v(f2)+v(f3)])
=(g([v(f1)+v(f2)+v(f3)](g([v(f1)+v(f2)+v(f3)] (g([v(f_{1})+v(f_{2})+v(f_{3})](g([v(f1)+v(f2)+v(f3)](g([v(f1)+v(f2)+v(f3)]W1W1 W^{1}W1W1 + b1b1 b^{1}b1b1))W2W2 W^{2}W2W2 + b2b2 b^{2}b2b2
假定有一个V个单词的词表,每个词嵌入d维向量 。则能够将向量汇合视为| V |×d的嵌入矩阵E,其中每行对应嵌入特征。令:
fifi f_{i}fifi: 1 x |V|向量,除了一个索引值为1外全为0(该索引对应第i个特征的值)
fifi f_{i}fifiE将选择相应的E的行,因而,v(fifi f_{i}fifi)能够用E和fifi f_{i}fifi来定义,即:v(fifi f_{i}fifi) = fifi f_{i}fifiE
例如:
f2f2 f_{2}f2f2 = (0,1,0),E=⎛⎝⎜a1b1c1a2b2c2a3b3c3a4b4c4⎞⎠⎟(a1a2a3a4b1b2b3b4c1c2c3c4) \begin{pmatrix} a_{1} & a_{2} & a_{3} & a_{4} \\ b_{1} & b_{2} & b_{3} & b_{4} \\ c_{1} & c_{2} & c_{3} & c_{4} \\ \end{pmatrix}(a1a2a3a4b1b2b3b4c1c2c3c4)
a_{1} & a_{2} & a_{3} & a_{4} \\
b_{1} & b_{2} & b_{3} & b_{4} \\
c_{1} & c_{2} & c_{3} & c_{4} \\
\end{pmatrix}⎝⎛a1b1c1a2b2c2a3b3c3a4b4c4⎠⎞
因而,v(f2f2 f_{2}f2f2) = (b1,b2,b3,b4b1,b2,b3,b4 b_{1} ,b_{2} ,b_{3} ,b_{4}b1,b2,b3,b4b1,b2,b3,b4)
相似的,
CBOW(f1f1 f_{1}f1f1,…,fkfk f_{k}fkfk) = ∑ki=1(fiE)∑i=1k(fiE) \sum_{i=1}^{k}(f_{i}E)∑i=1k(fiE)∑i=1k(fiE) = (∑ki=1fi∑i=1kfi \sum_{i=1}^{k}f_{i}∑i=1kfi∑i=1kfi)E
然后,网络的输入被以为是一个one-hot向量的汇合。固然这在数学上很好地定义,但是有效的完成通常触及基于散列的数据构造,将特征映射到它们对应的嵌入向量,而不是经过one-hot表示
在本文中,我们将c与网络架构分开:网络的输入一直是密集的实值输入向量,并且在输入传送到网络之前应用c
4.6.2 A Note on Notation(关于符号的注记)
当一个网络的输入是几个向量的的衔接时,
1)显式衔接:([x;y;z]W+b)
2) 仿射变换:(xU + yV + zW +b),假如矩阵U,V,W彼此不同,那么这两种向量表示等价
4.6.2 A Note on Sparse vs. Dense Features(关于稠密与密集特征的注记)
思索传统的没有嵌入层的网络,其中
V是一切可用的特征组合,
f1,....,fkf1,....,fk f_{1},....,f_{k}f1,....,fkf1,....,fk个特征, fi∈fi∈ f_{i}\infi∈fi∈V
网络输入:x = ∑ki=1fi∑i=1kfi \sum_{i=1}^{k}f_{i}∑i=1kfi∑i=1kfi, x∈∈ \in∈∈N∣V∣+N+∣V∣ N^{|V|}_{+}N+∣V∣N+∣V∣
因而第一层(疏忽非线性激活函数):
xW + b = (∑ki=1fi∑i=1kfi \sum_{i=1}^{k}f_{i}∑i=1kfi∑i=1kfi)W
W∈R∣V∣∗d∈R∣V∣∗d \in R^{|V|*d}∈R∣V∣∗d∈R∣V∣∗d,b∈Rd∈Rd \in R^{d}∈Rd∈Rd
这十分相似于在特征上产生CBOW表示的嵌入层,其中矩阵
W充任嵌入矩阵
主要区别在于偏置矢量b的引入,以及嵌入层通常不阅历非线性激活而是直接传送到第一层
另一个区别是上述状况迫使每个特征接纳一个单独的向量(W中的行),而嵌入层提供更大的灵敏性,例如允许特征“next word is dog”和“previous word is dog”共享相同的向量。
4.7 Loss Function(损失函数)
锻炼神经网络时,就像锻炼线性分类器时一样,需求定义一个损失函数L(y¯yˉ \bar{y}yˉyˉ,y),阐明当真实输出为y时预测y¯yˉ \bar{y}yˉyˉ的丧失(y¯yˉ \bar{y}yˉyˉ是网络的输出,y则是真实的输出)。锻炼的目的是最小化这种损失。
给定真实预期输出y时,损失函数L(y¯yˉ \bar{y}yˉyˉ,y)将为网络的输出y¯yˉ \bar{y}yˉyˉ指定数值分数(标量)。损失函数能够是将两个向量映射到标量的恣意函数,出于优化的实践目的,我们将其局限于能够轻松计算梯度(或子梯度)的函数。下面给出一些常用的Loss Function:
Hinge(二进制)
关于一个二元分类问题,网络的输出是一个单个的标量y¯yˉ \bar{y}yˉyˉ,预期输出y∈∈ \in∈∈{+1,-1}。
Hinge loss,也称为边缘损失或SVM loss
Lhinge(binary)(y¯,y)Lhinge(binary)(yˉ,y) L_{hinge(binary)}(\bar{y},y)Lhinge(binary)(yˉ,y)Lhinge(binary)(yˉ,y) = max(0,1-y*y¯yˉ \bar{y}yˉyˉ)
只要当y*y¯yˉ \bar{y}yˉyˉ > 0(也就是说,两者同号)时,分类才正确
假如y*y¯yˉ \bar{y}yˉyˉ > 0并且|y¯yˉ \bar{y}yˉyˉ| ≥≥ \ge≥≥ 1,那么loss为0。也就是说,二元hinge函数要实行正确的分类,其边境至少为1。
Hinge (multiclass)
y¯yˉ \bar{y}yˉyˉ = y¯1,....,y¯nyˉ1,....,yˉn \bar{y}_{1},....,\bar{y}_{n}yˉ1,....,yˉnyˉ1,....,yˉn,网络的输出向量。
y:one-hot vector,正确的output class
分类规则:选择具有最高分数的class:
prediction = arg maxy¯iyˉi \bar{y}_{i}yˉiyˉi
t= arg maxiyimaxiyi max_{i}y_{i}maxiyimaxiyi : 正确的的class
k = arg maxi≠tmaxi≠t max_{i\ne t}maxi≠tmaxi̸=t : 最高得分的类
并且使得k≠tk≠t k \ne tk≠tk̸=t
那么,Lhinge(multiclass)(y¯,y)Lhinge(multiclass)(yˉ,y) L_{hinge(multiclass)}(\bar{y},y)Lhinge(multiclass)(yˉ,y)Lhinge(multiclass)(yˉ,y) = max(0,1 - (y¯t−y¯kyˉt−yˉk \bar{y}_{t} - \bar{y}_{k}yˉt−yˉkyˉt−yˉk))
每当我们需求一个 hard decision rule时并且不需求去模仿类成员概率,该办法就很有效
Log Loss
是一个 hinge loss的一个变体,with an infinite margin
Llog(y¯,y)Llog(yˉ,y) L_{log}(\bar y,y)Llog(yˉ,y)Llog(yˉ,y) = log(1+exp(−(y¯t−y¯k)))log(1+exp(−(yˉt−yˉk))) log(1 + exp(-(\bar{y}_{t} - \bar{y}_{k} )))log(1+exp(−(yˉt−yˉk)))log(1+exp(−(yˉt−yˉk)))
Categorical Cross-Entropy Loss(分类穿插熵)
当分数的概率解释理想时,该办法有效
y = y1,...,yny1,...,yn y_{1}, . . . , y_{n}y1,...,yny1,...,yn,在标签1,…,n上代表真正的多项散布
y¯yˉ \bar{y}yˉyˉ = y¯1,....,y¯nyˉ1,....,yˉn \bar{y}_{1},....,\bar{y}_{n}yˉ1,....,yˉnyˉ1,....,yˉn,是被sonftmax激活函数转化过的网络输出,表示class membership的条件散布,y¯iyˉi \bar{y}_{i}yˉiyˉi = P(y = i | x)
分类穿插熵Loss丈量真实标签散布y和预测标签y¯yˉ \bar{y}yˉyˉ的不类似性,并定义为穿插熵:LLcross−entropy(y¯,y)LLcross−entropy(yˉ,y) L_{Lcross-entropy}(\bar{y},y)LLcross−entropy(yˉ,y)LLcross−entropy(yˉ,y) = - ∑iyilog(y¯i)∑iyilog(yˉi) \sum_{i} y_{i}log(\bar{y}_{i})∑iyilog(yˉi)∑iyilog(yˉi)
关于hard classification problems(硬分类问题),其中每个锻炼示例仅有一个正确的类分配。此时y是一个one-hot vector,表示正确的class,其穿插熵简化为:LLcross−entropy(hardclassification)(y¯,y)LLcross−entropy(hardclassification)(yˉ,y) L_{Lcross-entropy(hard classification)}(\bar{y},y)LLcross−entropy(hardclassification)(yˉ,y)LLcross−entropy(hardclassification)(yˉ,y) = - log(y¯t)log(yˉt) log(\bar{y}_{t})log(yˉt)log(yˉt)
其中,t为correct class assignment。
目的:将正确的分类的概率质量设置为1。由于分数y¯yˉ \bar{y}yˉyˉ运用softmax函数转换并表示条件散布,所以增加the mass assigned to the correct class意味着减少 the mass assigned to all the other classes。
好处:不只能预测 the one-best class label,而且也能预测a distribution over the possible labels。
但是要运用分类穿插熵Loss时,必需保证网络输出曾经运用softmax停止了转换
Ranking Losses
有时,我们并没有对标签停止监视,而是依据对正确和不正确的条目x,x′x,x′ x,x^{'}x,x′x,x′停止监视,并且我们要将正确条目的得分高于错误的。当我们只要positive examples时才会呈现这样的锻炼状况,从而我们需求经过毁坏一个positive examples来得到一个negative examples。在这种状况下有效的损失函数是margin-based ranking loss,定义如下:
Lranking(margin)(x,x′)Lranking(margin)(x,x′) L_{ranking(margin)}(x,x^{'})Lranking(margin)(x,x′)Lranking(margin)(x,x′) = max(0,1−(NN(x)−NN(x′)))(0,1−(NN(x)−NN(x′))) (0,1 - (NN(x) - NN(x^{'})))(0,1−(NN(x)−NN(x′)))(0,1−(NN(x)−NN(x′)))
NNxNNx NN_{x}NNxNNx:网络给input vector x的打分
目的:正确的inputs score高于不正确的
一个通常的变体是运用ranking loss的log version:
Lranking(log)(x,x′)Lranking(log)(x,x′) L_{ranking(log)}(x,x^{'})Lranking(log)(x,x′)Lranking(log)(x,x′) = log(1+exp(−(NN(x)−NN(x′))))log(1+exp(−(NN(x)−NN(x′)))) log(1 + exp(-(NN(x) - NN(x^{'}))))log(1+exp(−(NN(x)−NN(x′))))log(1+exp(−(NN(x)−NN(x′))))
在言语任务中运用ranking hinge loss的例子是,锻炼导出预锻炼的字嵌入的辅助任务的锻炼。我们给出一个正确的单词序列和损坏的单词序列,我们的目的是正确序列的得分高于损坏的。
5.Word Embeddings(词嵌入)
神经网络办法的一个重要要组成局部是运用嵌入 - 将每个特征表示为低维空间中的向量。但是这些vector来自于何处?这就是本节要讨论的内容。
5.1 Random Initialization(随机初始化)
当有足够的监视锻炼数据时,能够将特征嵌入视为与其他模型参数相同:将嵌入向量初始化为随机值,并让网络锻炼程序将它们调整为“good”vectors。
执行初始化的方式
word2vec implementation
将单词向量初始化为[−12d,12d−12d,12d -\frac{1}{2d},\frac{1}{2d}−12d,12d−2d1,2d1]范围内的平均采样随机数,其中d是维数
xavier initialization
运用[−6√d√,6√d√−6d,6d -\frac{\sqrt{6}}{\sqrt{d}}, \frac{\sqrt{6}}{\sqrt{d}}−6d,6d−d6,d6] 的平均采样值停止初始化
在理论中
运用随机初始化办法初始化常见特征的嵌入向量,例如词性标签或单个字母
运用某种方式的监视或无监视预锻炼来初始化潜在的稀有特征,例如单个单词的功用。预锻炼的vector在网络锻炼过程中被视为fixed vectors或者randomly-initialized vectors
5.2 Supervised Task-Specific Pre-training(有监视的特定任务的预锻炼)
假如我们对任务A感兴味,但只要有限数量的标志数据(例如:语法剖析)
若此时有一个辅助任务B,有比拟多的标志数据(比方:词性标志)
我们想要预先锻炼我们的word vectors,以便它们作为任务B的预测变量时表现的更好,然后再运用这些锻炼过的词向量来锻炼任务A。这样,我们就能够应用任务B所具有的大量标志数据。
在锻炼任务A时,我们能够将预锻炼的vector视为fixed,或者将其进一步伐整他们用于任务A.另一种选择是将两个目的结合锻炼。
5.3 Unsupervised Pre-training(无监视的预锻炼)
常见的状况是,我们没有具有足够大量的注释数据的辅助任务。在这种状况下,我们采用“无监视的“办法,能够在大量未注释的文本上停止锻炼。
锻炼单词向量的技术实质上是监视学习的技术,但我们不是监视我们关怀的任务,而是从原始文本创立简直无限数量的监视锻炼实例,从而希望我们创立的任务与我们关怀的最终任务相匹配(或足够接近)。
key idea: “similar” words的嵌入向量具有类似的向量
由于词的类似性很难定义,因而当前所运用的办法来自于散布假定,即假如两个词的上下文相同,那么这两个词的表示也是类似的
不同的办法都创立了有监视的锻炼实例,其目的是从其上下文预测单词,或从单词预测上下文。
在大量未注释的数据上锻炼词嵌入的一个重要益处是,它为未呈现在监视锻炼集中的词提供了向量表示。理想状况下,这些单词的表示将与锻炼集中呈现的相关单词的表示类似,从而允许模型更好的概括unseen events。
常用的无监视学习算法:
word2vec
GloVe
Collobert and Weston embeddings algorithm
这些模型的灵感来自于神经网络,并基于随机梯度锻炼(stochastic gradient training)
能够说,辅助问题的选择(基于什么样的上下文预测的内容)对结果向量的影响远远超越用于锻炼它们的学习办法的选择。因而,我们专注于可用的辅助问题的不同选择,并且仅略过锻炼办法的细节。
值得留意的是,由无监视锻炼算法导出的词嵌入在NLP中除了用于初始化神经网络模型的词嵌入层之外,还有普遍的应用。
5.4 锻炼目的
给定单词w及其上下文c,不同的算法构成不同的辅助任务。在一切状况下,每个单词被表示为d维向量,其被初始化为随机值。锻炼该模型以很好地执行辅助任务将产生用于把词和上下文联络起来的good word embeddings,这反过来将会使得类似单词的嵌入向量也彼此类似。
Language-modeling inspired approaches(言语建模的启示式办法),目的是依据其上下文预测单词。这是在概率设置中提出的,试图去模仿条件概率P(w|c)
其他办法将问题简化到了二进制分类的问题。除了察看到的 ”word-context pairs“的汇合D之外,还生成了一个"random words andcontext pairings"的汇合D¯¯¯Dˉ \bar{D}DˉDˉ。
二元分类的问题是:给定的(w,c)对能否来自汇合D?这些办法在如何结构汇合D¯¯¯Dˉ \bar{D}DˉDˉ、分类器的构造以及优化的目的等方面存在差别。
上一条:支持多种证件比对的人脸识别一体机
下一条:OCR澳门身份证识别