ml-agent学习记录
十二月 29, 2023
环境
装gpu加cuda,略,b站有安装视频
原理
强化学习是观察(observation)到决定(decision)到行动(action)到奖励(reward)后循环反馈到观察的过程。
代理制作流程
构建Agent
新建的脚本要继承于Agent
加入观察参数
1 | public override void CollectObservations(VectorSensor sensor) { |
Space Size:这是观察空间或动作空间的大小。对于观察空间,它是智能体每次观察到的信息的维度。对于动作空间,它是智能体可以执行的动作的数量或类型。
Stacked Vectors:这是一个参数,用于指定智能体在每次决策时应该考虑多少个连续的观察。例如,如果Stacked Vectors设置为3,那么智能体在做出决策时,会考虑当前的观察以及前两个观察。这可以帮助智能体理解观察之间的时间关系,例如物体的运动方向和速度。
其中Space Size和塞入的观察参数大小相关
行动下一步
1 | public override void OnActionReceived(ActionBuffers actions) { |
获取下一步行动的参数
重置训练场景
1 | public override void OnEpisodeBegin() { |
手动控制ai(可选)
1 | public override void Heuristic(in ActionBuffers actionsOut) { |
重点记得加入脚本Decision Request
卡了很久没动就是忘记挂这个组件了,,”Decision Requester”组件是用来控制智能体决策频率的一个组件。
“Decision Requester”组件有一个”Decision Period”参数,它指定了智能体应该多久做一次决策。例如,如果”Decision Period”设置为5,那么智能体每5个步骤会做一次决策。
在智能体不做决策的步骤中,它会重复执行上一次的动作。这可以减少智能体需要做决策的次数,从而提高训练速度。
注意,”Decision Requester”组件只在训练时有效。在推理(即使用训练好的模型)时,智能体会在每个步骤都做决策。
附件
激活conda环境
1 | conda activate 环境名 |
训练ml-agent
Basic.yaml训练参数,run2文件夹
1 | mlagents-learn Basic.yaml --run-id=run2 --train --force//重新训练 |
查看训练数据
1 | tensorboard --logdir=results //result可递归文件夹下 |
查看评论