ステップ2: ニューラルネットワークビットカスケード
...モジュールも...
ステップ2.1: 二進数の作成
左右の記号を押す前であれば、中央の記号はいつでも自由に押すことができる。
中央の記号を押すと、7つの音からなるシーケンスが再生される。
このシーケンスを7桁の二進数に変換する。
それぞれの音は、次の音の方が高ければ1、そうでなければ0に変換される。
最後の音に関しては、「次の音」とは最初の音を指す。
この数列をB
iとする。
空の数列B
fを用意する。
kを1とし、操作
「B
iの先頭k桁を取り(必要であればB
iを繰り返す)、反転してからB
fの末尾に追加する」を行う。
kをk+1に変えて繰り返す。
次のステップに必要な桁数が得られるまでこの操作を繰り返す。
必要であればいつでも追加で桁を生成することができる。
B
fのビットを使うように求められたときは、まだ使われていない先頭のビットを利用する。
ステップ2.2: 枝への値の割り当て
ベースノードから開始し、子に順番に訪れる。
さらにこの子から、子ノードが無いノードに訪れるまで子ノードに順番に訪れる。その後、直前に通った枝に
[b
親=B
f,今回]を割り当てる。
あるノードのb
子が全て割り当てられたら、そのノードと親ノードを繋ぐ枝に[b
親=Σ(b
子)%2]を割り当てる。
全ての枝に対しbが割り当てられるまで、この操作を繰り返す。
ステップ2.3: 逆伝播
ベースノードから開始し、[V
b=1]にする。
子に移動し、[V
b=V
b,親⊻b
親]にする。
この操作により全てのノードに対して値を割り当てる。