317 Views
January 06, 23
スライド概要
2023/1/6
Deep Learning JP
http://deeplearning.jp/seminar-2/
DL輪読会資料
DEEP LEARNING JP The Forward-Forward Algorithm: Some Preliminary [DL Papers] Kensuke Wakasugi, Panasonic Holdings Corporation. http://deeplearning.jp/ 1
書誌情報 ◼ タイトル: The Forward-Forward Algorithm: Some Preliminary ◼ 著者: Geoffrey Hinton(Google Brain) ◼ URL: https://www.cs.toronto.edu/~hinton/FFA13.pdf ◼ その他: 同論文の内容について、12月のNeurISP2022でKeynote Speech ◼ 選書理由 NeurIPSでの講演を聞き、誤差逆伝搬を使わない方法に興味を持ったため。 大学時代に、神経細胞の培養をしていた経験もあり、生体に則した仕組みにも期待。 2
目次 1. Back Propagation(BP)の問題 2. Forward-Forward Algorithm(FFA) 3. FFを用いた実験 4. CIFAR10での実験 5. Contrastive learningとの関連性 6. 早い学習と遅い学習 7. FFとアナログ学習 8. Mortal Computation 3
目次 1. Back Propagation(BP)の問題 2. Forward-Forward Algorithm(FFA) 3. FFを用いた実験 4. CIFAR10での実験 5. Contrastive learningとの関連性 6. 早い学習と遅い学習 7. FFとアナログ学習 8. Mortal Computation 4
Back Propagationの問題 5 深層学習では誤差逆伝搬で成功しているが、脳の皮質でそれが行われている証拠はない Forward Path Data Loss ■BPを皮質で行う場合の課題 • Lossの導関数を伝達したり、forward時の状態を 記憶しておく必要がある • 特に、後段の関数についての完全な情報を 前段に伝える必要がある これら課題を回避する方法としてFFを提案 Backward Path ? ₋ 正/負の信号(のようなもの)で学習 ₋ 性能では、同程度か少し劣る ₋ 省電力にメリット
Forward-Forward Algorithm 6 新たにNegative Data、goodnessを導入し、FFでの学習を実現 BP(再掲) FF Good ness Positive Data Forward Path Data Loss Backward Path Good ness Forward Path ↑Goodness Negative Data Forward Path ↓Goodness ■BPを皮質で行う場合の課題 • Lossの導関数を伝達したり、forward時の状態を 記憶しておく必要がある • 特に、後段の関数についての完全な情報を 前段に伝える必要がある ■FFでの学習 • 前後のgoodnessの微分で学習(正負で逆方向) • goodness:例えば、activityの二乗和 • 正負の情報は、top-down接続か、外部から伝達
FFで多層を学習する際の工夫 7 層毎にgoodnessで学習。伝達時に、ノルムで正規化し、多様な特徴を獲得。 Good ness Positive Data Forward Path Negative Data Forward Path Good ness • • ローカルな情報で学習が完結(BP不要) BPで得られる情報の代わりとして、 正例/負例データを利用.単純には2値判別として扱う • ある層で、二値判別ができてしまうと、後段では何も学習しない →伝搬時に、ノルムで正規化
目次 1. Back Propagation(BP)の問題 2. Forward-Forward Algorithm(FFA) 3. FFを用いた実験 4. CIFAR10での実験 5. Contrastive learningとの関連性 6. 早い学習と遅い学習 7. FFとアナログ学習 8. Mortal Computation 8
FFを用いた実験 9 データをMNIST、NNを4FC・2000ReLUとしたときの予測性能1.4%をベースラインとして採用 ■検証データ: MNIST(permutation-invariant) train 5万、val 1万、 test 1万 ■ベースライン CNN:0.6% 4FC・2000ReLU:1.4%、20epoch (1.1% with 正則化) FC4層 FFにおける2つの課題点: 適切な正負データがある場合に学習できるか 適切な負データはどうやって得られるか ReLU2000個
ハンドクラフトの負例データ 二つの数字をマスクで合成し、負例データとして利用 ■生成方法の意図: 文字の形状を学習させるため、正例に対し、近距離相関が高く、遠距離相関が低いデータを作成し負例として利用 ■生成方法 ランダム画像に対し、繰り返しブラー処理をかけ、最終的に閾値0.5で二値化画像を得る 上記生成データを適切な負例データとして、 FFが学習できるか検証 10
教師なし学習での性能 11 教師なし学習した後、goodnessを入力として教師あり学習。同等の性能 FC4層 ReLU2000個 Positive Data Negative Data 画像 教師あり softmax goodnessを集めて、softmaxの入力とし、 教師あり学習 ※1つ目の隠れ層を入力に用いると性能悪化とのこと 予測性能 Epoch baseline 1.4% 20 FC 1.37% 100 局所受容野※ 1.16% 60 ※weight shareではない
教師あり学習での性能 12 正解/不正解ラベルを入力に含めることで、学習が加速。 FC4層 ReLU2000個 Positive Data Negative Data 画像 with label ※画像端10pixelsに上書き 予測性能 Epoch baseline 1.4% 20 FC 1.36% 60 FC(lr×2) 1.46% 40 ■負例、テスト時のラベルの入れ方 教師あり softmax goodnessを集めて、softmaxの入力とし、 教師あり学習 負例: 正解以外のラベル or 平均値0.1 (後者のほうが学習が3倍早い?) テスト: 10通りForward計算し、goodnessの累積最大を予測として採用 or 平均値0.1を付与し、得られたgoodnessからsoftmax経由で予測
受容野の可視化 13 jitterデータで学習すると、エッジ特徴を学習 予測性能 Epoch baseline CNN 0.6% ? jitter※ 0.64% 500 ※±2pixels、合計25倍のデータで学習
知覚におけるトップダウン効果のモデル化 14 入力を動画とみなし、時間遅れでのトップダウン伝達も考慮 FC 2 or 3層 Negative Data 画像 ReLU2000個 Positive Data ■学習 1回目は一方向に計算。計8回の更新実施 前ステップ0.3、現ステップ0.7で足して計算(振動抑制) ※事前実験で10step、偶奇交互更新も検証? ※負例の頻度は、その予測確率に比例させると学習が効率化 ■テスト 10labelsそれぞれで、8回の更新実施。 3-5回分のgoodnessから予測 予測性能 Epoch baseline 1.4% 20 top-down 1.31% 60
空間的文脈に基づく予測の教師としての利用 FFでは上位/下位の整合が取れる? ■議論(section 3.5) 学習時には上位/下位レイヤーからの情報が合致することが要請される? ※goodness最小化を目的とする場合、相殺を要請 ※上位レイヤーからの空間的文脈を学習に反映させる方法がなく、 単に整合させようとしてもうまくいかないらしい ※負例データの活用がカギ? ■個人的な考察 上位レイヤーには正規化後の情報しか伝わらないので、 正規化後の情報と、ノルムのコンセンサスを要求されており、 低次~高次情報全体での整合性を獲得できたということ? 15
CIFAR-10での実験 16 BPより少し劣るが、FFでも学習可能 Positive Data Negative Data 画像 ■学習 1回目は一方向に計算。計10回の更新実施 ■テスト 4-6回分のgoodnessから予測 あるいは、one pathでのsoftmax ReLU 32 x 32 x 3個 局所受容野(11x11x3) 2 or 3層
sequenceの学習 17 モデルの予測値を負例として学習 ■検証データ: イソップ童話、100文字×248文。 文字種30種:小文字26個+スペース、コンマ、セミコロン、ピリオド →30クラス分類 ■学習: 最初10文字を文脈として与え、残り90文字を生成・予測する 正例:正解データ10文字 負例:10文字目がモデルの予測値(正解を除く?) あるいは、11文字目以降のすべて予測値 ※データ数:90文字×248文字=22,320文字 FC3層 Negative Data 文字列 ReLU2000個 Positive Data
sequenceの予測性能 18 シーケンスも学習可能。正例/負例は同時に学習しなくてもいい ■比較条件 青:重みをランダムで固定、softmaxだけ学習 赤:正例/負例を交互に学習 黒:正例/負例を同時に ■議論 ・ランダムより性能向上 ・正例/負例は同時に考慮しなくてもいい →オフライン学習・睡眠学習ができる
目次 1. Back Propagation(BP)の問題 2. Forward-Forward Algorithm(FFA) 3. FFを用いた実験 4. CIFAR10での実験 5. Contrastive learningとの関連性 6. 早い学習と遅い学習 7. FFとアナログ学習 8. Mortal Computation 19
その他のContrastive learningとの関連 ボルツマンマシンのdata/model期待値と、正例/負例が対応。FFのほうがtractable ■ボルツマンマシン 更新則が、データについての期待値と、モデルについての期待値の差 →誤差伝搬せずとも重みの更新が可能 覚醒/睡眠に対応するとも考えられるが、 data/modelを同期させないと学習がうまくいかない ■議論 数式的にはきれいなので、うまく生かしたいところだが、できていない。 一方で、contrastive divergenceなどのように、モデルの期待値(負例)は、 必ずしもデータをモデル分布からサンプリングする必要はない。 FFでは、エネルギーの代わりにgoodnessを採用して簡素化することで、tractableに 20
その他のContrastive learningとの関連 FFはGANの特殊ケース。識別器をgoodnessとして各レイヤーに持った形。 ■GAN 生成器:FFのNNそのものに対応 識別機:FFの各レイヤーのgoodnessを使った識別機に対応 ※GANの特殊ケースとみなせる ■議論 各レイヤーに識別機を持つので、BPが不要。 FFを生成モデルとして扱うためには、隠れ層の情報からデータを生成する必要がある。 →(この論文では示されていないが)、線形変換+softmaxでできれば、BP不要。 また、生成器と識別器が同じ表現を使うので、mode collapseも回避。 Positive Data Negative Data 21
その他のContrastive learningとの関連 22 SimCLRと比較して、実ニューロンでの実現性はFFが有利。データ効率向上のためブロック化。 ■SimCLR 異なる二つの入力の内部表現を一致させる →実ニューロンで実現させる方法は自明でない FFの方が、簡単。 弱点は、学習に多くの画像ペアが必要なこと 100万枚あっても20bitの情報しかない ※BP相当の微分方向を得ようとしても、 20次元分しか得られないということ? ■FF 異なる入力に対して、一致した場合に活性化するように学習 データ効率の悪さは、SimCLRと同じか、より悪い。 →対策として、層をブロック化して、それぞれでgoodnessの 閾値処理を行わせる。 参考:[1] SimCLR ※1データで得られる情報が、ブロック数bitになる [1] Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020, November). A simple framework for contrastive learning of visual representations. In International conference on machine learning (pp. 1597-1607). PMLR. https://arxiv.org/pdf/2002.05709.pdf
stacked contrastive learningの問題 学習方法によってはデータに関係のない情報を学習するが、正例/負例の利用でそれを回避 ■Restricted Boltzmann /stacked autoencoders レイヤーごとに学習をする方法がある →ただし、ランダム重みでも、隠れ層で相関がでる(NN構造由来の相関?) ■どう回避するか もともとのRBMでは、異なる条件で得られた二つの統計量を比較することで、 構造由来の相関をキャンセルしていた。 FFでは、正例/負例がその役割を担っている 23
目次 1. Back Propagation(BP)の問題 2. Forward-Forward Algorithm(FFA) 3. FFを用いた実験 4. CIFAR10での実験 5. Contrastive learningとの関連性 6. 早い学習と遅い学習 7. FFとアナログ学習 8. Mortal Computation 9. Future work 24
早い学習と遅い学習 25 goodnessによる学習は、後段への出力を変化させないため、同時並行で学習可能 ■FFでの重みの更新量 ■導出: 対数尤度を重みで微分 y_jの変化量を確認(最終的に比例変化のみ) ■議論 ・入力データが変わらない場合は、 学習による変化に対して、各層の出力値が不変 →同時並列的な学習が可能 ・ミニバッチ学習では採用できないが、 勾配に基づいて徐々に学習する方法を避けることができるので 心理学で有効かも? ・前段と後段で学習が独立になるので、後段がブラックボックスでも よく、前段で早い学習を行い、後段で遅い学習をするといった 使い方も考えられる
Analog hardware・Mortal Computation 26 BPを含むベクトル演算では、省エネな計算回路実装は難しいが、FFなら可能 ■省エネな回路実装 activity → voltage weight → conductance BPを行う場合、回路で実現するのは難しいが、 FFなら実現可能性あり ■既存のComputation ソフトウェアとハードウェアを分離。ハードが変わっても挙動が同じ。 →これらの分断を放棄すれば、省エネな回路実装が可能では? ■Mortal Computation mortal:immortal(不滅)の対義語。 回路そのものが学習結果(conductance)を保持しており、 回路が消滅すると、学習結果も消滅する。 ■議論 ・回路ごとに学習するため、 パラメータのコピーは意味がない。 ・代わりに、蒸留のような手法で、入出力の関係性を コピーしたらいい。一般化にもなる? ・もし何兆ものパラメータを数ワットで学習したいなら Mortal Computationが必要 ・同時に、不明なハードウェアにおける学習方法が必要 FFが有力候補 ・より大きなNNにスケールするかはまだわからない
目次 1. Back Propagation(BP)の問題 2. Forward-Forward Algorithm(FFA) 3. FFを用いた実験 4. CIFAR10での実験 5. Contrastive learningとの関連性 6. 早い学習と遅い学習 7. FFとアナログ学習 8. Mortal Computation 9. Future work 27
Future work 1. 教師なし学習に使えるほどの画像や動画の生成モデルを学習できるか? 2. 睡眠時学習のように、正例/負例をどれほど時間的に乖離させられるか? 3. 負例をしばらく取り除くことで、睡眠不足の影響を模倣できるか? 4. goodness関数として適切なものは何か? 正例に対して、二乗和を最小化する方法でも動作する(むしろ少し良い) 5. 活性化関数として適切なものは何か? t分布の下での負の対数密度も面白そう 6. 空間的データの場合、異なる箇所の局所goodness関数を持つことにメリットはあるか?うまくいけば学習が高速化する。 7. シーケンシャルデータの場合、fast weights (Ba et al., 2016a)は、単純化したtransformerを模倣できるか? 8. 二乗発火量を最大化する特徴検出機と、二乗発火量を最小化する制約違反検出器を、FFが持つことでメリットはあるか? 28
まとめ・感想 ◼ まとめ • 実際の脳のモデル化を念頭に、BPに代わる学習アルゴリズムFFを提案 • BPと比較して、予測性能は同程度かやや劣り、学習速度は遅い • 一方、FFのようなアルゴリズムであれば、mortal computationの学習が可能となり、 大幅に省エネな計算回路が実現しうる ◼ 感想 • 伝搬時に正規化する工夫は、いろんな観点で面白い。 各層で並列に学習できるとした場合、分散学習やプライバシー保護への応用もあるか? • 多様な手法と、少しずつ類似点を見ることができるため、各種技術の輸出入も起こりそう。 29