前言
今天,新加坡袁粒博士介绍了基于Tokens to Token 方法的Vision Transformer。
作为一个神经网络的小白,虽然听不懂,不过笔记还是要整理一下的。
self-attention
最早用于自然语言处理中,如句子的翻译。这里self指的是:建立同一个句子中不同词语之间的attention。如下图中,句子中的不同词之间建立不同程度的attention。
self-attention in Transformer
下图是单个self-attention的结构。
X:句子
n:句子中的n个词
d:dimension
Q:query
K:key
V:value
Q、K、V的解释: 想在京东买一件女式的红色大衣,
Q:输入的查询词:“女式”、“红色”、“大衣”;K:搜索引擎根据输入Q提供K(颜色、种类等),根据Q与K的相似程度匹配到最终搜索到的商品V。
对上图的解释:
Q与K进行MatMul(矩阵点乘),计算Q与K之间的attention(这里是不是可以理解成相似度、关联度)。
(在矩阵计算中,点积是计算两个矩阵相似度的方法之一)
Scale: 放缩
SoftMax:由于将Mask的输入视为概率,这里经过SoftMax保证每一行求和的概率为1。
将self-attention应用到Transformer时,==进行Multi-head attention,也就是多个self-attention的结构。==如下图所示。
A very good tutorial about self attention:https://peltarion.com/blog/data-science/self-attention-video
Transformer对图像的处理:VIT(Vision Transformer)
transformer被创新性地用于图像的分类。即:将图片视为句子,图片中的不同分块(patch)当成不同的单词,将所有patch送入Transformer encoder 。
然而直接的VIT出现了两个问题:
1、不能 model local structure iinformation(lines、texture、edges) among neighboring pixels(在低维没有得到局部结构信息)
2、 the redundant attention backbone design of ViT leads to limited feature richness in fixed computation budgets and limited training samples.(高维中有些图像全黑或全白,失去特征信息)
解决方法:
1、 对于第一个问题,袁粒博士采取了T2T(Tokens to Token)方法,将相邻的Tokens 聚集成一个Token,这样可以完成model local structure iinformation,且缩短了Tokens的长度。
2、对于第二个问题,进行了backbone的重新设计,袁粒博士尝试了Deep-narrow、dense connection、SE block、ResNeXt、Ghost等不同结构,发现Deep-narrow有效。(没太听懂)
最终改进VIT结构得到的T2T-VIT方法比ResNet精度更高。
总结
听完袁粒博士的报告,最大的感触是他提出T2T-VIT(Tokens to Token Vision Transformer)的探索过程。
1、VIT应用在ImageNet数据集上出现了问题,精度没有ResNet高,这是全球公布的结果。
2、袁粒博士对这样的现象采取了可视化的方法寻找问题所在。他将VIT、ResNet的每层网络得到的结果分别变成图像, 从而找到了VIT在低维没有得到局部结构信息、高维中有些图像全黑或全白,失去特征信息的两个问题。
3、针对这样的两个问题,他分别针对性地尝试多种解决方法,改进了VIT结构,并提出了T2T-VIT,效果要比ResNet好。
这样的探索过程非常值得我去学习。
一些其他的
如果没有必要,不要增加额外的参数和计算量。
Deep learning :变成了资源问题,要消耗大量的计算资源。
视觉图像和自然语言是可以融合的(是不是说本质上可以把它们当同一种信息,采用同样神经网络结构处理?)