这三个博弈论新趋势,正深刻影响深度强化学习道翰天琼认知智能未来机器人接口API

    技术2024-04-23  181

     

     

    博弈论在现代人工智能(AI)解决方案中正扮演着至关重要的角色,深度强化学习(DRL)正是积极拥抱博弈论的头等公民。

    从单智能体程序到复杂的多智能体深度强化学习环境,博弈论原理贯穿了 AI 程序的整个生命周期。而反过来,DRL 的快速演化也重新激发了人们对博弈论研究的关注。

    目前,大多数 DRL 模型事实上还停留在传统的博弈论层面,例如纳什均衡或零和游戏等。但随着DRL的发展,传统博弈论方法已经逐渐呈现出不足之处,而同时则有一些新的博弈论方法被纳入到人工智能的程序当中。

    因此,对于我们来说,若想进一步优化深度强化学习的模型,考虑融入新的博弈论方法,是值得考量的一个方向。

    以下三个,正是在深刻影响 DRL 的「新」博弈论方法,或许用到你的模型中会大大改观模型的性能。

    一、平均场博弈(Mean Field Games)

    在博弈论家族中,平均场博弈(MFG)还是一个相对较新的领域。

    平均场博弈论诞生于 2006 年,这一理论是由两个团队独立提出的,一个是蒙特利尔的 Minyi Huang、Roland Malhame 和 Peter Gaines,另一个是巴黎的 Jean-Michel Lasry和菲尔兹奖获得者 Pierre-Louis Lions。

    从概念上讲,平均场博弈论是一套方法和技术的组合,它被用来研究由「理性博弈方」组成的大群体下的差异化博弈。这些智能体不仅对自身所处的状态(如财富、资金)有偏好,还关注其他智能体在整个样本分布中所处的位置。平均场博弈理论正是针对这些系统对广义纳什均衡进行了研究。

    平均场博弈的经典案例是,如何训练鱼群朝相同方向游,或者以协作方式游。

    这个现象很难用理论解释,但它的本质事实上是,鱼会根据最靠近的鱼群的行为做出反映。再具体点儿,每条鱼并不在乎其他单个鱼的行为,而是关注附近作为一个整体、统一移动的鱼群做出的行为。

     

    如果我们用数学方程表述这个原理,一方面可以用 Hamilton-Jacobi-Bellman 方程来描述鱼对周边鱼群的反应,另一方面则可以用 Fokker-Planck-Kolmogoroy 方程来表示决定整个鱼群行动的所有鱼的行为集合。

    平均场博弈理论就是这两个等式的组合。

    从深度强化学习的角度来说,在研究大范围环境中 大量智能体的表现方面,平均场博弈论扮演着重要的角色。

    实验和理论已经证实,在“接近无限多智能体、并假设采用不精确的概率模型进行操作”的环境中,已有的 DRL的方法并不具备现实可用性。

    而 MFG 却是模拟这类 DRL 环境的一个有意思的方法,非常值得尝试。

    一家叫做Prowler 的创业公司最近就在针对平均场博弈论(MFG)在大型多智能体(DRL)环境中的表现开展研究工作。

     

    认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息的理解、存储、应用为研究方向,以感知信息的深度理解和自然语言信息的深度理解为突破口,以跨学科理论体系为指导,从而形成的新一代理论、技术及应用系统的技术科学。 认知智能的核心研究范畴包括:1.宇宙、信息、大脑三者关系;2.人类大脑结构、功能、机制;3.哲学体系、文科体系、理科体系;4.认知融通、智慧融通、双脑(人脑和电脑)融通等核心体系。 认知智能四步走:1.认知宇宙世界。支撑理论体系有三体(宇宙、信息、大脑)论、易道论、存在论、本体论、认知论、融智学、HNC 等理论体系;2.清楚人脑结构、功能、机制。支撑学科有脑科学、心理学、逻辑学、情感学、生物学、化学等学科。3.清楚信息内涵规律规则。支撑学科有符号学、语言学、认知语言学、形式语言学等学科。4.系统落地能力。支撑学科有计算机科学、数学等学科。

    接口申请官网地址:www.weilaitec.com 

    接口地址(例子): 

    http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip 

    用户端消息内容。 

    String msg ="你在干嘛呀?";  

    apikey参数。这个apikey就是网站上申请的APIKEY 

    apikey ="";  

    //客户端ip,最终用户端的唯一标识(可以是用户端的IP,或者手机设备号,或者微信号或者,qq号码等能证明身份的唯一标识就可以)  

    String ip ="";  

    //这里一定要encode转换编码。转成GBK。 

    msg = URLEncoder.encode(msg, "GBK"); 

    三个参数全部小写 

    msg参数就是传输过去的对话内容。 

    msg参数要编码成gbk,不然会乱码。 

    接口具体代码: 

    package ai.nlp.jiekou.test;

    import java.io.ByteArrayOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.UnsupportedEncodingException;

    import java.net.HttpURLConnection;

    import java.net.URL;

    import java.net.URLEncoder;

    import ai.nlp.util.changliang.ChangLiangZi;

    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 ChangLiangZi.WU;

    }

    public static void main(String args []){

    //三个参数全部小写

    //msg参数就是传输过去的对话内容。

    //msg参数要编码成gbk,不然会乱码。

    String msg ="你在干嘛呀?";

    //apikey参数。

    String apikey ="UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV";

    //客户端ip,最终用户端的唯一标识(可以是用户端的IP,或者手机设备号,或者微信号或者,qq号码等能证明身份的唯一标识就可以)

    String ip ="127.0.0.1";

    //这里一定要encode转换编码。转成GBK。

    try

    {

    msg = URLEncoder.encode(msg, "GBK");

    } catch (UnsupportedEncodingException e)

    {

    e.printStackTrace();

    }

    System.out.println(opUrl("http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip));

    }

    }

     

     

    Processed: 0.012, SQL: 9