赞
踩
早年间,supervised neural network,效果还不如一些feature classifier(SVM之类的)
后来训练unsupervised neural network,效果赶上feature classifier了,但是花费的时间很长(7weeks)
如果再加一点hand-crafted features,准确率还能进一步提升
后来,我们可以train on supervised small corpus,找到dependency parser
我们可以initialize them with random word vector,但如果我们用pre-trained data,效果会好1%(主要是好在rare words上)
但这样还是没有distinguish different UNKs
所以我们需要用char-level model
但是在Question Answering中,即test-time时如果遇到new words,有新方法
但还是有新问题
想法
传统来说,我们都是利input word in LSTM models,然后用这个hidden state 来predict next words.
那么每个hidden state就是所谓的context-specific word representation(上下文指定的hidden state),那么我们能否用这个representation来做更多别的事?
为每一个词找一个token,比如person/location/date,算是另一种程度上的features
一般是用CoNLL 2003 dataset
breakout of word token vectors or contextual word vectors
这里没有很深,只有two layers of bi-LSTM
但Lower layer is better for lower-level syntax(处理比较简单的),比如part-of-speech tagging
higher layer is better for higher-level semantics(处理比较难的),比如question answering
Universal Language Model Fine-tuning for Text Classification(transfer learning)
把Language model变为目标的name entity recognition
他们没直接feed features into a different network,而是一直use the same network但是在最后设立了一个不同的目标。
比如我们可以用这个network来predict next word,但此时我们freeze the parameters of the network,也就是freeze了softmax的参数
但是这个network还是可以用来predict别的,比如predict pos/neg sentiment in the text classification
新的attention layer
In the encoder,everything is word vectors(queries,keys,values)
第二个New idea:attention的想法很好,但是只有一个attention distribution也许很不好,也许一个Postion上需要注意多个地方
有的是时候为了pass info through the chain,我们需要每走一步就深一层,这样会让layer很多,但是GPU可以并行运算。总之,no free lunch
用了byte pair encoding,当然,直接输入word vector也是可以的
Pre-training of Deep Bidirectional Transformers for Language Understanding.
核心思想
Use encoder from transformer network to calculate a representation of a sentence.生成的这个representation可以用来做name entity recognition/sentimental analysis,多种用途
原因
LM(文本预测)一般只用left/right context,但是文本理解(language understanding) is bidirectional
Solution
Mask out some words in the sentence,然后预测这部分被遮住的words
一般k%被遮住,这个k=15%。遮的太少,too expensive to train;遮的太多,not enough context
我们的LM也不再是language model,而是变成generate a probability of a sentence;我们用cross entropy loss to guess 两个MASK,并且我们希望猜到store/gallon这两个词
这边是using the entire context(both sides)来预测blank
Attention机制中,encoder决定what info to absorb based on每个position上content similarity
那我们为什么不直接在representation中用它?
比如要做English-German Translation
Decoder part
attention机制好用在:dimension远远>lengh的时候
attention的另一种理解
当我们input一个句子:I kicked the ball
2. self-Attention
所有Input一视同仁(average),不能从不同地方获取different info
3. one-attention layer:for who
这样就可以注意到主语
4. multihead attention
我们可以pay attention to 多个,重点:他们可以并行
当然,每个attention都带了一个softmax函数,虽然几乎其余几项都是0,只要attention的那项为1
如果想要得到image各部分之间的dependency,需要一个large receptive filed,这样用attention,就可以get result at a low computational cost
避免了传统cnn会把far away pixels算进来
text synthesis with self similarity
实际上是在做image generation
classic work called non-local means是用来做denoising的
基于image上的其他一些patches,compute content-based similarity,然后Pull information
compute content-based similarity between elements,然后基于content-based similarity,construct a convex combination that brings these things together
music也有raw representation,也是sequential,也有start/stop token
每个点都是weighted average of the past,但好处是无论多远,我们都能access to it
不同的方式
relative attention
Relative attention和Fully Convolution差不多
Fully Conv会把所有的feature加起来,这样不管你的feature在图像上哪里,都能被选出来
而relative也一样,它不管一个feature在总的image上的位置,但是feature内部的点的position是一致的
在每个step t,randomly sample from the prob distribution p来获得下一个单词(beam search是只找前面k个)
在每个step t,只在prob distribution p前n个概率最大的词里,randomly sample下一个单词
和pure sampling类似,只不过truncate了prob distribution
n=1是greedy search;n=V(单词总量)是pure sampling
传统softmax把vector转化为probability,这里加一个temperature hyperparameter
P
t
(
w
)
=
exp
(
s
w
τ
)
∑
w
′
∈
W
exp
(
s
w
′
τ
)
P_t(w)=\frac{\exp{(\frac{s_w}{\tau}})}{\sum_{w'\in W}{\exp{(\frac{s_{w'}}{\tau}})}}
Pt(w)=∑w′∈Wexp(τsw′)exp(τsw)
定义:input text x,output summary y,y比x短还能包括x的main info
dataset
Sentence simplication和summary有点类似,但是并不相同
把复杂的句子rewrite为简单的句子
dataset
content selection中
最后自然需要有一个函数来进行评估、优化
Recall-Oriented Understudy for Gisting Evalution
=
∑
S
∈
R
e
f
e
r
e
n
c
e
S
u
m
m
a
r
i
e
s
∑
g
r
a
m
n
∈
S
C
o
u
n
t
m
a
t
c
h
(
g
r
a
m
n
)
∑
S
∈
R
e
f
e
r
e
n
c
e
S
u
m
m
a
r
i
e
s
∑
g
r
a
m
n
∈
S
C
o
u
n
t
(
g
r
a
m
n
)
=\frac{\sum_{S \in{Reference \, Summaries}}\sum_{gram_n \in S}Count_{match}(gram_n)}{\sum_{S \in{Reference \, Summaries}}\sum_{gram_n \in S}Count(gram_n)}
=∑S∈ReferenceSummaries∑gramn∈SCount(gramn)∑S∈ReferenceSummaries∑gramn∈SCountmatch(gramn)
和BLEU算法很像,based on n-gram overlap,但还是有区别
seq2seq+attention擅长写fluent output,但是不擅长于copy details(比如rare words)
让copy/generate 形成一个hybrid extractive/abstracive approach
自然,这就有很多变种(variants)
separate stages content selection and surface realization(text generation)
在seq2seq+attention,这两者混合了
在decoder的每一步(surface realization),我们做了word-level content selection(attention)
这就导致了没有global content selection strategy
Solution 1:Bottom-up summarization
分成两步,非常简单
这样在select的时候就避免了generate,而且这样选词,让句子比较破碎,避免了copy整段整段的句子
Solution 2: Reinforcement Learning直接optimize ROUGE-L
单纯用RL,可以获得higher ROUGE score,却只能获得lower human judgement score
但如果我们把两者结合,就可以比较好的结果
对话和别的很不同
因为很难,所以一般不会自由组织neural network,而是会用pre-define templates/从一大堆responses中,retrieve an appropriate response
irrelevant response
Optimize for Maximum Mutual Information(MMI) between input S and response T
log
p
(
S
,
T
)
p
(
S
)
p
(
T
)
\log{\frac{p(S,T)}{p(S)p(T)}}
logp(S)p(T)p(S,T)
T
^
=
a
r
g
m
a
x
T
{
log
p
(
T
∣
S
)
−
log
p
(
T
)
}
\hat{T}=argmax_{T}\{\log{p(T|S)-\log{p(T)\}}}
T^=argmaxT{logp(T∣S)−logp(T)}
要在正确输入T的情况下才能得到output S,但是这个input T也是有个prob distribution限制的,如果prob太高,也是会有Penalty
genericness/boring response
repetition response
根据一张图/a brief prompt(提示)来写story,或者直接续写故事
在COCO dataset上训练而得,将image转变为sentence encoding;然后再训练另一个language Model,把sentence encoding转变为某种风格的output
但现在还是有问题,就是会有很多环境描写,但是没有实际的剧情推进
BLEU,ROUGE,METEOR,F1这些来评判翻译结果
但是not ideal for machine translation,对于summarization的表现更糟,对于dialogue的还要再糟
perplexity
只能告诉你how powerful your LM,但是不能告诉你generation的好坏。
比如你的decoding很糟糕,但是perplexity并不能帮你识别出来
word vector based metrics
计算word vector’s similarity或者average the sentence’s word vectors
不要求只有一模一样的词我们才需要,实际上,只要similarity够,我们就认为这个generation还过得去
define more focused automatic metric,让我们可以更去关注generated text的某些方面,比如:
一些建议
he,she这些词,到底指代的是哪个entity(实体),找到他们间的对应关系
但是要注意有一种情况,比如A和B,那么后面会用they来同时指代他们两个
有的时候:He is the smartest kid in his class.
有的system会认为smartest kid是指代he,他们之间有link;有的则不会
可以直接用NLP system直接来preprocess,找这些pronouns
但还是会有一些问题
SolutIon:Train classifiers to pick things are mentioned and not
这个东西实在cluster里面做的,所以即使有分的不好的或者分错的,也不要紧
在2016之前,似乎得走pipeline的方式,将data分五步逐步过滤出最后的noun。
后来训练出了end-to-end coreference system
一些词没有independent reference,或者说光看当前句子没法知道它指代的是谁,必须要结合前文
但有的就不会
anaphora是找代词之前的那个指代实体,但是cataphora是找代词之后的指代实体
很多不同的方法:MUC,CEAF,LEA.B-CUBED,BLANC
start at random(don’t know where to start),但其实是有pre-trained word vector的
当训练完达成一个目标时,我们需要restart at the beginning to achieve 下一个task
NLP needs many types of reasoning:logcial,linguistic,emotional,visual
还是需要supvision的,因为没有human language judgement,computer能通过算法实现一些目标,但是绝对实现不了一些目标
如何在同一个框架内express many NLP tasks?
如果你question answering想要预测下一个词回答什么,那么也是一个LM
至于Dialogue,现在没有比较好的dataset,所以Dialogue一般在做one-step dialogue,即在做named entity tag标注
所以最终,我们还是把question answering作为主要解决的问题
这边的question answering是answer is in the question的那种
所使用的数据
通常情况下我们认为训练multi-task时,当你训练完第一个task再去训练第二task时,Model会‘忘记’第一个task,但实际上并没有,就像你学一门新语言,你不会replace all your old languages
Fully Joint
take a mini batch from the different tasks,we train on that mini batch
和mini batch差不多,只不过一次同时在几个上训练,几个有不同的task
Anti-curriculum learning
先从最简单的开始,然后一步步变难;但这里要反过来,先训练最难的,然后一步步变简单
intuitive:训练最难的会陷入local optimal(局部最优),这个时候训练simple tasks,就可以生成很多没见过的word,让task变得更general
close the gap:
我们训练10个separate models和1个Multi-task model,对模型进行相同调整,会发现他们的performance效果改进不一样,导致了模型结果之间出现了gap
但有的时候,大家都变好了,只不过有的变得更好;更多时候是大多数模型都变坏了
pre-train的优势
拿一个没有见过的dataset来训练两个model:一个是pre-trained model,一个是结构和pre-trained 完全一样但是没有train过(参数全部random initialize的)
会发现pre-trained的最后效果更好
它算是transfer learning的一种简单形式,就有不同的distribution of words
这里是用来额Amazon和Yelp两个不同的dataset来训练的
The question pointer makes it possible to handle with alternations of the quetion without any additional fine-tuning
比如把labels positive变为happy(supportive),或者把negative变为sad(unsupportive),即提问的时候换个词,但方向不变
有这个想法,实际测试了也有用,但是实际上并没有相关的dataset可以用来train
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。