【机器学习】词嵌入、Softmax函数以及点积(dot product)如何衡量两个向量之间相似度

引言

词嵌入(Word Embedding)是自然语言处理(NLP)中的一种重要技术,它将词汇映射到高维空间中的向量,这些向量能够捕捉词汇的语义信息。词嵌入的目的是将人类语言表示为机器可以理解的格式,从而使机器学习模型能够处理和理解自然语言

Softmax 函数是机器学习中一个非常常用的函数,特别是在多分类问题中。它将一个实数向量转换成一个概率分布,使得每个元素的值都在 0 和 1 之间,并且所有元素的和为 1。这使得它非常适合用于模型输出层,当需要预测多个类别中的一个时

在机器学习中,点积(dot product)是一种非常有效的衡量两个向量之间相似度的方法。点积也被称为内积(inner product),它是一个简单的数学运算,其结果可以用来评估两个向量的方向关系和相对大小

文章目录

  • 引言
  • 一、词嵌入
    • [1.1 基本概念](#1.1 基本概念)
      • [1.1.1 向量表示](#1.1.1 向量表示)
      • [1.1.2 语义关系](#1.1.2 语义关系)
    • [1.2 训练方法](#1.2 训练方法)
      • [1.2.1 基于统计的方法](#1.2.1 基于统计的方法)
      • [1.2.2 基于预测的方法](#1.2.2 基于预测的方法)
        • [1.2.2.1 Word2Vec](#1.2.2.1 Word2Vec)
        • [1.2.2.1 GloVe](#1.2.2.1 GloVe)
    • [1.3 词嵌入的特性](#1.3 词嵌入的特性)
      • [1.3.1 类比关系](#1.3.1 类比关系)
      • [1.3.2 上下文独立性](#1.3.2 上下文独立性)
    • [1.4 应用](#1.4 应用)
    • [1.5 挑战与改进](#1.5 挑战与改进)
      • [1.5.1 上下文依赖性](#1.5.1 上下文依赖性)
      • [1.5.2 多语言和跨语言嵌入](#1.5.2 多语言和跨语言嵌入)
    • [1.6 结论](#1.6 结论)
  • 二、Softmax函数
    • [2.1 数学定义](#2.1 数学定义)
    • [2.2 概率分布](#2.2 概率分布)
    • [2.3 计算步骤](#2.3 计算步骤)
    • [2.4 几何解释](#2.4 几何解释)
    • [2.5 优点](#2.5 优点)
      • [2.5.1 易于解释](#2.5.1 易于解释)
      • [2.5.2 适用于多分类](#2.5.2 适用于多分类)
    • [2.6 缺点](#2.6 缺点)
      • [2.6.1 梯度消失](#2.6.1 梯度消失)
      • [2.6.2 计算开销](#2.6.2 计算开销)
    • [2.7 损失函数](#2.7 损失函数)
    • [2.8 结论](#2.8 结论)
  • 三、点积
    • [3.1 点积的定义](#3.1 点积的定义)
    • [3.2 点积与相似度](#3.2 点积与相似度)
      • [3.2.1 方向关系](#3.2.1 方向关系)
      • [3.2.2 相对大小](#3.2.2 相对大小)
      • [3.2.3 余弦相似度](#3.2.3 余弦相似度)
    • [3.3 点积与向量长度](#3.3 点积与向量长度)
    • [3.4 应用](#3.4 应用)
      • [3.4.1 文本相似度](#3.4.1 文本相似度)
      • [3.4.2 推荐系统](#3.4.2 推荐系统)
      • [3.4.3 深度学习](#3.4.3 深度学习)
    • [3.4 结论](#3.4 结论)

一、词嵌入

1.1 基本概念

1.1.1 向量表示

词嵌入将词汇表中的每个词映射到一个固定大小的向量(例如,50维、100维或300维)。这些向量通常是通过机器学习算法在大规模文本数据上训练得到的

1.1.2 语义关系

词嵌入能够捕捉词汇之间的语义关系。例如,向量之间的距离或角度可以表示词义之间的相似性或差异性

1.2 训练方法

1.2.1 基于统计的方法

早期的词嵌入技术,如词袋模型(Bag of Words)和TF-IDF,虽然可以捕捉词汇的统计信息,但无法有效表达词汇之间的语义关系

1.2.2 基于预测的方法

现代词嵌入技术,如Word2Vec和GloVe,通过预测上下文中的单词来学习词向量。这些方法可以更有效地捕捉词汇的语义信息

1.2.2.1 Word2Vec
  • CBOW(Continuous Bag of Words):通过一个词的上下文(周围的词)来预测这个词
  • Skip-Gram:通过一个词来预测它的上下文
1.2.2.1 GloVe
  • 结合了基于统计(共现矩阵)和基于预测的方法,通过直接优化词向量与词汇共现概率的加权求和

1.3 词嵌入的特性

1.3.1 类比关系

词嵌入可以捕捉到词汇之间的类比关系。例如,"king - man + woman = queen"

1.3.2 上下文独立性

传统的词嵌入技术生成的词向量是上下文独立的,这意味着一个词无论在什么上下文中都映射到同一个向量

1.4 应用

  • 文本分类
  • 情感分析
  • 机器翻译
  • 信息检索
  • 文本生成

1.5 挑战与改进

1.5.1 上下文依赖性

为了解决一词多义的问题,提出了上下文嵌入(如ELMo和BERT),它们为每个词生成依赖于上下文的向量

1.5.2 多语言和跨语言嵌入

为了处理多语言数据和跨语言任务,研究者开发了多语言嵌入和跨语言嵌入技术

1.6 结论

词嵌入是自然语言处理中的一个关键概念,它通过将词汇映射到向量空间,使机器学习模型能够理解和处理自然语言。随着技术的发展,词嵌入也在不断进化,以更好地捕捉语言的复杂性和多样性

二、Softmax函数

2.1 数学定义

假设我们有一个向量 z z z包含K4个实数值, z = [ z 1 , z 2 , . . . , z K ] z = [z_1, z_2, ..., z_K] z=[z1,z2,...,zK]。Softmax函数 σ ( z ) i \sigma(z)_i σ(z)i的定义为:
σ ( z ) i = e z i ∑ j = 1 K e z j \sigma(z)i = \frac{e^{z_i}}{\sum{j=1}^{K} e^{z_j}} σ(z)i=∑j=1Kezjezi

对于向量 z z z中的每一个元素 z i z_i zi,Softmax函数计算 e z i e^{z_i} ezi ( z i ( z_i (zi的指数),然后除以所有元素指数的和

2.2 概率分布

Softmax函数的输出是一个概率分布,这意味着:

  • 每个输出 σ ( z ) i \sigma(z)_i σ(z)i都在 0 和 1 之间
  • 所有的输出加起来等于 1
    因此,Softmax 函数常用于多分类问题的输出层,因为它能够将神经网络的原始输出转换为概率分布

2.3 计算步骤

以下是计算Softmax函数的步骤:

  1. 对输入向量 z z z中的每个元素计算其指数,得到一个新的向量 e z e^z ez
  2. 计算向量 e z e^z ez的所有元素的和
  3. 将 e z e^z ez中的每个元素除以这个和,得到最终的Softmax输出

2.4 几何解释

在数学上,Softmax可以看作是一种将输入向量"挤压"到单位超球面上的方式,同时保持输入向量的方向不变。指数函数确保了较大的输入值在挤压过程中仍然保持较大的输出值,但通过归一化,所有的输出值都被限制在 0 到 1 之间

2.5 优点

2.5.1 易于解释

输出是概率分布,易于解释模型的预测

2.5.2 适用于多分类

可以直接用于多分类问题,不需要修改损失函数

2.6 缺点

2.6.1 梯度消失

在训练过程中,如果某些类别预测的置信度非常高,Softmax函数的梯度可能会变得非常小,导致模型难以学习

2.6.2 计算开销

计算Softmax需要对所有类别的指数进行求和,这在类别数量非常多时可能会变得计算密集

2.7 损失函数

在多分类问题中,通常使用交叉熵损失(Cross-Entropy Loss)与Softmax函数结合使用。交叉熵损失函数可以衡量预测的概率分布与真实标签的概率分布之间的差异

2.8 结论

Softmax函数是机器学习中处理多分类问题的一个关键工具。通过将神经网络的输出转换为概率分布,它使得模型能够预测多个类别中的一个,并且在训练过程中与交叉熵损失函数结合使用,可以有效地训练分类模型

三、点积

3.1 点积的定义

给定两个向量KaTeX parse error: Can't use function '\)' in math mode at position 35: ...a_2, ..., a_n] \̲)̲ 和 \( \mathbf{b...,它们的点积定义为:
a ⋅ b = a 1 × b 1 + a 2 × b 2 + . . . + a n × b n \mathbf{a} \cdot \mathbf{b} = a_1 \times b_1 + a_2 \times b_2 + ... + a_n \times b_n a⋅b=a1×b1+a2×b2+...+an×bn

3.2 点积与相似度

点积的值可以用来衡量两个向量之间的相似度,以下是如何解释的:

3.2.1 方向关系

如果两个向量的方向相同或非常接近,它们的点积会是一个较大的正数。当两个向量完全相同且方向一致时,点积达到最大值,即 a ⋅ a = ∥ a ∥ 2 \mathbf{a} \cdot \mathbf{a} = \|\mathbf{a}\|^2 a⋅a=∥a∥2

3.2.2 相对大小

点积不仅考虑了方向,还考虑了向量的长度(或幅度)。如果两个向量不仅方向相同,而且长度也相似,它们的点积会更大

3.2.3 余弦相似度

点积可以用来计算两个向量之间的余弦相似度,这是衡量向量方向相似性的一种常用方法。余弦相似度定义为:
cosine similarity = a ⋅ b ∥ a ∥ ∥ b ∥ \text{cosine similarity} = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|} cosine similarity=∥a∥∥b∥a⋅b

其中, ∥ a ∥ \|\mathbf{a}\| ∥a∥和 ∥ b ∥ \|\mathbf{b}\| ∥b∥ 分别是向量 a \mathbf{a} a和 b \mathbf{b} b的欧几里得范数(或长度)。余弦相似度的值范围在 -1 到 1 之间,其中 1 表示向量完全相同,-1 表示向量完全相反,0 表示向量正交(即相互独立)

3.3 点积与向量长度

需要注意的是,点积本身并不考虑向量长度。如果两个向量长度差异很大,即使它们的方向相同,点积的值也可能不会很大。因此,如果要比较长度不同的向量之间的相似度,可能需要先对它们进行归一化,或者使用余弦相似度

3.4 应用

在机器学习中,点积经常用于以下场景:

3.4.1 文本相似度

在文本分析中,可以使用词袋模型或词嵌入来表示文档,然后计算文档之间的点积来评估它们的相似度

3.4.2 推荐系统

在推荐系统中,可以通过用户和物品的向量表示来计算点积,从而找出与用户兴趣最相似的物品

3.4.3 深度学习

在深度学习中,点积是神经网络中的基本操作之一,尤其是在计算注意力权重时

3.4 结论

点积是一个简单而强大的工具,可以用来衡量机器学习中两个向量之间的相似度。通过考虑向量的方向和相对大小,点积为我们提供了一种量化向量之间关系的方法。在实际应用中,点积经常与其他技术结合使用,以更好地捕捉数据的结构和模式

相关推荐
车载诊断技术8 分钟前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
KevinRay_13 分钟前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
跃跃欲试-迪之18 分钟前
animatediff 模型网盘分享
人工智能·stable diffusion
Captain823Jack44 分钟前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
被制作时长两年半的个人练习生44 分钟前
【AscendC】ReduceSum中指定workLocal大小时如何计算
人工智能·算子开发·ascendc
Captain823Jack1 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
Black_mario2 小时前
链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景
网络·人工智能·web3
Aileen_0v02 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
数信云 DCloud2 小时前
实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域
人工智能
itwangyang5202 小时前
AIDD - 从机器学习到深度学习:蛋白质-配体对接评分函数的进展
人工智能·深度学习·机器学习