循环神经网络视频学习

循环神经网络

绪论

  • 全连接网络->卷积神经网络

    • 全连接网络处理图像问题时,参数太多,容易出现过拟合现象。
    • 卷积神经网络使用“局部关联,参数共享”的方法
  • 卷积、特征图feature map、padding、深度channel以及池化概念

  • eg

    • 输入为7x7x3的图像,则卷积核的大小应为nxnx3(此处为3x3x3),即一个卷积核里面有三个矩阵,分别与输入的三个channel做运算,每一个矩阵运算得到一个结果,然后将这些结果求加和,再加上偏置项,得到feature map中的值。然后根据步长继续进行计算,最终得到完整的feature map(3x3)
    • 一个卷积核对应一个feature map,如果有m个卷积核,那么输出就会有m个feature map(3x3xm)
  • 卷积神经网络->循环神经网络

    • 传统神经网络、卷积神经网络,输入和输出之间是相互独立的
    • RNN可以更好的处理具有时序关系的任务
    • RNN通过其循环结构引入“记忆”的概念

基本组成结构

  • 基本结构

    • 传统结构对于一些问题,只能处理当前输入,不能够结合之前的输入信息进行处理,所以神经网络需要“记忆”

    • 两种输入:正常输入,记忆单元的输入;

    • 两种输出:正常输出,输出到记忆单元中;

      • U:从输入到隐藏状态的参数;W:从前一隐藏状态到下一个隐藏状态的参数;V:从隐藏状态到输出的参数;
      • \(x_t\)是时间t处的输入
      • \(h_t\)是时间t处的记忆,\(h_t = f(h_{t-1},x)\),f可以是双曲正切(tanh)等
      • \(h_t = tanh(Wh_{t-1}+Ux)\)
      • \(y_t\)是时间t时刻的输出,\(y_t = softmax(Vh_t)\)
      • 函数f被不断利用;模型所需要学习的参数是固定的;这样的话就可以避免因为输入长度的不同而训练不同的网络。
  • 深度RNN

  • 双向RNN

  • BPTT算法

    • BP算法

      • 使用sigmoid函数时,可能在链式求导中的某一项为零,则整个求导为零,出现梯度消失

    • RNN的基本公式

      • \(h_t = tanh(Wh_{t-1}+Ux)\)
      • \(y_t = softmax(Vh_t)\)
      • 所以可以在此基础上继续展开,最终得到以下公式

循环神经网络的变种

  • 传统RNN的问题

    • 当循环神经网络在时间维度上非常深的时候,会导致梯度消失或者梯度爆炸的问题

    • \(h_t = tanh(Wh_{t-1}+Ux)\) ,对其求偏导\(= tanh' * W\)

    • 梯度爆炸的改进

      • 权重衰减
      • 梯度阶段:检查误差梯度的值是否超过阈值,吐过超过了那么就截断梯度,并将梯度设置为阈值
    • 梯度消失导致的问题:长时依赖问题

      • 随着时间间隔的不断增大,RNN会丧失学习到链接如此远的信息的能力
      • 改进模型:LSTM,GRU
  • LSTM(long short-term memory长短期记忆模型)

    • LSTM拥有三个门(遗忘门,输入门,输出门)

      • 遗忘门:\(f_t = σ(W_f[h_{t-1},x_t] + b_f)\) σ为sigmoid函数
      • sigmoid层输出0-1之间的值,描述每个部分有多少量可以通过。0表示“不允许”,1表示“允许量通过”
      • 输入门:\(i_t = σ(W_i[h_{t-1},x_t] + b_i)\) $ \overline C i = tanh(W_C[h,x_t] + b_C)$
      • 首先经过Sigmoid层决定什么信息需要更新,然后通过tanh层输出备选的需要更新的内容,然后加入新的状态中;0 代表“不更新”,1 就指“完全更新”
      • 得到新的\(C_t\)\(C_t = f_t * C_{t-1} + i_t * \overline C_t\)
      • \(f_t * C_{t-1}\)忘掉不需要的记忆信息;\(i_t * \overline C_t\)加入需要更新的出入信息
      • 输出门:\(o_t = σ(W_o[h_{t-1},x_t] + b_o)\) $ h_t = o_t * tanh(C_t)$
      • 首先,通过sigmoid 来确定细胞状态的哪个部分将输出出去。然后,将细胞状态通过tanh进行处理并将它和sigmoid 门的输出相乘,最终仅仅会输出我们确定输出的那部分;0 代表“不输出”,1 就指“完全输出"
    • RNN的“记忆”在每个时间点都会被新的输入覆盖;但LSTM中“记忆”是与新的输入相加(各自乘上一定的比例),一种线性操作

    • LSTM:如果前边的输入对\(c_t\)产生了影响,那这个影响会一直存在,除非遗忘门的权重为0

  • LSTM变形

  • GRU(Gated Recurrent Unit 门控循环单元)

    • GRU只有两个门,分别为重置门和更新门

      • 重置门:控制忽略前一时刻的状态信息的程度,重置门越小说明忽略的越多
      • 更新门:控制前一时刻的状态信息被带入到当前状态中的程度,更新门值越大表示前一时刻的状态信息带入越多

拓展

  • 基于attention的RNN

    • 受到人类注意力机制的启发,根据需求将注意力集中到图像的特定部分。
    • 首先输入图像通过CNN,得到特征图(14x14x512);
    • 然后根据当前记忆学习到一个attention的权重矩阵a1(14x14),并且权重矩阵在每个channel上是共享的
    • 然后将权重矩阵a1与每一个feature map做运算,得到一个向量z1(1x512)
    • 给出一个学习信号y1
    • 经过h1可以得到新的权重矩阵a2和输出d1,通过d1确定输出文字
    • 然后权重矩阵a2与feature map运算,得到向量z2
    • 通过这种形式一直运算下去,可以得到描述这幅图片的一句话
posted @ 2020-08-20 22:30  hyzs1220  阅读(238)  评论(0编辑  收藏  举报