出现智能是好事,但模型不可控、不可预测、不可解释的行为,却让整个学术界陷入了迷茫与深思。
惊讶之处在于,这些模型只需要一个提示符:即接受一串文本作为输入,并且纯粹基于统计数据一遍又一遍地预测接下来是什么内容。计算机科学家曾预计,扩大规模可以提高已知任务的性能,但他们没有预料到模型会突然能够处理这么多新的、不可预测的任务。Dyer最近参与的一项调研结果显示,LLM 可以产生数百种「涌现」(emergent)能力,即大型模型可以完成的任务,小型模型无法完成,其中许多任务似乎与分析文本无关,比如从乘法计算到生成可执行的计算机代码,还包括基于Emoji符号的电影解码等。
新的分析表明,对于某些任务和某些模型,存在一个复杂性阈值,超过这个阈值,模型的功能就会突飞猛进。研究人员也提出了涌现能力的另一个负面影响:随着复杂性的增加,一些模型在回答中显示出新的偏见(biases)和不准确性。斯坦福大学的计算机科学家 Rishi Bommasani 表示,我所知道的任何文献中都没有讨论过语言模型可以做这些事情。去年,Bommasani 参与编制了一份包含几十种涌现行为的清单,其中包括在Dyer的项目中发现的几种行为,并且这个名单还在继续变长。
论文链接:https://openreview.net/pdf?id=yzkSU5zdwD目前研究人员不仅在竞相发现更多的涌现能力,而且还在努力找出它们发生的原因和方式,本质上是试图对不可预测性进行预测。理解涌现可以揭示围绕人工智能和一般机器学习的深层次问题的答案,比如复杂模型是否真的在做一些新的事情,或者只是在统计方面变得非常擅长,它还可以帮助研究人员利用潜在的优势和减少涌现风险。人工智能初创公司 Anthroic 的计算机科学家Deep Ganguli表示,我们不知道如何判断哪种应用程序的危害能力将会出现,无论是正常出现的还是不可预测的。
语言模型已经存在了几十年,但直到五年前最强大的武器还是基于循环神经网络(RNN),训练方法就是输入一串文本并预测下一个单词是什么;之所以叫循环(recurrent),是因为模型从自己的输出中进行学习,即把模型的预测反馈到网络中,以改善性能。2017年,谷歌大脑的研究人员引入了一种名为Transformer的全新架构,相比循环网络逐字分析一个句子,Transformer可以同时处理所有的单词,也就意味着Transformer可以并行处理大量文本。
通过增加模型中的参数数量以及其他因素,Transformer使语言模型的复杂性得以快速扩展,其中参数可以被认为是单词之间的连接,模型通过在训练期间调整这些连接的权重以改善预测结果。模型中的参数越多,建立联系的能力就越强,模拟人类语言的能力也就越强。正如预期的那样,OpenAI 研究人员在2020年进行的一项分析发现,随着模型规模的扩大,它们的准确性和能力都有所提高。
论文链接:https://arxiv.org/pdf/2001.08361.pdf随着 GPT-3(拥有1750亿参数)和谷歌的 PaLM (可扩展至5400亿参数)等模型的发布,用户发现了越来越多的涌现能力。一位 DeepMind 的工程师甚至报告说,他可以让 ChatGPT 认为自己是一个 Linux 终端,并运行一些简单的数学代码来计算前10个素数。值得注意的是,ChatGPT可以比在真正的 Linux 机器上运行相同的代码更快地完成任务。
与电影Emoji符号任务一样,研究人员没有理由认为一个用于预测文本的语言模型可以模仿计算机终端,许多涌现行为都展现了语言模型的Zero-shot或Few-shot学习能力,即LLM可以解决以前从未见过或很少见过的问题的能力。大批研究人员发现了 LLM 可以超越训练数据约束的迹象,他们正在努力更好地掌握涌现的样子以及它是如何发生的,第一步就是完全地记录下来。
正如所预料的那样,在某些任务上,随着复杂性的增加,模型的性能平稳且可预测地得到改善;而在其他任务中,扩大参数的数量并没有产生任何改善。但是,在大约5% 的任务中,研究人员发现了所谓的「突破」(breakthroughs),即在一定阈值范围内,性能出现了快速、戏剧性的跃升,该阈值随任务和模型的不同而变化。例如,参数相对较少(只有几百万)的模型不能成功地完成三位数加法或两位数乘法的问题,但对于数百亿个参数,某些模型的精度会大幅提高。其他任务也出现了类似的跳跃,包括解码国际音标、解读单词的字母、识别印度英语(印地语和英语的结合)段落中的冒犯性内容,以及生成类似于斯瓦希里谚语的英语对等词。但是研究人员很快意识到模型的复杂性并不是唯一的驱动因素,如果数据质量足够高,一些意想不到的能力可以从参数较少的较小模型中获得,或者在较小的数据集上训练,此外query的措辞也会影响模型回复的准确性。去年,在该领域的旗舰会议 NeurIPS 上发表的一篇论文中,Google Brain的研究人员展示了如何让模型利用提示对自己进行解释(思维链推理),比如如何正确地解决math word问题,而同样的模型如果没有提示就不能正确地解决。
论文链接:https://neurips.cc/Conferences/2022/ScheduleMultitrack?event=54087Google Brain的科学家Yi Tay致力于系统研究breakthroughs,他指出,最近的研究表明,思维链的提示改变了模型的规模曲线,也改变了涌现的点,使用思维链式提示可以引发 BIG 实验中没有发现的涌现行为。布朗大学研究语言计算模型的计算机科学家Ellie Pavlick认为,最近的这些发现至少提出了两种可能性:
第一个是,正如与生物系统相比较所显示的那样,较大的模型确实会自发地获得新的能力,这很可能是因为这个模型从根本上学到了一些新的和不同的东西,而这些东西在小尺寸模型中没有的,而这正是我们所希望的情况,当模型扩大规模时,会发生一些根本性的转变。另一种不那么耸人听闻的可能性是,看似突破性的事件可能是一个内部的、由统计数据驱动的、通过思维链式推理运作的过程,大型 LLM 可能只是学习启发式算法,对于那些参数较少或者数据质量较低的参数来说,启发式算法是无法实现的。但是她认为,找出这些解释中哪一个更有可能依赖于能够理解 LLM 是如何运行的,因为我们不知道它们在引擎盖下是如何工作的,所以我们不能说这些猜测中哪些更合理。所以我开始关注ruby,很多东西看起来不错,但我对隐式return语句很反感。我理解默认情况下让所有内容返回self或nil但不是语句的最后一个值。对我来说,它看起来非常脆弱(尤其是)如果你正在使用一个不打算返回某些东西的方法(尤其是一个改变状态/破坏性方法的函数!),其他人可能最终依赖于一个返回对方法的目的并不重要,并且有很大的改变机会。隐式返回有什么意义?有没有办法让事情变得更简单?总是有返回以防止隐含返回被认为是好的做法吗?我是不是太担心这个了?附言当人们想要从方法中返回特定的东西时,他们是否经常使用隐式返回,这不是让你组中的其他人更容易破坏彼此的代码吗?当然,记录一切并给出
给定以下方法:defsome_method:valueend以下语句按我的预期工作:some_method||:other#=>:valuex=some_method||:other#=>:value但是下面语句的行为让我感到困惑:some_method=some_method||:other#=>:other它按预期创建了一个名为some_method的局部变量,随后对some_method的调用返回该局部变量的值。但为什么它分配:other而不是:value呢?我知道这可能不是一件明智的事情,并且可以看出它可能有多么模棱两可,但我认为应该在考虑作业之前评估作业的右侧...我已经在R
我在我的Rails3示例应用程序上使用CarrierWave。我想验证远程位置上传,因此当用户提交无效URL(空白或非图像)时,我不会收到标准错误异常:CarrierWave::DownloadErrorinImageController#createtryingtodownloadafilewhichisnotservedoverHTTP这是我的模型:classPaintingtrue,:length=>{:minimum=>5,:maximum=>100}validates:image,:presence=>trueend这是我的Controller:classPaintingsC
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
我正在研究使用EventMachine支持的twitter-streamrubygem来跟踪和捕获推文。我对整个事件编程有点陌生。我如何判断我在事件循环中所做的任何处理是否导致我落后?有没有简单的检查方法? 最佳答案 您可以通过使用周期性计时器并打印出耗时来确定延迟。如果您使用的是1秒的计时器,您应该已经过了大约1秒,如果它更长,您就知道您正在减慢react器的速度。@last=Time.now.to_fEM.add_periodic_timer(1)doputs"LATENCY:#{Time.now.to_f-@last}"@
啊,正则表达式有点困惑。我正在尝试删除字符串末尾所有可能的标点符号:ifstr[str.length-1]=='?'||str[str.length-1]=='.'||str[str.length-1]=='!'orstr[str.length-1]==','||str[str.length-1]==';'str.chomp!end我相信有更好的方法来做到这一点。有什么指点吗? 最佳答案 str.sub!(/[?.!,;]?$/,'')[?.!,;]-字符类。匹配这5个字符中的任何一个(注意,。在字符类中并不特殊)?-前一个字符或组
在railscasts项目中你可以看到这段代码:before(:each)dologin_asFactory(:user,:admin=>true)end函数对应的定义是:Factory.define:userdo|f|f.sequence(:github_username){|n|"foo#{n}"}end我不明白admin参数是如何传递给函数的,而函数中没有关于admin参数的字样。谢谢 最佳答案 Factory.define不是一个函数定义,它是一个方法,它接受一个符号或字符串(在本例中是用户)和一个定义你正在制作的工厂的bl
我刚读了这个答案Convertingupper-casestringintotitle-caseusingRuby.有如下一行代码"abc".split(/(\W)/).map(&:capitalize).join&:capitalize到底是什么?在我自己将它放入irb之前,我会告诉你,它不是有效的ruby语法。它必须是某种Proc对象,因为Array#map通常需要一个block。但事实并非如此。如果我单独将它放入irb,我会得到syntaxerror,unexpectedtAMPER。 最佳答案 foo(&a_proc_o
在Ruby中有运算符(operator)。在API中,他们没有命名它的名字,只是:Theclassmustdefinetheoperator...Comparableusestoimplementtheconventionalcomparison......theobjectsinthecollectionmustalsoimplementameaningfuloperator...它叫什么名字? 最佳答案 参见上面的@Tony。然而,它也被称为(俚语)“宇宙飞船运算符(operator)”。
电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因,快速解决! 演示机型:联想Ideapad700-15ISK-ISE系统版本:Windows10一、显示器问题如果出现电脑启动后显示器黑屏的情况。那么首先您需要检查一下显示器是否正常工作。您可以通过更换另一个显示器或将当前显示器连接到另一台计算机来检查显示器是否存在问题。如果问题仍然存在,那么您可以排除显示器故障的可能性。 二、显卡问题如果您的电脑配备了独立显卡,那么显卡故障也可能是导致电脑