NLP-Notes
1.introduction
深度学习与人类语言处理
text vs speech 5:5
models
6中类型
- 语音 > model > 文字 语音辨识
- 文字 > model > 语音 语音合成
- 语音 > model > 语音
- 文字 > model > 文字
- 语音 > model > class
- 文字 > model > class
model = deep network
applications
语音辨识Automatic speech recognition(ASR)
recognizer不是用于translation上seq2seq的model
语音合成 : synthesizer输入文字输出声音信号。TTS is end-to-end
speech separation输入声音信号输出声音信号;voice conversion变声器
speaker recognition; keyword spotting不仅要高正确率而且模型要足够小。
文字到文字应用
- text generation
- autoregressive:从左到右生成句子
- non-autoregressive:生成关键词,在生成与关键词联系的其他词语,从而生成一个句子。
- summarization
- translation
- chat-bot
- question answering
- 句法分析
- text generation
Meta learning
Meta learning = learn to learn从unpaired的数据上进行学习
类似于图像风格迁移,用于summarization, voice conversion,unsupervised translation,speech recognition
adversarial attack
speech
- anti-spoofing system
exlpainable AI
2. Speech Recognition
输入的声音speech:由一串的向量组成,长度T,维度d
输出文字:由一串的token组成,长度N,V个不同的token,通常T>N
token
- phoneme:发音基本单位
在语音辨识上,token常常作为发音的基本单位,每个符号对饮到一种发音,而lexicon会记录单词到发音的隐射。
- grapheme:书写的基本单位
在英文中,书写的基本单位就是字母,空白以及标点符号。在中文中,书写的基本单位便是字
- word:单词,词汇
词汇作为语音辨识的单位不是很理想因为某些语言的词汇量是很大的。
morepheme: 能够表达含义的最小单位(<word,>grapheme)
比如:unbreakable-> un , break , able
如何获取?语言学或者统计学
Bytes: 使用字节进行描述,language independent
语音领域的重要会议:INTERSPEECH , ICASSP , ASRU
其中较多paper使用grapheme。
application
speech>语音辨识>word embedding
speech>语音辨识+translation
speech>语音辨识+意图分类(对话系统)
speech>语音辨识+solt filling(时间地点提取)
Acoustic feature
将一小范围内(25ms)的的声音讯号描述为向量,然后往右移(移动距离不是25ms而是小于25ms的比如10ms)继续将其转为向量。
- sample points
- 39-dim MFCC
- 80-dim filter bank output
English corpora语音辨识系统的语料库(标注的)
TIMIT , WSJ , Switchboard , Librispeech , fisher
two points of views
seq2seq
常用模型:
- Listen, Atten and Spell(LAS)
- Connectionist Tmeporal Classification(CTC)
- RNN Transducer (RNN-T)
- Neural Transducer
- Monotonic Chunkwise Attention(MoChA)
HMM
LAS
listen就是encoder,attend便是attention,spell就是decoder
listen
输入acoustic feature,输出高层表示。
encoder可以使用RNN,1-D CNN,self-attention
对输入做down sampling比如pyramid RNN, Polling over time,减少运算量。Time-delay DNN, Truncated self-attention 只对一个范围内的输入进行attend
attend
- dot product attention:z,h分别经过线性变换后再做点乘得到
- addictive attentionz,h分别经过线性变换后相加后经过线性变换得到
- 最后使用对h进行加权求和得到
spell
- 将 作为RNN的输入得到在token上的分布,维度为tokens的大小
- 在使用进行attention得到,将其作为输入得到分布。继续下去最后得到<eos>结束</eos>
- Beam search 通常被使用在spell中,每次从得到的分布中选择beam size个最好的token.最后结果将保留beam size大小的结果,选择概率最大的进行输出。
Training
告诉机器输入一段声音讯号输出什么文字
标签c为1-hot vector,目标是是分布和c的cross entropy越近越好
接下来重复刚刚的步骤使产生下一个与标签的相同token的概率越大越好。在语音识别有不一样的地方,原来我们是选择分布中概率最大的字母作为下一个的输入,而实际上选择的是正确答案作为下一个decoder的输入。这就是Teacher Forcing.
为什么?前面输出有可能是错的,在训练下一个时要告诉decoder正确答案,而不会导致下个decoder的训练白费。
back to attention
在语音辨识上,在翻译当前的语音讯号,不需要attend到其他的地方
location-ware attention
在产生下一个时考虑之前的历史,使得attend能够向前移.
LAS可以不加Language model也可以取得不错效果。
LAS可用于将方言语音直接翻译成中文。
LAS的限制
- LAS输出第一个token是听了整个输入的
- 用户希望在线的语音辨识,即边听边辨识的。
CTC
connectionist temporal classification,可以做到online 的语音辨识
输入T个acoustic feature,输出T个token
输出的token包含,表示没有东西,在输出中可以将其去除
training,如何将加入到label中,穷举所有的情况进行训练
decoder只attend一个vector,每个输出的相互独立的。所以有可能重复产生相同的token
RNN-T
RNN Transducer
RNA: 将原来CTC的linear classifier改成LSTM.
如何解决一个发音对应多个token
RNN_T:
则表示已经翻译完,给下一个frame.同样存在将放进label中的问题,所以训练的时候考虑所有的情况。
3.Bert and its family
what is pre-train model
- 能够将每个token表示为embedding vector
- 不同句子的相同token得到相同的embedding ,则该pretrain model不是contextualized的。如w2v
- 不同句子的相同token得到相同的embedding ,则该pretrain model是contextualized的.如LSTM,self-attention layers
how to finetune
nlp tasks
输入
- 一个句子
- 两个句子
输出
- 一个类别class,如情感分析。[cls]的word embedding接一个classifier
- 每个token对应一个类别,如词性标注
- 从输入中提取。QA
- seq2seq model
共有2*4中输入输出的情况
how to finetune
- Adaptor。固定原来的pretrained model,加上需要训练的Adapter以及Task specific的model。finetune后的pretrained model不变,而Apt和Task specific model则更适应对应的task
- Weighted Features。将不同layer的输出进行乘上权重输入到下游任务模型,而对应的权重可以通过训练学习到。该方法也可以用于分析不同layer对不同任务的重要性。
how to pre-train
pretraining by translation.
- context vector(CoVe)。输入一种语言A到encoder,将encoder的输出decode为另一种语言。需要大量pair的data
self-supervised learning。text without annotation即使用大量未标注的文本
- predict next token 这就是我们训练LM语言模型的方法。
- LSTM如ULMFiT,self-attention如GPT。如果使用self-attention,需要约束attend的范围不让model看到next token的答案。
- Bidirectional 双向如ELMO。encode时让正向的LSTM看前面的信息,逆向的LSTM看后面的信息,然后将两者得到的embedding合并起来。但是这样还是有问题的,在encode正向时没看到后面的信息,encode逆向时没看到后面的信息,也就是两者是没有交互。
- masking input. 如bert.这样就能够利用前后的信息来预测被mask的word.,其中self-attention是没有限制的。类似的还有远古的CBOW。
- original bert。只将token盖住,比如中文的一个字
- whole world masking。将整个词汇盖住,对于中文来说,要先把word找出来
- phrase-level&Entity-level。还可以盖更长,phrase-level将盖住连续的几个词语,Entity-level先做命名实体识别ner recognition,比如人名地名组织名等,然后将ner盖住。这就是ERNIE。
- SpanBert。不要管那么多,一次盖一排token,至于多长,分别有不同概率。SBO输入左右两边的embedding和要预测的被盖住的第几个token。这个训练方法在coreference有用。
- predict next token 这就是我们训练LM语言模型的方法。
XLNet指的是transformer-XL,不是用一般的transformer,而是transformer-XL。
- 从LM的角度来看,即从predict next token来看。XLNet将token随机打乱来进行预测。
- 从bert的角度来看,只是attend一定范围的word且不给model看[Mask]的token.
bert cannot talk?
- autoregressive model从左到右产生word来产生句子。从这个角度来看,bert是不善言辞的因为其在训练的时候是看了左右两边的句子的。
- non-autoregressive model并不是从左到有产生word来产生句子的。
- MASS/BART 都是典型的seq2seq的预训练模型。
- MA***TextInfilling来进行input coruption
- UniLM既是encoder也是decoder,还是seq2seq的model。即既是bert,也是GPT,还是BART/MASS。
ELECTRA.
- prediction 比reconstruction更容易。
- 每一个output都会被predict
sentence embedding。和bert的想法相似,encode一个word时是看了它前后的words。那么encode一个sentence时就看它和哪些sentences相连。
- skip Thought。encoder吃一个句子得到embedding,decoder使用该embedding产生下一个句子。但是生成任务的计算量往往很大
- Quick Tought将两个句子分别通过encoder,得到embedding,如果这两个句子是相邻的,那么希望两者embedding越近越好
- NSP预测下一个句子任务;SOP Sentence order prediction used in ALBert
4.Coreference
指代解析
Task introduction
coref的任务主要要做到两点
- 将所有的mentions都标注出来
- mentions被聚类起来
例如:将代词和相应的entities标注起来,然后将它们进行聚类,同一类分别指代相同的对象。
Framework
supervised
- steps
- step1: mention detection
- step2: mention pair detection
- end-to-end: 两个输入都是mention并且指向同一个实体
unsupervised
使用bert 。将代名词mask,用bert进行预测除了代名词外哪些名词最有可能是mask的。但有限制,因为bert只能预测被mask的一个token。
8.作业
hw1 语音辨识
hw2 语者转换
hw3 语音分离
hw4 BERT和他的相关应用
hw4_1
part1 Natural Language Inference (NLI)
Finetune “bert-base-chinese” Model on XNLI-zh dataset
给定两个句子,判断这两个句子是entailmen(相近),contradiction(矛盾)还是neutral(中立),也是分类问题。
self-similarity
同一个word的representation在不同的句子中的两两cosine similarity,再取平均值. 如果self-similarity很高则表示这两个word representation没有较多的cotextualization。由于bert有12层,那么我们做分析的时候会对每一层都做self-similarity.
Intra-sentence similarity
表示同一个句子的不同字是否很相似。一个句子中的每个字embedding和该句子的embedding的cosine similarity的平均值。句子的embedding为该句子所有字的embedding的平均值。对bert的12层均做同样的分析
我们希望不同句子的同一个字比较不像,同一个句子的不同字比较像,那么就说明embedding有较多的context的信息。也就是低self-similarity和高Intra-sentence similaritty
Issue?
如果word space比较集中,那么高self-similarity并不能说明不同句子的同一个字是相似的,也可能是相对不像的。
- anisotropy定义word embedding的空间分布的均质性。随机采样出1000个word pair,各自算它们的similarity并取平均,作为那一层的anisotropy
Maximun explainable variance(MEV)
- 不同句子的同一个word的embedding maxtrix做svd,得到的第一个component作为该字的embedding。将最大的特征值的平方除以所有特征值平方即为WEV的值
有实验结果可以看出,层数越高,抽取不同句子的同一个word的embedding的self-similarity是越低的(在调整anisotropy)。层数越高,同一个句子的不同word的embedding之间的intra-sencetence similarity是越接近的。即高层的word embedding携带了更多的contextualization的信息。
part2 ner / chinese word segment(cws)
给一个中文句子,进行词语分割。这是一个序列标注的任务。