G1.4 寫進架構的對稱,實作時還保得住嗎?
本篇重用1 篇
公式沒錯,為什麼實際 CNN 仍會變?
假設一條道路在影像中央,convolution 可以看見它兩側;把道路移到最右邊,右側的街區消失,padding 補進來的是零。偵測器用的權重一樣,看到的內容卻不一樣。
所以我們要檢查的不是「CNN 有沒有 convolution」而已,而是:整個實作還是不是上一篇證明裡的那個 action?
Padding 改了我們能看到什麼
先看三格影像 。把它向右移一格並丟掉超出範圍的內容,變成 ;再向左移,得到 ,不能恢復 。
這種有限視窗的移動不是 invertible action。對所有像素要求完全 equivariant,已經超出前面平移 group 的假設。Zero padding 讓邊界位置與中央位置的環境不同,差異也可能隨更多 layer 往內傳。
若改用 circular padding,右邊出去的內容從左邊進來,位置只是週期重排,有限格點就重新具有精確的平移 action。但城市並不真的首尾相接;這是方便檢查架構的理想設定,不一定適合每個資料集。
Stride 為什麼只保留部分平移?
下取樣每兩格取一個值,記成 。把輸入平移兩格,
在粗格點上,它對應平移 格。但若輸入只移一格,
我們讀到原來沒有取樣的奇數位置。它一般不能由粗格點上的整數平移得到。
所以 stride 不是讓所有平移關係都消失,而是通常只保留與取樣間距相容的 subgroup。多次下取樣後,相容間距還會累積。Anti-aliasing 可以降低某些實際偏差,但不能把不存在的整數格點 action 直接補回來。
多看轉換過的資料,不就夠了嗎?
另一個方法是 data augmentation:把訓練資料 變成
分類的 可以不變,mask 與向量 label 則要一起變。若忘了轉 target,我們不是在教模型對稱,而是在給互相衝突的答案。
這能鼓勵模型學到一致性,但有限資料、有限模型與沒有完全收斂的訓練,不保證每個沒看過的 都滿足等式。結構性的 equivariance 則對合適 action 下的所有參數成立。兩者可以搭配,但不是同一件事。
怎麼量「沒有一起變」?
對一個輸入和變換,先算兩條路的差:
取 norm 再對測試輸入與指定變換分佈平均,得到 equivariance defect:
這裡 來自測試資料, 來自我們明確列出的變換。 表示這組測試的兩條路一致,不表示對所有可能輸入都已有數學證明。
若要比較不同量級的輸出,可另外除以參考輸出的 norm 加一個小正數;這是另一個 normalized metric,不能和原本的 混報。實作章節會同時列出 task loss 與 defect,而不把其中一個當成另一個的替代。
補充指定錯誤的對稱,可能直接排除正確答案
如果任務要判斷「箭頭向左還是向右」,強制它對九十度旋轉 invariant 會把不同答案混在一起。對稱是對任務的假設,不是越多越好。只有輸入與 target 的關係真的符合它,結構保證才有用。
課堂提問
某模型的 defect 接近零,是否可以說它的分類一定很好?
先想一想,再展開看整理後的答案
不能。永遠輸出同一個類別可以讓 invariant defect 為零,但可能答錯大部分資料。Defect 檢查變換的一致性;task loss 檢查答案是否接近 target。
動手看一次
切換 boundary 與 stride,觀察 absolute max defect。特別比較 stride=2 時,平移一格和兩格的差異。