妄想ともいいます
こんにち!こんばん!かえるのクーの助手の「井戸中 聖」で!
実験のアイデアが湧かない(というより、時間があったのでアニメを見始めたらそっちに大々的にシフトしてしまった)今日このごろです。

では、フィードバックしないで学習する方法を無理やり!考えてみます
フィードバックとは
入力と出力をもつシステムにおいて、出力結果を入力、もしくは目標値に帰還(だいたい負帰還)させ、安定した、または所望の出力を得る制御です。
出力と入力・目標値から意図しない差異(歪)を演算し、歪が小さくなるような帰還をさせるなどです。




そうです。我らが「自己符号化器」もフィードバック装置そのものではありませんか。
入力と出力の差をエラー(コスト)として演算し、そのエラーが最小になっていくように接続の重みとバイアスを調整していくのです。勾配降下法(Gradient descent)・誤差逆伝播法(Backpropagation)ですね。
神経細胞は(あからさまな)逆伝搬はしない
よくある説明のように神経細胞は逆方向には情報が伝わらないため、誤差逆伝搬法のような学習を直接しているわけではありません。脳細胞はどうやって学習するのかについて体系的に腑に落ちる説明は、残念ながら読んだことがありません。「分っていない」「研究中である」などは多数みかけます。
そこで、(あからさまな)逆伝搬をしないで、学習するニューラルネットワークを考えてみようというのがこの記事です。妄想なのでたわごとです。真剣に読んではいけません。

さて、自己符号化器、しいてはディープラーニングの各レイヤは、「フィルター自動生成装置」かつ「(自動)合成装置」そのものであることはこのサイトの周知事項です。
ディープラーニングの各レイヤはレイヤーが進むごとに特徴の抽象度をあげ、その活性化されるフィルターの組み合わせで、識別、判断、決定を行います。一般的に考えても、「自動生成装置」は生成が正常におこなわれるかどうかのフィードバック機能が必須ではあります。

神経細胞も単体での直接的なフィードバックはないものの、複数神経細胞のループ回路、付近の毛細血管からの栄養補給による制御、付近の神経細胞の活性化挙動検知、ターゲットシナプスの配線混雑状況(制約)、グリア細胞等による間接的制御、シナプスからの接続誘導物質の分泌/検知状況により「フィードバック」はしていると確信しています。(短く言えば、今のニューラルネットワークモデルにはグリア細胞機能が足りません)
こんな見地も実装してみればおもしろそうです。
思考実験の概略
さて、動機はともかく、以下の条件・演算によるフィルター生成を考えます。


フィルターでエンコード・デコードした結果の誤差を使用しない。(それでどこまでできるのかがこの思考実験)
・入力信号セットの特定区間の和(もしくは積)を演算(特定区間(短期)重なり検出)し、フィルタ候補とする
・入力信号セットの特定区間の組み合わせ差を演算(特定区間(短期)の非重なり検出)しフィルタ候補とする
・入力信号セットの比較的長区間の和(もしくは積)を演算しフィルタ候補とする
・入力信号セットの比較的長区間の組み合わせ差を演算を演算しフィルタ候補とする。
・入力信号セット(単一)と上記の差と積を演算し、近傍集合に分割(例えば信号が閾値を超える近傍部分集合への分割を行う。
・上記分割された情報について、過去に記録している情報との積を計算し、合致度が高ければその情報へ加算、すべて合致度が低ければ新たに記録する。
・フィルタ候補の相互間を演算し、類似度が高いフィルターは合算して1つのフィルターにまとめる。
・実ニューロン細胞のような空間的制約(ノードが遠い近い)などを加味する。(実は畳み込み・プーリング演算がこれに相当すると認識しています):フーリエ変換(広域分析)よりもウエーブレット変換orガボールフィルター(時間的・空間的な局所分析)!
・ 計算をすすめ、強度が低い(合算があまり行われていない)フィルター候補を定期的に削除していき、一定以上かつ上限数未満のフィルタ数を得る。
以上のような単純な計算を繰り返して、フィルター候補を生成する。(このへんは試行錯誤実験のしがいがあります)

最後にフィルタを正規化(特定の強度になるように圧縮)してフィルターセットとする。






(いつものように画像は本文とは関係ありません:粒子性と波動性の普遍性を感じます)
これ(計算しただけ)ではうまく機能しないことは明白なので、バイアス値のみを逆伝搬法で設定する。(ここだけフィードバック)
これである程度のエンコードフィルター(重さ共有としてデコードフィルターでもある)はできるような気がしています。少なくとも想像上はある程度うまくいっています。(思い違いはあるかもですが)

このような類の演算で、どの程度の機能を有する(Autoでない)エンコーダができるのか。ある程度普遍性のある有用な手順をみつけられるか。を実際の演算実験で検証できたらなぁ。と思っています。
最終的にはAutoEncoderにこの実験の結果を反映させ、より高速な学習ができる演算や制約、アルゴリズムを組み込めたらおもしろいと思っています。




(合成は線形な場合と非線形(変質=再分離困難)の場合があります)
どうもすみません
う~ん。思考実験を言語化することはできないことを思い知りました。
いつにもましてつまらない内容でした。お詫びいたします。
でもつまるところ、あらゆるものは(時間的・空間的・機能的・構造的...etc)下位クラスへの有意分解と上位クラスへの選択的統合であることにつきます。
ここまで読んでいただいた方、どうもありがとうございます。