G1.1 先轉再移,和先移再轉一樣嗎?
本篇重用1 篇
我們能不能把兩次操作當成一次?
上一篇要求模型跟著地圖的變換。現在想像你先向右拖地圖,再把它轉九十度;朋友卻先轉,再往螢幕右邊拖。最後總圖的位置通常不一樣。
這件事提醒我們:變換不只是一張新圖片,它還有操作順序。 如果想把模型的要求寫進每一層,就要先建立一套能記錄順序的語言。
先用座標 看。旋轉是 ,平移是 ,一個完整動作可以記成 ,作用結果是 。若先做 ,再做 ,
因此兩次操作合成
平移 也會被後面的旋轉轉過去。這就是先移再轉不等於先轉再移的原因,而不是符號故意變複雜。
什麼樣的一群操作可以一起討論?
我們希望這組操作能包含「什麼都不做」,能撤銷每一次操作,也能把連續操作合成仍在同一組裡的操作。
對旋轉和平移,什麼都不做是 ;把 撤銷的方法是
把它代入就會回到 。而三次操作不論先合併前兩次還是後兩次,都得到相同結果,因為實際作用的函數組合具有 associativity(結合律)。
具有 closure、identity、inverse 與 associativity 的操作集合,叫 group(群)。這裡的乘法 是「先 再 」,不一定是普通數字相乘,也不要求 。
補充Group 是可以組合、撤銷,且組合規則一致的一組變換
旋轉九十度的整數次操作形成 ,其中 。但只收集「轉九十度」和「不轉」不會形成 group:連續轉兩次需要的一百八十度不在集合裡。
裁切一般沒有 inverse:被裁掉的像素不能由剩下的像素唯一恢復,所以不能直接當成這種 group action。
同一個操作,怎麼作用在不同資料上?
在座標上, 作用為 ;在影像上,它要把每個像素的內容搬到新位置;在 label 上,可能根本不做事。
我們把某個資料空間上的作用寫成 。它應滿足
這叫 group action。第二條要求操作表與實際資料的變化一致:不能把合成動作 指定成第三種不相干的效果。
對影像函數 , 是像素位置。平移 後,新位置 的內容來自舊位置 ,因此
為什麼是減號?想像原本在 的標記往右移到 ,那麼新影像在 讀到的,正是舊影像在 的值。
什麼時候可以用矩陣表示?
如果 feature 本身是一個向量,且變換對它是線性的,我們可以用矩陣 記錄作用:
這叫 linear representation(線性表示)。旋轉方向向量的 、重排四個方向 channel 的 permutation matrix,都是例子。
但座標 有額外的 ,一般不是對 的線性作用,不能不加說明就叫它 。我們因此沿用 、 表示一般 action,只有真的談線性 feature 變換時才用 。
到這裡,我們還沒有設計神經網路。只是把上一篇的要求補完整:先選一組變換,再指定它在輸入與輸出上的一致作用。 下一步才有辦法問,哪些參數配置可以保證模型遵守它。
課堂提問
只把 0° 與 90° 兩種旋轉收在一起,為什麼不能直接稱為一個旋轉 group?
先想一想,再展開看整理後的答案
它對組合不封閉。90° 接著 90° 是 180°,卻不在這個集合中;補進 180°、270° 後,才得到四個元素的 C4。
動手看一次
保持 circular boundary 與 stride=1,拖動整數格的平移。這裡的每次移動都是可撤銷、可組合的 action;下方兩條線檢查同一個共享運算是否與它交換。