[DL輪読会]Calibrating CNNs for Lifelong Learning

>100 Views

November 27, 20

スライド概要

2020/11/27
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Papers] Calibrating CNNs for Lifeling Learning Hirono Okamoto, Matsuo Lab http://deeplearning.jp/ 1

2.

書誌情報: Calibrating CNNs for Lifelong Learning n NIPS 2020 accepted n 筆頭著者: Pravendra Singh n 概要: n DNNの層のパラメタは固定したまま,タスクごとに中間層出⼒を通すキャリブレーションモ ジュールのみを学習することで,破滅的忘却を防ぎつつも⼤きくパラメータを増やさずに継続タ スクを解く.実験では分類問題の正解率において様々なデータセットでこれまでの⼿法を⼤きく 引き離してSOTAを達成した. キャリブレーション モジュール

3.

背景: 継続学習とは n 継続学習: モデルが⻑い期間次々と与えられる新しいデータに対して連続的に学習すること n 継続学習モデルの⽬的: 新しいサンプルが追加されたときに再学習するコストを減らす n よくあるモデルの検証⽅法: 過去学習したデータにはアクセスできず,現在のデータからのみ学習を⾏う n 過去のデータも含めたすべてのデータを使ってテストを⾏う n 過去 データ1 現在 データ2 データ3 train モデル データ4 時間

4.

背景: 継続学習における問題 n 通常の機械学習モデルは例えば下図の現在のデータ3を学習しているとき,過去のデータ1,2 にアクセスできないと,データ1,2のことを忘れてしまう(破滅的忘却) 過去 データ1 現在 データ2 データ3 データ4 時間 train モデル n このとき,データ3のタスクは解けるがデータ1,2のタスクは解けない問題がおこる

5.

背景: 破滅的忘却を防ぐには n ナイーブなやり⽅: 新しいデータと古いデータ合わせて改めて学習する 現在 過去 データ1 データ2 データ3 データ4 時間 train モデル n ⽋点: n n n 全部のデータを新しいデータが現れるたびに再学習するのはコストが⾼い 昔のデータをとっておく必要があるがアクセスできなくなってしまうかもしれない 上記⽋点を解決するために,いくつかのモデルが提案されている

6.

関連研究: 継続学習の⼿法は⼤きく3つ存在する n 正則化ベースの⼿法: 昔の知識を失わないようにする正則化をつける n メモリーベースの⼿法: 部分的に昔のサンプルを使う,もしくは⽣成サンプルを使う n 動的ネットワークの⼿法: タスクが増えたときにネットワーク構造を追加する それぞれの⼿法の具体例を1つずつ紹介する

7.

関連研究: 正則化ベースの⼿法 n 新しいタスクを訓練するとき,ネットワークが⼤きく変わることを防ぐことで,昔のタスク の知識をある程度残しておく⽅法 n n 例: Overcoming catastrophic forgetting in neural netwirks n n ※ 提案⼿法は正則化を利⽤しない タスクAが解けるようなパラメタ空間上でタスクBが解けるようなパラメタを探す ロス: ⼀項⽬: タスクBのロス n ⼆項⽬: タスクAが解けるパラメタから 遠ざからないようにする正則化項 n n Fはフィッシャー⾏列の対⾓成分

8.

関連研究: メモリベースの⼿法 n 古いタスクのデータや表現を保持し,新しいタスクの学習中に利⽤することで破滅的忘却を 防ぐ⽅法 n ※ 提案⼿法は前のタスクのデータを保持しないため,それを記憶するためのメモリも必要ない 例: Continual Learning with Deep Generative Replay n ロス: n ⼀項⽬: Solver(分類器)が現在のデータを使ってcross entropyで普通に学習する n ⼆項⽬: GANで昔のデータを出⼒させ,Solverの昔の出⼒と現在の出⼒を近づけるようにする n

9.

関連研究: 動的ネットワークの⼿法 n 新しいタスクを訓練するために,動的にネットワークを変更していく⽅法 n n ※ 提案⼿法はこれ.ただし少ないパラメタですむ 例: Progressive Neural Networks 昔の中間層の出⼒を新しく⼊⼒として利⽤する n 古い重みを更新せず,新しいタスクごとに 新しいネットワークを追加する n ⽋点: パラメタの数がタスクが増えるたびに ⾮常に増加してしまう n 現タスクを 解く重み 古いタスクの 出⼒を利⽤する重み (#) (#:%) 𝑊% (#:%) 𝑊! 𝑈% 𝑈! (#) 点線: 過去のタスクで学習した重み 実線: 現在のタスクで学習する重み

10.

提案⼿法: 全体像 n 3つのモジュール ベースモジュール(CNN) n タスク適応型キャリブレーションモジュール(𝐶𝑀'( ) n タスク特有の分類モジュール(𝐶 ( ) n n 分類ロス(クロスエントロピーロス)のみを使って学習する アクティベーション マップを出⼒ CNNの層 SCMとCCMからなる クラス数は固定する 必要がありそう パラメタ固定 タスクごとに学習し, 初期値は前のタスクの重みとする 分類モジュールの 説明がなくて よくわからない🤔

11.

提案⼿法: spatial calibration module (SCM) n Φ!" : SCM operator n GCONV: グループ化畳み込み n n n 3x3のフィルタを使う αチャンネル,C/αグループ ※ グループ化畳み込み: チャネル⽅向にグループ分割し,それぞれ畳み込みしたあとチャネル⽅向に結合させる n depthwise convolutionの発展型 n element wiseに⾜す

12.

提案⼿法: channel-wise calibration module (CCM) n ξ"! : CCM operator n GAP: global average pooling n n GCONV: group convolution n n n output size: 1x1xC 1x1のフィルタを使う βチャンネル,C/βグループ BN: batch normalization element wiseにかける まとめると,

13.

実験: 10分割したCIFAR100の正解率 n 実験設定: n n 検証⽅法: n n n タスクを1つずつ増やして学習する これまでのタスクの正解率の平均を計算する(?) 提案⼿法: CCLL<α, β> n n n CIFAR100を10クラスごとに分割し,10タスクにする αβはGCONVのチャネル数 グラフの⻘・⿊ 結果: 他の⼿法と⽐べて⼤きく上回った n ※ どのタスクを解いているという情報は使っている n 例えばEWCはそのような情報使ってないのでは? 🤔

14.

実験: パラメタ数の増加率 提案⼿法(紫)はタスクが増えてもほとんどパラメ タ数が増加しない n Progressive Neural Networksはパラメタ増加率が ⾮常に⼤きい n

15.

実験: アブレーションスタディ n 実験設定(split CIFAR-10/100): n n n CIFAR10を最初のタスクとして学習する CIFAR100から10クラスずつとりだし,次の タスクとする 結果: n n 提案⼿法はhnetよりも性能が良い CCLL_SF_SCの性能が⾮常に低いのは,キャ リブレーションパラメタがタスクを学習する のに⼗分なパラメタをもっていないから n n → 提案⼿法のベースモジュールの知識転移が うまくいっていることが⽰されている CCLL_SCの性能が悪いのは,前のタスクの 重みを使っていないので,前タスクの知識転 移がされていないから n SC: Scrach Calibration n タスクごとに1からキャリブレーションモジュールを学 習する(通常は前のタスクのときの重みを初期値とする) n SF: Scrach Freeze n hnet: split CIFAR-10/100を使ったときの現SOTA⼿法 n ベースモデルを全く学習しない

16.

実験: アブレーションスタディ n 実験設定: split CIFAR-10/100 n n 検証⽅法は6つのタスクの平均の正解率 結果: SCMかCCMがあると結果が⼤きく上昇する αが⼤きいほど性能がよくなる(ただし,パラメタ数と計算時間は増える) n βを変えても性能はあまりかわらなかったので,β=1で固定してある n n

17.

実験: 画像サイズの⼤きいデータセット より難しいとされているImageNetやMS-Celebといったデータセットを使った実験 n これまでの⼿法に⼤きく差をつけてSOTA n すべてのタスクを同時に学習した場合(上限)に近い結果 n

18.

実験: ベースモジュールの初期タスクの依存度 実験設定: SVHNを2クラスごとに分割し,5タスクにする n ⽐較: n 1. SVHNで学習する 2. CIFAR10でpretrainしたものを利⽤ n 3. CIFAR10でpretrainし,SVHNでfinetune n n n 1 2 3 結果: どの場合も正解率が⾼い n しかし,⼀般的には最初のタスクは様々な種類の画像データで学習すべき n n もし最初のタスクのデータセットに少量のクラスやサンプルしかなかったらおそらく正解率は低い (参考) 他の⼿法との⽐較

19.

まとめ n 論⽂の結論: n n n 今後の展望: n n n タスクごとに少量のパラメタの追加するだけでSOTAの精度を達成 提案⼿法による⽅法は破滅的忘却しないことも⽰した 今回のドメインは画像分類のみなので,セグメンテーションや物体検出に応⽤する 提案⼿法はキャリブレーションモジュールを追加するだけなので,通常の深層学習モデルを継続 学習のタスクを解くモデルとして拡張できる 感想: n 賢いけどどうやってキャリブレーションモジュールができあがったのかよくわからない n 分類モジュールの説明がないし実装も⾒当たらないのでよくわからない n n n n もともとはパラメタ固定convとタスクごとの可変convを⽤意してた→パラメタ減らす⼯夫をした説 GAPしてチャネル数=クラス数としてクロスエントロピーロス使ってるのか︖ タスクごとにクラス数固定っぽいのはいいのか︖距離学習とか使えば解決できそうだが… 実験設定も細かいとこが書いていないのでよくわからない