0

私は、ブラックボックス チャレンジ (www.blackboxchallenge.com) を使用して、強化学習を試してみました。

チャレンジ用のタスクと環境を作成し、PyBrain を使用してブラック ボックス環境に基づいてトレーニングしています。環境の要約は、浮動小数点数の numpy ndarray と一連のアクションである各状態に多数の機能があることです。トレーニング例では、36 個の機能と 4 個のアクションです。

Q_LinFA と QLambda_LinFA の両方の学習器を試しましたが、どちらも係数がオーバーフローしています (._theta 配列)。トレーニング中、値は問題なく開始され、すべて NaN になるまで急速に増加します。線形関数近似器を使用して Q ラーニングを自分で実装しようとしたときに、同様の問題が発生しました。また、機能を -1,1 に縮小しようとしましたが、これは何の役にも立ちませんでした。

私のコードは以下の通りです:

from bbox_environment import *
from bbox_task import *
import numpy as np
from pybrain.rl.learners.valuebased.linearfa import QLambda_LinFA 
from pybrain.rl.learners.valuebased import ActionValueNetwork
from pybrain.rl.agents.linearfa import LinearFA_Agent
from pybrain.rl.experiments import EpisodicExperiment

test_env = bbox_environment("../levels/train_level.data")
test_task = bbox_task(test_env)
#test_controller = ActionValueNetwork(test_env.outdim,test_env.numActions)
learner = QLambda_LinFA(4,36)
agent = LinearFA_Agent(learner)
experiment = EpisodicExperiment(test_task,agent)

num_episodes = 5 
i = 0

while(i < num_episodes):
    experiment.doEpisodes()
    agent.learn()
    agent.reset()
    print learner._theta
    i = i + 1

私の直感では、これら 2 つの実行時エラーに関係している可能性がありますが、それを理解することはできません。助けてください?

/usr/local/lib/python2.7/dist-packages/pybrain/rl/learners/valuebased/linearfa.py:81: RuntimeWarning: invalid value encountered in subtract
  tmp -= max(tmp)
/usr/local/lib/python2.7/dist-packages/pybrain/rl/learners/valuebased/linearfa.py:126: RuntimeWarning: invalid value encountered in double_scalars
  td_error = reward + self.rewardDiscount * max(dot(self._theta, next_state)) - dot(self._theta[action], state)
4

2 に答える 2

0

私はあなたが使用しているライブラリに精通していませんが、この種の問題は通常、学習率 (アルファ パラメーター) が悪いことが原因です。1/t (時間ステップの場合は t) のように時間の経過とともに減少する学習率、またはより一般的には、ここで提供される条件 (2.8) を尊重する学習率を実装することをお勧めします。

于 2016-04-09T13:42:17.783 に答える
0

損失の後退なしに同じ問題がありました。td_error に thetas の二乗和のようなものを追加すると、問題が解決するはずです。ただし、正則化の考え方は ML の中心的な考え方の 1 つですので、学習してみてください。

于 2016-04-04T21:00:04.327 に答える