Attention、Self-Attention 与 Multi-Head Attention
Corpus语料库与DB数据库
World Knowledge世界常识库:OALD牛津高阶/Synonyms/Phrases/…, 新华字典/成语词典/辞海, 行业词典,大英百科,Wikipedia,…
全局信息: Corpus语料库、行业通用数据库(例如Springer/Google Scholar/Academia/…学术数据库)/领域库、用户自定义库;
语义信息:输入句子的历史记录,有许多条句子记录;
句子信息:当前动态输入句子;
本句上下文信息:提取 当前输入词 的 词向量 时用到的长度设为 N 的滑动窗口长度范围的字符序列信息
自动断句:用户输入的每个字符/词,取前文N-Gram长度,计算出是断句词的概率:
例如 :“。”(句号),“?”(问号),[正式,结束],[好了,吗],…,
而这些是可以通过历史交互数据,与Corpus/DB进行统计学习训练得到的(每个词是断句词的统计概率).
Attention、 Self-Attention 与 Multi-Head Attention:
Attention = f(Q, (K, V))
Attention 的 (K, V)是预训练时,
使用 Corpus语料库 或 World Knowledge世界常识库 统计训练得到。
Vocabulary是静态的,维度是定长的,Vocabulary尽可能收集到完整的样本空间。
Attention是词向量 与 Vocabulary 的每一个词计算Similarity相似度
Self-Attention 的 K, V 是预测时,使用 当前输入句子,以及输入句子的历史记录,动态训练的;
Vocabulary是动态的,维度变长的,Vocabulary尽可能收集到当前会话或全部会话的 输入句子历史记录
有一个处理Tips:
正像用 定长的滑动窗口 将 变长的动态输入句子 进行采样。
可将变长的Vocabulary维度,通过padding组织成定长的维度。
Self-Attention是当前输入句子的每一个词,与当前输入句子(Self)的每一个词计算Similarity
Multi-Head Attention:
Multi-Head Attention 原理是:
使用 H 组不同的 Attention Parameter注意力参数(Wq, Wk, Wv),
配置 H 组相同的 Attention Operator注意力算子结构f(Q, (K, V)),
并行提取并综合这 H 组不同感受野范围的注意力信息。
不同的 Attention Parameter提取不同范围的全连接注意力,
并行计算,并综合这 H 组不同的局部感受野的Attention,最终组成一个总体Attention。
这样一来,当前输入的每一个单词,与 当前输入句子 和 历史输入句子 的 每一个单词 都会有一个Attention权重,
这也是 Self-Attention 名字的来源,即 Attention 的计算用的是 Source 和 Source 本身(即|TermSeq|• |TermSeq|),
通俗讲,就是 Q、K、V 都来源于输入 X 本身的词序列(Term Sequence)。
因此,无论当前输入句子字符序列多长,都可以很好的提取句子信息,
而且是并行多种提取: 句子特征(本句),语义信息(跨多句),…
这很好的解决了 RNN 序列长距离依赖的问题。
而且对于一个句子而言,每个单词的计算是可以并行处理的。
不同的 Attention Parameter提取不同范围的全连接注意力, 可以类比:
N-Gram: 使用多组不同的 N,配置 N 组相同的N-Gram Vectorizer; 并行提取并综合。
例如使用N=[1,2,3,4,5,6,7,8], 配置8组相同的N-Gram Vectorizer,
并行提取滑动窗口长度为1~8的共现词向量;并综合之。
综合这8组不同长度的滑动窗口提取到的信息,作为总体的注意力信息。
CNN: 使用 K 组不同得 Convolution Step卷积步长, 配置 K 组相同的CNN Operator; 并行卷积并综合。
例如使用 Step=[2,3,5,7,11,13,17,19], 配置8组相同的CNN Model,并行8组CNN卷积并综合。

浙公网安备 33010602011771号