ややプログラム紀行

博士2年のプログラムに関する日記

Catastrophic Forgetting

近況:

  • シンエヴァを2回見た、面白かった*1
  • SuttonのReinforcement LearningのPart 1: Tabular Solution Methodsを読み直してちょいちょい実装してみた
    とりあえず自分の理解をまとめると、強化学習には(i)方策を直接計算するか価値関数を推定してから方策を決定するか、(ii)環境をモデル化するかモデルフリーか、(iii)求めたい方策と実際に行動に用いる方策は同じか否か、みたいな軸で区分することができて、例えばQ-learningは(i)価値関数を推定してから方策を \epsilon-greedyなどで決定し(ii)モデルフリーで(iii)オフ方策な手法、てな感じで分類できる
    open gymは何となく難しいイメージを持ってたんだけど、自分で迷路探索のプログラムを書いた後に改めて眺めてみるとむしろかなり簡潔*2で、自分かかつてややこしいと思ったのはDQNのネットワーク部分だったんだなと気づいた*3
    そろそろ[1811.12560] An Introduction to Deep Reinforcement Learningも読みたい
  • 超関数、複素解析偏微分、最適輸送を勉強してた
    前者二つは特異学習理論とランダム行列理論を学んでる過程で必要だったから勉強した
    座学は何となくやった気分になるけど、即座に研究に活かせるわけじゃないから、例えば前者二つはある程度概要がわかってさえいれば深入りしないようにしないとなと思った*4 *5
    あとElements of Information Theory, 2nd Edition | Wileyをchapter 3まで読んでみたけど、こちらは自分にとって必須知識っぽそうだから研究の一環として読んでもいいかもしれない
  • 友人に僕は話の途中で枝葉のように違う話題をどんどん持ち込んでくる癖があるみたいなことを言われて、何となく自分もそんな気がしてたから気をつけないとなと思った、ブログで注釈付けまくるならまだマシだけど、例えば家庭教師してる時に話題が飛びまくったら生徒はたまったもんじゃないだろな
    多分自分的には同じ話題を色んな角度から見たいんだろうけど、話す内容を減らさずとも、もっと話し方を改善することはできるはずだから、その方向で反省しておくのが自分のタメにもなりそう
  • 論文管理ソフト欲しすぎて自分で作ろうかと思ってフロントエンドの勉強してたけどめんどくさすぎて諦めた
    論文をグラフのノードで表現(引用している論文をエッジでつなぎ、深さ1-2くらいで引用探索)して、さらに時系列で軽くノードも並べるような論文管理ソフトないかな



最近読んだcatastrophic forgettingについての論文をまとめておく

arxiv.org

NTKの枠組みは実質的にカーネル法なのでタスクAの学習後にタスクBを学習したときのパラメータは具体的に計算することができて、それゆえタスクAの忘却具合(精度の低下具合)は解析的に求めることができる
他のNTKのお話と同様ニューラルネットカーネル法の差異を無視した結果にならざるを得ないけど、近似解が求められると考えると、実際のニューラルネットカーネル法より破壊的忘却をするのかしないのかみたいな感じで一つの指標になるので良さそう


arxiv.org

ニューラルネットのどの層が破壊的忘却に特に寄与しているのか実験的に調べたところ、distribution shiftが起こった時に出力に近い層が特に変化しやすく*6、逆に入力に近い層を固定させてもあまり精度に影響は出ないことがわかった
これはニューラルネットカーネル関数も学習するカーネル法だと看做して考えると、タスクAで学習したカーネル関数はタスクBにおいてあまり変化せず、代わりに重みパラメータの部分(すなわち出力に近い層)が変化しやすいということなので、従来のカーネル法と似たような挙動をすることが示唆される
論文ではまた、タスクAとタスクBの内容がどのように忘却に影響を与えるかの実験も行なっていて、具体的には

  1. (A)まず猫vs馬、船vsトラックのように同タイプの2クラス間(ここでは動物vs動物もしくは物vs物)での二値分類を学習し、(B)次に動物vs動物の二値分類と物vs物を学習した時の(A)における忘却具合の違いを調べたところ、意味的に似ているタスクの方が*7(A)の忘却は抑えられた
  2. (A)まず動物2つ(例えば鹿と犬)と物2つ(例えば船とトラック)で構成される4値分類を学習し、(B)次に動物vs動物か物vs物の二値分類を行ない、(A)の4カテゴリそれぞれの忘却具合を調べたところ、意味的に異なるクラスの方が*8忘却が抑えられた

一見1と2で矛盾した結果が得られたように見えるが、論文の説明によると「1では(A)で同種のクラス間の二値分類をしたため動物と物を区別する能力はなく、それゆえ(B)では単に似ているクラスの二値分類を行った方が忘却が少なかった」のに対して、「2では(A)の時点で動物と物を区別する能力をつける必要があり、それのおかげで(B)を行っても同種のクラスに対する干渉が少なかった(=忘却が抑えられた)」ということらしい
おそらく直感に反するのは2の方だけどこれはカーネル法のように考えると結構納得がいく現象で、(A)の4値分類をした時点で動物に反応するカーネル関数と物に反応するカーネル関数を学習できていたとすれば、(B)で車の二値分類を行ったときに動物に反応するカーネル関数は干渉されずに済むという感じだと思う*9


arxiv.org

そもそも忘却をどのように定義するか自体難しいテーマだけど、この論文では情報理論的な定義を与えている
個人的にcatastrophic forgettingは情報論的に扱うべきなんじゃないかという根拠のない考えがあるんだけど、あまりそういう論文が見つからない


arxiv.org

optimalなcontinual learningはset intersection decision problemというものを解くことができて、それはNP完全なのでoptimal continual learningはNP困難ですねという論文
continual learningの定式化はメモリを考慮していて結構面白いなーという感じだったんだけど、まず一部の証明が追えない、というかこれは...どうなんだ?って箇所があるのと、optimalの定義が「T個のタスクを順に学ぶとき、任意の 0 \leq t \leq Tに対してt番目のタスクまでの学習を終えた時に1,...,tのタスクを 1-\epsilon以上の精度で記憶している」みたいな感じの定義で、それは確かにNP完全でもおかしくないなという感じになる
continual learningの難しいところは有限の記憶領域でどうやりくりするかっていう点で、そもそもとして全てのタスクで 1-\epsilon以上の精度を望むこと自体難しいんだと思うけど、少なくとも理想的な状況を考えるとNP困難になるというのは頭の整理になった


arxiv.org

Task2Vecを用いてtotal complexityとsequential heterogeneityという指標を定義して、それらと忘却の関連性を調べた論文
total complexityは全タスクトータルでの複雑度のようなもので、sequential heterogeneityは隣接するタスク間の相違度を合計したものだけど、さすがにsequential heterogeneityは情報を圧縮しすぎて有意な結論は得られていなそうな感じがした


arxiv.org

EWCなどのcontinual learning用の手法に限らず、dropout、学習率、バッチサイズなども設定によってはcatastrophic forgettingを抑えることができるよねという論文
具体的にはより広いlocal minima (flat minima)を見つける方が後続のタスクを学習する時にcatastrophic forgettingを抑えられることが期待され、実験的に確かめるとcontinual learning手法に匹敵する効果が得られたらしい
local minimaが広いとモデルの汎化性能が増すって話は色んな論文で言われていることで、汎化性能が高ければcatastrophic forgettingが抑えられるのも納得できる気がする
ただ、高い汎化性能=catastrophic forgettingに強いというわけではないと思うので、そこの差について考察するのも良さそう


arxiv.org

神経科学の分野ではneural variabilityなる用語があるらしく、人間の脳が同じ刺激に対しても毎回多少異なる反応を示す、その変動性のことを指す
人間の成長、特に環境への適応に際して必要不可欠なneural variabilityを参考にして、SGDに人為的にノイズを加えるArtificial Neural Variability (ANV)を提案し、ANVの導入による汎化誤差の低下およびラベルノイズとcatastrophic forgettingへの頑強性の上昇について述べてる
最急降下法にはない、確率的勾配降下のランダム性が狭いlocal minimaを抜け出してflat minimaに収束することを補助しているって話は結構されてるけど、ANVはある意味人為的にそのランダム性を強めているって見方もできる ANVの何がcatastrophic forgettingの低減につながるかというと、直感的にはANVの導入によってflat minimaへの収束を誘発し、それゆえに次のタスクでの精度の低下が見込まれる、、、と論文では述べていて、論法としては↑の論文と同じもの
今まであまり目にしなかった神経科学系のstability/plasticity系の論文が多く引用されていてありがたかった


arxiv.org

catastrophic forgettingといえば通常「タスクAを学んだ後にタスクBを学ぶ」のような明確なdistribution shiftを伴う状況が想定されるが、単一タスクを学んでいる時でも同様の現象が起きるのか調べた論文
具体的には各ミニバッチをタスクとみなせば、ミニバッチ内のサンプルが再び出現した時にどれほど忘れられているかを考えることができ、特に論文内ではデータセットには一度学べば滅多に忘れられることのない"unforgettable exmaples"というものが存在することを実験的に確かめ、unforgettable examplesの大部分をデータセットから抜いても精度があまり変わらないことを示した
論文ではこの現象の説明として、線形ネットワークが最大マージン解を学習することが証明されている*10のを例にあげて、一般のネットワークでの確率的勾配降下も最大限データセットを分割できるような決定境界を学んでいて、その境界を決定するのはデータセットのごく一部のforgettable examplesなのだと推測している
catastrophic forgettingがニューラルネットの学習の非効率さの説明になりそう、というのは思っていたけどそれに関連する論文を今まで見かけなかったので、少し内容の近い論文を見つけることができてよかった


まだ他にも積論文みたいなものが溜まっているけど、段々continual learning界隈の論文を把握できてきた気がする
あとサーベイ中にこんなのも見つけた:

github.com

(特に Research — ContinualAI Wiki documentation がエグい)

例に倣ってこの記事を書いてる間一番下にメモ書きを残してたので載せとく

  • レイヤーごとに忘却がどのくらい異なるかの理論的解析
  • メモリサイズが有限であることによってベイズ的手法のどこがダメになるのか
  • 近似によって最新の情報が失われることの弊害
  • greedyに学習していくだけでは限界がある?
  • flat minimaを学ぼうとするだけでは限界が、、、
  • 犬犬犬犬犬犬犬犬犬犬犬犬猫猫猫猫猫猫猫猫猫猫猫猫猫猫
  • 汎化性能とcatastrophic forgettingの関係

*1:本当はああいうのは1回だけ見て気持ちよく終えるのがいいのかもしれない

*2:OpenAI Gym 入門 - Qiitaがわかりやすかった

*3:ニューラルネットに対する苦手意識があるというか、一生自分でモデルを構築できる気がしない

*4:偏微分は常に使うだろうし最適輸送は概要すら把握しきれてないから引き続きやったほうがいいかもしれない

*5:超関数は特異学習理論もそうだけど何かしらの積分の極限での挙動の解析に便利なんだって理解なので、これももしかしたら必須知識なのかもしれない、とか考えると沼なんだけど

*6:centered kernel alignmentという指標で各レイヤーの表現の類似度を測ったらしい

*7:すなわち(A)で動物vs動物であれば(B)でも動物vs動物を学習したときの方が

*8:例えば(A)で鹿、犬、船、トラックの4値分類を行った後(B)で飛行機と車の二値分類を行うと船、トラックより鹿、犬の方が

*9:もちろんこれは動物のカーネル関数と物のカーネル関数が独立であればあるほど効果が発揮されるので、疎な表現学習をしたいというモチベに繋がる

*10:

[1710.10345] The Implicit Bias of Gradient Descent on Separable Data