Kinetoの弾性同期アルゴリズム
#pKineto #弾性同期
DAG: 有向非巡回グラフ
時系列のものに多い?
#ブロックチェーン
自然言語処理的アプローチ
- 書き込みの感情が近い/遠い人と繋ぐっていう考え方ありかも (minervaの人の提案)
自律分散システム
自律分散システム
https://www.nii.ac.jp/userimg/openhouse/2016/B08.pdf ⽣物のような適応性をもつシステム [[ 自律分散システム研究の課題と将来 (1993)]] ...
- 引き込み現象みたいな考え方
- 指揮者なし
- なぜ?
- コミュニケーション
コミュニケーション
なぜコミュニケーションを「取る」んだろう ...
- それぞれの生徒が予測不能な動き(突然スローになったり、exitしたり)をする
- なので、それを中央で管理しようとするより、ある程度の予測不能さ前提で各デバイスが自分の頭使って動く方が良さそう
- あと実装が楽
- バックエンド慣れてない
- これなら、ローカルの頭を使って、情報をfirebase realtime dbで共有すればいいだけ
- あと実装が面白そう
- 地味にこれが一番かもしれんw
- コミュニケーション
- 自己組織化という言葉もある
- 簡単な実装として、蔵本モデル
蔵本モデル
現象, を記述する wrong: , , https://www.youtube.com/watch?v=1Cz911-6Y-g https://github.com/nobnak/KuramotoModelForSynchronization https://mattyuu.hatenadiary.com/entry/2017/01/08/211848 やさしい説明 関連して、についての説明も https://twitter.com/i/status/1388771335271190528 ...
- いや、でもそんなに意味がないな
longitudinal waveの考え方をいれる
- 映像にlongitudinal waveを置いて、隔点に向かって力が働くようにする
- 力が働いた時の物理を定義したい
<文献ログ> 結合振動子における集団引き込みと複雑ネットワーク
位相(phase)モデルで記述
てか、振動子である必要はないから、単純にを速度に加えればよいのでは?
蔵元モデルの振動じゃない版を作れば
引き込み力(K)を生徒別で変えた方が良い?
- 他人と今どのくらい繋がりたいか、ということベースで
- 頻繁に会話している場合はK強めとか
強制引き込み
- 相互作用じゃなくて、何かの上の力で引き込みをすること
- 周期的な外圧を加えるとか
- 授業映像ベースで、同期ポイント作れたら良い
- ペースメーカー
縦軸: 現実の時間, 横軸: 映像の時間, という表現でグラフでわかりやすく洗わせることに今更気づいた
- むしろ、今までなぜ気づかなかったのかが分からない
シミュレーション一回したい
- swift playground?
- 実装: 時間発展する関数
- オイラー法
オイラー法
な (タイムステップが最小単位) https://algorithm.joho.info/mathematics/euler-method-program/ これ読んで理解した 注意: ↑のページでいうtは導関数の定義でいうとこのxに対応、xはyに対応している 注意: この例だとdxdt()はxを引数に取っているけど、xとtの両方を本当は取るべき ...
- 微分関数(dxdt(x,t))の中身を色々試した
- Trial 1
- シンプルに全部の平均値に近づいていくような仕組み、遠いほど強い重み
- 傾きは、1+(-0.1~0.3)の範囲の制限がかかる(下がる方は遅くなりすぎて欲しくないので、上がる方より制限強めに)
.py
- Trial 1
|
|
- Trial 2
- 自分以外の線に引き寄せられる、近いほど強い重み(逆数関数を使ってる)
- 傾きは、それぞれの引き寄せに(-0.1~0.3)の範囲の制限がかかる(下がる方は遅くなりすぎて欲しくないので、上がる方より制限強めに)
- 上下に振れちゃう問題をどうにかしたい
- k = 1.3
- 
- k = 0.2
- 
- もうちょっと緩やかなカーブがいい(1/xのかんすうをつかってるのでこの場合仕方がない)
.py
|
|
- シグモイド曲線
- 色々ある、シグモイド関数とか正規分布とか
多くの自然界に存在する事柄は、このようなS字曲線を取ります。
- シグモイド関数 .py
|
|
- 
- クラスタリング .py
|
|
- 
- 結構うまく行った
- x-meansを使った (k-meansの個数自動版)
- 上二つはグループになったりならなかったりが安定しないので、グラフがガタガタになる
- これはどうにかすべき
- あと、あんまりエレガントさがない、本当はシンプルな関数だけでできたらもっと嬉しい
- DBSCAN的クラスタリングベースのやつ .py
|
|
- 雑で長い(どうせswiftで書き直すのでとりあえず雑に作った)
- 仕組み
- DBSCAN的なクラスタリングをした
- クラスタ内なら普通にsigmoidで引き寄せ
- クラスタ外なら弱めに引き寄せ
- あと制限もつけた、0.8~1.2
- epsの値は悩む
- 以下ランダムにジェネレートした実行例 (eps=5)
-  
-    
- 
- 結構理想系ではある
- 問題点
- 人数がめっちゃ大量になると、全部一つのクラスタになってしまう
- なにかしらのlimitはつけるべき
- sigmoidでaverageによってくモデルもありかも(TODO)
- さまざまなepsでクラスタリングやって、小さいepsで含まれるやつほど重み強めとかもありかも
- 実装
- KinetoWatcherで見たやつ
- これは、ただの平均値吸い寄せモデル(Trial 1)