# rl_gridworld **Repository Path**: lddsdu/rl_gridworld ## Basic Information - **Project Name**: rl_gridworld - **Description**: 第一个强化学习的样例,任务为在4 x 4的方格内,使用最短的步骤从左上角走到右下角 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-06-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rl_gridworld ### Description 第一个强化学习的样例,任务为在4 x 4的方格内,使用最短的步骤从左上角走到右下角 ![img](asserts/plot1.png) ### 坑 !!! - 在坐标(0, 0)的位置,无法向上和向下移动,如果使用一个vector来表示移动的方向,那么这个vector dim = 4, 然后分别代表了`← ↓ → ↑`四个方向, index为0, 3的值在softmax后必须设置为0 - 错误做法 先softmax后更新vector对应位置data为0 - 正确做法 ```python if x == 0: action.data[0] = -1e16 if y == 0: action.data[3] = -1e16 if x == self.width - 1: action.data[2] = -1e16 if y == self.height - 1: action.data[1] = -1e16 action = self.softmax(action) ``` 直接对于tensor(requires_grad=True)的data进行赋值,不会出错(inplace operation) - 任务中的技巧 强化学习中采用了采样的方法来进行实现可微(differentiable),这里使用的方法叫做重参数(Re-Parameterization), 对于gridworld任务,在batch粒度上,一个batch中采样了多条trajectory,多条trajectory可以使用不同的起点。 - LOSS 强化学习中的loss,请严格按照推导的公式来,**不要有创造性(意思是在代码编写中不要有创造性)**