Sutskever 30 #18:卷积看不到的地方,再怎么训也是抛硬币
先说实验。一条长 64 的随机 0/1 序列,每个位置都要答一道题:y[t] = x[t] XOR x[t-24](前 24 个位置没有过去,答案就是 x[t] 本身)。四个一维因果卷积网络,通道数、优化器、数据全一样,只有接线不同。其中感受野最小的那个训完之后,把每个位置的测试准确率单独画出来,是这样: 红线在 t=24 那里直接断崖。前 24 个位置全对——那段答案就是当前位,谁都会。从 t=24 起,答案开始依赖 24 步之前的那一位,而这个网络的感受野只有 13:往回第 24 位在它的视野外面。视野外的位跟视野内的一切统计独立,所以它能做的最好的事就是抛硬币。0.688 的总准确率也没什么可调的:24/64 × 1.0 + 40/64 × 0.5 = 0.6875,到顶了。 我喜欢这个断崖的地方在于它干净。前几篇的瓶颈都软乎乎的——梯度小了、训练慢了、种子背了——这次是信息论意义上的墙:看不到就是看不到,损失函数上不存在任何下降方向能把那一位变出来。为了确认墙是真的,我做了个更狠的检查:拿一个网络,把输入里恰好在感受野边界外一位的那个 bit 翻转,输出 logit 的变化是精确的 0.0,不是 1e-8,是 0。翻边界内一位的,logit 就动了。 感受野是接线时定死的算术 因果卷积一层的输出是 $$y_t = b + \sum_{j=0}^{k-1} W_j\, x_{t - j\cdot d}$$k 是核宽,d 是 dilation——卷积核的几个 tap 之间隔多远。d=1 是普通卷积,d=2 就是隔一个取一个。每过一层,感受野长 (k-1)·d,整个网络能看多远就是 1 + Σ(k-1)·d,一道小学算术,训练动不了它一毫米。 ...