我想知道为什么在TensorFlow 1.5.0及以后的版本中,softmax_cross_entropy_with_logits_v2默认会对标签和logits进行反向传播。在哪些应用场景中需要对标签进行反向传播呢?
回答:
我看到了下面的GitHub问题中也提出了相同的问题,你可以关注它以获取后续更新。
https://github.com/tensorflow/minigo/issues/37
我并不代表做出这一决定的开发者,但我猜测他们之所以默认这样做,是因为这种做法确实常见。对于大多数不进行标签反向传播的应用来说,标签通常是常量,不会受到不利影响。
对标签进行反向传播的两个常见用例是:
- 创建对抗样本
围绕构建能够欺骗神经网络的对抗样本,有一整套研究领域。许多用于此目的的方法涉及训练一个网络,然后保持网络固定,并对标签(原始图像)进行反向传播,在某些约束条件下对其进行调整,以生成一个能欺骗网络错误分类图像的结果。
- 可视化神经网络的内部结构。
我还建议大家观看YouTube上的deepviz工具包视频,你会学到很多关于神经网络学习的内部表示知识。
https://www.youtube.com/watch?v=AgkfIQ4IGaM
如果你继续深入研究并找到原始论文,你会发现他们也对标签进行反向传播,以生成能够高度激活网络中某些滤波器的图像,以便理解这些滤波器的作用。