输入“/”快速插入内容

认识大模型 Embedding 技术加实战

原创:皇子|皇子谈技术 |2024-03-21 19:54
有朋友说想学习大模型应用开发技术,让我谈一谈。
首先大模型应用开发技术不需要我们掌握机器学习和深度学习的算法,但是要有编程思维python 基础,然后跟着下面的步骤走,就能学得明白。
下面正式开始认识大模型 Embedding 的理论知识,加代码实战。看大家反馈,如果觉得难,我有打算接着 《讲清 Transformer 模型架构》,继续往后写 GPT 和 BERT 模型,又或者加入更多的实战,欢迎私信交流。
一、什么是 Embedding
Embedding (嵌入)是一个浮点数的向量(列表)。两个向量之间的距离度量它们的相关性,小的距离表示高相关性,大的距离表示低相关性。
Embedding (嵌入)也是是一种在机器学习和深度学习中广泛应用的技术,特别是自然语言处理(NLP)和其他涉及高维离散数据的领域。它指的是将原本高维且通常是离散的输入数据(如单词、短语、用户 ID、商品 ID 等)映射到一个低维连续向量空间中的过程。这些低维向量称为嵌入(Embedding vectors)。
例如,“国王”和“王后”在嵌入向量的空间里,位置就会挨得很近;而“苹果”这个词,虽然也是个词,但因为它的意思和前两者差别较大,所以它的嵌入向量就会落在离“国王”和“王后”比较远的地方。
Embedding 不仅限于单词,还可以扩展到句子、文档、实体或其他类型的对象。通过训练诸如 Word2Vec、GloVe 或 BERT 等模型,可以从大规模文本数据中学习出这样的嵌入向量。这些嵌入向量可以被看作是输入数据在潜在语义空间中的表示,使得机器学习模型能够更好地理解和处理这些数据,从而改善下游任务(如文本分类、情感分析、问答系统、机器翻译等)的表现。
除了文本数据,嵌入技术也被应用于社交网络分析、推荐系统、图像识别(如位置嵌入)、图神经网络(如节点嵌入)等多种场景中,实现将复杂对象的有效编码和降维表示。
二、Embeddings 分类及对应模型
Embeddings 有许多种类别和变体,每种类型的 Embeddings 都有其特定的设计目标和应用场景,共同点在于它们都致力于将复杂而抽象的对象结构化并压缩到便于计算和比较的数值形式,以下是几种常见的 Embeddings 类型:
词嵌入
Word2Vec: 包括 CBOW (Continuous Bag-of-Words) 和 Skip-Gram 模型,由 Google 提出,用于学习单词之间的语义关系。
GloVe (Global Vectors for Word Representation): 由斯坦福大学开发,旨在结合全局统计信息和局部上下文窗口的优势来生成单词嵌入。
FastText: 由 Facebook AI 团队推出,不仅考虑单个单词,还考虑内部字符 n-gram,对于罕见词汇有更好的表现。
ELMo (Embeddings from Language Models): 利用双向 LSTM 对整个句子进行建模,产生上下文敏感的单词嵌入。
情景化话的词嵌入
BERT (Bidirectional Encoder Representations from Transformers): 由 Google 推出,利用 Transformer 架构的预训练模型,能够根据上下文提供动态的单词嵌入。
GPT (Generative Pre-training Transformer) 及其后续版本 GPT-2/3/4:由 OpenAI 开发,也是基于 Transformer 的自回归模型,同样能产出上下文相关的嵌入。
XLNetRoBERTa 等都是 BERT 之后改进或扩展的预训练模型。
句子和文档嵌入
Doc2Vec: 扩展了 Word2Vec,能够为整个文档生成统一的向量表示。
Average Word Embeddings: 将一段文本中所有单词的嵌入取平均作为整体的文本表示。
Transformers Sentence Embeddings: 如 BERT 的[CLS]标记对应的向量,或者专门针对句子级别的模型如 Sentence-BERT。
实体/概念嵌入
Knowledge Graph Embeddings: 如 TransE、DistMult、ComplEx 等,用于将知识图谱中的实体和关系嵌入到低维向量空间中。