基于Transformer的决策智能 第一篇 Decision Intelligence初探

自从特斯拉证明在自动驾驶场景端到端的深度学习模型能够替代人进行决策,一场巨大的技术变革将要到来。我想通过一些实验来建立自己对决策智能的初步认知。

说一下我对决策智能的理解:

智能体能感知到状态S(包括环境状态和自身状态),为了达到设定的目标,需要作出决策A。智能体在执行决策A后,有可能获得奖励R。其中决策通常又可以称为动作。

奖励R通常由人工设计,用于引导智能体更快地达到目标。奖励可以为负值,表示惩罚。

通常智能体需要经过多步决策A才能达到目标,在t时刻,记状态为 <math xmlns="http://www.w3.org/1998/Math/MathML"> S t S_{t} </math>St,智能体在执行决策 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t A_{t} </math>At后,有可能获得奖励 <math xmlns="http://www.w3.org/1998/Math/MathML"> R t R_{t} </math>Rt。

模型的输入是 <math xmlns="http://www.w3.org/1998/Math/MathML"> S t S_{t} </math>St,以及t时刻前的任意状态S/决策A/奖励R。 由于奖励R的设计比较复杂,在本文中我们先取消奖励R,同时为了降低计算量,我们只需要考虑部分t时刻前的状态S/决策A/奖励R。

仍以《基于Transformer的路径规划》一文中的场景为例,

黑色表示障碍物、红色表示智能体的当前位置、蓝色表示目标点。智能体每次只能执行以下4个动作之一:

  • 向上移动一格
  • 向下移动一格
  • 向左移动一格
  • 向右移动一格

智能体每执行一次动作A后,状态S会发生改变,直到智能体的位置与目标点重合。

这次不用GPT模型,改用BERT模型来预测动作A,其实就是多层Transformer Encoder构成的分类模型。模型的输入是状态 <math xmlns="http://www.w3.org/1998/Math/MathML"> S t S_{t} </math>St以及 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t − 1 A_{t-1} </math>At−1,输出是决策 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t A_{t} </math>At,共4个类别:上、下、左、右。为什么要加入 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t − 1 A_{t-1} </math>At−1呢?因为我希望智能体能够尽量保持先前的运动方向,减少转弯。如果不存在 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t − 1 A_{t-1} </math>At−1,可以用0填充。是否需要输入 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t − 2 A_{t-2} </math>At−2、 <math xmlns="http://www.w3.org/1998/Math/MathML"> A t − 3 A_{t-3} </math>At−3等更早的决策?这个还需要通过实验验证。

先定义词汇表:

sql 复制代码
"-": 用于将输入序列补到固定的长度
"0":FREE SPACE, 无障碍区域       
"1":OBSTACLE, 有障碍区域   
"+":CURRENT POSITION, 当前位置
"x":GOAL POSITION, 目标位置
"U": UP,向上移动一格
"D": DOWN,向下移动一格
"L": LEFT,向左移动一格
"R": RIGHT,向右移动一格

模型的输入可表示为:

复制代码
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
0 + 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 
0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 
0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 
0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 0 0 0 0 0 x 0 0 
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
D - - - - - - -

只需对《基于Transformer的路径规划 - 第二篇 合成数据》中的训练样本稍作修改即可用于本实验,原始的一条样本被拆成多条样本。

接下来就是训练模型了。如果有读者做过类似的实验,欢迎在评论区留言。


下一篇:基于Transformer的决策智能 第二篇 BERT IS BETTER?

相关推荐
zhbi981 天前
RoboDK 自定义机器人
机器人
Tipriest_1 天前
Pinocchio 库详解及其在足式机器人上的应用
机器人·动力学·足式机器人·运动学·pinocchio
zhuhit1 天前
FASTDDS的安全设计
分布式·机器人·嵌入式
曹勖之1 天前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
ABB自动化1 天前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
DFminer1 天前
【LLM】fast-api 流式生成测试
人工智能·机器人
白水baishui1 天前
搭建强化推荐的决策服务架构
架构·推荐系统·强化学习·决策服务·服务架构
珂朵莉MM2 天前
2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
java·开发语言·人工智能·算法·职场和发展·机器人
Ai多利2 天前
能上Nature封面的idea!强化学习+卡尔曼滤波
强化学习·卡尔曼滤波
遨博学院2 天前
机器人编程界面
机器人