パラメータチューニングを不要にする最適化手法ADAMG（2024）


パラメータチューニング不要 ＆ 高性能 ＆ 安定的な最適化手法であるADAMGを解説する。
（論文はAdaGrad-NormベースのGOGを軸とした展開になっているが、そこには触れずにADAMGのみに焦点を当てる）

- [Towards Stability of Parameter-free Optimization](https://arxiv.org/abs/2405.04376)
- ICLR'25でレビュー中らしい‥

# ADAMG (Adam with the golden step size) の解説

ADAMGはAdamにおける学習率パラメータのチューニングを不要にする改良手法である。
ここでは、Adamとの差分を軸にADAMGを説明していく。

## AdamとADAMGの差分
### （参考）SGD
AdamとADAMG説明の前に、シンプルでわかりやすいSGDを参考までに載せておく。
$$\text{[SGD]}\quad θ_t = θ_{t-1} - η_t * η * g_t$$
- $θ_t$: 時刻$t$のモデルのパラメータ（最適化対象）
- $η_t$: 学習率スケジューリング項（スケジューラ依存）
    - 通常は$η$に含まれて表記されないが、説明の都合で式中に表記している
- $η$: 学習率（ハイパラ）
- $g_t$: 勾配

### Adam （ADAMGのベース）
Adamは以下の通り。（SGDで説明済みの項の説明は省略）

$$\text{[Adam]}\quad θ_t = θ_{t-1} - η_t * η * \frac{\hat{m_t}}{\sqrt{\hat{v_t}}+ε}$$

- $\hat{m_t}$: 慣性(momentum)付きの勾配
    - $\hat{m_t}=\frac{m_t}{1-β^t_1}$ ‥ バイアス補正
    - $m_t = β_1 * m_{t-1} + (1-β_1) * g_t$ ‥ 勾配の移動平均 (momentum)
        - $β_1$は移動平均ハイパラ
- $\hat{v_t}$: 慣性(momentum)付きの勾配の振幅
    - $\hat{v_t}=\frac{v_t}{1-β^t_2}$ ‥ バイアス補正
    - $v_t = β_2 * v_{t-1} + (1-β_2) * g_t^2$ ‥ 勾配の振幅の移動平均 (momentum)
<br>

### ADAMG
最後にADAMGはこの通り。（太字が新規の項）
$$\text{[ADAMG]}\quad θ_t = θ_{t-1} - \min(η_t,\frac{1}{\sqrt{t}}) * \frac{\hat{m_t}}{\sqrt{\hat{v}}+ε}$$

- $\min(η_t,\frac{1}{\sqrt{t}})$: **学習量の補正項**
    - $η_t$: 学習率スケジューリング項（スケジューラ依存）
    - **$\mathbf{\frac{1}{\sqrt{t}}}$: 収束用(Robbins-Monro)**
- $\hat{m_t}$: 慣性(momentum)付きの勾配
    - $\hat{m_t}=\frac{m_t}{1-β^t_1}$ ‥ バイアス補正
    - $m_t = β_1 * m_{t-1} + (1-β_1) * r_t*g_t$ ‥ 勾配の移動平均＋**golden step sizeによる重み付け**
        - $r_t=β_3 * r_{t-1} + (1-β_3) * s_t$ **‥ golden step sizeの移動平均 (momentum)**
        - **$s_t=p*v_t^q$ ‥ golden step size**

<br>
見比べるとわかるが、差分はAdamでいう学習率$η$と勾配momentum $m_t$の2箇所になる。
特に重要なのがADAMGの$m_t$の計算に出てくるgolden step size $s_t$である。ADAMGではハイパラである学習率$η$の代替として、この動的なgolden step size（最適なstep sizeの近似）を用いた重み付けをしている。以降では、もう少し詳細に差分を見ていく。

#### 勾配momentumの差分
- [Adam] $\ \ \ m_t = β_1 * m_{t-1} + (1-β_1) * g_t$
- [ADAMG] $m_t = β_1 * m_{t-1} + (1-β_1) * r_t*g_t$


ADAMGの差分点は、勾配$g_t$にgolden step size（のmomentum）$r_t$を掛けて重み付けている点である。詳細は省くがgolden step sizeは最適なstep sizeの近似であり、AdaGrad-Normから導出される式$s_t=p*v_t^q$により算出する。それの移動平均版(momentum)が$r_t$となる。
（実験から、p=0.2, q=0.24が安定的で良いことがわかっている。p, qはハイパラではあるが、基本的には調整不要）

#### 学習率の部分の差分
- [Adam] $\ \ \ η_t * η$ （ハイパラ）
- [ADAMG] $\min(η_t,\frac{1}{\sqrt{t}})$
    - $η_t$: 学習率スケジューリング項（スケジューラ依存）
    - $\frac{1}{\sqrt{t}}$: 収束用(Robbins-Monro)

ADAMGでは上述のgolden step sizeを通じて学習率が実質的に調整済みであるため、Adamの$η$のようなハイパラは不要になっている。ただ、学習率スケジューリング項$η_t$に少しだけ調整を入れているので、その内容を少し説明する。
【$\frac{1}{\sqrt{t}}$】 ADAMGの基本的なスケジューリング項であり、確率的最適化において最終的に最適解へ収束可能な式が採用されている。式を見た通りであるが、学習が進むに連れて徐々に学習量を減らすようになっている。
【$η_t$】勾配ノイズの激しいタスクでより強く学習量を低減するために、学習率スケジューリング項が利用されている。参考値として、学習率スケジューラなしだと常に1、cosine annealingスケジューラだとcosineカーブに沿って徐々に減少していくような値を取る。


## ADAMGの擬似コード
上述の数式が実際にアルゴリズム化された擬似コードが以下である。グレー背景部がADAMGの差分であるが、Adamに少々の変更を加えるだけというのがよくわかる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261709/9f44d25d-64ab-cf45-a93d-2d96ab36aec3.png)



---
手法の解説は以上。
Adamからの変更点は少なめで、実装はかなり容易そうである。

# （少しだけ）他の手法との性能比較
下図がAdam×ハイパラ4パターン、既存のパラメータフリー最適化手法、ADAMGの精度比較結果である。
- 左が事前学習モデルベースで学習、右はフルスクラッチで学習
- モデルは4種類
- Adamだけはハイパラ調整が必要なので、4パターンの学習率

まずAdamと比較すると、左半分の事前学習モデルベースでは最高のAdamパターンをも超える性能を出している。
一方で右半分のフルスクラッチ学習では、2つのモデルでは同様に最高のAdamパターンを超えているが、もう2つのモデルではAdam全体の平均ぐらいの精度になっている。
また、他のパラメータフリー手法との比較するとの比較結果では、全体的に精度が高い傾向にあり、最も安定かつ高い精度を出せている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261709/69333511-1855-fa11-0031-dc53cab36714.png)
（この表は画像分類の結果であるが、自然言語処理の結果は実はさらに良い）

# まとめると
結論としては、フルスクラッチではまだ不安な面が少しあるけれども、事前学習モデルベースではAdam×学習率チューニングを置き換えてもいいのではっていうレベルの性能が出せている。
特に学習率$η$以外にも複数のハイパラを扱うケースでは、他のハイパラのチューニングにより多くの計算リソースを割くことで性能向上に寄与できる可能性もあり、かなり有効に思う。