564 :548%○料:2015/10/24(土) 17:56:14.91 ID:59slR5et http://digitalcast.jp/v/14670/ > 調整なしの協同が可能になるとものすごく大きく複雑なコミュニティが形成 ry > のコミュニティのグラフ ry プロジェクトで働いている人の間の関係 ry 組織図のようには ry > むしろ非・組織図 ry こういったツールを使うことで一緒に何かを作り上 ry
activeDutyCycle(c) 抑制の後にカラムc がアクティブになった頻度を表す移動平均値 (例えば直近1000回繰り返した間に ry なった回数) overlapDutyCycle(c) カラムc がその入力に対して有意なオーバラップ値 (即ち、minOverlapより大きな値)になった頻度を表す移動平均値 (例えば直近1000回繰り返した間に ry なった回数) minDutyCycle(c) 最小限望まれるセルの発火頻度 ry 頻度がこの値を下回れば、それはブーストされる。 この値はその付近のカラムの最大の発火頻度の1%として計算する。 0023yamaguti~kasi2017/03/26(日) 13:53:48.86ID:d/izoHY4 以下の補助関数が疑似コードで ry
kthScore(cols, k) 与えられたカラムのリストに対して、k番目のオーバラップ値を返す updateActiveDutyCycle(c) 抑制の後にカラムc がアクティブになった頻度の移動平均を計算する updateOverlapDutyCycle(c) カラムc のオーバラップ値がminOverlap より大きくなった頻度の移動平均 ry averageReceptiveFieldSize() カラムに接続された受容野の半径についての、すべてのカラムの平均値。 ry た受容野は接続されたシナプス(永続値≧connectedPermのもの)だけが含まれる。 これはカラム間の横方向の抑制範囲を決めるために用いられる。 maxDutyCycle(cols) ry カラムのリストのうち、activeDutyCycle が最大のものを返す increasePermanences(c, s) カラムc のすべてのシナプスの永続値をスケール因子s に従って増加させる boostFunction(c) カラムc のブースト値 ry 値は1以上 ry 。 activeDutyCycle(c) が minDutyCycle(c) より大きければブースト値は1。 activeDutyCycle が minDutyCycle より下回り始めて以降は、ブースト値はリニアに増加する。 0024yamaguti~kasi2017/04/01(土) 07:44:42.02ID:CW1wUjX6 Page 48
第4章: 時間プーリングの実装と疑似コード
ry 時間プーリング関数53の最初の実装の疑似コード ry ry 入力は空間プーリング関数で計算した activeColumns(t) である。 このコードは時刻 t における各セルのアクティブ状態及び予測状態を計算する。 アクティブ状態と予測状態の論理和が ry 出力 ry 、次のレベルの入力 ry
疑似コードは3つのフェーズ ry 順に実行 ry
ry 1: 各セルについてアクティブ状態 activeState(t) を計算する。 ry 2: 各セルについて予測状態 predictiveState(t) を計算する。 ry 3: シナプスを更新する。
ry 3 は学習するときにだけ必要 ry しかし ry 空間プーリングのときとは異なり、 学習が有効のときはフェーズ 1 と 2 も学習特有の操作をいくつか含んでいる。 時間プーリングは空間プーリングよりかなり複雑であるため、 先ずは時間プーリングの推論だけのバージョン ry 次に推論と学習を含む ry 。補助関数は疑似コードの後に、本章の最後に示す。
ry : 推論だけのバージョン
フェーズ 1 ry 各セルのアクティブ状態を計算する。勝者となった各カラムについて ry 。フィード・フォワード入力がいずれかのセルによって予測された (即ち、前回の時刻ステップで順序セグメントによって predictiveState が 1 になった) とき、それらのセルをアクティブにする(4-9 行目)。 フィード・フォワード入力が予測されなかった(どのセルも predictiveState がオンに ならなかった)とき、そのカラムのすべてのセルをアクティブにする(11-13 行目)。
53 temporal pooler function 0025yamaguti~kasi2017/04/02(日) 10:05:59.12ID:XlgvGcXl Page 49
1. for c in activeColumns(t) 2. 3. buPredicted = false 4. for i = 0 to cellsPerColumn - 1 5. if predictiveState(c, i, t-1) == true then 6. s = getActiveSegment(c, i, t-1, activeState) 7. if s.sequenceSegment == true then 8. buPredicted = true 9. activeState(c, i, t) = 1 10. 11. if buPredicted == false then 12. for i = 0 to cellsPerColumn - 1 13. activeState(c, i, t) = 1 0026252017/04/02(日) 10:07:00.04ID:XlgvGcXl フェーズ 2 ry 各セルの予測状態を計算する。 セルのどれかのセグメントがアクティブになると、そのセルの predictiveState がオンになる。 即ち、十分な数の横方向の接続先が、 フィード・フォワード入力によって現在発火していればオンになる。
14. for c, i in cells 15. for s in segments(c, i) 16. if segmentActive(c, i, s, t) then 17. predictiveState(c, i, t) = 1
ry 疑似コード: 推論と学習を含むバージョン
フェーズ 1 ry 勝者となったカラム中の各セルの activeState を計算する。 ry カラムごとに一つのセルを学習セル (learnState)として選択する54。 そのロジックは以下の通り。 フィード・フォワード入力がいずれかのセルによって予測された (即ち、順序セグメントによって predictiveState
54 lcChosen は学習セルが選択されたこと(learn cell chosen)を表し、 (c, i) が選択された学習セル、そして learnState(c, i, t) =1 に設定されることで このセルが学習セルとして選択されたことを記憶する。 0027212017/04/02(日) 20:28:24.96ID:XlgvGcXl>>20-21 http://rio2016.2ch.net/test/read.cgi/future/1449403261/1650028yamaguti~kasi2017/04/02(日) 20:32:14.50ID:XlgvGcXl 1. activeColumns( t ).each { | c | 2. 3. buPredicted = false # bottom-up ( P50 ) # フラグ ローカル 4. cellsPerColumn.times { | i | # 回数 : 各カラムのセルの数 5. if predictiveState( c , i , t - 1 ) # == true # 各セルの予測状態 ( P38 P43 P52 P62-63 ) 6. s = getActiveSegment( c , i , t - 1 , activeState ) # segmentActive( s , t , state ) が真になるセグメント ry # 順序セグメント ry なければ最もアクティビティが高 ry 優先 # activeState() # カラム c セル i 時刻 t におけるアクティブ状態 ry # 現在のフィードフォワード入力と過去の時間的文脈から ry 7. if s.sequenceSegment # == true # フラグ : インスタンス s ローカル ( 6. P52 ) . # if getActiveSegment( c , i , t - 1 , activeState ).sequenceSegment 8. buPredicted = true # ||= 9. activeState( c , i , t ) = 1 # ( 6. ) . # next 10. end 05. end 11. buPredicted || # == false . # buPredicted && next # どの予測にも一致しな ry 何か普通でない ry ( P22 P29 P31 ) # フィードフォワード入力が予測されな ry 、そのカラムのすべてのセルをアクティブ ry ( P48 ) 12. cellsPerColumn.times { | i | 13. activeState( c , i , t ) = 1 012. } 04. } 01. } 0029yamaguti~kasi2017/04/08(土) 00:26:31.92ID:gkXTgWKC Page 50
が 1 になった)とき55、それらのセルをアクティブにする(23-27 行目)。 そのセグメントが、learnState がオンのセルによってアクティブになった場合、 そのセルは学習セルとして選択される(28-30 行目)。フィード・フォワード入力が 予測されな ry 、そのカラムのすべてのセルをアクティブにする(32-34 行目)。 さらに、ベストマッチセルが学習セルとして選択され(36-41 行目)、 新しいセグメントがそのセルに追加される。 0030yamaguti~kasi2017/04/08(土) 00:27:25.57ID:gkXTgWKC 18. for c in activeColumns(t) 19. 20. buPredicted = false 21. lcChosen = false 22. for i = 0 to cellsPerColumn - 1 23. if predictiveState(c, i, t-1) == true then 24. s = getActiveSegment(c, i, t-1, activeState) 25. if s.sequenceSegment == true then 26. buPredicted = true 27. activeState(c, i, t) = 1 28. if segmentActive(s, t-1, learnState) then 29. lcChosen = true 30. learnState(c, i, t) = 1 31. 32. if buPredicted == false then 33. for i = 0 to cellsPerColumn - 1 34. activeState(c, i, t) = 1 35. 36. if lcChosen == false then 37. I,s = getBestMatchingCell(c, t-1) 38. learnState(c, i, t) = 1 39. sUpdate = getSegmentActiveSynapses (c, i, s, t-1, true) 40. sUpdate.sequenceSegment = true 41. segmentUpdateList.add(sUpdate)