前回まで、行動(特にInventoryボタンを押すこと)が上手く生成の条件付けに反映されなくて首をひねっていたが、結果的にデータが想定していたのとちょっと違っていたことが明らかになった。
Inventoryに相当する行動が0,1のどちらかを取り、1がボタン押下ではあるが、1が連続している場合は長押しと判定されて、連続している2回目以降では変化は特に生じない(他の行動だと長押しが重要なこともありえそうなので仕様としてそれはそうだ)。
よって、0→1の切り替わりが大事となる。もちろん最終的にはそれも学習してほしいのだが、今回は条件付けがちゃんとできるかどうかを確認するため、切り替わりであるかどうかを先に判定してニューラルネットワークに与える前に計算することにした。
そのようにして学習すると以下のようになった。
gt | 予測 |
---|---|
Inventoryを開くタイミングがGTと一致するようになった。
というわけでここまで以下の図のような形でのFlowが学習できることを確認した。(VAEは学習済みのものを固定して使っている)
Inventory以外でも、できるだけ遠い過去のことまで条件に含めたい。しかし、過去の情報をすべてそのまま連結して与えるというのでは、時刻が進むほどFlowに与えられる条件の系列長がそのまま伸びてしまう。
よって、長い情報をなんらかの再帰的ネットワーク、特にここでは状態空間モデル(State Space Model : SSM)で圧縮することを考える。
もちろんこれはDreamerでも履歴 h として同じことが行われているので真似しているだけではある。
なにを条件とするのか、SSMの出力なのかSSMの状態そのものなのか、などはまだあまり感覚としてもわかっていないが、とりあえずやってみるということで。単純な個人的興味でMamba-2を触ってみたいというシンプルな理由もある。