内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。
基础模型
翻译模型:输入一个法语句子“Jane visite l’Afrique en septembre” ,经模型转换后输出对应的英语句子“Jane is visiting Africa in September.” 。分别用 x < 1 > x^{<1>} x<1> 、 x < 2 > x^{<2>} x<2> 、 x < 3 > x^{<3>} x<3> 、 x < 4 > x^{<4>} x<4> 、 x < 5 > x^{<5>} x<5> 表示输入序列的各个元素(单词),用 y < 1 > y^{<1>} y<1> 、 y < 2 > y^{<2>} y<2> 、 y < 3 > y^{<3>} y<3> 、 y < 4 > y^{<4>} y<4> 、 y < 5 > y^{<5>} y<5> 、 y < 6 > y^{<6>} y<6> 表示输出序列的各个元素。
seq2seq模型由编码器和解码器组成:
- 编码器:左侧黑色部分,由RNN构成,RNN单元可以是GRU,也可以是LSTM。初始隐藏状态为 a < 0 > a^{<0>} a<0> ,依次接收输入序列元素 x < 1 > x^{<1>} x<1> 、 x < T x > x^{<T_x>} x<Tx> ( T x T_x Tx 为输入序列长度),对输入序列进行编码,将序列信息编码到隐藏状态中。
- 解码器:右侧蓝色部分,基于编码器的输出,逐步生成输出序列 y < 1 > y^{<1>} y<1> 、 y < 2 > y^{<2>} y<2> 等,生成过程中各时间步之间存在依赖关系。
图像描述模型:输入的图像是一张猫坐在椅子上的图片,模型要生成描述这张图片内容的文本,如“A cat sitting on a chair”。
CNN部分,初始的卷积层使用大小为 11 × 11 11\times11 11×11,步长(s)为4的卷积核,输出特征图大小为 55 × 55 × 96 55\times55\times96 55×55×96。接着进行最大池化操作,池化核大小为 3 × 3 3\times3 3×3,步长为2,输出特征图变为 27 × 27 × 96 27\times27\times96 27×27×96。后续又经过多个卷积层和最大池化层,如 5 × 5 5\times5 5×5(same填充)的卷积层、 3 × 3 3\times3 3×3(步长为2)的最大池化层等,特征图尺寸和通道数不断变化,最终得到大小为 6 × 6 × 256 6\times6\times256 6×6×256的特征图。再经过进一步处理,将特征图展开为一维向量,维度从 6 × 6 × 256 6\times6\times256 6×6×256(即9216)经过全连接层变换到4096,再经过一次全连接层,到4096,最后通过接入RNN,而不是softmax层。
RNN部分,CNN处理后的信息输入到RNN中,RNN逐步生成描述文本的各个单词,如 y < 1 > y^{<1>} y<1>、 y < 2 > y^{<2>} y<2> 、 y < 3 > y^{<3>} y<3> 、 y < 4 > y^{<4>} y<4> 、 y < 5 > y^{<5>} y<5> 、 y < 6 > y^{<6>} y<6> ,最终形成完整的图像描述语句“A cat sitting on a chair” 。
选择最可能的句子
语言模型旨在计算一个句子出现的概率 P ( y < 1 > , … , y < T y > ) P(y^{<1>}, \ldots, y^{<T_y>}) P(y<1>,…,y<Ty>) 。输入初始隐藏状态 a < 0 > a^{<0>} a<0> ,接收输入序列 x < 1 > , x < 2 > , … , x < T x > x^{<1>}, x^{<2>}, \ldots, x^{<T_x>} x<1>,x<2>,…,x<Tx> ,通过一系列处理逐步输出预测的单词 y ^ < 1 > , y ^ < 2 > , … , y ^ < T y > \hat{y}^{<1>}, \hat{y}^{<2>}, \ldots, \hat{y}^{<T_y>} y^