• 8月27日计算机视觉理论学习笔记——图说



    前言

    本文为8月27日计算机视觉理论学习笔记——图说,分为三个章节:

    • RNN;
    • LSTM;
    • 图说模型 Image Captioning。

    一、RNN

    • 单层神经网络在时间上的扩展;

    1

    • t-1 时刻的隐层状态(hidden state)会参与 t 时刻输出的计算;
    • 严重的梯度消失。

    2

    • BPTT 算法: 针对循环层的训练算法,包含三个步骤:
      1. 前向计算每个神经元的输出值;
      2. 反向计算每个神经元的误差项值 δ j \delta_j δj,它是误差函数 E 对神经元 j 的加权输入的偏导数 n e t j net_j netj
      3. 计算每个权重的梯度。

    二、LSTM

    1、数学模型

    3

    • 3个输入:

      1. 前一时刻的隐含状态 h t − 1 h_{t-1} ht1
      2. 前一时刻的记忆状态 c t − 1 c_{t-1} ct1
      3. 当前时刻的输入 v t v_t vt
    • 2个输出:

      1. 当前时刻的隐含状态 h t h_t ht
      2. 当前时刻的记忆状态 c t c_t ct

    4

    三、图说模型 Image Captioning

    为图片生成描述语言:

    • 输入:图片;
    • 输出:客观描述图片内容的句子。

    理解模式:
    5

    1、State-of-the-art 模型组成

    • DNN 框架:
      • CNN:图片理解 VGG、ResNet、GoogLeNet;
      • RNN:语言理解及生成 LSTM、GRU;
      • 特殊功能模块:Attention。

    2、NIC 模型

    利用 encoder-decoder 框架:

    1. 首先利用 CNN 作为 encoder,将 Softmax 之前的一层固定维数的向量作为图像特征;
    2. 再使用 LSTM 作为 decoder,其中图像特征输入 decoder;
    3. 使用最大化对数似然来训练。

    6

    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个得分最高的作为当前序列;
    • 不断重复,直到遇到结束符为止。

    7

    4、注意力机制

    固定的中间语义表示 C C C 换成了根据当前输出单词来调整成加入注意力模型的变化的 C i C_i Ci

    8
    9

    • 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 不一样。

    10

    5、Show,attend and tell(SAT)模型

    • Encoder: 使用 CNN 提取 L个 D 维的特征 vector 作为注释向量,每一个都对应图像的一个区域;
    • Decoder: 用 LSTM 生成 caption,C 是句子长度,K 是词表大小,y 是各个词的 one-hot 编码所构成的集合。

    11

    • 注意机制模块 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,ht1)=Watt tanh(Waa+Whht1+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,ht1)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=αta

  • 相关阅读:
    浅谈Array --JavaScript内置对象
    【华为OD机试真题 python】工号不够用了怎么办? 【2022 Q4 | 100分】
    eclipse 源代码文件报错处理
    2023 年解锁物联网端点安全
    你不知道的Linux shell操作
    Hexo安装配置
    Netty7-Netty核心模块
    经典背包系列问题
    我们如何利用 0 美元营销将 UX/UI 产品发展到 320k 用户
    STM32液晶显示中英文
  • 原文地址:https://blog.csdn.net/Ashen_0nee/article/details/126556274