博弈论在现代人工智能(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));
}
}