Open aaaa383 opened 1 year ago
→つまり入力に対して正解と不正解を見分けられるように学習を進める データが2種類あるため、forward-forwardという名前がついており、正解データは正解データだけのバッチ、 不正解データは不正解データだけでバッチが構成される
学習データについて正解データ(positive)と不正解データ(negative)を作成し、最初のラベル個数分のpixelに正解ラベルを重ねる(overlay)
・Positive sample:画像と正解ラベル ・Negative sample: 画像とランダムに付与したラベル
MNISTを使った実験では、NNを4FC(全結合層)・2000ReLUとしたときでテスト誤差1.4%を達成 →BPを利用した場合と同程度の精度がでることが示している またDropout:やLabel Smoothingを適切に利用することでテスト誤差は1.1%まで低減可能
検証データ: MNIST:train 5万、val 1万、 test1万
→2つの数字をマスクで合成し、負例データとして利用している 生成方法の意図:文字の形状を学習するために正例に対して近距離相関が高く、遠距離相関が低いデータを作成 生成方法:ランダムな画像に対して繰り返しブラー処理をかけて最終的に閾値0.5で二値化画像を作成
2000ReLUの4つの隠れ層を持つNNを100epoch学習させて、最後の3層の隠れ層にgoodnessをソフトマックスの入力として利用するとエラー率は1.37%となる。
CIFAR-10:32✕32✕3色チャンネル(3072次元)の10クラス分類用のデータセット
BPに精度では劣るがFFでも学習を行うことができることを示した
検証データ: イソップ童話:100文字✕248文 文字種30種:小文字26文字+スペース、コンマ、セミコロン、ピリオドの30クラス分類
学習 最初10文字を文脈(学習データ)として与え、残り90文字を生成・予測する 正例:正解データ10文字 負例:10文字目がモデルの予測値 or 11文字目以降のすべての予測値
FFでシーケンスに関しても学習可能であることが示された
グラフの比較条件 青:隠れ層の重みをランダムに固定し、softmaxだけを学習 赤:正例/負例を交互に学習 黒:正例/負例を同時に学習
ランダムより精度は向上 正例/負例は同時に考慮しなくてもOK →オフライン学習・睡眠学習が可能
https://qiita.com/sergicalsix/items/a7720c403028823f7b19 https://www.slideshare.net/DeepLearningJP2016/dlthe-forwardforward-algorithm-some-preliminary https://keras.io/examples/vision/forwardforward/
サンプルコード https://github.com/aaaa383/-/blob/main/forward_forward_Algorithm.ipynb
The Forward-Forward Algorithm: Some Preliminary Investigations
論文情報
一言説明
モチベーション
手法
→つまり入力に対して正解と不正解を見分けられるように学習を進める
データが2種類あるため、forward-forwardという名前がついており、正解データは正解データだけのバッチ、 不正解データは不正解データだけでバッチが構成される
教師あり学習の場合のデータ作成方法
学習データについて正解データ(positive)と不正解データ(negative)を作成し、最初のラベル個数分のpixelに正解ラベルを重ねる(overlay)
・Positive sample:画像と正解ラベル ・Negative sample: 画像とランダムに付与したラベル
推論方法
実データでの実験
MNISTを使った実験では、NNを4FC(全結合層)・2000ReLUとしたときでテスト誤差1.4%を達成 →BPを利用した場合と同程度の精度がでることが示している またDropout:やLabel Smoothingを適切に利用することでテスト誤差は1.1%まで低減可能
検証データ: MNIST:train 5万、val 1万、 test1万
FFを使う上での2つの疑問点
→2つの数字をマスクで合成し、負例データとして利用している 生成方法の意図:文字の形状を学習するために正例に対して近距離相関が高く、遠距離相関が低いデータを作成 生成方法:ランダムな画像に対して繰り返しブラー処理をかけて最終的に閾値0.5で二値化画像を作成
2000ReLUの4つの隠れ層を持つNNを100epoch学習させて、最後の3層の隠れ層にgoodnessをソフトマックスの入力として利用するとエラー率は1.37%となる。
CIFAR-10での実験
CIFAR-10:32✕32✕3色チャンネル(3072次元)の10クラス分類用のデータセット
BPに精度では劣るがFFでも学習を行うことができることを示した
FFでのsequenceの学習
検証データ: イソップ童話:100文字✕248文 文字種30種:小文字26文字+スペース、コンマ、セミコロン、ピリオドの30クラス分類
学習 最初10文字を文脈(学習データ)として与え、残り90文字を生成・予測する 正例:正解データ10文字 負例:10文字目がモデルの予測値 or 11文字目以降のすべての予測値
FFでシーケンスに関しても学習可能であることが示された
グラフの比較条件 青:隠れ層の重みをランダムに固定し、softmaxだけを学習 赤:正例/負例を交互に学習 黒:正例/負例を同時に学習
ランダムより精度は向上
正例/負例は同時に考慮しなくてもOK →オフライン学習・睡眠学習が可能
まとめ
読んだ所感
参考URL
https://qiita.com/sergicalsix/items/a7720c403028823f7b19 https://www.slideshare.net/DeepLearningJP2016/dlthe-forwardforward-algorithm-some-preliminary https://keras.io/examples/vision/forwardforward/
サンプルコード https://github.com/aaaa383/-/blob/main/forward_forward_Algorithm.ipynb