当前位置: 首页 > 编程日记 > 正文

AI 与小学生的做题之战,孰胜孰败?

现在小学生的数学题不能用简单来形容,有的时候家长拿到题也需要思考半天,看看是否有其他隐含的解题方法。市面上更是各种拍题搜答案的软件,也是一样的套路,隐含着各种氪金的信息。

就像网络上说的“不写作业母慈子孝,一写作业鸡飞狗跳”。

近日,OpenAI 训练了一个新系统,可以解决小学数学题,大大提升了 GPT-3 的逻辑推理问题。

新系统可以解决小学数学问题,60 亿参数的 GPT-3 采用“新方法”,准确率直接翻倍!甚至追平了拥有 1750 亿参数,采用微调方法的 GPT-3 模型。

48d8efba8b25f3b3b273e96303d7c455.png

还有一项重要的结果是,一个9-12岁的小学生在测试中得分为60分,采用新方法的GPT-3在同样的问题上可以拿到55分,已经达到了小学生90%左右的水平!

训练验证器

GPT-3 之前就有说过许多令人印象深刻的技能,像是模仿人的多种写作风格、20分钟内完成论文、在文本生成上与人类写作相媲美等。然而,他们却很难执行准确多步推理的任务,例如小学数学题。尽管类似这样的模型可以推导出正确解决方案大致内容,但也经常会产生严重的逻辑错误。

为了在复杂逻辑领域可以达到与人类相媲美的性能,模型必须具有判别自身错误的能力,并谨慎地执行之后的过程。

为此,OpenAI 的研究者提出了一个训练验证器(verifier)来判断模型完成的正确性。

在测试阶段会生成许多候选解决方案并选择排名最高的一个。证明验证(verification)显着提高了 GSM8K 的性能,此外也为这一观点(随着数据的增加,验证比微调基线更有效)提供了强有力证据。

验证器具体训练方法分为三步:

  1. 先把模型的「生成器」在训练集上进行2个epoch的微调。

  2. 从生成器中为每个训练问题抽取100个解答,并将每个解答标记为正确或不正确。

  3. 在数据集上,验证器再训练单个epoch。

生成器只训练2 个epoch 是因为2个 epoch 的训练就足够学习这个领域的基本技能了。如果采用更长时间的训练,生成的解决方案会过度拟合。

测试时,解决一个新问题,首先要生成100个候选解决方案,然后由「验证器」打分,排名最高的解决方案会被最后选中。

微调

OpenAI 通过更新模型参数来进行微调,以最小化所有训练 token 的交叉熵损失。

结果很显然,可以看到 175B 模型明显优于较小的模型。

0dc3e270dfe6cf64d9b99bf1c0d53823.png

假设一个对数线性趋势,当使用完整的 GSM8K 训练集时,需要具有 10^16 个参数的模型才能达到 80% 的求解率。尽管如此,175B 模型似乎需要至少两个额外数量级的训练数据才能达到 80% 的求解率。

在下图中,OpenAI 展示了 6B 模型测试性能在 100 个训练 epoch 的过程中如何变化。

221ced175cedc0b9516efa8f885453b1.png

当允许模型对每个问题进行 N 个单独的猜测时,OpenAI 使用 test@N 表示至少一次正确解决的问题的百分比。

尽管很快开始过拟合测试损失,但 Test@1 的性能几乎单调地提高。并且,随着 epoch 次数的增加,test@100 的性能比 test@1 下降得更快。

选择具有良好覆盖性的模型对于成功训练验证器至关重要。

从实证角度来看,test@100 性能在前几个 epoch 内达到峰值。出于这个原因,OpenAI 使用训练了 2 个 epoch 的模型来生成用于训练验证器的样本。如果改为微调 6B 模型以直接输出最终答案而无需任何中间步骤,则性能会从 20.6% 急剧下降至 5.2%。

GSM8K 数据集

OpenAI 基于四个设计原则创建了 GSM8K 数据集:高质量、高多样性、中等难度和自然语言解决方案。

  • 高质量:GSM8K中的问题都是人工设计的,避免了错误问题的出现。

  • 高多样性:GSM8K中的问题都被设计得相对独特,避免了来自相同语言模板或仅在表面细节上有差异的问题。

  • 中等难度:GSM8K中的问题分布对大型SOTA语言模型是有挑战的,但又不是完全难以解决的。这些问题不需要超出早期代数水平的概念,而且绝大多数问题都可以在不明确定义变量的情况下得到解决。

  • 自然语言解决方案:GSM8K中的解决方案是以自然语言而不是纯数学表达式的形式编写的。模型由此生成的解决方案也可以更容易被人理解。此外,OpenAI也期望它能阐明大型语言模型内部独白的特性。

GSM8K 数据集由 8.5K 个高质量小学数学应用题组成。每个问题需要 2 到 8 步解决,解决方案主要涉及使用加减乘除等基本算术运算执行一系列基础计算以获得最终答案。微调后的 SOTA 模型在该数据集上表现不佳,主要是问题的高度多样性导致的。与此同时,GSM8K 解决方案仅依赖于基本概念,因此实现高测试性能是一个容易实现的目标。

537d5f8294c50f4774db74a8e8c05f15.png

GSM8K 数据集中的三个示例问题

值得注意的是,GSM8K 中的解决方案是用自然语言而不是纯数学表达式编写的。通过坚持使用自然语言,模型生成的解决方案更容易被人类解释。OpenAI 的方法保持相对领域不可知。

在GSM8K数据集上,OpenAI测试了新方法验证(verification)和基线方法微调(fine-tuning)生成的答案。

案例展示:

问题:Tim 种了 5 棵树。他每年从每棵树上收集 6 个柠檬。他十年能得到多少柠檬?

175B Verification:正确

ea22981c84e2e4652ba7cb9d5f21c18e.png

175B Fine-tuning:错误

40431f4fcc54196866f505d909d0f8d4.png

6B Verification:正确

64d0655d53a25966d776e075add02ad0.png

6B Fine-tuning:错误

4f32f1203d29c825b42c5d6184b67665.png

很明显,验证方法比基线方法(微调)在回答数学题有了很大的提升。

对于这两种方法,OpenAI 使用 GPT-3 系列模型作为初始化,主要关注 175B 和 6B 大小的模型。175B 模型最大,产生的结果最令引人瞩目,而 6B 模型更易于实现研究目。

结论

通过 OpenAI 所展现出的数学实例可以看出,使用验证方法比单纯扩大参数要更加智能,但缺点是并不稳定。

现下,通过在一些简单的领域试验新路径,识别和避免机器学习的错误是推动模型发展的关键方法,比如简单的小学数学题。最终当我们试图将模型应用到逻辑上更复杂的领域时,那些不被了解的技能将变得越来越透明。

参考链接:

https://openai.com/blog/grade-school-math/

相关文章:

AIDL方向指示

2019独角兽企业重金招聘Python工程师标准>>> AIDL使用简单的语法来定义接口, 该接口定义了可供客户端访问的方法和属性,并且描述其方法以及方法的参数和返回值。这些参数和返回值可以是任何类型,甚至是其他AIDL生成的接口。 其中对于Java编程…

Techshack Weekly 第 0002 期

Techshack Weekly 专注于后端技术阅读,目前有上百位订阅者,欢迎加入 Telegram Channel ,或关注推特 techshackweekly,或订阅 RSS! 点击查看本期 本期比较关注的几个领域有:TSDB, 系统设计,推荐的…

像数据分析一样写 Web 页面,这个 Python 库做到了!

作者|刘早起来源|早起Python提起用 Python 写一个 web 页面,总是会想起Django/Flask等这样的大家伙。他们确实好用,但就是流程繁琐,比如有时就想写一个简单的页面,比如问卷调查,拿 Django 来说吧总要经过安装、启动、配…

loadrunner 如何做关联

在页面中为了防止CRSF攻击,每次访问登录页面时,在浏览器器端生成一个token。 在提交时检验这个token是否有效,提交后token自动失效。 如果使用loadrunner来测试此系统话需要做一个关联,把这个token作为一个参数进行提交。 做关联有…

让你的数据离CPU更近一些

让你的数据离CPU更近一些 Jim Gray:RAM是硬盘,硬盘是磁带 永远只做自己最擅长的事情 不是所有的任务都需要同步执行

现在很火的答题赢钱游戏,让我来简单教你怎么做自动答题器

一、前言: 现在最火的直播游戏,那就是答题赢钱直播了,如百万英雄、芝士超人、花椒直播、冲顶大会等等,这些游戏的玩法都很简单,答对12题即可瓜分奖金了。玩法虽然简单,但是要能完全答对12题难度还是挺高的&…

OAuth认证协议原理分析及使用方法

twitter或豆瓣用户一定会发现,有时候,在别的网站,点登录后转到 twitter登录,之后转回原网站,你会发现你已经登录此网站了, 这种网站就是这个效果。其实这都是拜 OAuth所赐。 OAuth是什么? OAuth…

一次图文并茂的***完整测试二

任务:某公司授权你对其服务器进行******。对某核心服务器进行***测试,据了解目标机为Windows 2003 Server系统,ip地址为10.1.1.191,在C盘的根目录下存储有两个敏感文件这里就用(key1.txt,key2.txt)表示&…

神经网络学习到的是什么?(Python)

作者|泳鱼来源|算法进阶神经网络(深度学习)学习到的是什么?一个含糊的回答是,学习到的是数据的本质规律。但具体这本质规律究竟是什么呢?要回答这个问题,我们可以从神经网络的原理开始了解。一、 神经网络的…

Spring MVC原理

摘要: Spring MVC工作流程图springMVC工作流程图图一图二开发工具1.Eclipse IDE:采用Maven项目管理,模块化。2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查&#xff09…

linux下poll和epoll内核源代码剖析

作者:董昊 博客链接http://donghao.org/uii/ poll和epoll的使用应该不用再多说了。当fd很多时,使用epoll比poll效率更高。 我们通过内核源码分析来看看到底是为什么。 poll剖析poll系统调用:int poll(struct pollfd *fds, nfds_t nfds, int t…

百度副总裁马杰:实现元宇宙,技术要过三道坎

近来,元宇宙一词就像龙卷风瞬间席卷整个科技圈,一时间所有新概念层出不穷,无数科技公司蜂拥而至扎堆元宇宙。先是在线游戏创作平台Robolox把元宇宙写进招股书里,成为“元宇宙第一股”。后有扎克伯格宣布将Facebook更名为Meta&…

consolez设置

2019独角兽企业重金招聘Python工程师标准>>> 菜单”—>Edit—>Setting...—>Behavior—>选择“Copy on select” “菜单”—>Edit—>Setting...—>Mouse—>Paste text—>Right 最后一个重点说明的问题是Console2对中文的支持问题。默认情…

dstat用法;利用awk求dstat所有列每列的和;linux系统监控

安装:yum install -y dstatdstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼…

PHP内核介绍及扩展开发指南—基础知识

一、 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码。 1.1 PHP变量的存储 1.1.1 zval结构 Zend使用zval结构来存储PHP变量的值,该结构如下所示: type…

腾讯汤道生:数实融合成为行业“必答题”,腾讯未来打造四大引擎

11月3日,腾讯高级执行副总裁、云与智慧产业事业群CEO汤道生在2021腾讯数字生态大会上表示,“数实融合”正在从“选答题”,变成每个行业都要面对的“必答题”,腾讯未来将打造用户、技术、安全和生态四大引擎,助力各行各…

shell编程基础(2)---与||

shell 编程重要的应用就是管理系统,对于管理系统中成千上万的程序而言,查询某个文件名是否存在,并且获取该文件名所指代文件基本信息是系统管理员的基本任务。shell命令可以很轻松的完成这项任务。 #program this is a example for #########…

基于qml创建最简单的图像处理程序(1)-基于qml创建界面

《基于qml创建最简单的图像处理程序》系列课程及配套代码基于qml创建最简单的图像处理程序(1)-基于qml创建界面http://www.cnblogs.com/jsxyhelu/p/8343310.html课程1附件https://files.cnblogs.com/files/jsxyhelu/%E9%98%B6%E6%AE%B5%E4%BB%A3%E7%A0%8…

存储方式与介质对性能的影响

摘要 数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给大…

struts配置文件没有标签提示

2019独角兽企业重金招聘Python工程师标准>>> struts配置文件没有标签提示 原因:" http://struts.apache.org/dtds/struts-2.0.dtd"是通过网络的形式帮你下载对应的dtd文件, 如果机器没有联网,就不会有提示 解决办法&…

iPhone 隐私新规下的“大地震”:四大平台损失近百亿美元,“连用户是男是女都分不清……”

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 大家有这样的经历吗?前一秒刚在聊天软件上跟朋友分享了一款产品,下一秒就能在其他 App 中看到这款产品的广告推送,不了解内情的人说不定还会感慨一句:“…

Python 判断类型

类型判断:isinstance(obj, type) 方法 : isinstance(obj, type) print (isinstance(3, int)) # True print (isinstance(3, str)) # False print (isinstance(3, list)) # False print (isinstance([1,2,3], list)) …

php打印warning日志引发的core追查

内容 春节期间线上出了两个php-cgi的core,具体追查过程如下: 一、 Core信息 file core.xxx bug.php-cgi.3611.1296586902: ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from ‘php-cgi’ gdb ~/php5/bin/php-cgi core.xx…

BIZTALK项目中WEB引用WEBSERVICES服务时候报错

近期工作中须要完毕通过BIZTALK完毕调用WEBLOGIC公布的WebServices服务,环境搭建好后,打开VS开发工具新建一个BIZTALK项目,加入WEB引用将对方公布的地址拷贝上去,能够正常浏览到,然后点击加入引用button,这…

百度“知识增强的跨模态语义理解技术”获国家技术发明奖

11月3日,2020年度国家科学技术奖励大会在京举行,百度“知识增强的跨模态语义理解关键技术及应用”获国家技术发明二等奖。 该技术旨在通过构建大规模知识图谱,关联跨模态信息,通过知识增强的自然语言语义表示方法,解决…

Objective C浅拷贝和深拷贝

##浅拷贝 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。如: char* str (char*)malloc(100); char* str2 str; 复制代码浅拷贝只是对对象的简单拷贝,让几个对象共用一片内存,当内存销毁的时候&#xf…

我常用的那些linux命令

我常用的那些linux命令 用linux也有些年头了,说来也忏愧,说是有些年头了,其实也还是个不长进的主。记得第一次接触linux是boss跟我说的怎么操作,什么编辑模式,按i,a,o进入编辑模式。在一个黑乎乎…

2021腾讯数字生态大会:腾讯安全聚焦安全共建,护航数字经济发展

11月3日,以“数实融合 绽放新机”为主题的2021腾讯数字生态大会在武汉开幕。在首日的主峰会上,多位腾讯高管及行业领袖、企业家对数字时代如何建设安全底座,发表了看法。 腾讯高级执行副总裁、云与智慧产业事业群CEO汤道生指出,没…

Oauth认证协议

原文地址腾讯QQ第三方登录的实现原理? Oauth当中的角色: 1.Service Provider(服务提供方): 服务提供方通常是网站,在这些网站当中存储着一些受限制的资源,如照片、视频、联系人列表等。这些网站…

“分布式哈希”和“一致性哈希”的概念与算法实现

分布式哈希和一致性哈希是分布式存储和p2p网络中说的比较多的两个概念了。介绍的论文很多,这里做一个入门性质的介绍。 分布式哈希(DHT)   两个key point:每个节点只维护一部分路由;每个节点只存储一部分数据。从而实现整个网络中的寻址和存…