AdaGrad+RDAを実装しました。

AdaGrad(Adaptive Gradient)というオンライン学習のアルゴリズムを実装しました。
https://github.com/echizentm/AdaGrad


論文: Adaptive Subgradient Methods for Online Learning and Stochastic Optimization(http://www.magicbroom.info/Papers/DuchiHaSi10.pdf)


AdaGradはAROWのように重みの更新を適応的に行うことが出来るほか、正則化アルゴリズムと組み合わせることが出来るという利点があります。
このためFOBOSやRDAなどを用いたL1正則化によって特徴量を疎にすることが出来ます。今回はRDAと組み合わせたAdaGradをperlで実装しました。
RDAを用いた理由は上記論文でFOBOSよりも高性能だったからです。また論文の実験結果によるとAdaGrad+RDAはAROW並の精度が出ると書かれています。精度が同じくらいなら正則化の可能なAdaGrad+RDAのほうが良さそう、ということです。またAdaGrad+RDAのほうがAROWよりも実装がはるかに簡単です。


実装したAdaGrad+RDAに与えるべきパラメータは1つ(lambda)だけです。これはどれだけ強く正則化を効かせるかというパラメータで、大きくするとL1正則化の効果によって効果の小さい特徴量が削除されます。

# lambda=0.1で学習する
$$ perl sample.pl 0.1 < colors.json