pybrain神经网络不学习

des*_*hos 14 python machine-learning neural-network pybrain

我正在使用pybrain构建一种学习趋化性的药剂(根据化学信号转向食物).代理由神经网络表示,其应基于其与食物的距离来调整其权重.输入是两个传感器神经元,输出是移动代理的两个运动神经元.因此,我有持续的状态和行动.奖励是与食物距离的倒数.

这是我的主循环的本质:

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()
Run Code Online (Sandbox Code Playgroud)

我尝试过的方法是:

  • 用Q进行实验(因为我有连续的状态/动作所以不起作用)
  • 使用Reinforce/ENAC进行实验(梯度下降计算无变化)
  • 使用Reinforce/ENAC进行ContinuousExperiment(见上文)
  • 使用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中.