「脱离」 (disengagement),在自动驾驶系统中是一个重要的指标。
是指当自动驾驶汽车遇到故障,脱离自动驾驶模式,改为人类驾驶员接管车辆的情况。
很多人认为「脱离」次数越少,就能说明一个自动驾驶系统能力越强。因此,以往的研究都会把「脱离」当作是故障来排除掉。
但最近,UC伯克利的研究人员却「以毒攻毒」,直接用这样的数据来训练机器人,预测未来何时将发生脱离事件。
研究人员称它为LaND——从「脱离」中学会导航。
研究人员表示,通过这样的方法得到的结果,要比传统的强化学习、模仿学习都要强。
「开」着小车取数据
老规矩,先来看下训练数据。
既然伯克利的这项研究是想「以毒攻毒」,那么就必须收集出现故障时的那些数据。
于是,研究人员用一辆Clearpath Jackal机器人做测试。
先让这个机器人自己在路上「跑」,若是遇到如下三种情况则视为出故障,即开到人行道的两侧或撞到草丛等物体。
当出现故障的情况后,机器人就会进入「脱离」状态,人类研究员便用遥控器,把它重新置于有效位置,以便让它再次自主行进。
然后研究人员把在这些过程中,从机器人摄像头等传感器获取的图像等数据收集起来,作为训练数据。
投喂到神经网络做预测
拿到数据,就要开始训练了。
目的就是用这些数据,来预测机器人在未来是否会脱离。
具体的神经网络长这样。
神经网络先使用MobileNetV2,对输入的图像观测值进行处理,紧接着是一系列的全连接层。
这些图像层的输出,将作为递归神经网络LSTM的初始隐含状态(hidden state),依次处理机器人未来的每一个动作,并输出相应的预测脱离概率。
预测可视化的结果如下:
在众多可选路径中,颜色越深(红),则表明脱离的概率越高。
性能优于传统方法
最后,研究人「我要出轨了」!伯克利的这个AI,可以预测机器人何时将脱离
「脱离」 (disengagement),在自动驾驶系统中是一个重要的指标。
是指当自动驾驶汽车遇到故障,脱离自动驾驶模式,改为人类驾驶员接管车辆的情况。
很多人认为「脱离」次数越少,就能说明一个自动驾驶系统能力越强。因此,以往的研究都会把「脱离」当作是故障来排除掉。
但最近,UC伯克利的研究人员却「以毒攻毒」,直接用这样的数据来训练机器人,预测未来何时将发生脱离事件。
研究人员称它为LaND——从「脱离」中学会导航。
研究人员表示,通过这样的方法得到的结果,要比传统的强化学习、模仿学习都要强。
「开」着小车取数据
老规矩,先来看下训练数据。
既然伯克利的这项研究是想「以毒攻毒」,那么就必须收集出现故障时的那些数据。
于是,研究人员用一辆Clearpath Jackal机器人做测试。
先让这个机器人自己在路上「跑」,若是遇到如下三种情况则视为出故障,即开到人行道的两侧或撞到草丛等物体。
当出现故障的情况后,机器人就会进入「脱离」状态,人类研究员便用遥控器,把它重新置于有效位置,以便让它再次自主行进。
然后研究人员把在这些过程中,从机器人摄像头等传感器获取的图像等数据收集起来,作为训练数据。
投喂到神经网络做预测
拿到数据,就要开始训练了。
目的就是用这些数据,来预测机器人在未来是否会脱离。
具体的神经网络长这样。
神经网络先使用MobileNetV2,对输入的图像观测值进行处理,紧接着是一系列的全连接层。
这些图像层的输出,将作为递归神经网络LSTM的初始隐含状态(hidden state),依次处理机器人未来的每一个动作,并输出相应的预测脱离概率。
预测可视化的结果如下:
在众多可选路径中,颜色越深(红),则表明脱离的概率越高。
性能优于传统方法
最后,研究人员拿这种「以毒攻毒」的方法,与其它两种传统方法做对比,分别是模仿学习和强化学习。
在对比实验中,三种方法所采用的数据都是一致的,实验结果如表所示。
非常明显,当机器人在2.3公里长、从未走过的人行道中行进时,强化学习方法平均每2米就会脱离一次,模仿学习则是平均每13.4米就会脱离一次。
而伯克利提出的「以毒攻毒」方法,效果非常显著——平均每87.5米才会脱离一次。
作者介绍
这项研究的作者均来自UC伯克利。
论文一作叫Gregory Kahn,是UC伯克利EECS的一名博士生。主要研究目标是开发算法,使机器人能够在现实世界中操作。
△Pieter Abbeel
Pieter Abbeel是这项研究的另一位作者,目前在UC伯克利担任BAIR实验室的联合主任。
他的研究致力于建立更加智能的系统,其实验室推动了深度强化学习、深度模仿学习、深度非监督式学习、迁移学习、元学习、学会学习,以及研究人工智能对社会的影响。
员拿这种「以毒攻毒」的方法,与其它两种传统方法做对比,分别是模仿学习和强化学习。
在对比实验中,三种方法所采用的数据都是一致的,实验结果如表所示。
非常明显,当机器人在2.3公里长、从未走过的人行道中行进时,强化学习方法平均每2米就会脱离一次,模仿学习则是平均每13.4米就会脱离一次。
而伯克利提出的「以毒攻毒」方法,效果非常显著——平均每87.5米才会脱离一次。
作者介绍
这项研究的作者均来自UC伯克利。
论文一作叫Gregory Kahn,是UC伯克利EECS的一名博士生。主要研究目标是开发算法,使机器人能够在现实世界中操作。
Pieter Abbeel是这项研究的另一位作者,目前在UC伯克利担任BAIR实验室的联合主任。
他的研究致力于建立更加智能的系统,其实验室推动了深度强化学习、深度模仿学习、深度非监督式学习、迁移学习、元学习、学会学习,以及研究人工智能对社会的影响。
道翰天琼CiGril机器人API
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
- 在平台注册账号
- 登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。
- 在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。
开始接入
请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数 | 类型 | 默认值 | 描述 |
userid | String | 无 | 平台注册账号 |
appid | String | 无 | 平台创建的应用id |
key | String | 无 | 平台应用生成的秘钥 |
msg | String | "" | 用户端消息内容 |
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552
注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class apitest {
/**
* Get请求,获得返回数据
* @param urlStr
* @return
*/
private static String opUrl(String urlStr)
{
URL url = null;
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try
{
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(5 * 10000);
conn.setConnectTimeout(5 * 10000);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1)
{
baos.write(buf, 0, len);
}
baos.flush();
String result = baos.toString();
return result;
} else
{
throw new Exception("服务器连接错误!");
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
is.close();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
if (baos != null)
baos.close();
} catch (IOException e)
{
e.printStackTrace();
}
conn.disconnect();
}
return "";
}
public static void main(String args []){
//msg参数就是传输过去的对话内容。
System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552"));
}
}