从贝叶斯定理到大语言模型,重新理解文本生成技术

2019年,我们在做智能写作的时候,面临的最大的挑战就是AI给的数据效果和预期偏差太远。特别是做扩写的时候,发现生成的文字很容易跑偏。

dcdc59a3d57e276c1de8ad98edc4c0a4.png

当时,我们做了很多算法和模型研究。几乎爬取了全网的自媒体文章,然后训练一批模型,问题依然很多。因为中文博大精深各种修辞手法和阴阳怪气,再加上随着时代的发展,“米”、“口罩”、“W”等特殊词的用法也如雨后春笋一般涌现,如何让AI能跟上人类语言的理解能力是个让人头痛的问题。

当时我们也训练了不少语言模型,发现它根本无法弄懂词的含义,无法理解“心灵鸡汤”和“鸡汤”是完全两码事,写出了“老鼠爱喝心灵鸡汤”的令人啼笑皆非的错误;另外,很容易跑偏,从“心灵鸡汤”跑偏到“老鼠喝汤”再跑偏到“动物世界”,一口气扩写出几百个字,能跑偏到十万八千里,让人完全摸不着头脑。

在试了很多方案之后,我们得到了一个结论:机器无法真正理解人类的语言。然后,我们悄悄把“扩写”放到了“实验室”的板块,放弃了文本生成的持续研发。

AI生成文字这条路到底通不通?到2023年,在没有体验ChatGPT之前,我还是持保留态度,但是体验之后,我忍不住惊呼:“这三四年的时间到底发生了什么?”

我和大家一样,重新补起了功课……

一、什么是语言模型?

语言模型( Language Model)是一种机器学习算法,它可以根据给定文本来预测下一个词语或字符的出现的概率。

语言模型通过大量的文本数据来学习语言的统计特征,进而生成具有相似统计特征的新文本。其核心目标是建立一个统计模型,用来估计文本序列中每个词语或字符出现的概率,从而实现语言生成、语言理解等自然语言处理任务。

比如,我们可以给一句话让ChatGPT做扩写:

我今天吃了一个___

它可能会扩写出“苹果”,“馒头”、“面包”、“汉堡”。根据大量的文本统计,这些词出现频率大致如下图:

f11413b21748d37419284072160c2df0.png

苹果为0.07,馒头为0.035,面包为0.025,汉堡为0.022。

因为”苹果“出现得比较多,ChatGPT大概率会写出”今天我吃了一个苹果“。但它不太可能预测出”我今天吃了一个火车”,因为”火车“不是食物,虽然语法通顺。但喂给GPT训练的语料里面基本没有人会这样造句。

正是因为GPT在训练过程中吸收了大量的人类语言数据,所以我们会觉得它的回答符合我们的逻辑。

人类区别于普通动物的最主要智慧特征可能就是强大的语言能力。语言不仅仅只是一种沟通工具,还包含着人类的思考逻辑和对世界的认知。

不管AI是否有真正的智慧,我相信只要语言模型的预测能力做到极致,就能够让人类信以为真。

二、概率从哪里来?

那么,语言模型是如何预测概率的呢?这要从200多年前的贝叶斯学派说起。

b590bc0e34af38ee62e3a7e6d78831b5.jpeg

贝叶斯定理,由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发明的。其主要思想就是,通过已知的知识来预测接下来要发生事情的概率。即我们通过以往的经验、分析或实验,可以推断出一些事件发生的概率。为了更好的理解,我们举个预测地震的例子。

假设有人收集了大量历史数据,我们可以发现地震和自然界的某些异常现象有某种关系,如鸡飞狗跳、老鼠上街、青蛙搬家、湖水干涸等现象,我们可以根据历史的数据事先计算好这些现象出现的概率,叫做先验概率。地震的概率可以写作P(地震),异常现象的概率可以写为P(异常现象),例如,老鼠上街的概率可以写作P(老鼠上街)。

正所谓:一切偶然背后都会有个必然。根据历史数据,我们可以算出地震和异常现象的概率关系,我们称之为条件概率。例如,在某个异常现象发生后出现地震的概率,可以写作P(地震|异常现象),先决条件写在|后面。如果是已知地震再计算异常现象的概率,也可以反过来P(异常现象|地震)。

有了这些数据,我们就可以根据观测,预测还未发生的地震了。通过观测一些现象来预测的还未发生的概率,这叫做后验概率,我们记为P(新地震|异常现象)。

例如,P(新地震|鸡飞狗跳)表示的是我们观测到鸡飞狗跳,预测可能发生地震的概率。这时我们可以用到贝叶斯公式。

后验概率 = (先验概率 * 条件概率) / 证据概率

7ff6280e10dd4da66c6c52182e272065.png

我们把预测地震的例子迁移回语言模型。假设要预测在给定“吃”这个词之后,下一个词是“苹果”的概率,即P(苹果|吃)。

首先,语言模型学习了大量的文本数据,获得了大量的先验知识,已经知道了P(吃|苹果)、P(苹果)和P(吃)这三个概率值。其中,P(吃|苹果)表示在给定“苹果”这个词之后,出现“吃”的概率;P(苹果)表示“苹果”这个词出现的概率;P(吃)表示“吃”这个词出现的概率。

然后,我们可以根据贝叶斯定理,计算后验概率P(苹果|吃):

202c4f853ebbd5a6514d51fb48e9c1d5.png

我们还可以通过输入法的联想词模拟整个句子的生成过程。

c23813e5f02a177913d6b44aa996f32b.png

我们以“今天吃”这个词作为输入,语言模型会继续根据统计数据,计算出在“今天吃”这个词之后,各个词出现的概率。例如,它可能计算出“饭”这个词出现的概率为0.4,“了”这个词出现的概率为0.35,“的”这个词出现的概率为0.33……我们结合语境选择“了”,然后输入法刷新联想词,然后我们选择“一个”。依次重复这个过程,最终得到了“今天吃了一个苹果”的句子。

大家可能也注意到了它的问题。输入法的语言模型,只能预测上一个词和下一个词的关系,如果没有人类的主动选择就很容易跑偏,这是一个长文本预测的问题。

在2019年,我们遇到了问题是一样的。而且我们在实际应用中我们会使用更加复杂的模型,我们会用到一些RNN等深度学习的技术,让语言模型可以预测更长一点的句子。但是针对长文本依然无法解决跑偏的问题。

当时的解决方案就是一句一句的扩,让用户随时可以纠正偏差。但问题是这种扩写的意义又在哪里呢?让我对AI文本生成的信仰顿时崩塌。

三、什么是大语言模型(LLM)?

2023年,让整个人类最为振奋的AI技术就是ChatGPT。“大语言模型(Large Language Model)”这个词也随之映入人们的眼帘。ChatGPT让人觉得惊艳之处,能够结合上下文,像人一样有逻辑性地回答问题,就算生成超长的文本也不会跑偏。到底什么是大语言模型?

大语言模型与普通语言模型相比,大语言模型的一个显著区别在于其规模。大语言模型通常具有大量的参数,并且在训练过程中使用了巨量的文本数据。大型语言模型的参数规模通常与效果成正比,能够更好地理解和生成自然语言文本,更好地完成各种自然语言处理任务,如写作、翻译、问答等。

GPT优秀之处是做了前无古人的突破性的尝试,使用了巨量的参数和预训练数据。GPT-3拥有1750亿个参数,使用了45TB的文本数据进行训练。训练数据和参数量都远远超过传统的语言模型。

3.1 大规模的参数有什么用?

我们要从词嵌入(Word Embedding)说起,为帮助语言模型更好地理解每个词的特征和含义, 我们需要使用大量的参数来存储和处理信息。我们会将这些词嵌入一个高维的向量空间里面,像GPT-3的向量空间的维数就有12288,这意味着GPT-3可以使用12288个维度来充分理解某个词。对于很多单词的理解可能比人类都要透彻。

语言模型还可以通过词向量空间中的位置的远近来理解词与词之间的关系。

假设我们的词向量空间有三个维度:颜色、形状和类别。我们有三个单词:“苹果”、“橘子”、“手机”,应该如何嵌入到向量空间呢?

“苹果”和“橘子”都属于水果类别,因此它们在类别维度上的值相同都是用数字“1”表示;但“苹果”的颜色是红色用数字“1”表示,而“橘子”的颜色是橙色用数字“2”表示;至于形状维度,由于“苹果”和“橘子”的形状都是圆形,都用数字“1”表示,于是有下面这个数值。

6daa6c41753427641191e1cc40b49069.png

“手机”属于电子产品类别,数值用“3”表示;手机的形状是方的,数值用“2”表示;颜色是多色的,数值用“8”来表示。

f6657403304c9d1053e7d325db4ac5cc.png

他们之间的关系可以一目了然地展示在向量空间的关系中,如下图:

8ceb7c3e949a43bd3adbfd1921db87c6.png

我们可以看到语义相似的单词在向量空间中彼此靠近。当GPT在生成文字的时候,它可以根据向量空间知道“苹果”和“橘子”是一类水果,在“吃”的语境中可以相互替换。

468f150b51b28290032c88d48982a653.png

但是这也有新的问题,“苹果”也有可能是指生产手机的“苹果公司”, GPT怎么能知道“苹果”是否特指“苹果公司”呢,根据不同的语境推理出不同含义的“苹果”呢?

2019年,如何结合语境,让语言模型能够准确地理解词的含义,这在当时也是个巨大的难题。我们当时想的策略也相对简单粗暴,就是通过命名实体技术强制将它们标记为不同的实体名词,例如,“苹果手机”类别为电子产品,“苹果公司”为企业。但是遇到的问题是,我们没有办法列举完所有的命名实体,需要不断扩充新词库;另外在很多语境中“苹果”就能代表”苹果公司“和”苹果手机“,没办法根本解决这个问题。

GPT-3高明之处就是使用上下文相关的词嵌入方法和自注意力机制来解决这个问题。它的词嵌入方法考虑了单词在给定文本中使用的上下文,而自注意力机制则允许模型在生成文本时考虑前面的所有的单词。最终,让机器能更好地理解语境 ,解决词的多义性和歧义性问题。

3.2 什么是注意力机制?

GPT的Transformer模型通过使用自注意力机制(Self-attention mechanism),能够让模型在处理每个单词时都能考虑到文本中所有单词的信息,从而更好地捕捉文本中的长距离依赖关系,解决了长文本的跑偏的问题。这在传统的模型中是无法做到的。

注意力机制的灵活性来自于它的“软权重”特性,即这种权重是可以在运行时改变的,可以根据上下文来推断出单词的含义,来达到更好的预测效果。

举个例子,假设我们有一个句子:“我喜欢吃苹果,但我不喜欢苹果手机。”在这个句子中,“苹果”这个词出现了两次,第一个“苹果”是指一种水果,而第二个“苹果”是指一种手机品牌。

如果是没有注意力机制的模型来处理这个句子,那么模型可能会将两次出现的“苹果”都当做水果来处理。但对于GPT来说就不一样了,它能够根据上下文来推断出每次出现的“苹果”的含义。

这主要归功于GPT包含的巨量参数中不仅仅包含了词汇的意义,还包含了词在句子中结构和语法、语言风格、语境信息等等。

注意力机制可以通过计算每个词的相似度来实现注意力权重的计算。当它处理第一个“苹果”时,会注意到前面有一个权重较高的“吃”字,因此会推断出这里的“苹果”指的是一种水果;而当模型处理第二个“苹果”时,它会注意到后面有一个权重较高的“手机”,因此会推断出这里的“苹果”指的是一种手机品牌。

我们可以简单模拟一下这个注意力权重的计算过程。

假设我们有个三维的词向量空间,我们先把“我”、“喜欢”、“吃”、“苹果”这4个词嵌入到这个空间里面:

edf3d3d4eae0f553886e5bd15ef9f5a8.png

如果绘制成图,他们在向量空间中的关系一目了然。如下图,两个词越是接近,关系就越紧密。

b94fe80b450a0086876300dd395d4377.png

语言模型可以用数学方法来分别计算”苹果“与“我”“喜欢”“吃”三个词的权重分数,我们可以通过向量的点积计算方式模拟计算一下,值越大代表的是向量的相关性越大:

253b106cb0bec4393c63dfc4f48d768f.png

通过计算我们发现“吃”的相似度最大为2.66,那就说明“吃”这个词相对于“苹果”应该有更高的注意权重。

或许看到这里,你已经觉得自己消耗了不少的脑细胞。但似乎我们也能够理解GPT的工作量是有多么的大。因为要不断地动态的生成和预测下个词,需要消耗大量的算力。没办法一步到位,所以它只能是一个字一个字地给你呈现出来。

算力也是我们在2019年遇到的难题,因为训练模型的沉没成本很高。稍微复杂一点的模型训练可能需要几天的时间,但是你也没有办法保证预期结果。而且,在模型训练好之后,用户还需要长时间的等待计算结果,导致体验非常糟糕。对于一个争分夺秒的创业团队来说,显然有些不切实际。

所以我们当时思路是尽可能把模型做多做小,按照不同的文章分类进行训练,想通过这种方式平衡时间和效果,但效果依然不尽人意。从今天的结果来看,没有通用的大语言模型作为基座,把模型做小做细基本就是一条不归路。最终,我们放弃了文本生成算法的持续研发。

GPT的成功之处,不仅仅是技术的成功,也是在商业上面的成功。有了微软的算力加持,可以更好的保证模型训练和服务体验,才能在普通的用户人群获得巨大的反响。

四、尾声

今天,在ChatGPT闪耀的光环之下,我们看到OpenAI的CEO 山姆·奥特曼(Sam Altman) 风光无限,我在短视频平台经常能刷到他的精彩演讲语录,我也总是希望能够从他的成功经历上学到点什么。

如果有一天,我拿着2023年的大语言模型的论文,穿越回了2019年,重新开始智能写作的项目,我会做得更好吗?其实,我依然觉得很难,因为创业需要”天时地利人和“。

先不提OpenAI所在的土壤对于创新极其的开放,它吸纳了全球最顶尖的人才,并获得了资本的鼎力支持。光是能够看清未来的方向,并且能够坚定不移地走下去,也是我们大多数创业团队无法企及的高度。

对于一个创业者来说,看见未来很重要,但认清自己也很重要。看见未来,你才能坚定不移地走下去;认清自己,你才能力所能及地把事情做得更好。在没有能力之前,需要先学会成长;在机遇没有到来之前,需要先学会等待;在没有成功之前,也要学会选择坚持。

现在ChatGPT的热度之下,又有一些朋友重新投入到AI创业的大潮中。雷军说过:“站在风口,猪也能被吹上天”。但是风很大,浪也会很急,挑战也会很多。希望各位创业者能够一帆风顺。


最后,我有个AI产品创业相关的知识库,每天会更新一些发现和感悟,6.18做个优惠活动。欢迎有兴趣的朋友加入。

4d542e07c841a527e37abb2c9f244eee.png

老用户续费打半折

6c88a5f1df47dc45b5caafaf7ab2489e.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14560.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里搞出脱口秀版GPT!与鸟鸟激辩一小时,话痨到停不下来…

杨净 发自 凹非寺量子位 | 公众号 QbitAI 连社恐的鸟鸟,现在都变成话痨了…… (这到底是人性的扭曲,还是道德的沦丧) 最近有一种很新的脱口秀:不花钱、一对一、而且任意话题随便and随时聊。 结果一小时跟鸟鸟聊天下来&…

因资金短缺,全职开发者自述:这款开源软件可能没有未来了!

整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 参与开源、贡献开源,虽有一腔热血,但迫于现实的生存而放弃的开发者依然不在少数。 7 月 4 日,知名开源 JPEG 图像编解码器 libjpeg-turbo 发布公告,官宣 …

入狱 10 月、网暴不断,并挣扎在温饱线!超 90 亿次下载的开源项目,背后是这样的 9 年...

“我本可以默默地停止这项工作,但我还是想给开源最后一次机会。” 整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 「阳光之下,必有黑暗」。 当互联网企业争相拥抱开源,当开源成为技术创新的重要途径时&#xff0…

Prompt工程师指南[应用篇]:Prompt应用、ChatGPT|Midjouney Prompt Engineering

1.ChatGPT Prompt Engineering 主题: 与 ChatGPT 对话 Python 笔记本 ChatGPT介绍 ChatGPT是OpenAI训练的一种新型模型,可以进行对话交互。该模型经过训练,可以按照提示中的指令,在对话上下文中提供适当的回应。ChatGPT 可以帮…

锁分实锤!B站三体动画评分只有…好文!拆解追溯GPT-3.5各项能力起源;餐饮店后厨AI解决方案PreciTaste… | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 分析了三体动画近万条评分数据,扒下B站最后一块遮羞布… https://www.bilibili.com/video/BV1JM411m7HU/ 命运多舛的《三体》动画终于…

提示工程师指南4-ChatGPT Prompt Engineering

ChatGPT Prompt Engineering 在这个部分,我们将介绍 ChatGPT 的最新提示工程技术,包括技巧、应用、限制、论文和额外的阅读材料。 主题: 与 ChatGPT 对话 Python 笔记本 请注意,本部分正在紧密开发中。 文章目录 ChatGPT Promp…

cmd输出中文乱码

解决cmd中文乱码问题 解决方法: 1. chcp 直接输入chcp命令,查看当前cmd的编码格式 活动代码页:936指GBK 2. 设置活动代码页为:UTF-8 编码格式 方法一:直接执行 chcp 65001 执行完后,使用 chcp 可查看当前…

chatgpt赋能python:Python转码详解:解决乱码问题

Python转码详解:解决乱码问题 在使用Python进行编程的过程中,经常会遇到乱码的问题。这种情况往往发生在不同操作系统和应用程序之间交互数据时。本文将介绍Python如何进行转码以解决乱码问题。 什么是转码? 当我们将文本从一个编码格式转…

chatgpt赋能python:Python中文字符乱码问题及解决方法

Python中文字符乱码问题及解决方法 Python作为一种高级编程语言,已经被广泛应用于数据分析、机器学习等领域,尤其是在处理中文文本方面具有很大的优势。然而,在实际使用中,我们有时会遇到一些令人头痛的问题,比如中文…

QMessageBox显示中文为乱码

如图,想要输出这些信息,但是展示为乱码 解决办法: 在cpp文件的最顶端加上#pragma execution_character_set("utf-8"),然后重新构建并运行就可以啦!

处理中文乱码和中文部分乱码

文章转自:http://book.51cto.com/art/201112/306309.htm 在网络操作中,关于中文乱码很多初学者都感到非常困难,如何解决乱码?不要没有目的胡乱转码,笔者访问了几个初学者,他们对于这个问题常用的方法就是一…

PHP界面显示中文乱码

在写一个表单提交的项目中&#xff0c;遇到了PHP界面输出无法显示中文界面。 后来查阅相关资料&#xff0c;得出解决途径。 代码如下&#xff1a; <!DOCTYPE html> <html> <head> <title>123</title> </head> <body><?php he…

中文乱码问题

解决中文乱码问题&#xff0c;出现于解压后中文文件名&#xff0c;中文应用程序即exe 常见的中文乱码及解决一. zip压缩包解压之后中文文件名称乱码1. 系统区域改成中文简体2. 用winar打开的时候&#xff0c;选择名称加密&#xff1a;简体中文 二. 中文应用程序&#xff08;以.…

零代码编程:用ChatGPT爬取网页数据遇到乱码怎么办?

今天用ChatGPT写了一段代码&#xff0c;爬取中文网站数据&#xff0c;提示词如下&#xff1a; 写一段Python程序&#xff0c;爬取网页数据并保存到excel表格。 具体步骤&#xff1a; 打开网站https://www.zhenfund.com/Case/?id3&#xff0c;解析源代码&#xff1b; 定位 …

解决各种中文乱码问题

tomcat出现中文乱码问题有以下几种情况&#xff1a; 1.通过cmd启动tomcat出现中文乱码&#xff08;tomcat日志输出编码与cmd编码不一致&#xff09; cmd启动tomcat出现中文乱码 乱码原因&#xff1a;这是由于windows下的cmd的默认编码是GBK编码&#xff0c;Tomcat控制台默认输…

Python 乱码原理及其解决办法

最近在爬虫过程中爬下来的HTML文件中出现了不认识的字符&#xff0c;也就是“乱码”&#xff08;之前也遇到了系统之间文件显示“乱码”的问题&#xff09;&#xff0c;花了点时间学习Python编码相关的问题&#xff0c;主要参考了以下几位的文章&#xff1a;Unicode编码底层描述…

别研究 ChatGPT 了,来看个国产好项目

今天我要给大家推荐一个近期荣获 GVP 称号的项目—— Eoapi&#xff0c;界面简洁的同时满足我的核心诉求。&#xff08;项目作者是我的朋友&#xff0c;大家都支持一下~&#xff09; 简单介绍 Eoapi 是纯国产的开源项目&#xff0c;可以说是 Postman 的好兄弟&#xff0c;该有…

Android小项目——新闻APP

前言&#xff1a; 在公司学习了一段时间Android知识&#xff0c;决定做一个小项目&#xff0c;目的是学会运用所学的基础知识&#xff0c;在这里记录一下开发历程&#xff0c;大家可以把它看成一款入门级练手的 Demo 应用吧~ 项目概述&#xff1a; 类型&#xff1a; 新闻APP&am…

【编程架构实践】关于技术栈和架构

目录 技术栈和架构 技术栈 1. 项目需求 2. 开发团队技能