Open yumion opened 5 years ago
@yumion Issueありがとうございます。
[使用言語に関して] machinaでは、レポジトリ全体として、英語でやり取りを行うことを前提にしております。今後は是非英語で質問してくださりますようお願いします。 本件は、こちらが質問を英語化したのち、回答も英語の説明を付け加えます。
[質問事項に関して] QT-Optは、Q-Learningを連続行動に拡張した手法なので、現状では、基本的に連続行動の環境にのみ対応していて、離散行動の環境には対応していません。 離散行動の環境を扱いたいのであれば、DQNなどの標準的なQ-Learning手法を用いる事を推奨します。
QT-Optは離散行動には使えないのでしょうか? また、バグでしたら対処法をご教授ください。よろしくお願いします。
上述したQT-Optの性質上、離散行動に対応した実装をしていなかったことがエラーの原因なので、バグではありません。 ただし、離散行動に対応させたい場合は、 Qネットワークに、状態と行動を、行動の数だけ入力して、最大のQ値となる行動を全探索して選ぶこと、対応させることが可能です。(この場合、QT-Optの主な特徴であるCEMは使われません)
ただし、DQNのように行動の数だけヘッドがあるQネットワークを用いる手法と比べて、性能がいいかどうか判断はできません。(DQNに関しては今後実装する予定です。)
現状machinaに実装済みのアルゴリズムで、離散行動に対応しているものは、PPOやTRPOになっています。
exampleにある
run_qtopt.py
をPendulum-v0以外で実行しようとしたのですが、 action_spaceがBox
でないとCEMDeterminsticsSAVFuncでエラーが起こります。QT-Optは離散行動には使えないのでしょうか? また、バグでしたら対処法をご教授ください。よろしくお願いします。