12月1日,OpenAI发布了针对对话场景优化的语言大模型ChatGPT。ChatGPT是InstructGPT的兄弟模型,可以以对话的形式与用户交互,这使得ChatGPT能够回答问题、承认错误、质疑假设、拒绝不当问题。

ChatGPT一发布就受到科技圈的广泛关注,各路大佬、各行大神还有众多程序员们纷纷加入“调戏”ChatGPT的行列。连埃隆·马斯克都感慨“人们陷入了疯狂的ChatGPT循环中”。

我第一时间注册了OpenAI账户,体验了ChatGPT,体验结果让我大呼🐂🍺,尤其是它解决数学、逻辑和编程问题的能力,让我这个十几年的老鸟都自愧不如。感觉以后编程可以抛弃百度、谷歌了,直接问ChatGPT就可以了,连代码都能帮你写好。给大家看几个例子:
常用算法实现
ChatGPT体验:快速傅里叶变换算法
帮你找bug
ChatGPT体验:AI帮你找bug
解决算法难题

解奥数题

PS: ChatGPT前端目前还不支持 LaTeX \LaTeX LATEX 渲染,支持 LaTeX \LaTeX LATEX 很容易,我猜很快会支持的。
如果大家想亲自测试,可以到chat.openai.com注册账户,不过目前不对中国大陆和港澳台开放,大家需要找其他支持国家的手机接收验证码。
ChatGPT采用人类反馈强化学习(Reinforcement Learning from Human Feedback)训练而来,使用的方法与InstructGPT相同,但数据收集设置略有不同。
首先用有监督的微调训练一个初始模型:人类AI训练师提供对话,他们既扮演人类用户又扮演AI助手。
然后创建奖励模型,为了创建强化学习的奖励模型,需要收集对比数据,其中包括两个或多个按质量排序的模型响应。为了收集这些数据,需要进行AI训练师与聊天机器人展开对话,然后随机选择一个模型生成的消息并采样若干替代回答,由AI训练师对其进行排序。利用这种奖励模型,我们可以使用近端策略优化(Proximal Policy Optimization)对模型进行微调。这个过程需要经过多次的迭代。

ChatGPT是在2022年初训练完成的GPT-3.5系列模型的基础上调优而来。ChatGPT和GPT 3.5都是在微软Azure AI超级计算基础设施上进行的训练。
当然ChatGPT也有一些局限,它回答不了预测性问题,比如我问ChatGPT “2022世界杯哪知球队最可能夺冠?” ,它就无法回答。

从ChatGPT的回复我们可以获得2点额外信息:
同时,ChatGPT对政治问题和敏感问题刻意做了回避。

按照OpenAI官方的说法,ChatGPT还存在5点局限:
ChatGPT有时会写出看似合理实则错误甚至荒谬的答案
OpenAI认为解决这一问题具有挑战性,因为:
ChatGPT对输入的局部修改或多次尝试同一问题很敏感
例如,修改问题中的某个词语,ChatGPT可能会给出完全不同的回答。或者同一问题一开始无法回答,换一种措辞再问一遍又能正确回答。
ChatGPT的回答通常过于冗长,过度使用某些短语
例如ChatGPT会重申它是OpenAI训练的语言模型。这些问题源于训练数据的偏差(训练师更喜欢看起来更全面的较长答案)和众所周知的优化问题。
不会反问
理想情况下,当用户问的问题不明确时,模型应该提出反问来明确问题。然而目前ChatGPT模型通常会猜测用户意图,给出回答。
无法100%拒绝不当问题
尽管OpenAI努力让模型拒绝不当问题,但它有时会难免还是会响应有害的指令或表现出偏激行为。OpenAI使用了Moderation API来警告或拦截某些类型的不安全内容,但可能目前还是会有一些误判。OpenAI希望通过收集用户反馈,以众包的形式来改进系统的工作。
尽管ChatGPT还存在上述局限,但在我的体验过程中,ChatGPT表现出的理解力和回复的准确度远超我的预计,让我直呼“哇塞”。尤其是它在代码方面的能力,某些方面已经超过了普通程序员得到水平。如果ChatGPT正式开放出来,很有可能将是:“外事不决问谷歌,内事不决问百度,代码不会问ChatGPT”的格局。
目前ChatGPT还没联网,一旦它连上网络,可以从互联网获取更多知识和信息,ChatGPT的潜力将得到更大的释放,甚至达到令人恐怖的程度。我相信这一天离我们不会很远,也许我们的下一代看到的世界会是一个完全不同的全新世界。
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD