侧边栏壁纸
博主头像
Goldyard博主等级

努力成为深度学习专家中...

  • 累计撰写 5 篇文章
  • 累计创建 2 个标签
  • 累计收到 0 条评论
标签搜索

目 录CONTENT

文章目录

当代自然语言处理原理探究

Goldyard
2023-02-05 / 0 评论 / 0 点赞 / 302 阅读 / 3,196 字

随着技术的发展, 基于深度学习及Transformer架构的自然语言处理原理已经越来越变得科幻以及难以理解。 这里开一个专题专门尝试讨论当代自然语言处理方法背后的原理。 也就是尽可能基于形象的方式来回答为什么这样做可以产生这样的效果(当然还要包括一点点怎么做)的问题。

为什么深度学习NLP会有效

自从2017年发表Transformer以来, NLP领域的下游任务完成性能越来越好, 很多领域都大幅度接近甚至超越人类一般水平。 取得了长足的进步。 那么在这些进步背后的实现原理就没有那么符合直观的“因果关系”, 那么为什么这样的”数学手段“(算法背后本质是数学变换), 能够产生出“智能”呢? 及时能够完全理解这些数学方法, 仍然不代表能够理解为什么这样的方法能够实现当前表现出来的效果。

为什么当前的这些基于Transformer和BERT架构的模型能够学会如何“理解”文字以及如何“执行基于文字的任务”, 并且还有接近甚至超越人类的表现? 是怎么做到的呢?

在这里, 我尽我有限的认识, 尝试着正面回答这个问题:

首先是数据集本身的内在规律, 作为人, 基于人脑先天的能力和结构, 我们很容易接受语言进而是文字这种知识, 基于我们的学习方式, 我们能够充分的直观的理解我们所使用的语言和文字。 而我们意识不到的是, 在这些以文字为载体的“内容”当中, 同样储存了我们对于这个世界理解的概念和关系之间的统计学规律, 而这种规律(我们假设是符合正态分布规律)是我们人脑无法直接感知也难以发觉的隐藏在文字背后的一些“规律”。

目前这些规律, 也叫做“特征”, 可以被某些特定算法, 使用特定的方式来“学习”到, 并且“提取“出来, ”存储“在某种计算机可读的结构中, 也就是我们通常叫做”模型“的东西。 这里面最重要的一个关系是, 如何从”文字“的无结构描述中, 识别出结构性的”统计学规律“出来, 并且基于我们文字的规模, 这种识别必须是规模化的提取才有实际意义。 这才是当前NLP算法的两个主要挑战,一个是如何提升提取特征能力, 一个是如何提高规模并行度, 能够在有限的时间和资源范围内尽可能提取出更多特征, 并且存储在我们叫做”参数“的超大规模张量结构当中。

而这种提取的方式叫做”学习“, 让机器学会”学习“的规则叫做”算法“, 而我们当下主要工作在”算法设计“和”学习之行“当中, 但是作为人是很难直接参与到”机器学习“的计算过程当中的, 也难以真正直接感受到机器所学习到的”规律“, 这些规律我们目前被认为通过一些方式储存在”模型参数”当中, 并且可以通过模型的“泛化推理”来实现“人工智能”的行为表达。

然而, 这里第一个问题就出现了。 基于我们并不能真正理解和直接参与特征规律的提取, 以及特征规律提取的充分性存疑(目前NLP深度学习的参数规模已经去到千亿级别, 还有上升趋势), 所以我们首先很难对自己提取的特征进行充分的评价。 如同一个嗷嗷待哺的婴儿到小学到初中, 语言能力是在不断完善提升到, 目前NLP算法当中的学习能力和提取出来的知识也是在不断提升的, 但是这个过程往往容易引入系统性的偏差和误差(数据集内在的一致性容易导致系统性误差的积累)。

另一个主要的问题是, 我们目前找到的有限的方法里面, 最新的提取方法有着更好的规模能力, 综合表现出了超越以往的性能, 但是绝对意义上来讲, Transformer的特征提取能力相对于“人”来说, 究竟去到怎样的程度了? 是否已经能够充分的提取出文字背后隐藏的规律呢? 这里面有没有一个可以作为对照的合适“参照物”存在呢? 我们改如何看待自己目前阶段模型算法的特征提取能力呢? 这个问题背后隐藏的另一个隐藏观点是, 隐藏在文字背后的“知识总量”是有一个固定上限的, 而随着人类语言的不断发展, 相同的文字的内涵本身也在不断扩展, 这也就意味着, 文字背后的“知识上限”可能是一个动态变化的过程, 未必存在一个“绝对上限”, 而是“持续演进”的过程。

暂时放下前面的两个问题, 目前的阶段性结论是, 我们已经可以提取一些特征了, 并且可以从文字内容当中提取“相当”(千亿参数级)规模的隐藏规律知识形成模型, 并且可以通过妥善使用这些模型来实现“人工的语言智能能力”, 来实现“类人行为处理能力”, 这也是当下深度学习积极发展的动力来源。 包括语言识别、语音识别、翻译、 图像识别、 图像实体识别、 自动控制等等领域的实际应用, 也证明了这种提取出来的隐性知识的存在价值。

这种价值, 也证明了我们日常行为背后的“相似性”, 基于这种相似性, 模型的推理才具有泛化可能性。 那么, 我们通过“学习”和“模仿”来实现“规律的提取”和“智能行为的实现”, 进而产生出超越“硬逻辑编码”能力极限的“软性类人类智能”能力。 我们究竟从“文字”和“预训练任务”当中学到了什么?

机器究竟「学习」到了什么

一般来说, 我们从技术角度, 会认为机器学习到了“知识”, 而这些“模糊的知识”储存在“参数”结构当中, 形成未来推理的基础权重结构。

从人的视角来看, “知识”是一个非常模糊的概念, 那么我们“学习”到的到底是什么呢?

从最早的word2vec开始, 我们就能够发现, 在那个年代的算法中, 机器学到的是特定“关键词”在我们的语言体系当中的上下文相关性。 也就是通过计算来自海量语料背后的某个“关键词”与上下文其他词的相关性, 形成一种“高维向量空间”来统一化人类文字背后的各个“关键词”, 在这样的一种强制结构化词关系的操作下, 可以识别出男性——国王 和 女性 —— 女王 之间的相似相关关系。

然而这种“简单”的关系体征提取会在实践中遭遇一个问题, 就是人类文字的”多义词“问题, 比如China可以是中国, 也可以理解为瓷器。 在不同场景同一个字/词会表现出不同的本质意义, 同一个空间向量无法很好的跨越这种关系形成知识。

另一个问题就是计算量和规模的问题了。 全量计算的计算量大到设备难以负担。 每个实验都需要相当规模的算力才能看到结果, 而结果未必就是我们所期望的表达。

新的特征提取机制

截止2017年开始, 随着Transformer模型的发表, NLP领域的科学家们找到了能够回答上面两个问题的方法。

首先, 通过一种”注意力“机制, 可以对计算量进行”有损压缩“, 通过关注于更具价值的相关性而忽略低价值相关性, 可以减少上下文相关性的计算量, 进而提升规模化处理能力, 并且在规模化之后, 显著的提升了”特征提取“的能力(并非在单位信息中提高,而是规模化后整体表达表现能力提升)。 另一个问题, 通过机制的”多头处理“(multipal head)机制来得到实现, 简单理解就是, 把每个单词向量都拆分为三种不同的意义, (也就是假定每个词都是多义词, 并且强制假定每个多义词有三个不同的意义存在)。

通过这样的两种”前提假设“, 实现了效率的提升和结构的优化。 也就是实现了”规模化独特特征提取“能力。

如何提取 —— 预训练任务

对比于过去的手动标注训练数据的监督学习, 目前的大规模、超大规模数据集训练过程大多来自于所谓的半监督学习, 所以需要有一种更”聪明“的方式实现”人类智能“的规模化输入。

当下的做法就是”设计不同的预训练任务“, 通过预训练任务把隐藏在文字背后的知识规律学习出来。 这也就是从BERT开始的主要工作。

填空和句子上下文相关性, 就是在词和句(甚至是段)层次上相关性知识提取的主要思路, 而这些层面的充分学习和训练, 也会得到存储了这些知识的模型。 也就是这些预训练模型先天上就知道词和句子上下文之间的统计学概率关系, 同时, 这些模型也知道当前句子和另一个句子之间是否衔接之间的统计学概率关系, 这就是BERT模型背后的另一层设计。

之后的finetune, 决定了我们希望模型如何使用这些被提取出来的知识, 并用于特定的下游任务。 这些下游任务才是我们最终需要实现的人工智能功能价值。

NLP任务执行

在完成了预训练和finetune之后, 我们就可以将生成的模型用于实际的生产过程当中。 究竟模型是如何变成最终的任务执行的呢? 答案就是“模型推理”机制。 通过输入不同于训练数据集的输入信息, 模型同样可以产生出一组“输出”, 这个“输出”在经过翻译处理后(解码、采样等), 最终变成我们可以阅读的“文字预测”。 而这个文字预测的任务价值, 就是我们对机器学习的价值实现。

0

评论区