23 image captioning,visula question


我们将把输入的图像通过卷积神经网络,不过我们不是使用从一个图像网络模型中得到的softmax分值,而是使用末端4096维向量
在这里插入图片描述
我们将用这些向量来概述整个图像的内容。当我们讨论递归神经网络时,我们必须了解第一个初始化输入,来告诉它开始生成文字。
在这里插入图片描述
为了添加图像的信息,一种方式是用完全不同的方式整合这些信息,一个简单的方式是加入第三个权重矩阵
在这里插入图片描述
我们可以生成完整的句子了,一旦我们采样到特殊停止标记,就停止生成。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多层递归神经网络

这是一个三层循环的神经网络结构,然后把输入输入,然后在第一层递归神经网络中,产生一系列的隐藏状态,在我们运行了一层神经网络后,我们得到了所有隐藏状态序列,我们可以把这个隐藏状序列,作为第二层递归神经网络的输入序列,这样可以预测洗衣歌隐藏状态的序列。
在这里插入图片描述
一般不会用非常深的RNN模型,一般来说二三四层就已经足够了 。
在下图中当我们尝试计算梯度,反向传播在这个结构中如何进行,所以再反向传播过程中。
在这里插入图片描述
我们会得到ht的导数,以及关于ht的损失函数的导数,在反向传播通过这个过程中,我们需要计算关于h(t-1)的损失函数的导数,当我们计算反向传播时我们可以看到梯度沿着这个红线方向走 ,所以梯度会反向流过tanh门,然后会流过矩阵乘法门

在这里插入图片描述
在这里插入图片描述
递归神经网络中每一个单元每次反向传播经过一个单元时候,都要使用其中某一个W的转置,这意味着最终表达式对h0的梯度表达式将会包含许多权重矩阵因子,或许你可以不考虑权重矩阵,但如果考虑一些标量,不断将一个数值做乘法,对1-2步也许没事,但对于几百个时间步的情况,这是非常差的,如果小于1则会发生梯度消失,大于1会发生梯度爆炸。
有一种解决方法是梯度截断,如果梯度的L2范数大于某个阈值,就将它剪枝并做除法,这样梯度就有有了最大

LSTM

LSTM是长短期记忆网络,是一种更高级的递归结构LSTM用来缓解梯度消失和梯度爆炸问题,我们不是在输出想办法,而是设计了一种更好的办法来获取更好的梯度流动。
在每个时间步中利用递归关系,来更新隐藏状态,在每个时间步长中都维持两个隐藏状态,一个ht就简单叫做隐藏状态可对比常规的ht,但是lstm还有第二个向量ct,叫做单元状态,这个相当于保留在LSTM内部的隐藏状态并且不会完全暴露到外部去,我们可以看到通过这个更像公式
在这里插入图片描述
首先我们有两个输入,来计算4个门即i,f,o和g我们通过使用这些门来更新单元状态ct,然后把这些单元状态来计算下一个时间步长中的影藏状态。
在这里插入图片描述
首先输入ht和x作为输入,然后进行矩阵相乘,由此计算出可RNN下一个时刻的隐藏状态,现在LSTM的做法有点不同,我们仍拿上一时间步的隐藏状态和当前的输入堆叠在一起然后乘一个非常大的权重矩阵w,计算的到4个不同的门向量,每个门向量的大小和隐状态都一样,有时候你可能会见到不同的写法,有时候作者会为每个门都用一个相应的权重矩阵,其实本质一样,都是通过隐藏状态和当前输入来计算4个门,这四个门通常写作ifog。
这其中如果遗忘门的值是0就是忘记这个数值,如果是1就是记住这个单元状态中的值。一旦我们使用遗忘门来断开部分单元状态的值,那么我们就需要输入门,即i和g逐元素乘法。i是经过一个sigmoid函数得到的,输入门告诉我们如果i的值是1说明要保留,如果是0就不保留。现在考虑门门,因为这个是tanh函数处理后的,这些值是当前时间步中我们可能会写入到单元状态的候选值,所有值在-1和1之间,这些值是当前时间步中我们可能会写入到单元状态的候选值。
在单元状态内部我们可以保留或遗忘之前的状态,在每个时间步中,我们可以给单元状态的每个元素加上或减去最多1的值。
在这里插入图片描述
ht-1和x输入与权重矩阵相乘,得到ifog四个门,遗忘门和上一时间步的单元状态做逐元素乘法,输入门和门之门也做逐元素乘法,然后加在一起,就得到下一时间步的 ,下一时间步经过一个tanh函数的压缩,又进过输出门主元素乘法得到下一时间步的隐藏状态。


这些门是从权重矩阵不同部分来的,如果x和h的维度都是h,那么堆在一起尺寸就是2 h的向量,现在我们权重矩阵的维度大小就是4h*2h,你可以认为权重矩阵有4块不同的内容,权重矩阵的每块内容都分别来计算其中一个门
在这里插入图片描述


LSTM-反向传播

那么在反向传播中发生了什么,我们通过传输进来的单元,获得上游梯度,然后我们通过加法运算,向后进行反向传播,当我们通过这个单元状态向后反向传播时,对于上游梯度唯一发生的事情,就是最后它会通过遗忘门相乘后的元素,这确实比原始神经网络好很多
在这里插入图片描述
*原因1:这里是遗忘门,是矩阵元素相乘,而不是矩阵相乘,矩阵元素相乘会比矩阵相乘计算量好一点。
原因2:矩阵元素相乘会在不同时间点乘一个不同的遗忘门
*

其他rnn

在这里插入图片描述
GRU是门控循环单元,GRU单元使用元素乘法门,和加法一起相互作用,以避免梯度消失的问题

发布了284 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39289876/article/details/104364764