ICML2013読み会 ELLA: An Efficient Lifelong Learning Algorithm from Yuya Unno
当日もちゃんと伝わってなかったので、いくつかポイントとなる部分を説明します。
まず、Lifelong learningというのはどういう設定かというと、次々に問題がやってくる状況での学習だと思って下さい。複数の問題が有る設定ですと、それはいわゆるマルチタスク学習になりますが、Lifelong learningの場合、問題(学習データセット)がオンラインでやってきます。マルチタスク学習のオンライン版みたいなイメージです。時刻tでラベル付きのデータセットXtがやってきて、これを効率的に学習します。もちろんポイントは、マルチタスク学習と同じように、過去の学習結果を使えると言う点です。過去に類似の問題を解いたことが有るのなら、その時の学習結果を引っ張ってきてもいいということです。
次のGO-MTLという手法です。これは元々はLifelong learnigではなくてマルチタスク学習用の手法です。スライド7ページ目にある通りなのですが、ポイントは普通の学習器で言うところの重みベクトルwの代わりに、Lsが使われている点です。Lは全体で1つ、sは各タスクに1つずつ学習されます。このココロは、各学習モデルは独立ではないので、それぞれの重みベクトルwは、Lの列ベクトルの線形和Lsで表現しちゃおうということです。Lの列ベクトルが隠れタスクになっていて、個別のタスクはsで定められるようなサブタスクの和になっているイメージです。大盛りのカレーを注文するか?という謎の例で説明しようとしたのですが、失敗したのでしません。
最後にこのGO−MTLをLifelong learningの設定で高速にする工夫がこの論文の主旨です。・・・なのですが、元々の手法がバッチで、しかもタスクがやってくるたびに過去のデータ含めて全部でバッチ学習するのでそりゃ遅いよ・・・。提案手法は、タスクがやってきても過去のタスクに対するsは変えない、という制約のもとでLと新しいタスクに対するsだけを更新します。過去のsを固定しても、L側を調整することでほとんど全体の精度を落とさずに学習できるようになりました。
さて、最後に感想ですが、ちょっと敵が遅すぎる設定なのでどうだろう・・・と。ただ、こういうオンラインでデータが来続けるような状況というのは、何かしらのシステムに組み込んだ形で学習させ続けると発生するので、そういうシーンで過去の知見(学習結果)をうまく活かすという設定は良いなと思いました。
他の発表では、大岩さんの省メモリでどうやって学習させるかの話が盛り上がってました。ああいう、情報を「表現」しようとすると無理だけど、確率的にしちゃえば期待値の上では表現できるよ!というようなのを最近良く見る気がしていて、うまく使いたいなと思っています。
当日もちゃんと伝わってなかったので、いくつかポイントとなる部分を説明します。
まず、Lifelong learningというのはどういう設定かというと、次々に問題がやってくる状況での学習だと思って下さい。複数の問題が有る設定ですと、それはいわゆるマルチタスク学習になりますが、Lifelong learningの場合、問題(学習データセット)がオンラインでやってきます。マルチタスク学習のオンライン版みたいなイメージです。時刻tでラベル付きのデータセットXtがやってきて、これを効率的に学習します。もちろんポイントは、マルチタスク学習と同じように、過去の学習結果を使えると言う点です。過去に類似の問題を解いたことが有るのなら、その時の学習結果を引っ張ってきてもいいということです。
次のGO-MTLという手法です。これは元々はLifelong learnigではなくてマルチタスク学習用の手法です。スライド7ページ目にある通りなのですが、ポイントは普通の学習器で言うところの重みベクトルwの代わりに、Lsが使われている点です。Lは全体で1つ、sは各タスクに1つずつ学習されます。このココロは、各学習モデルは独立ではないので、それぞれの重みベクトルwは、Lの列ベクトルの線形和Lsで表現しちゃおうということです。Lの列ベクトルが隠れタスクになっていて、個別のタスクはsで定められるようなサブタスクの和になっているイメージです。大盛りのカレーを注文するか?という謎の例で説明しようとしたのですが、失敗したのでしません。
最後にこのGO−MTLをLifelong learningの設定で高速にする工夫がこの論文の主旨です。・・・なのですが、元々の手法がバッチで、しかもタスクがやってくるたびに過去のデータ含めて全部でバッチ学習するのでそりゃ遅いよ・・・。提案手法は、タスクがやってきても過去のタスクに対するsは変えない、という制約のもとでLと新しいタスクに対するsだけを更新します。過去のsを固定しても、L側を調整することでほとんど全体の精度を落とさずに学習できるようになりました。
さて、最後に感想ですが、ちょっと敵が遅すぎる設定なのでどうだろう・・・と。ただ、こういうオンラインでデータが来続けるような状況というのは、何かしらのシステムに組み込んだ形で学習させ続けると発生するので、そういうシーンで過去の知見(学習結果)をうまく活かすという設定は良いなと思いました。
他の発表では、大岩さんの省メモリでどうやって学習させるかの話が盛り上がってました。ああいう、情報を「表現」しようとすると無理だけど、確率的にしちゃえば期待値の上では表現できるよ!というようなのを最近良く見る気がしていて、うまく使いたいなと思っています。
0 件のコメント:
コメントを投稿