音ゲーの難易度表示が妥当か機械学習的に判断したい(個人用メモ)
- 何を入力とするか
- 1小節の譜面を、16分音符(8分でもいいかも)単位でスライドさせて抽出したもの。
- 「1小節」という長さは、これくらいが妥当に思う。短すぎると推定精度が悪くなる一方、長すぎると曲ごとに特化しすぎた推定をしてしまう(過学習)ので、実際に試してみる必要はあるが。
- BPM情報も何らかの形で入れる。
- 1曲の長さが曲ごとに違う(=上記のスライドさせて抽出したものの個数が違う)ので、そこを吸収する必要がある。
HMMを使うことにはなるだろうが、どういう構造にするかは検討中。長すぎる系列にHMMは向かないっぽい。(2016.7.23追記)
- この問題、「曲全体の難易度が与えられる」一方で「各訓練事例は曲の一部を切り出したもの」となるのでなかなか難しそう。しかも曲全体の難易度は必ずしも平均では測れない(一番難しい箇所に大いに依存するし、かといって一番難し箇所だけを見ればいいだけでもない)のが難しい点。マルチインスタンス学習(訓練事例をいくつか集めたものに出力ラベルが付いている)の枠組みに近いだろうか。(2016.7.23追記)
- 学習方法
- 畳み込みに対応できるほうがいいのかなと思うので、ニューラルネットワーク(deep learning)系統がよさそう。
- 例えば画像認識において「顔が写っている」という判定をするとき、それが画像中のどこに写っているかは関係なく判断できてほしい。こういった処理を実現する方法の一つが「畳み込み」である。音ゲーの譜面の難易度を考える際も、時間軸・手の位置の軸ともにそういった特性があるといえるので。
- 評価方法
- Leave-one-out cross validationかな。