其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。
Attention注意力,起源于Human visual system(HVS),个人定义的话,应该类似于 外界给一个刺激Stimuli,然后HVS会第一时间产生对应的 saliency map,注意力对应的应该就是这个显著性区域。
这其中就涉及很多 bottom-up 及 top-down 的 physiological 原理~总的来说,就是 区域权值学习 问题:
1、Hard-attention,就是0/1问题,哪些区域是被 attentioned,哪些区域不关注
2. Soft-attention,[0,1]间连续分布问题,每个区域被关注的程度高低,用0~1的score表示
Self-attention自注意力,就是 feature map 间的自主学习,分配权重(可以是 spatial,可以是 temporal,也可以是 channel间)
[1] Non-local NN, CVPR2018
FAIR的杰作,主要 inspired by 传统方法用non-local similarity来做图像 denoise
主要思想也很简单,CNN中的 convolution单元每次只关注邻域 kernel size 的区域,就算后期感受野越来越大,终究还是局部区域的运算,这样就忽略了全局其他片区(比如很远的像素)对当前区域的贡献。
所以 non-local blocks 要做的是,捕获这种 long-range 关系:对于2D图像,就是图像中任何像素对当前像素的关系权值;对于3D视频,就是所有帧中的所有像素,对当前帧的像素的关系权值。
网络框架图也是简单粗暴:
Non-local block[1]
文中有谈及多种实现方式,在这里简单说说在DL框架中最好实现的 Matmul 方式: