NOTES
基于生成对抗网络的网页显著度图预测
使用 GAN(生成对抗网络)生成给定网页的显著度图,从而预测网页的哪些区域更会受到用户的关注。
把网页快照和显著度图当作不同域别的图像,并使用 GAN 进行转换。设计多种不同结构的网络模型,加入自注意力机制与谱归一化,引入网页特征用于指导显著度图的生成,同时试用多种损失函数,并使用 TTUR 的方式对网络进行训练。
使用的网络结构:
使用的网络结构:
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 + CNN
,LSTM
用于对 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-IDF
的K 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 好)。