1、精密输入
输入是一个向量,输出表里或类
输入是一组向量(变化的长度),输出表里或类???
例子1 句子生成
独热编码,不能包含语义信息
词嵌入,每个词是一个词向量
例子2 声音信号
取一段范围,叫做window,作为frame,25ms,有各式各样的算法来描述
向右移动10ms,1s有100个frames
例子3 图
分子用独热编码表示
2、输出是什么?
- 每一个向量输出一个标签:词性标注、语音识别、购物与否
- 整个序列输出一个标签:情感分析、分子性质
- 机器自己决定输出是什么 sep2seq:语音辨识
3、Sequence labeling
network:对于每个词的输出是一样的,无法理解上下文,两个saw一个是动词,一个是名词
所以应该怎样解决?让它考虑上下文的信息,即开一个window
进一步的问题是如何考虑整个句子,这里存在问题就是window开大一点就可以吗?不行,因为每个句子的长度不同,那这个window的大小就不确定,这需要很大的运算量
考虑自注意机制,自注意机制输入几个向量就输出几个结果,这个输出是考虑了整个句子得来的,自注意机制可以有多层,FC和自注意层交替使用
4、自注意机制
自注意的每个输出都考虑了整个句子
如何确定,b1和a4之间的α值呢?(有多相关)
有多种多样的方法可以用来计算α值
dot-product:向量*Wq 得到 q,q*k得到 α值
如何计算的?
第一个图:被查询的用了wq,得到q1,q1和后面的k相乘,得到α12 α13 α14
第二个图:补充了自己查询这一步,计算了k1=wk*a1,得到k1,k1 * q1 得到 α11
接着,把这一排α进行soft-max,得到的 α’ 表示了a1和其他词的相关性
基于注意力分数抽取信息,加入v,注意力分数*v,再求和,得到b1
最后产生b1~b4,并行计算
5、矩阵角度理解自注意机制的运作
流程整理:
6、多头自注意机制是怎么回事?
7、位置信息-position encoding,人设的
8、transformer的应用,除了自注意机制外:
语音识别:这里要做改动,因为注意力矩阵会变得非常大,难以计算,就可以使用截断注意力机制
影像:5*10*3
9、与cnn有什么不同?
cnn是一种特殊化的self-attention
在训练资料多的时候,self-attention可以从大量资料获得信息,而cnn有所限制
10、与rnn有什么不同?
rnn:可以单向也可以双向,不能平行处理,又先后运算顺序
self-attention:可以并行运算
11、for graph
有相连的边才需要计算注意力分数