異構
O. Marfoq, G. Neglia, L. Kameni, and R. Vidal, “Personalized Federated Learning through Local Memorization,” arXiv:2111.09360 [cs, stat], Mar. 2022, Accessed: Mar. 19, 2022. [Online]. Available: http://arxiv.org/abs/2111.09360
這篇蔚藍海岸大學埃森哲技術研究院的文章同樣在研究PFL,而且大有頂會論文的趨勢。該團隊對於PFL的理解為在對每個使用者訓練得到單獨模型的同時,還要利用其他使用者的知識。因此,這篇文章的思路依然是對相似使用者進行聚類。那麼聚類標準是什麼呢?每個使用者對輸入的表示(embedding)。之前我一直覺得embedding的訓練比較難,其實就是每個使用者分類層的前一層的輸出。比如CNN的最優一個卷積層,RNN的最後一個隱藏狀態。這樣聚類沒有觸及到最優的分類,因此避免了隱私的洩露,但是又利用了使用者對資料進行表徵的網路,還是比較巧妙。
然後根據聚類結果對他們的網路進行融合,在兩個使用者聚類的時候,依然是典型的需要調參的融合方式
這也是體現了標題local memorization的作用,就是利用了鄰居的記憶。今天谷歌有一篇文章,也是將多個微調的模型直接進行聚合,在ImageNet1K上取得了90%的準確率,可謂是異曲同工。同時這篇文章也分析了generalization bound。最終的實驗結果看起來也不錯
可以看到,對於每個使用者兩個class的CIFAR10而言,準確率已經達到了93,更不要說MNIST了。不過Shakespeare資料集的提升還是並不明顯,可能這種PFL的思路還是對物件識別更加有效。
C. Hou, K. K. Thekumparampil, G. Fanti, and S. Oh, “FedChain: Chained Algorithms for Near-Optimal Communication Cost in Federated Learning,” arXiv:2108.06869 [cs, math], Mar. 2022, Accessed: Mar. 19, 2022. [Online]. Available: http://arxiv.org/abs/2108.06869
這是CMU發表在ICLR 2022上的文章,以收斂性分析為主。對於FedAvg遭遇的異構資料瓶頸,這篇文章沒有迎難而上研究PFL,而是選擇直接逃避。既然FL對iid的資料效果好,那就只對iid做就好了呀,對於non iid的資料,直接回到原來的SGD,不就等效於全域性的訓練,那異構資料的問題也就迎刃而解了。
當然作者不會直接這麼說,故事還是要好好講的。作者的意思是FedAvg演算法的本地訓練階段能夠利用使用者資料的相似性加速訓練,而SGD演算法能夠在異構資料下得到更低錯誤概率。文章中的圖比較形象,確實是離最優點遠的時候,雖然梯度有差別但是方向基本一致,到訓練後期才體現出每個client的差別,從而需要頻繁使用global training
對於使用者異構性而言,為了理論分析方便的定義被說成了standard measure,其實不太客觀
按照這個思路,文章提出的FedChain就是先進行若干輪FedAvg演算法,然後進行SGD演算法,
這篇文章在理論分析方面做了很多工作(堆料)。在模擬方面,實驗表示僅僅訓練一輪FedAvg都能有明顯的提高,表明確實是有效果的
量化
C. Tang et al., “Mixed-Precision Neural Network Quantization via Learned Layer-wise Importance,” arXiv:2203.08368 [cs], Mar. 2022, Accessed: Mar. 19, 2022. [Online]. Available: http://arxiv.org/abs/2203.08368
這篇來自於清華大學的神經網路混合精度量化的文章,初看讓人眼前一亮,細看還是故事講得比做的好。文章首先講明瞭混合精度量化的重要性,現有演算法的難點,他們觀察到一個可訓練的變數能夠表徵每一層對於量化的敏感程度或者說重要性,然後由此得到一個整數規劃來分配每一層的量化位元數量。
這個量化的思路有點霍夫曼編碼在神經網路中的應用。霍夫曼編碼根據碼字出現的概率來分配碼長,這篇文章則根據每一層的重要性來選擇碼長。那麼文章的核心當然就是如何衡量重要性了。經濟學中常用的shapley value大家也早就想過了,但這個畢竟是個組合問題,搜尋空間大耗時長,就算用DRL也不好搞。那能不能用一次端到端的學習,學到一些引數,剛好就和重要性對應上,相當於找一個shapley value的平替呢?之前大家也不是沒想過,BN層的scale factor就可以反映資料輸入的聚集程度,大家也這麼做了。但是BN層的對映變換是在前一層量化操作後,也就是說不能直觀反映量化帶來的的變化。所以這篇文章提出用每一層的scaling factor來表徵重要性,也就是下面的\(s\)
具體的好處直接放原文,總之\(s\)在quantization-aware training中就能得到優化,能夠有效反映quantization的性質。
As shown in Equation 1, during QAT, the scale factor of the quantizer in each layer is trained to adjust the corresponding quantization mapping properly at a specific bit-width. This means that it can naturally capture certain quantization characteristics to describe the layers due to its controlled quantization mapping being optimized directly by the task loss. Therefore, there should be numerically significant difference in the scale factors for heterogeneous layers in a network.
Moreover, the operation involved in the scale factor takes place in the quantizer, which allows it to be directly aware of quantization.
Last but not least, there are two quantizers for activations and weights for a layer, respectively, which means that we can obtain the importance of weights and activations separately. In contrast, we cannot get the importance of weights through the BN layer since it only acts on activations.
之後作者實驗驗證了這個想法。(這裡沒看懂是大的scale factor需要更多位數還是小的需要更多位數,從下面的優化問題來看是小的factor需要更多位數,也就是基本不縮放的重要性高,所以分配更多位數,和圖裡的又對不上)
最終得到了整數規劃,用來求解每層需要分配的量化數量。