QuIP方法量化方法的中的不相關性
QuIP量化方法中,有一個概念是不相關性的引入。
對於一個現成的模型參數,重新量化是將神經網絡中的權重矩陣從高精度表示(如32位浮點數)轉換為低精度表示(如2位或4位整數)的過程。這個過程可以顯著減小模型的存儲需求和計算複雜度,從而提高模型的運行效率。然而,量化過程可能會導致模型性能下降,因為低精度表示可能無法完全捕捉原始權重矩陣的信息。
QuIP方法通過引入權重矩陣和Hessian矩陣之間的不相關性來解決這個問題。不相關性意味著這兩個矩陣的元素在不同座標軸上的變化程度較小。在量化過程中,這種不相關性有助於確保量化後的權重矩陣能夠更好地逼近原始權重矩陣,從而減小量化誤差。
為了實現這種不相關性,QuIP方法在自適應四捨五入過程的預處理和後處理階段使用了隨機正交矩陣的Kronecker積。這種方法可以在不顯著增加計算複雜度的情況下實現矩陣的不相關性,從而提高量化過程中的準確性。。
這裡的不相關性,在含義上有些模糊,它實際的作用其實是將原權重矩陣擴展到了更多的不同座標軸上的變化。
直觀一點來說 ,例如在三維空間中,正交矩陣可以打比方是一個在三維座標軸裡歪著擺放的立方體,而正交矩陣可以通過對角化變成一個擺正的立方體,而這種擺正通過正交矩陣自己就可以實現,只要與自己的逆矩陣相乘即可,因為本質上正交矩陣在任意的座標軸下它都是相互正交(垂直)的。
以三維空間為例,乘以一個三維的正交矩陣,相當於讓它在三維空間中進行了旋轉,而要旋轉回來,只要知道乘的是什麼矩陣,那麼乘以它的逆矩陣。
一個三維向量乘以一個Kronecker積矩陣(A ⊗ B)相當於在原始三維空間中進行旋轉和縮放,然後在這個旋轉和縮放後的空間中再次進行旋轉,這個過程比喻得不是非常恰當,只能說感性理解,總之,根本還是看作是對向量在兩個正交空間中進行了一系列變換。
因此可以理解,由於正交性意味著隨機正交矩陣的列向量是兩兩正交(垂直)且單位長度的,因此將一個矩陣(如權重矩陣或Hessian矩陣)與隨機正交矩陣進行Kronecker積運算時,這些正交列向量會作用於原始矩陣的行和列,從而在新生成的矩陣中產生一組新的正交基,這組新的正交基可以使得新矩陣在不同座標軸上的分佈更加均勻。
另外還有一個重要因素,就是引入了隨機性,隨機正交矩陣的元素是隨機生成的,這種隨機性有助於打破原始矩陣之間的相關性,使得新生成的矩陣在不同座標軸上的分佈更加分散,這種分散性有助於實現矩陣之間的不相關性,從而提高量化過程中的準確性。
簡單來說就是,產生一個隨機的正交矩陣,然後將原權重與該正交矩陣進行Kronecker積運算,由於Kronecker積運算並不會改變原始矩陣的秩,新生成的矩陣仍然保留了原始矩陣的大部分信息。
如果從圖像的角度來說,Kronecker積可當相當於對原始圖像的每一個像素進行了擴展,如果是乘以單位矩陣,效果那麼就類似於圖像的縮放,而現在乘的是正交矩陣,則相當於對每一個像素進行了“多軸不變”的擴展操作。