DeepDream:当神经网络开始做梦,满屏都是狗
// TL;DR
- DeepDream 反向优化输入图像,放大网络中间层的激活,可视化它学到的特征。
- 满屏狗脸是因为 ImageNet 里狗的类别多达 120 个。
- 它是可解释性研究的趣味入口:网络真的学到了结构化的视觉概念。
怎么做到的
Google 上个月发了篇叫 Inceptionism 的博客,这个月把代码开源了,名字很妙:DeepDream。原理说穿了不复杂——平时训练是固定输入、调整权重;DeepDream 反过来,固定权重、调整输入图像,目标是让网络某一层的激活值最大化。相当于问网络:“你想在这张图里看见什么?那我就把它变得更像。”
结果就是那些刷屏的迷幻图:云朵里浮出狗脸,建筑物长出眼睛,整张图布满漩涡和触手。为什么全是狗?因为 ImageNet 的 1000 个类别里光狗就占了 120 个,这个网络对狗的“执念”是数据集给的。
乐子之下
大家都在拿它做表情包,但我觉得它真正的价值是可解释性:这是第一次,普通人能直观“看见”一个深度网络内部学到了什么——低层看见的是纹理和边缘,高层看见的是眼睛、脸、动物。网络不是一团随机的数字,它内部有结构、有层次、有概念。这件事用论文讲了好几年没人听,一张满是狗的图片一晚上就讲明白了。好的好的可视化本身就是最好的科普。