14

私は pybrain を使用して、走化性 (化学信号に基づいて食物に向かって移動する) を学習するエージェントを構築しています。エージェントは、食品からの距離に基づいて重みを調整するニューラル ネットワークによって表されます。入力は 2 つのセンサー ニューロンであり、出力はエージェントを動かす 2 つの運動ニューロンです。したがって、私は継続的な状態と行動を持っています。報酬は、食べ物からの距離の逆数です。

これが私のメインループの本質です:

task = ChemotaxisTask(ChemotaxisEnv(), MAX_STEPS)
module = buildNetwork(2,2,2)
learner = HillClimber(task, module, maxEvaluations=MAX_TRIALS, mustMinimize=True, storeAllEvaluations=True, storeAllEvaluated=True, verbose=False)
learner.learn()

私が試したアプローチは次のとおりです。

  • Q を試してみてください (連続した状態/アクションがあるため機能しません)
  • Reinforce/ENAC を使用した実験 (勾配降下は変化を計算しません)
  • Reinforce/ENAC を使用した継続的な実験 (上記参照)
  • HillClimber を使用したエピソード実験 (ネットワークの重みは変化しません)

私の実験には EpisodicExperiment が最も適していると思われるため、EpisodicExperiment を使用することにしました。

ようやくネットワークの重みが変化するのがわかりますが、時間の経過に伴う平均フィットネスは増加しません。私は何が間違っているのでしょうか?

ここに私のすべてのコードの Gist リポジトリがあります: https://gist.github.com/4477624

pybrain のドキュメントは次のとおりです: http://pybrain.org/docs/index.html 学習者のドキュメント (Q、Reinforce、HillClimber など) はhttp://pybrain.org/docs/api/rl/learners.htmlにあります。

コード自体はhttps://github.com/pybrain/pybrainにあります。学習者はhttps://github.com/pybrain/pybrain/tree/master/pybrain/rl/learnersにあり、実験はhttps://github.com/pybrain/pybrain/tree/master/pybrain/rl/にあります実験

ただし、EpisodicExperiment で最適化学習器を使用しています。それらはhttps://github.com/pybrain/pybrain/tree/master/pybrain/optimizationにあります。

そこからドキュメントとコードを通してあなたの道を見つけることができると確信しています。私が扱っている他のすべてはhttps://github.com/pybrain/pybrain/tree/master/pybrain/rlにあります。

4

0 に答える 0