欠けている何かを埋めるには混沌(カオス)が必要かも
現在めずらしくいろいろ学習中の、かえるのクーの助手「井戸中 聖」(いとなか セイ)でございます。
さて、みなさんはモノが欠けてしまったらどうやって直しますか?
もしくは、はじめから欠けている部分を補填したいときはどうします?
柔らかいものを流し込んで、固化させることが多いのではないでしょうか。
接着剤とかパテとか、紫外線硬化のレジンだとか、計測して3Dプリンタで欠けた部分をつくったり、欠けた部品そのものを作成したりするかもしれません。
昨日からいろいろな資料を読んでいますが、
・何がいいのか計算が容易でない場合は、一旦多様性をもった状況にしたあと、その中から選択的に「よいと思われるもの」を選択すればよい。
・可塑性がきわめて高い状態でフィットさせたあと、その可塑性をある程度、または完全に除去することにより安定を得る。
というコンセプトが浮かび上がってきています。進化計算的な視点とカオス的な視点です。
NHK BS4Kで4Kリマスタ再放送してますした。幼いころの強烈な不思議感覚をいま再び!
学習過程には「一時的なカオス状態が必要である」という示唆を感じています。
動機
ずっと新しい自己符号化器を発明したいと思っているんです
基本設計
それでは、KooEncoderの基本設計をします。
(1) 従来との比較実験のため、当面の対象をMNIST(手書き数字)にする。
(2) MNISTなので、入力情報は 28×28 dot の784 とする。
(3) 自己符号化器なので、出力はデコードされた28×28dotの784とする。(入力と同じ)
(4) 中間2層とする。(層内のノード数は可変とする)
(5) 各ノードに1:1対応するグリアノード(以降Gノードと呼称)を準備する。
(6) 従来のノードは(Gノードと識別する場合は)Nノード(ニューロンノード)と呼称する。Gノードが各Nノードの個別のハイパーパラメータを管理する。
(7)ノード間の接続の重み(Weight)は「複素数」とする。これは混沌度合を増強すること、及び演算において活性化の他に抑制の機能を持つことをを目的としている。
(8) 入力に近い側を中間1層、出力に近い側を中間2層と呼称する。
(9) 中間1層、2層の演算中間値は複素数となる。
(10) 出力は複素数から実数に写像変換を行う。
(11) 直接的なバックプロパゲーション演算は行わない(これはとても大きな制約、普通に考えれば従来方式で学習ができない)
(12) Gノードは対象Nノード及び付近のNノード(仮想的に物理距離を設定)に対して報酬を付与することができる。
(13) Nノードの学習は「発火/活性化による、重み増強」、Gノードによる報酬からの演算により行う。
(14)Nノードに対して、順方向!に「入力と出力の差異」を流すことは可とする。(フィードバックに相当)
以上でバックプロパゲーションのような勾配の偏微分相当の学習ができるのか試行します。考えただけでは、とってもムリぽです。
誤解のないように申し上げますが、この実験は「遊び」で「ブログネタ」としてやっていますので、「あまり」真剣に読む必要はなく、雰囲気のみお楽しみください。
意図して学術的雰囲気を纏わせていますが、学術的とは対極のシロモノでございます。(本気も半分程度成分として含まれてはいますが。。。)
いろいろ書かずに、すぐやってみれば?のお声が聞こえますが、そではネタがすぐ尽きますので、「ゆっくり」やっていきます。