文章目录
前言
本文为8月27日计算机视觉理论学习笔记——图说,分为三个章节:
- RNN;
- LSTM;
- 图说模型 Image Captioning。
一、RNN
- 单层神经网络在时间上的扩展;
- t-1 时刻的隐层状态(hidden state)会参与 t 时刻输出的计算;
- 严重的梯度消失。
- BPTT 算法: 针对循环层的训练算法,包含三个步骤:
- 前向计算每个神经元的输出值;
- 反向计算每个神经元的误差项值 δ j \delta_j δj,它是误差函数 E 对神经元 j 的加权输入的偏导数 n e t j net_j netj;
- 计算每个权重的梯度。
二、LSTM
1、数学模型
-
3个输入:
- 前一时刻的隐含状态 h t − 1 h_{t-1} ht−1;
- 前一时刻的记忆状态 c t − 1 c_{t-1} ct−1;
- 当前时刻的输入 v t v_t vt。
-
2个输出:
- 当前时刻的隐含状态 h t h_t ht;
- 当前时刻的记忆状态 c t c_t ct。
三、图说模型 Image Captioning
为图片生成描述语言:
- 输入:图片;
- 输出:客观描述图片内容的句子。
理解模式:
1、State-of-the-art 模型组成
- DNN 框架:
- CNN:图片理解 VGG、ResNet、GoogLeNet;
- RNN:语言理解及生成 LSTM、GRU;
- 特殊功能模块:Attention。
2、NIC 模型
利用 encoder-decoder 框架:
- 首先利用 CNN 作为 encoder,将 Softmax 之前的一层固定维数的向量作为图像特征;
- 再使用 LSTM 作为 decoder,其中图像特征输入 decoder;
- 使用最大化对数似然来训练。
3、Beam Search
- 假设 beam size 为2,词典大小为3,内容为(a, b, c);
- 生成第1个词时,选择概率最大的2个词(a, c),则当前序列为a, c;
- 生成第2个词时,分别与词表中的所有词进行组合,得到新的6个序列 aa, ab, ac, ca, cb, cc,从中选择2个得分最高的作为当前序列;
- 不断重复,直到遇到结束符为止。
4、注意力机制
固定的中间语义表示 C C C 换成了根据当前输出单词来调整成加入注意力模型的变化的 C i C_i Ci;
- Attention-based Encoder-Decoder:
- Encoder 部分保持不变;
- Decoder 部分引入 Attention 机制,使得 C 更灵活;
- C 由 h 1 , … , h T h_1, …, h_T h1,…,hT 加权求和获得,且每个 h i h_i hi 前面的权重系数 W i W_i Wi 不一样。
5、Show,attend and tell(SAT)模型
- Encoder: 使用 CNN 提取 L个 D 维的特征 vector 作为注释向量,每一个都对应图像的一个区域;
- Decoder: 用 LSTM 生成 caption,C 是句子长度,K 是词表大小,y 是各个词的 one-hot 编码所构成的集合。
- 注意机制模块 Attention module:
- 注意权重推断:
e t = f a t t ( a , h t − 1 ) = W a t t t a n h ( W a a + W h h t − 1 + b ) a t = s o f t m a x ( e t ) e_t = f_{att}(a, h_{t-1}) = W_{att}\ tanh(W_a a + W_h h_{t-1} + b)\\ a_t = softmax(e_t) et=fatt(a,ht−1)=Watt tanh(Waa+Whht−1+b)at=softmax(et) - 14×14 特征中单个特征:
e t i = f a t t ( a i , h t − 1 ) a t i = e x p ( e t i ) ∑ k = 1 L e x p ( e t k ) e_{ti} = f_{att}(a_i, h_{t-1})\\ a_{ti} = \frac{exp(e_{ti})}{ {\textstyle \sum_{k=1}^{L}} exp(e_{tk}) } eti=fatt(ai,ht−1)ati=∑k=1Lexp(etk)exp(eti) - 特征融合(权重相加):
z ^ t = ϕ ( { a i } , { α i } ) = ∑ i L α i a i = α t ⋅ a \hat{z}_t = \phi (\{a_i\}, \{\alpha_i \}) = {\textstyle \sum_{i}^{L}} \alpha_i a_i = \alpha_t \cdot a z^t=ϕ({ai},{αi})=∑iLαiai=αt⋅a
- 注意权重推断: