自从OpenAI公司发布大型语言模型GPT-4以来,人们都在尝试使用这一令人兴奋的应用程序。GPT-4可以将手绘的网站模型生成HTML代码。很多用户证明,它可以从信用卡交易中找到物理地址,生成诉讼草稿,通过SAT数学考试,帮助教育和培训,甚至创建第一人称射击游戏。

GPT-4的强大功能确实令人惊叹,随着越来越多的用户访问其多模式版本,人们可以期待推出更多的大型语言模型。然而,在人们庆祝科学家们在大型语言模型领域取得的进步的同时,也必须注意到它们的局限性。
像GPT-4这样的大型语言模型可以执行许多任务,但它们不一定是完成这些任务的最佳工具。如果他们成功地完成了一项任务,但并不意味着他们在该领域是更可靠的。
GPT-4在发布之后引发了很多用户对OpenAI公司的批评,其中很多批评都是有道理的。随着GPT的每一次发布,它们的技术细节变得越来越不透明。OpenAI公司在发布GPT-4时发布的技术报告中很少包含该模型的架构、训练数据和其他重要方面的细节。种种迹象表明,OpenAI公司正逐步从一家人工智能研究实验室转型为一家销售人工智能产品的公司。
然而,这并没有削弱大型语言模型所带来的引人入胜的技术突破。OpenAI公司在这些技术发展中发挥了重要作用。在短短几年的时间中,已经从处理语言任务的最平庸的深度学习模型,发展到可以生成非常像人类的文本的大型语言模型,至少在表面上是这样。
此外,有了足够的参数、计算能力和训练数据,Transformer (大型语言模型中使用的架构)可以学习使用单个模型执行多个任务。这一点非常重要,因为直到最近,深度学习模型才被认为只适用于来执一项任务。现在,大型语言模型可以通过零样本和少量快照学习来执行几个任务,甚至在扩展时显示出紧急能力。
ChatGPT充分展示了大型语言模型的最新功能。它可以在一次对话中执行编码、问答、文本生成和许多其他任务。由于采用训练技术,从人类反馈中强化学习(RLHF),它在遵循指令方面做得更好。
GPT-4和其他多模式语言模型正在显示新一波功能,例如在对话中包含图像和语音消息。
一旦超越了科学成就,就可以开始考虑像GPT-4这样的大型语言模型可以提供什么样的应用程序。对人们来说,确定大型语言模型是否适合应用的指导原则是它们的机制。
与其他机器学习模型一样,大型语言模型是预测机器。基于训练数据中的模式,它们预测接收到的输入序列中的下一个令牌,它们做得非常有效。
下一个令牌预测对于某些任务(如文本生成)是一个很好的解决方案。当大型语言模型接受RLHF等指令跟随技术的训练时,它可以执行语言任务,例如撰写文章、总结文本、解释概念和回答问题,并取得惊人的成绩。这是大型语言模型目前最准确和最有用的解决方案之一。
然而,大型语言模型在文本生成方面的能力仍然有限。大型语言模型通常会产生幻觉,或者编造一些不正确的东西。因此,人们不应该相信他们是知识的来源。这包括GPT-4。例如,在行业专家对ChatGPT的探索中,发现它有时可以对复杂的主题生成非常雄辩的描述,例如深度学习是如何工作的。当他试图向一个可能不了解某个概念的人解释这个概念时,这很有帮助,但也发现ChatGPT也可能犯一些事实错误。
对于文本生成,行业专家的经验法则是只在熟悉的领域信任GPT-4,并且可以验证其输出。有一些方法可以提高输出内容的准确性,包括对特定领域知识的模型进行微调,或者通过在提示符前添加相关信息来为其提供场景。但同样,这些方法要求人们对该领域有足够的了解,以便能够提供额外的知识。因此,不要相信GPT-4生成有关健康、法律建议或科学的文本,除非已经知道这些主题。
代码生成是GPT-4的另一个有趣的应用。行业专家已经审查过GitHub Copilot,它是基于GPT-3的一个微调版本,其名称为Codex。当代码生成集成到其IDE中时(例如Copilot),它会变得越来越有效,并且可以使用现有代码作为场景来改进大型语言模型输出。然而,同样的规则仍然适用。只使用大型语言模型来生成可以完全审查的代码。盲目地相信大型语言模型可能会导致无功能和不安全的代码。
对于某些任务,像GPT-4这样的语言模型并不是理想的解决方案,即使它们可以解决示例。例如,经常讨论的主题之一是大型语言模型执行数学的能力。他们已经接受了不同数学基准的测试。据报道,GPT-4在复杂的数学测试中表现非常好。
然而,值得注意的是,大型语言模型并不像人类那样一步一步地计算数学方程。当向GPT-4提供提示“1+1=”时,将为人们提供正确答案。但在幕后,它并没有执行“添加”和“移动”操作。它执行与所有其他输入相同的矩阵运算,预测序列中的下一个标记。它给确定性问题一个概率性的答案。这就是GPT-4和其他数学大型语言模型的准确性在很大程度上取决于训练数据集的原因,并且是在偶然的基础上工作。人们可能会看到它们在非常复杂的数学题目上取得惊人的成绩,但在简单的初级数学问题上却失败了。
这并不意味着GPT-4对数学没有用处。一种方法是使用模型增强技术,例如将大型语言模型与数学求解器相结合。大型语言模型从提示符中提取方程数据,并将其传递给解算器,解算器计算并返回结果。
GPT-4的另一个有趣用例是可汗学院(Khan Academy)正在做的事情。他们将大型语言模型课程整合到他们的在线学习平台中,作为学习者的导师和教师的助手。由于这是OpenAI公司在GPT-4发布时宣传的合作伙伴之一,他们可能已经根据其课程内容对GPT-4进行了微调。该模型还与平台的内容很好地集成在一起,以提供场景并减少错误。但值得注意的是,GPT-4并不是为了解决数学问题,而是引导学生和教师学习和教授数学概念。
一旦用户决定了GPT-4是否适合其应用,必须从产品的角度来看待它。GPT-4生成的每个令牌都是数千亿次运算的结果。用户必须问自己的第一个问题是,“我的应用需要这样的计算吗?”事实上,在许多情况下,即使GPT-4提供了一个完美的答案,也可能有更简单、更快、成本更低的解决方案。例如,在许多情况下,正则表达式等简单的解决方案在提取信息方面更有效。
事实上,行业专家与ChatGPT进行了一次有趣的对话,在对话中问ChatGPT “GPT-ify”是什么意思。ChatGPT将其描述为“基于GPT(生成预训练转换器)架构的语言模型的技术和功能,例如GPT-3或GPT- Neo,应用于特定的任务或问题。”
然后行业专家问GPT-ify是否可以用来嘲笑那些使用GPT做一些不需要它的事情的人。ChatGPT这样回答:“是的,GPT-ify当然可以被讽刺或讽刺地用来暗示某人过度使用或滥用GPT来完成不需要如此复杂的语言模型的任务或问题。例如,如果有人使用预训练的GPT模型来生成一个简单的购物清单,有人可能会开玩笑说他们已经‘GPT化了他们的购物清单’。”
因此,不要在没有探索其他选择的情况下对产品进行GPT化。像所有其他技术一样,应该将GPT-4视为产品工具箱中的众多工具之一。正如ChatGPT所建议的那样,“关键是要根据当前任务的具体要求和限制,为工作选择合适的工具。”
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用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