ICLR 2024の論文を読んだ。Visionモデルをfinetuneする際にSGDを使って最初の層をfreezeすることで、AdamWと同程度の性能を少ないメモリ消費量で実現できる。
論文:HOW TO FINE-TUNE VISION MODELS WITH SGD (ICLR 2024)
どんなもの?
AdamWとSGDのどちらがfinetuningする際に適した手法かを検証。AdamWの方がコンスタントに良い性能を出す傾向にあるが、詳細に分析することでモデルの入力層に近いembedding層の勾配が大きくなっていることを確認した。embedding layerをfreezeしてfine tuningすることでSGDを使った場合にAdamW
OOD性能についても確認しており、SGD(freeze-embed)で良い性能が出ている。


先行研究と比べてどこがすごい?
AdamWとSGDのどちらをfine tuningに使うべきかという点については、統一的な見解は今まで無かった。各層の勾配を分析することで最初の層がoutlierになっており、そこをfreezeしてfine tuningすることでSGDでも良い性能を出せることを示した。
技術や手法のキモはどこ?
SGDでfine tuningする際は最初の層をfreezeしてから行う。これによりAdamWと同等程度の性能を少ないメモリ消費量で実現可能。GPUメモリ消費量が少なくて済むため、batch sizeを上げることができるため、学習時間の短縮につながる。
また、複数の実験により、SGDが良い場合というのはfine-tuningに使うデータがpretrainingに使ったデータと近い場合だという傾向もみられている。
どうやって有効だと検証した?
5つのデータセットに対して7つのモデルをfine tuningして結果をAdamW, SGD, SGD(freeze-embed), SGD(freeze-embed, no momentum)の学習方法違いで性能を比較。


議論はある?
AdamWではfreeze embedでfine tuneを行ったが通常のAdamWよりも大きな性能向上はなかった。これはおそらく通常のAdamWで十分なためと考えられる。
次に読むべき論文は?
Tim Dettmers, Mike Lewis, Sam Shleifer, and Luke Zettlemoyer. 8-bit optimizers via block-wise quantization. 9th International Conference on Learning Representations, ICLR, 2022