返回顶部

大模型开发基础:OpenAI Embedding

通用人工智能的前夜

波普尔的三个世界

 图灵测试(Turing Test)

 无法定义智慧,辨别机器具备什么能力,来判断是否具备智慧。

 人类的客观知识世界

 计算机如何表示客观知识的世界?

 

 西文表示

 ASCII (American Standard Code for Information Interchange, 美国信息交换标准代码)是IEEE (美国电气和电子工程师协会)里程碑之一。 1963年发布第一版,最后一次更新在1986年。 • ASCII是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言, 并等同于国际标准ISO/IEC 646。

 中文表示

 表示学习与嵌入

表示学习(Representation Learning)和嵌入(Embedding)是密切相关的概念,它们可以被视为在不同领域 中对同一概念的不同命名或描述。

  • 表示学习:通过学习算法自动地从原始数据中学习到一种表示形式或特征表示,该表示形式能够更好地表 达数据的重要特征和结构。表示学习的目标是将输入数据转换为具有良好表示能力的特征空间,使得在该空 间中的数据具有更好的可分性、可解释性或推理能力。 (比如让某个人学习一个知识,他学会了,这个知识回事一种表示或特征,是一个高维的概念
  • 嵌入:表示学习的一种形式,通常用于将高维数据映射到低维空间中的表示形式。嵌入可以是词嵌入、图像 嵌入、图嵌入等。例如,在自然语言处理中,词嵌入将词语映射到低维向量空间,以捕捉词语之间的语义和 句法关系。在图像处理中,图像嵌入将图像映射到低维向量空间,以表示图像的视觉特征。

因此,嵌入可以被视为一种表示学习的特定形式,旨在将高维数据转换为低维向量表示。表示学习可以涉及更 广泛的概念和方法,包括嵌入在内,以实现对数据的更好理解和表达。

 表示学习怎么学?

 表示学习(Representation Learning)是指通过学习算法自动地从原始数据中学习到一种表示形式或特征表 示,该表示形式能够更好地表达数据的重要特征和结构。表示学习的目标是将输入数据转换为具有良好表示能 力的特征空间,使得在该空间中的数据具有更好的可分性、可解释性或推理能力.

  • • 可分性:表示学习的目标之一是将输入数据转换为具有更好可分性的特征空间。这意味着在学习到的表示 中,不同类别或不同概念之间的样本应该有明显的边界或区别。例如,在图像分类任务中,表示学习的目 标是使来自不同类别的图像在特征空间中更容易区分。这样的特征表示使得机器学习算法可以更轻松地进行 分类、聚类或其他数据分析任务。

  • • 可解释性:另一个表示学习的目标是生成可解释性的特征表示。这意味着学习到的特征应该具有对应于原始 数据中的可理解概念或语义的含义。例如,在自然语言处理中,词嵌入模型学习到的词向量应该能够捕捉到 词语之间的语义关系,使得相似的词在向量空间中更接近。这样的表示不仅有助于模型的解释性,也可以在 语义分析和文本生成等任务中提供更好的性能。

  • • 推理能力:另一个重要的目标是使得学习到的特征表示在推理任务中更具能力。这意味着在特征空间中,我 们可以执行类似于推理、类比或关联的操作。例如,通过在词嵌入空间中执行向量运算,如 "国王" - "男人" + "女人",我们可以得到与 "皇后" 非常接近的结果。这种推理能力使得我们能够进行关联和类比推理,从而 在自然语言处理、推荐系统和知识图谱等领域中实现更高级的语义推理和理解。

维度太高,怎么知道学会了?

 嵌入(Embedding)的价值

 Image Embedding

t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种统计算法,用于在低维空间(通常是2D或3D,便于可 视化)里展示高维数据的结构。其目标是保持原有高维空间中近邻点的距离关系,使得距离近的点在低维空间中仍然 距离近,而距离远的点在低维空间中仍然距离远。

 Embedding

 聚焦 Word Embedding

Word Embedding 为自然语言处理任务提供了更好的单词表示方法,它的应用主要有:

  • • 语义表示和语义相似度:Word Embedding可以捕捉到单词之间的语义关系,使得相似含义的单词在向量空间中彼此 靠近。这使得我们可以通过计算向量之间的距离或相似度来度量单词的语义相似度。这对于词义消歧、语义搜索、语 义推理等任务非常有用。

  • • 词语关系和类比推理:Word Embedding可以捕捉到单词之间的关系,如同义词、反义词、上下位关系等。通过在向 量空间中进行向量运算,例如求解向量之间的差异或类比推理,我们可以发现词语之间的有趣关系。例如,对于词语 之间的类比关系"king - man + woman = queen",通过Word Embedding可以得到类似的结果。

  • • 上下文理解:Word Embedding可以帮助理解单词的上下文信息。通过学习单词在其周围上下文中的嵌入表示,我们 可以捕捉到单词的语境信息,从而帮助解决语义歧义、词语消歧和指代消解等问题。

  • • 文本分类和情感分析:Word Embedding可以提供丰富的词语特征表示,从而改善文本分类和情感分析任务的性能。 通过将文本中的词语映射为嵌入向量,并将这些向量作为输入特征,我们可以在分类器或情感分析模型中进行训练和 预测。

  • • 机器翻译和生成模型:Word Embedding对于机器翻译和生成模型也是至关重要的。通过将源语言和目标语言的单词 都映射为嵌入向量,可以提高翻译的准确性和生成模型的质量。嵌入向量可以捕捉到单词之间的语义和句法关系,帮 助模型更好地理解和生成自然语言。

“Embedding这么厉害,还要语言模型干嘛?”

 核心概念 维恩图

 

OpenAI Embeddings 开发入门

 安装依赖包

pip install tiktoken openai pandas matplotlib plotly scikit-learn numpy 

设置环境变量

OPENAI_API_KEY=你的-api-key

openai 官方文档

  • https://platform.openai.com/docs/guides/embeddings/what-are-embeddings

 

亚马逊美食评论数据集(amazon-fine-food-reviews)

1. 生成 Embedding (基于 text-embedding-ada-002 模型)

自测

单项选择题:

    1. “表示学习”主要是指什么?    解释:表示学习的主要目标是找到一种方式来转换原始数据,使得转换后的表示能更好地支持后续的任务。例如,在图像识别任务中,原始像素值可能不是一个好的数据表示,而通过某种方法学习到的特征(例如边缘、颜色、形状等)可能会提供更好的性能
      A. 学习数据的原始表示
      B. 学习数据的有用表示
      C. 学习数据的随机表示
      D. 学习数据的复杂表示

    2. 在 NLP 中,最常用的数据表示方法是什么? 解释:自然语言处理(NLP)中的数据通常是文本。一种有效的处理文本数据的方法是将其转化为数值或者向量形式,这种转化过程就是数据表示。例如,一个最简单的方法是one-hot编码,每个词被编码为一个很长的向量,这个向量的维度是词汇表的大小,向量的所有元素都是0,除了表示该词的索引位置的元素是1
      A. 图像
      B. 视频
      C. 文本
      D. 音频

    3. Word2Vec 是一个什么样的模型?解释:Word2Vec是一种用于学习词向量的模型,它通过训练神经网络模型,将语料库中的每个词映射到一个向量,以便使语义上相似的词在向量空间中靠近
      A. 用于语音识别的模型
      B. 用于图像识别的模型
      C. 用于词表示学习的模型
      D. 用于视频处理的模型

    4. GloVe 模型的主要目标是什么?  解释:GloVe模型的目标是学习词向量,这些向量可以捕捉到词的共现信息,即在给定的文本中,哪些词经常在一起出现。例如,在"GloVe模型"这个短语中,"GloVe"和"模型"就是共现的词
      A. 在给定的文本中找到最频繁出现的词
      B. 在给定的文本中找到最少出现的词
      C. 在给定的文本中找到相关性最强的词
      D. 在给定的文本中找到最不相关的词

    5. 表示学习在自然语言处理中的主要应用是什么? 解释:表示学习的一个重要应用是语义理解。通过学习到的表示,我们可以更好地理解和解析文本数据。例如,通过学习词的向量表示,我们可以量化词的相似性,并使用这种相似性来理解和生成文本
      A. 语音识别
      B. 语义理解
      C. 图像识别
      D. 视频处理

    6. Word2Vec 和 GloVe 有什么共同点?  解释:Word2Vec和GloVe都是用于学习词向量的模型,它们都能将文本转换为实数向量,以便于机器进行处理。这两种模型的目标都是把词语映射到一个多维空间,使得语义上相似的词在这个空间中靠近
      A. 都是图像识别模型
      B. 都是词表示学习模型
      C. 都是语音识别模型
      D. 都是视频处理模型

    7. 在 OpenAI Embeddings 中,一般采用什么方法对词进行表示? 解释:在OpenAI Embeddings中,每个词被表示为一个实数向量。这种表示可以捕获词语的语义,使得语义上相似的词在向量空间中靠近。例如,"猫"和"狗"这两个词,在向量空间中应该比"猫"和"汽车"更靠近
      A. 用一个唯一的 ID 表示
      B. 用一个独热向量表示
      C. 用一个实数向量表示
      D. 用一个复数向量表示

    8. 在词向量中,词的相似度通常用什么衡量? 解释:在词向量中,词的相似度通常通过计算它们向量之间的余弦相似度来衡量。余弦相似度可以捕捉到向量的夹角,如果两个向量的方向相似(即夹角小),那么它们的余弦相似度就会高,表示这两个词在语义上是相似的
      A. 欧氏距离
      B. 余弦相似度
      C. 曼哈顿距离
      D. 切比雪夫距离

    9. 在表示学习中,为什么要用非监督学习?  解释:在监督学习中,我们需要大量的标签数据,这些数据往往难以获得。而在非监督学习中,我们可以利用大量的未标记数据。因此,在表示学习中,非监督学习是一种常见的方法
      A. 因为监督学习太复杂
      B. 因为监督学习无法处理大数据
      C. 因为监督学习需要太多的标签数据
      D. 因为监督学习效果不好

    10. 在表示学习中,主要使用哪种方法来优化词向量?  解释:在表示学习中,我们通常使用随机梯度下降(SGD)方法来优化词向量。SGD是一种迭代方法,每次只用一个(或者一小批)样本来更新参数,这样可以显著降低计算量,加快优化的速度
      A. 用反向传播优化
      B. 用随机梯度下降优化
      C. 用动量法优化
      D. 用牛顿法优化

 输入转换成 openai 的输入向量

from openai.embeddings_utils import get_embedding

# 模型类型
# 建议使用官方推荐的第二代嵌入模型:text-embedding-ada-002
embedding_model = "text-embedding-ada-002"
# text-embedding-ada-002 模型对应的分词器(TOKENIZER)
embedding_encoding = "cl100k_base"
# text-embedding-ada-002 模型支持的输入最大 Token 数是8191,向量维度 1536

get_embedding("词转换成向量", engine=embedding_model)

 

在 OpenAI Embeddings 中,一般采用什么方法对词进行表示? 解释:在OpenAI Embeddings中,每个词被表示为一个实数向量。这种表示可以捕获词语的语义,使得语义上相似的词在向量空间中靠近。例如,"猫"和"狗"这两个词,在向量空间中应该比"猫"和"汽车"更靠近

posted @ 2023-10-05 12:53  Crazymagic  阅读(1539)  评论(0编辑  收藏  举报