AWS DeepRace入门及奖励函数简介

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。

1.简介

DeepRacer是亚马逊推出的快速接触和入门机器学习(深度学习)的一种学习场景。 它虚拟了一辆赛车,并且以赛车跑完赛道为目的,要求大家创建模型并且编写奖励函数(reward function)并且训练模型,从而在尽可能短的时间内完成比赛。

你可以创建自己的模型,在一个虚拟赛道上完成性能评估。你也可以加入AWS DeepRacer联盟,和世界各地的选手进行切磋。

2.注册

需要到aws网站进行注册: 然后在服务里面找到AWS DeepRacer: 然后在Your models里面可以开始创建model:

3.费用

  1. 新用户会有免费10小时的体验时间;
  2. 超过10小时,每小时3.5美金;
  3. 存储model需要占用空间,空间也需要一定的费用,占比不大。

费用会从注册的时候绑定的信用卡中扣除,大家要记得及时查询账单。

4.模型创建:奖励函数

创建模型涉及到的配置大概有三块:

  1. Training algorithm and hyperparameters
  2. Define continuous action space
  3. Reward Function 这就是我们创建模型最重要的部分:编写奖励函数。

可以说DeepRacer实际上就是怎么写好奖励函数(reward function)。

AWS DeepRacer提供了一些可用于编程的函数,详情见:

而且AWS提供了一个Example代码,大家可以直接用这个代码作为自己的模型,当然如果要跑出很好的成绩,还是需要利用AWS提供的函数进行一定的分析和优化的。

def reward_function(params):
    
    Example of rewarding the agent to follow center line
    
    
    # Read input parameters
    track_width = params[track_width]
    distance_from_center = params[distance_from_center]
    
    # Calculate 3 markers that are at varying distances away from the center line
    marker_1 = 0.1 * track_width
    marker_2 = 0.25 * track_width
    marker_3 = 0.5 * track_width
    
    # Give higher reward if the car is closer to center line and vice versa
    if distance_from_center <= marker_1:
        reward = 1.0
    elif distance_from_center <= marker_2:
        reward = 0.5
    elif distance_from_center <= marker_3:
        reward = 0.1
    else:
        reward = 1e-3  # likely crashed/ close to off track
    
    return float(reward)

Example代码我们大致说下思路: 它是根据判断赛车里赛道中心位置的距离来给予不同的奖励。 如果越靠近中心,那么得到的奖励越多。 我们通过这样的策略训练这个模型(比如60mins时间),那么可以得到一个比较理想的能完成比赛的模型,但是时间可能不是最短的。

后面我们会专门针对具体的赛道并提供一个思路来看看怎么创建一个能跑得更快的模型。

经验分享 程序员 微信小程序 职场和发展