如何使用PyBrain?
PyBrain 是一个基于Python的库,用来创建神经网络。我看过他们网站上的教程,但感觉对我帮助不大。我计划做一个模拟,模拟一辆车在轨道上行驶,车上装有5个测距仪,可以显示它与墙壁之间的当前距离,范围在 0.0
到 1.0
之间。评估标准是平均速度,速度越高越好。输出的结果是一个数字,表示在特定时刻你需要转动的程度,向右转到底是 1.0
,向左转到底则是 -1.0
或 0.0
,选择哪个更简单就用哪个。
我假设在这个设置中,我会有5个输入神经元和1个输出神经元。为了举个例子,我假设我有4个隐藏神经元。我们还假设我创建了一个叫 runSimulation()
的函数,它接受一个神经网络作为参数,利用这个神经网络让车在赛道上行驶,并返回平均速度(也就是评估标准)。
我该如何根据 runSimulation()
的重复结果来训练这个神经网络呢?
我希望我解释得没问题,(更别提我是否真的知道自己在做什么)如果我说错了,请告诉我。
1 个回答
9
看起来这是一个监督学习的问题。在这种情况下,你需要在训练你的神经网络之前,先提供一些答案。
你可以尝试以下方法:
- 为你的车创建一个简单的迷宫。
- 手动驾驶你的车在这个迷宫里行驶。
- 收集你转弯的信息。
假设你有以下的车:
- rf = 距离传感器
- rf_f = 前方距离传感器
- rf_r = 右侧距离传感器
- rf_l = 左侧距离传感器
- rf_60 = 60度距离传感器
- rf_320 = 320度距离传感器
下面是你的距离传感器示意图:
320 f 60
\ | /
\ | /
\ |/
l--------------r
|
|
|
你的训练数据集应该像下面这样:
rf_f , rf_l , rf_r, rf_60, rf_320 , turn
0 0 0 0 0 0 0 // we go directly, no obstacles detected
0 0 0 0 0 0 0 // we go directly, , no obstacles detected
1.0 0 0 0 0 0 0 // We see a wall in forward far away.
0.9 1 0 0 0 0 0.2 // We see a wall in forward and left,
therefore turn right slightly etc.
0.8 0.8 0 0 0 0 0.4 // We see a wall in forward and left,
therefore turn right slightly etc.
在你给神经网络提供了这样的训练数据集后,你就可以开始训练它了。