適当に調べた。
Adam
おなじみのやつ。
欠点
- 最初だけ学習率を小さくする"warmup"をしないと発散することがある。
- 最終的に収束したときの精度がSGDよりなぜか悪い。
- ハイパーパラメータの設定によって精度が良かったり悪かったりする。
そもそも玄人はAdamなんて使わずにSGD+Nesterovとかで学習率を手動で調整している説もあるが、それはそれとしてoptimizerに投げるだけにしたい層も居て、そんな人たちにより良いoptimizerを提案したいみたいな。
LookAhead
"fast weights"と"slow weights"に分ける考え方を導入していた。まず"fast weights"を何らかの更新法(e.g. SGD, Adam)でミニバッチk個ぶん学習してから、その値をもとに"slow weights"を更新した。"slow weights"がいい感じに収束するので、Adam単体と比べて欠点2がカバーされたと言える。またハイパーパラメータの違いに対してロバストらしい。(欠点3)
RAdam
arxiv.org
nykergoto.hatenablog.jp
Adamの補正項の分散について理論的に解析して、warmupすべきepoch数はAdamのハイパラのの値から定まると結論づけた。それを踏まえ、warmupを自動的に切り替えるようなアルゴリズムを提案することで欠点1をカバーした。またその提案アルゴリズムでは、warmup後の更新式も彼らの理論解析の結果に基づき少し変えてあった。これによってかどうかはよくわからないが、ハイパーパラメータの違いに対してロバストになったらしい。