计算语言理解简史

目录

一、前言

二、早期自然语言处理(NLP)

三、语言模型

四、N-grams

五、将概念表示为大向量

六、潜在语义分析(LSA)

七、单词向量表示的意义

八、超越线性函数

九、AlexNet 和 GPU

十、为单词添加上下文

十一、机器翻译

十二、总结


一、前言

当前,除非一直生活在无法访问互联网环境下,否则肯定听说过人们如何使用AI的示例,以及 ChatGPT 将如何改变我们所知的社会进程的预言。

很少有人真正了解这些模型是如何做他们正在做的事情,但这并不意味着我们对正在发生的事情一无所知。

二、早期自然语言处理(NLP)

计算机科学家和语言学家已经合作了至少半个世纪,试图让计算机程序理解语言。该领域的大多数人认为,这样做的方法包括创建单词分类法、将句子分解为解析树、分配词性标签,然后使用模板和规则来派生含义。

早在 20 世纪 50 年代,人们就意识到纯粹从统计角度看待语言可以提供大量信息。例如,一个单词对于它出现的文档的重要性与它在文档中出现的次数成正比,与它在其他文档中出现的频率成反比。这是在 1957 年观察到的。

三、语言模型

如填空 狗(  )声音太大,很痛苦。如果你像大多数人一样,你猜是吠叫而不是抓伤。如果你要为每个可能的单词分配一个概率,你可能会给 (叫) 一个相当高的概率,而给其他任何单词一个非常低的概率。这个计算概率的过程称为语言建模。

ChatGPT 本质上是一种语言模型。它也是一个非常大的神经网络拥有 1750 亿个可编程连接,这就是它被称为大型语言模型 (LLM) 的原因。相比之下,人类大脑估计有 10^15 或 1000 万亿个连接。

语言模型的特性在于你不必在进行一次预测后停止。你可以将预测的单词附加到文本中,然后进行下一个预测并进行下一个预测,依此类推,直到获得整页文本。

最简单的语言模型只是计算大量文本中相邻出现的单词对,然后给定第一个单词,查看下一个单词的概率。这本质上是语言模型开始的地方。

四、N-grams

n -gram是语言数据集中发现的一系列n个相邻字母(包括标点符号和空格)、音节或很少的整个单词;或从语音记录数据集中提取的相邻音素,或从基因组中提取的相邻碱基对。它们是从文本或语音语料库中收集的。在NLP的背景下,n-gram 的使用允许词袋模型捕获词序等信息,这在传统的词袋设置中是不可能的。

因此通常不仅要计算单词对(二元组),还要计算三元组(三元组)以及四个和五个的序列等等。这些统称为 N 元语法。

如:在疫情期间6 个 n 元词经常出现在有关 2019 年冠状病毒病 (COVID-19) 的出版物标题中

随着序列长度的增加,可能性的数量呈指数级增加。因此所有的 n-gram 都不能在语言建模中存储和使用。但随着序列长度的增加,您在文本正文中找到序列的次数也会减少,因此如果您将计数阈值保持在统计上显着的出现次数以上,则可以构建它。一旦有了 N 元语法的集合,预测下一个单词的简单方法就是找到当前文本的最长匹配序列,并使用下一个单词的分布来预测概率。这或多或少是最长时间以来语言建模的最先进水平。

Google Translate曾经其工作原理的核心就是将一种语言中的 n-gram 与另一种语言中的 n-gram 进行匹配,而没有太多考虑用于语法规则或其他任何内容。

五、将概念表示为大向量

N-gram 模型的最大缺点是它没有关于单词含义的信息。

将单词表示为大向量是统计 NLP 早期最大的进步之一。在向量出现之前,人们认为找出同义词和相关词的方法是将词放在大Tree(本体)中,然后找出它们彼此的接近程度。事实上,有很多语言学家的工作就是将单词放入本体中。这些单词树的问题在于你强制采用了某种任意的结构。

想象另一种组织单词的方式,给你一个非常大的白板,每个单词代表一个固定大小的圆,其中心位于这个 2D 平面上的特定点。并且白板上的单词排列方式使得彼此相关的单词彼此靠近,而不太相关的单词则相距较远。你可能会发现以这种方式组织单词几乎是不可能的,因为如果这些圆圈挤在一起,每个圆圈只能有少量(准确地说是六个)近邻,但一个单词可以有许多不同的邻居,这些邻居都略有不同意义中。

如果我们不是在 2D 平面,而是在 3D 中,并且单词由球体表示。这为您提供了更多空间将相关概念打包在一起。事实上,这随着维数的增加而呈指数增长。因此,当达到 256 个或更多维度时,这将成为表示单词背后的概念的绝佳方式,从而使相关概念靠得很近,不相关概念靠得很远。这意味着每个单词都可以用几百个实数来表示,这些实数代表其球体中心的坐标。这些数字向量通常称为词嵌入。

假设您将自己限制在英语中最常见的一万个单词,并且在以下分析中忽略其他所有单词。另外,想象一下有人提出了一千个主题。每个单词都按照从零到一的等级评分,无论它是否属于该主题。例如,“芒果”可能属于强度为1.0的主题“水果”,但属于强度为0.5的“黄色物体”主题和强度为0.0的“抽象概念”主题。这样,每个单词就可以用一个由千个数字组成的向量来表示。现在,如果我们想看看两个单词是否相关,我们需要做的就是看看这些向量相距多远。当然,如果选题不好,这个方案的效果就会很差。所以你所要做的就是提出一千个主题,可以很好地捕捉所有一万个单词的本质,然后得出 1,000 x 10,000 = 1000 万个权重。这种工作一直是手工完成的。这需要付出很大的努力,但结果通常很平庸。

六、潜在语义分析(LSA)

以算法方式解决这个问题的第一个成功尝试之一是1988 年发布的潜在语义分析的想法Latent Semantic Analysis。如果你将文档中单词的向量相加,根据代表文档的向量,如果你猜测文档中的单词分布,你可能无法得到确切的单词分布,但只要我们做好选择主题和关联的工作,你可能会得到接近的结果。单词到主题。

对于给定的文档,我们可以测量原始单词分布和主题向量重建的单词分布之间的差异。我们将这种差异称为重建误差。现在,如果我们有大量文档,我们可以将所有文档的错误相加。本文的关键直觉是,选择主题及其与单词的联系的问题可以被视为试图减少总误差的数学优化问题。

如果将从单词到主题以及从主题到单词的函数限制为线性,则找到单词的最佳主题和最佳向量以使误差最小化的过程与另一个称为主成分分析。

这种方式计算的向量对于查找单词之间的概念重叠非常有用,对于网络搜索等事情也非常有用。以这种方式计算向量的一个缺点是它忽略了连贯的概念,而是将语言简化为任意数学优化。有时您可以看到向量中数字背后隐藏的含义,有时则看不到。这是我们的第一个线索,即高级语言数学模型将越来越难以解释。

七、单词向量表示的意义

词嵌入从一开始就是衡量两个词含义相似性的强大工具。随着计算这些嵌入的技术不断改进,事实证明您可以以令人惊讶的方式对单词的含义进行算术运算。例如,如果您采用国王的嵌入,减去男人的嵌入,然后添加女人的嵌入,您会得到非常接近女王的嵌入。这意味着你可以用数学方法操纵概念。这是一个大问题。到目前为止,解决这个问题的唯一方法是通过规则和逻辑应用。

通过这些嵌入,您可以将概念从一种语言映射并翻译为另一种语言、生成摘要以及混合单词的含义以获得另一个单词。例如,捷豹+动物将代表与捷豹+汽车不同的概念。或者你可以问什么词代表悲伤+孤独。在实践中,这使模型能够建议电子邮件是重要的还是垃圾邮件,对在线评论进行情感分析,最重要的是运行语义搜索。

八、超越线性函数

为了数学和计算的方便,上面的 LSA 方法人为地将从单词到主题的函数限制为线性。唯一的问题是,如果我们放宽这些限制,是否可以找到更好的嵌入函数,以便我们可以为上面列出的各种应用发现更好的概念表示。

多层神经网络一直是一类非常有前途的函数,用于表示任意复杂的函数,但它们非常难以训练,并且在很大程度上已经失宠。然而,一些研究小组坚信它的力量,并在数十年里不断尝试不同的技术来让它们做有用的事情。经过多次不同的迭代,Geoff HintonGeoff Hinton的团队和 Yeshua BengioYeshua Bengio的团队成功证明了神经网络可以很好地学习单词和概念的表示作为嵌入。

在Yann LeCun卷积神经网络(CNN)方面的工作一样,这项工作被认为对于当前形式的神经网络作为机器学习中最强大的工具的复兴至关重要。

九、AlexNet 和 GPU

2012 年是被称为神经网络复兴的关键的一年。大多数专家将其归功于AlexNet使用 GPU 训练大型 CNN 来执行计算机视觉任务,其输出比该领域的任何其他产品都要好得多。

LeNet 和 AlexNet 卷积层、池化层和密集层的比较:

此时,研究人员的一大认识是,为神经网络提供的数据和计算越多,结果就越好。大多数其他机器学习方法并非如此。大多数其他方法在一段时间后就饱和了,但神经网络仍在继续发展。从这种方法中受益最多的两个领域是计算机视觉和自然语言处理。从那时起,创新变得非常迅速,并且从未停止过。

十、为单词添加上下文

尝试将单词映射到嵌入的一个问题是确定上下文。单词的含义可能因使用方式的不同而有很大不同。

从 2013 年到 2018 年,一系列研究论文通过考虑上下文中的其他单词并使用不同的模型架构来提高嵌入的质量。这一时期最有影响力的论文是 Word2Vec Word2Vec(2013)Glove Glove(2014) 和  Elmo Elmo(2018),它们尝试了不同的技术来捕获单词在上下文中的含义。这些结果背后的技术完全值得研究,同时理解上下文本身的想法对于理解 ChatGPT 非常重要。

十一、机器翻译

将文本从一种语言翻译成另一种语言的问题是应用各种神经网络进步的重要方式。这里的关键思想是计算句子嵌入,将完整的句子映射到向量并捕获单词中的所有含义。然后可以将该向量传递到另一个网络并翻译成不同语言的文本。例如有一个编码器网络,它接受句子并将其编码为嵌入,并且有一个解码器网络可以对其进行解码。现在,这个组合网络可以根据我们拥有人工生成翻译的任何语言对的所有可用训练数据进行训练。

与经典技术相比,即使是使用神经网络的早期尝试也看起来很有希望,但它也为随后的许多创新提供了基础。

十二、总结

通过以上我们了解到将单词或句子嵌入高维空间对于许多 NLP 任务是如何有用的。我们还看到,在单词或句子出现的上下文中解释它们非常重要,也具有挑战性。

PS:以上似乎在设法完全避免谈论各种方式及其背后的数学原理。但如果你能想起高代中在一个线性空间V,定义一个二元实函数α,β;满足对称性、数乘性、加法性和正则性,则说明这是一个欧式空间,是否记起n趋向无穷大的希尔伯特空间。甚至回忆第一次看泛函分析时候自己的样子。还有所谓的矩阵在最初时候是对应的齐次线性方程组,及方程组的初等变换等价于矩阵的初等变化,还有向量在不同坐标系下做的变换。科技发展离不开这些基本理论。也许捷径不过是前人搭的一座桥。我们能行走,却很少停下思考。

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值