前面介绍了学习 Transformer 需要的预备基础知识,在介绍完基础知识后,又介绍了一些国内外比较优秀的大模型的使用方法,并且重点对 chatGLM 和 LLaMa 这两个模型,使用 Python 进行了编码和体验。
本节开始,将进入与 Transformer 技术有关的拆解和介绍。按照行文思路,仍将从 Transformer 架构提出的背景开始进行拆解。
在对这些背景知识以及传统架构有了基本了解之后,你会对 Transformer 是如何解决传统架构(如 RNN)无法解决的问题有更深刻的理解,也更能体会到 Transformer 架构的优势。
接下来就先看一个自然语言处理中的基础概念:Seq2Seq 任务。
什么是 Seq2Seq任务?
Seq2Seq (Sequence-to-Sequence,序列到序列) 是一种用于处理序列数据的神经网络结构。
那什么是序列数据呢?
序列数据指的是有一定先后关系的数据,比如一段文字或者一段语音,都可以认为是序列数据,处理这种数据的模型就可以认为是 Seq2Seq 模型。
序列任务的应用场景有很多,比如机器翻译就是最典型的场景。
对于机器翻译来说,输入是一种语言,输出是另一种语言,且输入和输出的语言长度不是固定的,而是根据实际翻译效果变化的。
就像上面的例子,输入是 7 个文字,而输出只有 3 个英文单词。
你可能熟悉很多可以处理序列数据的AI模型,典型的有:循环神经网络(Recurrent Neural Network, RNN)或者长短时记忆网络(Long Short-Term Memory,LSTM),这类模型在处理机器翻译等任务时都具有较好的效果。
事实上,很多 AI 任务都可以看作是Seq2Seq任务:与机器人聊天,可以看作是文本生成任务;指导AI进行绘画,可以认为是文本生成图像任务(文本序列到像素特征序列);文本生成视频,可以认为是文本生成图像序列的任务。
除此之外,还存在一些比较特殊的 Seq2Seq 模型。
比如输入是变长的序列,但是输出却只有一个向量,这种模型也可以称之为多对一的序列模型(Many-to-One序列模型),最常见的例子便是情感分析。
情感分析是给定一段评论或者文章片段(文本序列),模型输出一个表示情感的标签(比如这段文字是正面的、负面的还是中性的)。
在这种情况下,整个文本序列是作为输入,但是输出却是单一的情感分类结果。这种模型可以用在判别评论是否为恶意评论等场景。
总之,Seq2Seq 任务,作为一个最基础的与自然语言处理模型有关的概念,需要你了解并掌握。