虫洞

  • 6

    获得赞
  • 2

    发布的文章
  • 0

    答辩的项目

视频生成标题的基本算法

CNN RNN LSTM Attention

最后更新 2020-05-08 17:36 阅读 11924

最后更新 2020-05-08 17:36

阅读 11924

CNN RNN LSTM Attention

      在较长的一段时间里,计算机视觉和自然语言处理是两个独立的方向。视频生成标题、多模态搜索等技术的出现,在两个领域之间建立了桥梁。本文通过视频生成标题中最基础的深度学习算法来对深度学习中常用的方法和概念做一个串联。

  •  RNN:循环神经网络,在普通的感知机的基础上加入隐藏状态,用于捕捉和记忆时序信息,优化时梯度沿时间反向传播  假设(t+1)时间步输入X:(batch_size, feature_dim), 时间步t的隐藏状态H(t):(batch_size,hidden_size),则状态转移方程为:H(t+1) =  X*h1 + H(t)*h2 + b , 其中h1, h2, b为网络参数,h1:(feature_dim,hidden_size),h2:(hidden_size,hidden_size), b:(hidden_size,)
  • GRU与LSTM:RNN的改进,普通RNN在通过时间反向传播计算梯度时存在的连乘机制,时间步较大的时候,当这些数值小于1,会引发梯度衰减,数值大于1,则会引发梯度爆炸,从而难以得到局部最优解;梯度爆炸可以通过梯度裁剪(设置一定的阈值)来解决,但应对梯度衰减显然不能这样做。GRU和LSTM打破这种连乘机制,有效避免了梯度下降和衰减的问题。当然,GRU和LSTM的局限性在于只能解决层内的梯度衰减与爆炸,但有多层循环神经网络时,无法解决层间的梯度衰减与梯度爆炸
  • 词向量与词嵌入:词向量是固定长度的表征词属性或特征的向量,词嵌入即将每个词映射到一个固定长度的向量,词嵌入层可与网络参数一起学习,也可使用在某一语料库上预训练的词向量
  • encoder—decoder:基于循环神经网络的encoder-decoder使得机器翻译的效果大幅提升。其基本思路为:被翻译语句输入到第一个循环神经网络中(encoder)进行编码,得到该句的特征向量,再由第二个循环神经网络(decoder)进行解码,生成语句。每一步由被翻译语句的特征向量和上一个词的词向量作为输入来生成下一个词,直到生成的词为<eos>为止,生成第一个词时,“上一步”的词视为<bos>,循环神经网络的每一步输出经过一个全连接层得到每个词的预测概率,训练时最大化生成目标句的概率。seq2seq.png
  • 注意力机制:前面介绍的编码器-解码器直接采用编码器最后一步的输出作为背景变量,但显然这样会遗漏部分信息,注意力机制模仿人的注意力特性,对编码器不同时间步的输出进行加权计算,得到背景变量。每一时间步的权值解码器当前时间步的状态等变量经过注意力网络计算得到,注意力网络参数随其它参数一起训练
  • 使用CNN进行图像分类:卷积神经网络在图像分类上取得巨大的成功。Alexnet、Googlenet、VGG、resnet等网络结构先后横空出世,性能不断提升。这些网络大多先由一个feature层来提取图像特征,再经过一个classifier进行图像类别概率预测,也有的采用global-pooling
  • 视频生成标题与机器翻译的共同点在于都是由序列到序列的变换,因此可考虑采用RNN和encoder-decoder进行序列建模,RNN使用GRU或LSTM防止梯度爆炸和衰减。直接将视频帧作为循环神经网络的输入显然不可取,我们可以采用一个在大数据集预训练的用于图像分类的CNN,移除它的classifier,将图像的帧输入该CNN即可得到各帧的特征向量,视作图像特征的表征(当然这个向量到底在表示什么我们也无从得知),然后采取与机器翻译相同的步骤训练网络和生成标题。通常为了加快训练,会冻结CNN的参数,只训练编码器-解码器、注意力网络和词嵌入层。

     本文介绍的仅仅是最基本的video caption的算法,虽然出具成效但也不够完善,基于CNN和RNN,还有诸多的算法改进与创新来提升视频生成标题的性能。

图片来自:https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter10_natural-language-processing/10.9_seq2seq

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://flyai.com/article/440
讨论
500字
表情
发送
删除确认
是否删除该条评论?
取消 删除