论文笔记《Visual Dialog》
一、文章讨论视觉对话,让AI以自然语言与人类进行有意义的对话,讨论视觉内容。应用包括:
1、帮助视障用户理解他们周围的环境或社交媒体内容。
AI:'约翰刚从夏威夷度假时上传了一张照片',
人类:'太棒了,他在海滩吗?
AI: 不,在山上。
2、帮助分析师根据大量监测数据做出决定。
人类:'上周有人进入这个房间吗?'
AI:'是的,有27个实例出现在镜头'
人类:'他们中是否有人携带黑色包?“
3、与人工智能助理互动。
人类:'Alexa - 你能看到宝宝在婴儿监视器中吗?'
AI:'是的,我可以',
人类:“他在睡觉还是在玩耍?”
4、机器人应用(例如搜索和救援任务),操作人员可能处于“情境盲区”并通过语言操作。
人类:“你周围的任何房间都有烟吗?”
AI:'是的,在一个房间里'
人类:'去那里找人'。
但是尽管视觉和语言取得大的进展,但是我们距离AI能“看”和“沟通”还很远,比如image captioning 和visual question answering,仍然有很大的进步空间,前者没有实现对话,后者只有单论对话,人机交互很糟糕。
于是作者提出视觉对话,任务描述: 给定一张图片I,一段包括一系列QA的对话记录,一个自然语言问题,让AI回答这个问题。
二、相关工作:
1、视觉和语言:视觉和语言结合的工作有很多: image captioning, video/movie description , text-to-image coreference/grounding, visual storytelling, visual question answering (VQA) ,不过它们都没有对话。
2、视觉图灵测试:图灵测试是一个系统,要求模板化的二进制问题。我们的数据集自由、多样,每张图片10对QA。
3、基于文本的QA:
4、对话模型和聊天机器人:视觉对话可以说是基于文本的对话的变体,早期聊天机器人是基于规则,现在基于学习的端到端的方法很多。
三、数据集VisDial
四、模型
输入:图片I、对话历史(包括图片描述),其中C是caption,QA是问答
有100个候选回答At = ,需要返回其中一个值。
Decoder:两种类型的解码器
1、生成解码器G:在训练期间,最大化真实回答序列的对数似然率。 为了评估,我们使用模型的对数似然率分数和排名候选答案
2、判别(softmax)解码器D:计算每个选项的后验概率,在训练期间,最大化正确选项的对数似然率。 在评估过程中,选项根据后验概率进行简单排序。
Encoder:三种编码器,将(I,H,Qt)融合为一种表达。
1、后期融合LF:把H看作整个历史的串联(H0,...,Ht-1)
2、分层递归HRE:
3、记忆网络MN:
五、实验
1 下载数据集,预处理数据集
python prepro.py生成
data/visdial_data.h5
(tokenized captions, questions, answers, image index) 和 data/visdial_params.json
(vocabulary mappings and COCO image ids).2 VGG16提取图片特征
sh scripts/download_model.sh vgg 16
得到 data/data_img.h5
th prepro_img_vgg16.lua
得到data/models/vgg16
3 训练
th train.lua
得到checkpoints/
4 评估
th evaluate.lua
5 Beam Search ,可视化结果
th generate.lua得到vis/results/results.json
python3 -m http.server在网站localhost:8000看到结果