草庐IT

爆红的chatgpt是如何诞生的?

菩提本无树007 2023-11-25 原文

今年,人工智能行业最大的新闻当属 DeepMind的 AlphaGo战胜了李世石,这是 AlphaGo在与人类围棋高手对战中,以总比分4比1击败李世石。

DeepMind团队公布的研究成果在 AI界引起了巨大反响。它从深度学习(Deep Learning)入手,开创了一种全新的人工智能技术,与当前人工智能所使用的机器学习(Machine Learning)有很大区别。相比于传统机器学习方法, ChatGPT让机器真正像人类一样思考,能够胜任很多复杂的任务。ChatGPT可以说是目前最强大的语言模型之一。

 

ChatGPT是一款人工智能系统

ChatGPT是一款由 OpenAI开发的人工智能系统,它用来模拟自然语言处理任务的深度学习模型,能够理解自然语言,并根据输入文本内容。

ChatGPT系统在文本生成过程中采用了基于 Transformer架构的预训练语言模型,该模型以 Transformer架构为基础,使用双向 Transformer模型,训练从输入文本到输出文本的语言模型,将输入文本表示成语义相似的词向量,并将词向量表示成概率分布。

此外,该系统还包含两个内部的神经网络模块:一个用于处理语言生成;另一个用于处理语言理解。此外,系统还使用了基于学习的深度学习模型,使用预训练语言模型来学习通用语言处理任务。

 

ChatGPT是如何训练出来的?

DeepMind的研究人员通过对历史文档数据进行训练,构建了一个被称为 Transformer (Transformer是一个由深度神经网络组成的多层网络,其模型的结构类似于神经元,在输入序列上进行反复地传递信息)的模型。在这个模型中,有三个主要部分:输入序列、输出序列和权重(权值)。输入序列就是文档中的一些关键字;输出序列则是一些对文档的看法(这取决于文档所讨论的话题);权重则是将这两个输出的内容相乘再相除,并进行标准化,之后就可以用来训练一个模型,这个模型就可以将输入和输出相乘再相除,并使用这些结果训练 Transformer模型。

由于 Transformer具有良好的数学性质(可以进行大规模计算),所以它可以让 GPT完成一些非常复杂的任务,包括:

理解文本并提出建议;

与多个相关领域内的专家交流;

ChatGPT能够完成哪些任务?

ChatGPT的全称是 Google Translate Machine Learning,它可以完成的任务主要包括:

对话(Conversation):通过与人类交谈,学习语言和各种人类表达。从回复内容来看,主要是问答类型的对话;

文本生成(Text Generation):让机器根据特定任务生成文本;

阅读理解(Reading Ability):让机器理解文本内容,例如对于一个简单的句子,理解句子中每一个单词的意思,并且针对这些单词给出合理的回答;

翻译(Translate Spontanes):对文本进行翻译。

 

ChatGPT为何要“跳槽”到 Google呢?

在 DeepMind发布论文之前, ChatGPT就已经与 Google进行过一次合作,他们将其研究成果发表在了《自然语言处理》上。但是, DeepMind团队发现,用自然语言处理技术训练出来的模型还不够“聪明”,而且在一些特定领域的表现并不够好。他们在论文中提出,应该从更多的自然语言处理任务入手,比如翻译和对话等。

那么问题来了,为什么 ChatGPT要去 Google呢?当然不是因为谷歌有钱,或者谷歌有实力。其实这两点都不是主要原因。ChatGPT在 Google内部之所以能够引起极大的关注和讨论,主要原因还是在于其所创造的巨大价值:帮助人们更好地理解自然语言、对话和问答等复杂场景。

 

为什么要做自然语言处理(NLP)和机器学习?

第一个原因是,现在的人工智能已经进入了后半场。AI领域最大的问题就是数据驱动型人工智能在解决实际问题上的局限性。现在,大量的数据都被计算机处理了,但很多应用场景其实并不需要这些数据。比如说语音识别,只有百分之十几的准确率,但是需要百分之十几甚至更高,这就是因为在实际场景中,这些数据没有得到充分的利用。

第二个原因是,人工智能要真正意义上的智能是需要具备人类的思维能力的。这个思维能力不是说你想让它具备什么能力,它就可以具备什么能力。如果不具备人类的思维能力的话,就算给它再多数据,再强训练模型,最终也不会真正像人类一样思考。因此自然语言处理(NLP)和机器学习就成为了人工智能领域重要的研究方向。

 

ChatGPT是如何开发出来的,有哪些难点和挑战?

ChatGPT从诞生到现在,已经在 GitHub上开源,并获得了大量开发者的支持和关注。那么 ChatGPT究竟是如何开发出来的呢?

ChatGPT是通过深度学习技术实现的。不同于以往使用大量文本进行训练模型,它的最大难点是在模型上实现了知识的传递。正如上文提到的,模型中包含了大量的文本信息和知识,因此 ChatGPT需要通过神经网络来学习如何生成新文本。而在实际应用中,机器不可能学习所有知识,因此它必须从零开始学习,并且很难进行泛化。

此外,如何让模型真正具有思考能力也是难点之一。要实现这样一个功能,需要解决大量的数据收集、数据清洗、模型训练和模型预测等问题。最重要的是,如何让模型具有感知能力以及根据上下文做出合理判断的能力,这些都是非常困难而又必要的研究方向。

同时, ChatGPT在很大程度上依赖于大量文本信息,如何防止用户输入的问题(比如重复输入同一个问题)以及如何在应用程序中提供良好体验都是需要解决的问题。

 

ChatGPT的发展趋势和应用前景如何?

ChatGPT的发展趋势是非常好的。它主要应用于三个方面,首先, ChatGPT在智能问答系统中的应用。目前已经有公司开始着手打造基于 ChatGPT的智能问答系统,让机器可以跟人一样回答问题,让对话更加自然。其次,在智能对话系统中的应用, ChatGPT可以理解对话中双方的情绪和意图,从而让对话更加深入和真实。最后是在一些智能问答系统中的应用。

当然, ChatGPT也存在一定的问题。它虽然能理解对话,但无法做判断;能回答简单问题,但不能深入了解问题背后的含义;能理解文本意义,但无法实际问题等。

目前 ChatGPT主要是在中文环境下使用。随着其技术不断进步, ChatGPT在其他语言环境下使用将越来越广泛。未来,随着 ChatGPT性能进一步提升和应用范围扩大,其应用范围还将不断扩展到其他语言环境下的问答系统等领域,比如面向自然语言处理领域的多语言问答系统、面向机器翻译领域的多语言翻译系统、面向聊天机器人领域的多语言聊天机器人等。

 

有关爆红的chatgpt是如何诞生的?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    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

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐