微软AI要参加IMO竞赛!小目标:数学金牌-1

微软AI要参加IMO竞赛!小目标:数学金牌-1_第1张图片

今年,可能是最后一届“纯人类”参赛的IMO (国际奥数竞赛)

 

参加2020年IMO的中国代表队(李金珉的官方年龄信息有误)

因为在明年,AI可能也会加入这场金牌争夺战中,成为一名“种子选手”。

这名潜入IMO赛事的AI名为Lean,由微软的研究人员开发。

目前,他们正计划让Lean参与明年的国际奥数竞赛。

也就是说,它将与世界各国的奥赛选手一起争夺IMO金牌。

其实,微软研究人员让AI参加IMO的理由,原因是它是个很好的实验工具(工具人)

微软研究员Selsam是挑战赛IMO Grand Challenge的创始人之一,他表示,这项比赛的目的是训练一个人工智能系统,以便在世界顶级数学竞赛中赢得金牌。

因为这里不仅有数学上“最简单”的难题(连高等数学都用不上,但就是做不出来),而且还汇集了来自世界各地的顶尖高手。

如果AI能像人一样证明这些数学定理,某种程度上也能说明,让它“像人一样思考”不会太过困难。

 

基于这个想法,微软的研究人员从2013年开始研发Lean,希望让AI能拥有自主判断、根据假设进行演绎的能力。

也就是说,它是个旨在缩小交互式定理证明、与自动定理证明之间的差距的开源项目。

自动定理证明:对数学中提出的定理或猜想,寻找一种证明或反证的方法。系统不仅能根据假设进行演绎,还要有一定的判定技巧。

交互式定理证明:借助计算机辅助证明工具,理解检验数学定理正确性,完成数学定理的证明。

Lean已经推出了3个版本,现在的第四个版本Lean 4还在完善中,现在的逻辑系统基于依赖类型理论,已经强大到足以证明所有的常规数学定理。

也就是说,想要让它自己证明IMO中提出来的、此前“没见过的”数学问题,依旧非常困难。

目前,Lean 4还没有彻底做好准备,作者Leonardo de Moura表示,如果让它参加今年的IMO,“可能只能得0分”。

 

因为,Lean目前甚至无法理解某些数学问题需要涉及哪些概念,而这些概念本身又是“什么意思”。

对于不少人来说,数学十分抽象、难以学好。

事实上,AI和你的感觉一样。

一般的工程应用问题中,AI得心应手,因为在预训练阶段,算法模型已经对一类问题有所了解。

也就是说,AI现阶段能干的活仍然有限,通常要给定条件和数据,经过持续的“刷题”,才能做“更复杂的计算”。

这是一个从“1”到“2”、“3”,甚至是无穷的过程。

 

但数学问题的证明本质并不一样,证明一个公理,或是一个复杂的等式,需要完全“白手起家”。

证明的第一步:提出一个合理证明路径。这个从0到1的关键,目前只有人类的大脑能胜任。

绝大部分AI,很难给出证明思路的第一步。

拿一个最简单最古老的数学公理来说,公元前300年,欧几里得就证明了质数有无限多个

 

而要证明这一结论,关键是要认识到,总是可以通过乘所有已知的质数并加1来找到一个新的质数。有了这个思路,接下来的证明就很简单了。

但“想到这个思路”这一行为本身,对于AI来说,难度巨大。

说回IMO,正式比赛中的3道题目,尽管不涉及微积分等高等数学,但无一不是要求选手利用中学的所有数学知识,进行巧妙的构思给出解题方法。

比如这道2005年IMO真题:

 

当时不同国家的参赛选手至少给出了3种不同的证明,其中被广泛认可讨论的解法,采用柯西不等式简化的思路,篇幅大概需要半页A4纸。

而另一位来自摩尔多瓦的选手,极富创造性的用两行式子完成了证明:

 

上面一行是“因为”,下面一行就是“所以”,其简洁、精准甚至可以说“粗暴有效”震惊全场。

精巧的思路也获得了当年的IMO特别奖。

要说明的是,IMO特别奖不看总成绩,只颁给解题方法独到的选手。

这种石破天惊的“第一步”,对于现在的AI来说,几乎是不可能做到的。

这也许就是为什么微软的研究人员设定的目标是“冲击金奖”吧。

巧的玩不转,Lean采取什么方法跟人类大脑竞争呢?

Lean和所有AI算法一样,需要“喂数据”进行训练。

 

目前的Lean,不但无法设计出完整的IMO题目证明过程,它甚至无法理解其中一些问题所涉及的概念。

所以,Lean的首要任务是学习更多的数学知识。

训练数据来自Mathlib的库。Mathlib是一个数学基础数据库,它几乎包含了大学二年级以下所有数学知识。

但Mathlib在中学数学上仍有一些差距,团队正在对Mathlib数据库进行补全。

掌握知识只是第一步,如何灵活运用才是关键。

团队采取的方法与象棋、围棋AI等相同——遵循决策树,直到算法找到最优解

 

许多IMO题目的关键是寻找某种证明的模式。深入数学证明的底层,是一系列非常具体的、有逻辑的步骤。

研究人员尝试通过IMO题目证明的全部细节来训练Lean。

但在这种方法也有局限,每个特定的题目证明对于算法来说太“专”,下一个不同类型题目仍然不会解。

为了解决这个问题,团队需要数学家写出之前IMO题目的详细形式化证明。然后,团队提炼证明中的采用的不同策略。

接下来,Lean的任务,就是在这些策略中寻找一个 “胜利 “的组合。

这项任务实际上比描述起来困难的多,团队这样比喻它:

在围棋中,目标是找到最好的一步棋。而在数学中,目标是找到最好的一盘棋,然后在这盘棋中找到最好的一步棋。

团队说,也许到了明年,获得金牌仍然是很困难的,但至少,Lean有机会参赛了。

对此,有网友感叹AI这些年神速的进展:先是国际象棋、又是围棋……现在,AI又要来攻占国际奥赛金牌了。

 

但也有网友持悲观态度,认为AI现阶段只能在某些方面趋近人类的水平。

 

目前AI的算法,都是建立在人类认知基础上的……所以像(证明数学定理)这样特殊的任务,我持消极态度,毕竟世界上只有少部分人能提供帮助。

这个问题出乎意料的难以解释透彻。数学家在尝试解决新问题时,大脑的活动是难以描述的,更不要说落实在算法上。

尽管已经有AI团队朝数学思想的深层迈出了一步,但是从他们采取的策略来看,仍然是学习过往思路,选择成功率最高的“排列组合”。

这样的AI算法,要在创造力和突破性上超越人类,“火候”还差得远。

而隔壁的GPT,也在数学证明方向上取得了初步成果。

最近,OpenAI推出了用于数学问题的GPT-f,利用基于Transformer语言模型的生成能力进行自动定理证明。

由GPT-f发现的23个简短证明已被Metamath主库接收,这也是首次AI的数学证明获得业内认可。

道翰天琼CiGril机器人API

道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:

  1. 在平台注册账号
  2. 登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。
  3. 在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。

开始接入

请求地址:http://www.weilaitec.com/cigirlrobot.cgr

请求方式:post

请求参数:

参数

类型

默认值

描述

userid  

String  

平台注册账号

appid  

String  

平台创建的应用id

key  

String  

平台应用生成的秘钥

msg  

String  

""

用户端消息内容

ip  

String  

""

客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。

 

接口连接示例: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"));
            
    }
}

 

你可能感兴趣的:(自然语言处理,神经网络,机器学习,深度学习)