NOTES

基于生成对抗网络的网页显著度图预测

  • 使用 GAN(生成对抗网络)生成给定网页的显著度图,从而预测网页的哪些区域更会受到用户的关注。

  • 把网页快照和显著度图当作不同域别的图像,并使用 GAN 进行转换。设计多种不同结构的网络模型,加入自注意力机制与谱归一化,引入网页特征用于指导显著度图的生成,同时试用多种损失函数,并使用 TTUR 的方式对网络进行训练。

  • 使用的网络结构:

    • resnet

    • u-net

    • 预训练的 VGG 网络提取特征(不对 VGG 进行微调/微调最后几层)

    • 加入 attention

  • 使用的网络结构:

    • Patch GAN

    • hinge

    • pixle wise 的 cross entropy

    • 风格损失的

  • 效果:

    • 超过已有的用来预测 webpage saliency 的方法,但是超出的不是太多

    • 和在图像上的方法差不多(有的指标相对较高,有的指标相对较低)

  • 指标

细粒度的,跨域别的根据文本描述生成图像的研究

  • 改进现有工作的不足: 只能生成同一个域别的、粗粒度的图像。

  • 设计网络结构, 并获取更为细粒度的文本描述,然后据此生成与给定的文本描述内容相关的、更加细粒度的图像;设计图像的生成方式,使得单一的一个模型能够同时生成不同域别的图像。

  • 前两篇工作都是自己想一个 idea,然后实现,基本可以说是 creative 的工作。而这项工作是一个 incremental 的工作,目的是为了改进已有的工作。想法是受当时一篇paper的启发:spectral normalization ,它用一个单一的网络结构生成了

  • 现在用于这项工作的数据集有3个:flower、bird、coco。前两个是基本的数据集,后一个难度较大,所以一般都是在前两个数据集上训练模型,到最后在coco数据集上跑一下模型,验证模型比之前的模型好。

  • 第一部分工作

    但是前两个数据集的文本描述都是:this flower,this bird,没有引入类别的信息,比如玫瑰,向日葵等细粒度的类别。所以所做工作的第一部分就是细粒度的生成图像。

    • 所做工作

    • 对数据集做了一些处理,使得每个文本描述中都有类别信息。

    • 使用 condition batch normalization 来引入细粒度的类别信息;同时,把 text 编码成 embedding 后 和 随机变量 在 channel dimension 上 concat在一起,引入文本的语义信息。

    • 使用 spectral normalization

    • 改进网络结构,resnet / U-Net / U-Net 形式的 resnet

  • 第二部分工作

    • 现有的方法都是一个模型只能生成一个 domain 的图像。

    • 跨域别的生成:一个模型能够生成多种不同域的图像,即使用一个单一的网络结构同时生成 flower 和 bird。

    • 当时出了一个类似的工作,叫做 StarGAN,但是那个不是真正的跨域别的生成,只是改变了一个属性。

  • related

基于对偶学习的图片和文本描述的相互转换

  • 基于对偶学习的思想,以无监督的方式同时进行图像描述(Image Caption)和图像生成(Text to Image)任务。

  • 把图像描述作为主任务(Primal Task),图像生成作为对偶任务(Dual Task); 对于主任务, 使用 CNN + LSTM + Attention,生成图像的文本描述,并使用强化学习中的 REINFORCE 算法训练网络; 对于对偶任务, 把主任务生成的图像的文本描述作为生成器的输入,使用 GAN 生成与文本描述语义相关的图片。

  • 因为要计算 BLEU 等指标,所以必须要把生成的字符 decode 成对应的 word,这个操作是不可导的,所以需要用到 PG 算法来进行训练。这里用到的是 REINFOR 算法。

  • 独立构造数据集,并训练了一个 language model,用来计算文本是否是由人类的置信度。

基于生成对抗网络的图像描述生成

  • Generator

    • 目标:

    • 能够尽可能的描述图片内容。

    • 生成的 caption 尽量的像人类书写的。

    • 目标函数包括 2 部分(两者的加权和):

    • 生成的 caption 和 真实的 caption 的 BLEU 值。

    • Discriminator 给出的置信度(文本是否是人类书写)。

  • Discriminator

    • 目标:

    • 判断输入文本是否是有人类书写的,并给出置信度。

    • 目标函数:

    • 和传统的 GAN 类似。

  • 和抢发的 ICCV 那篇 paper 的不同:

    • Discriminator 的输入只是 caption,那篇 paper 的输入是 caption 和 image。

    • Discriminator 的结构用的是 CNN ,那篇 paper 用的是 LSTM + CNNLSTM 用于对 caption 进行编码,CNN 用于提取 image 的特征。

    • Discriminator 只是用来给出一个文本是人类书写的置信度;那篇文章是把 Discriminator 的输出直接作为生成的 caption 和 image 的语义相关度的置信度(做法参考了 text to image 的那篇 paper)。

  • 抢发的 ICCV 那篇 paper 考虑了更多:

    • 进行了 paragraph 的生成。

    • early feedback 的生成方式:evaluate an expected future reward as defined below when the sentence is partially generated。

基于卷积神经网络的短文本聚类算法研究与应用

  • 目标:使用 CNN 抽取文本的语义特征, 用来改善短文本聚类的效果。

  • 主要工作:使用有标文本数据训练 CNN, 用于计算文本之间的语义相似度; 使用训练好得到的 CNN 模型计算无标的短文本之间的相似度作为它们之间的距离,根据此距离进行聚类; 最后, 与已有的不同的聚类算法进行对比分析,撰写论文。

  • CNN 的做法是从 文本x 中取 k 个单词,从 文本y 中取 k 个单词,然后对两者组成的矩阵进行一维卷积,得到一个标量,把这个标量按照顺序放到一起,就组成了一个类似于图片的二维矩阵,然后就可以进行类似图片的卷积神经网络了。

  • 效果:和基于 TF-IDFK Means 差不多。

    • 原因:

    • 对短文本进行 0 padd,可能会产生比较大的影响。

    • 依赖于训练好的 CNN 模型。

    • CNN 是在一个语义匹配的数据集上训练的(因为是有监督的,普通的聚类文本即使有类别label,也没有表示句子匹配程度的lable),聚类实在另外一个数据集上进行,可能会对效果有一定的影响。

  • 数据集

    (1)用卷积神经网络计算不同文本之间语义相似度的时候用的数据集有:MSRP(Microsoft Research Paraphrase Corpus)数据集与SICK(Sentences Involving Compositional Knowledge)数据集。

    MSRP数据集来源于新闻,总共有5801个句子对。其中4076个句子对用于卷积神经网络模型的训练,1725个句子对用于模型准确度的测试。每一个句子对都有一个标签来表征它们的语义相关性:0表示两个句子不相关,1则表示两个句子相关。

    SICK数据集是对图片和视频的文字描述,总共有9927个句子对。其中4500对用于卷积神经网络模型的训练,500对用于模型训练情况的验证,而剩下的4927对用于模型准确度的测试。由于原数据集用了5种标签来表征句子对的语义相关性,与本论文提出的卷积神经网络模型不匹配,故本论文对此数据集进行了处理,使其标签只有两种情况。

    (2)文本聚类算法建模阶段用的是StackOverflow数据集[47]。这是一个由Kaggle整理并开源的短文本数据集,总共有20000个句子,每个句子都有一个标签来表示它所属的类别。总共有20个类别,标号与类别的关系如表4.1所示。

图像中文描述/SCST

  • 传统的方法就是取概率最大的那个作为输出,这是一种贪心的做法,但是贪心并不能保证是最好的。Image Caption 可以看做是一个 序列决策(Decision Making) 的问题,这样就可以用强化学习的方法来解决。

    • 生成caption的算法/模型 作为 agent

    • 输入的图片特征当前生成的所有 word 作为 agent 所处的状态

    • 生成下一个 word 作为 action

    • reward 可以自己选择(比如生成的 caption 的 BLEU 值)

      用强化学习的好处是:强化

  • Policy Gradient 算法是一种基于策略的强化学习算法,属于无模型的强化学习算法的一种,它直接对策略进行建模。相对于基于值函数的方法,它更为高效,因为不需要再进行 Policy Iteration 这一步。拿这个 Image Caption 模型来说的话就是,这里直接把 网络的输出的概率 作为 这一个时刻 take action 的概率,通过更新网络的参数就可以改变输出的概率的大小,也就是 采取某个 action 的大小,最后当网络收敛后就可以得到一个比较好的策略。

    这里可以讲一下 PG 的不足:因为改变一个参数,会对整个策略产生影响,而reward 是最后才获得的,这就会产生一个问题:比如,在某个决策序列中的某个 action 可能是有益的,但是最终的 reward 却很低,训练的时候可能就会抑制这个 action。但是 reward 是统一的,网络参数的更新也是统一的,这就可能会使得网络训练不容易收敛。正确的做法是:好的 action 应该大多数被鼓励,坏的 action 应该大多数情况下被抑制(不是一直,类似于下象棋,有时候也需要不好的 action)。所以有了几种解决办法:

    • 给每一个 action 单独的分配 reward。做法是:当前时刻采取 action 后,之后的时刻通过 蒙特卡洛采样 的方法采取 action。多次采样就可以获得多个 reward ,取平均,作为它的期望,然后把得到的 reward 的期望作为这一个时刻的 reward。

    • 算法层面的:TYPO 算法

  • 比赛用到的

    • 算法:这个比赛利用到的是 IBM 发表的 SCST,他把原始的通过 greedy 方式得到的 caption 作为 baseline,然后把 当前得到的 caption 的 BLEU通过 greedy 方式获得的 caption 的 BLEU 的差值 作为 reward。

    • 特征:

    • 不对图片进行裁剪,直接使用 Resnet-101 最后一个卷积层提取的特征。不对 ResNet 进行网络更新。

    • 对图片进行裁剪,直接使用 Resnet-101 最后一个卷积层提取的特征,但是对 ResNet 进行更新。

    • 维度都设置为 512

    • image embedding 层数(1层,2层)

  • D

    在 time step t ,生成了一个 vocabulary size 大小的向量,向量中的每个元素表示每个 word 是 target 输出的概率,这里就把这个概率当做是 take action 的概率。tf.multinomial 就会根据这个概率进行采样,概率越大,越容易被采样到。

    这样就把 每个时刻 word 的生成 转换成了 每个时刻的 take action,就可以当做是 RL 来做了。

    在每个时刻,根据概率的大小,来决定下一个时刻生成的单词(也就是:根据概率的大小,来决定下一个时刻 take 哪个 action,概率越大,对应的那个 action 就越容易被 take。因为policy 的定义就是:在某个状态下采取 action 的概率)。

    更新模型的参数,就会改变每个时刻、生成某个 word 的概率(也就是改变采取某个 action 的概率),这就是直接对 policy 进行建模,也就是 Policy Gradient

    这时候 reward 的作用是:根据reward,手动的改变梯度的 大小方向(作用类似 ground truth)。reward 大就增加它的梯度(改变梯度方向,使得 take 这个 action 的概率变大),否则就降低它的梯度(改变梯度方向,使得 take 这个 action 的概率变小)。

  • 从中也可以看出,在每一个 time step 采取 action 后,并不知道这个 action 的好坏,而是在最后通过计算 BLEU 之后才知道(BLEU 越高,这次采取的 action 序列 越好,但是并不能说某一个单独的 action 好)。