前言
有时候, 输入数据加入细微的扰动, 都会让模型结果大相径庭.
因此, 我们总是希望训练结果的分布是光滑的, 这样才能保持稳定.
但在连续分布的空间中, 总是存在过大的间隙, 这些间隙只能靠更多的数据或减小网络复杂度(正则)的方法让它尽可能光滑.
VAT同样是为了解决光滑问题, 且解释性更强, 也更直观.
我只读了文章前4页, 做个大概了解.
思路
一个图片是N维中的一个点P, 给数据加噪, 其实就是在这P点周围画了一个小圈, 小圈内都是点P加噪后的图.
所以, 自然地我们希望小圈周围的点与P点预测结果一致.
这是早期就有的思路.
但缺点是, 只有有标签的图才能用这个方法, 而空间中大部分都是没标签的.
我们可以把上图中P1和P2点周围拉到下图一样与1齐平, 但其他的地方我们很难将其拉起, 因为我们不知道中间这些点该拉到0还是1.
但我们依然不放弃平滑的梦想, 因为无论怎么样, 平滑的函数还是更加可靠的.
所以没有标签, 就创造一个标签.
设模型输出值为
P
(
y
∣
x
,
θ
)
P(y|x,θ)
P(y∣x,θ), 其中θ是模型参数, x是输入参数, y是输出标签.
之前说过, 在有数据点(即有标签)的位置, 希望周围点标签与数据点一致.
那么,在没有标签的数据点上, 我们放宽要求, 只希望周围点的
P
(
y
∣
x
+
ε
,
θ
)
P(y|x+ε,\theta)
P(y∣x+ε,θ)与
P
(
y
∣
x
,
θ
)
P(y|x,\theta)
P(y∣x,θ)一致.
举个例子, 随机生成了一张没标签的图, 网络给出结果是P=0.6, 那就要求这张图周围的图的P也是0.6.
这就是VAT的思路. 因为这些点的标签都是凭空获得的, 所以就被冠以Virtual的名字.很有日本的风格.
警告
具体的loss设计请看原文, 都是很简单的设计, 参数意义也讲的很明白. 不要相信百度搜出来的, 公式都写错了, 参数意义也没讲清楚, 只建议作为翻译参考.