0% found this document useful (0 votes)
372 views10 pages

Sentence Bert介绍

Sentence-BERT 是一种基于 BERT 的深度学习模型,专注于生成句子嵌入以计算句子间的语义相似度。其通过自注意力机制和多层堆叠的网络结构,将输入文本转化为上下文相关的数值向量,适用于多种自然语言处理任务。Transformer 的设计使其在处理长序列时效率更高,并能捕捉远距离的上下文关系。

Uploaded by

duanrt127
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
372 views10 pages

Sentence Bert介绍

Sentence-BERT 是一种基于 BERT 的深度学习模型,专注于生成句子嵌入以计算句子间的语义相似度。其通过自注意力机制和多层堆叠的网络结构,将输入文本转化为上下文相关的数值向量,适用于多种自然语言处理任务。Transformer 的设计使其在处理长序列时效率更高,并能捕捉远距离的上下文关系。

Uploaded by

duanrt127
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Sentence-BERT 是一种专为句子级别的文本表示和相似度计算设计的深度学习模型,基于 BERT(Bidirectional Encoder

Representations from Transformers)进行改造,使其更适合于生成句向量(sentence embeddings)。

核心思想

1. 从词到句的转变:
o 原始的 BERT 模型主要针对单词或单句对任务(如问答、分类),生成的输出是针对每个单词的向量表示。
o SBERT 针对整个句子的表征进行优化,生成固定大小的向量以表示句子的整体语义。
2. 语义嵌入(Semantic Embeddings):
o SBERT 生成句子嵌入(sentence embeddings),这些向量可以用于测量句子之间的语义相似度。

向量化过程

1. 输入处理:
o 输入句子首先被分割为单词或子词,利用分词器(Tokenizer)将文本转化为索引(IDs)。
o 生成的索引输入到 SBERT 模型中,作为其输入层。
2. 模型架构:
o Transformer 架构:SBERT 使用 BERT 或其变体作为底层模型,基于多头自注意力机制(Multi-head
Attention)捕捉句子中词与词之间的上下文关系。
o Pooling 层:与原始 BERT 不同,SBERT 在输出层添加了一个 pooling 操作(平均池化或最大池化)来将
所有词的向量合成为一个固定大小的句子向量。
3. 训练目标:
o SBERT 在预训练的 BERT 模型基础上,加入了针对句对任务(Sentence Pair Tasks)的额外训练,例如:
 自然语言推理(Natural Language Inference, NLI):判断句子对之间的关系(蕴涵、矛盾、
中立)。
 语义文本相似性(Semantic Textual Similarity, STS):预测两个句子的相似度分数。
4. 生成句向量:
o 经过 Transformer 编码后,输出的所有单词向量经过池化处理得到句向量。此向量是固定维度的,常用于后续计算。
5. 相似度计算:
o 句向量之间的语义相似度通过 余弦相似度 来衡量:

优化与优势

1. 训练优化:
o SBERT 通过引入三元组损失(Triplet Loss)或余弦相似度损失(Cosine Similarity Loss),使其适合
生成高质量句向量。
2. 效率提升:
o 原始 BERT 在语义相似度任务中需要比较每个句子对,而 SBERT 可以直接计算句向量,再比较余弦相似度,大幅
减少计算量。
3. 广泛应用:
o 文本分类:将句向量输入分类模型。
o 信息检索:通过向量检索找到最相似的句子。
o 语义匹配:如问答匹配、机器翻译评估等。
文本预处理的介绍

文本预处理是将非结构化文本转化为结构化数据的关键步骤,常用于文本分析、自然语言处理和机器学习。以下是文本预处理的常见步骤和目的:

1. 文本清理

 删除 HTML 标签:去除网页数据中的格式化标签。
 小写化:统一文本格式,减少冗余。
 去除停用词:例如“the”、“is”等无语义贡献的高频词。
 去除标点符号:仅保留对分析有用的内容。
 去除数字:根据任务需要删除无意义的数值。
 去除多余空格:保持格式整洁。

2. 分词

 将文本分割为基本单元,如单词或短语。
 英文使用空格分割,中文则需要工具(如结巴分词)。

3. 词形还原与词干提取

 词形还原:通过词性上下文返回单词的标准形式(例如,“running”→“run”)。

4. 文本向量化

 将文本转化为数值形式以便分析。
 方法包括词袋模型(BoW)、TF-IDF、词向量(如 Word2Vec、GloVe、Sentence-BERT)。

Sentence-BERT 与相似度原理

Sentence-BERT 的特点:

 Sentence-BERT(SBERT)是一种基于 Transformer 架构的句向量模型。


 专为计算句子或短文本之间的相似性而设计。
 提供固定维度的高效嵌入,用于表示语义信息。

工作原理:

1. 文本嵌入:输入句子,模型通过多层 Transformer 生成固定大小的向量。


2. 余弦相似度计算:通过余弦相似度衡量向量之间的语义距离:

Transformer 是一种用于处理序列数据的深度学习模型架构,最初设计用于自然语言处理任务,比如机器翻译和文本生成。以下是一个通俗易
懂的解释:

1. 序列数据的挑战

传统方法(比如 RNN 和 LSTM)处理序列数据时会一个词一个词地按顺序读取。这种方法的问题是:

 记忆力有限:只记得最近的信息,难以捕捉到序列中远距离的关系。
 计算效率低:逐词处理的方式很慢,尤其是序列很长的时候。

Transformer 的设计改变了这一切。

2. Transformer 的核心思想

Transformer 通过 “注意力机制(Attention)” 解决了以上问题:

 不按顺序处理:它可以一次性“看”整个序列,而不是一个接一个地处理。
 关注重点:模型会计算每个词和序列中其他所有词的关系(相关性),并“关注”那些重要的词。比如,当读句子“猫喜欢吃鱼”时,模型
会知道“喜欢”主要和“猫”“鱼”相关,而忽略其他次要信息。

3. Transformer 的关键部件

 自注意力机制(Self-Attention):
o 每个词会和句子中的其他词“交流”,计算它们之间的关系。
o 这就像一个团队开会,每个人都倾听所有其他人的意见,然后决定自己的重点。
 多头注意力(Multi-Head Attention):
o 模型会从不同的角度去分析每个词和其他词的关系,类似于一个团队里不同成员有不同的专长。
 前馈网络(Feed-Forward Network):
o 在捕捉到关系后,再通过传统的神经网络进一步提取特征。
 位置编码(Positional Encoding):
o 由于不按顺序处理,模型需要知道每个词的位置,位置编码就像给每个词打上的序号。
4. Transformer 的优点

 速度快:并行处理整个序列,训练速度远快于传统模型。
 效果好:能够捕捉到远距离的关系,适合长文本任务。
 灵活性强:不仅可以用于文本处理,还能应用于语音识别、图像生成等任务。

5. 生活中的类比

Transformer 的工作方式就像一个团队解决问题:

 每个成员(词)同时听取所有其他人的意见(注意力机制)。
 听完后,每个人根据重要性决定要关注谁(自注意力机制)。
 然后再基于这些信息,提出自己的最终观点(前馈网络)。
 不管是谁,团队的整体效率都很高,因为所有人可以同时思考(并行处理)。

Transformer 是深度学习领域的一项突破性技术,驱动了许多现代应用,比如 ChatGPT、机器翻译、语音助手等。它的关键在于让模型


学会聪明地“关注重点”,而不是一味按顺序处理。

“深度”学习模型相比传统机器学习就是参数多(从几百万个起 上不封顶)所以学习能力强 3. transformer 相比


传统的深度学习模型多了一个叫“多头 自注意力”的东西(多头 表明会有很多组注意力模型不是就一个 自 表示注
意力也是通过模型自动学习的不是人为干预)可以帮你跟踪你在输出的时候每一步应该更关注输入的哪个部分 举
个简单例子 transformer 最经典的应用机器翻译 他输出每一个翻译结果的词的时候这个注意力机制会帮他聚焦到
原文更相关的词上 整个理解的逻辑就是 1-2-3

Transformer 向量化文本的过程可以分为以下几个主要阶段,核心是通过 自注意力机制(Self-Attention) 和多层堆叠的网络结构,


将输入文本编码成表示语义的数值向量。这些数值向量可以用于各种自然语言处理(NLP)任务。

1. 输入预处理

1. 分词:
o 输入的句子被分解为单词或子词单元(subword tokens)。
o 例如:"I love NLP" → [I, love, NL, ##P]
2. 特殊标记:
o 添加特殊的 [CLS] 标记(表示句子的整体信息)和 [SEP] 标记(用于分隔句子)。
o 示例:[CLS] I love NLP [SEP]
3. 嵌入(Embedding):
o 每个 token 转换为一个固定大小的向量,称为 嵌入向量(embedding)。
o 嵌入包括以下三部分:
 词嵌入(Word Embedding):每个 token 映射到一个词向量。
 位置嵌入(Position Embedding):为每个 token 添加其在句子中的位置信息。
 分段嵌入(Segment Embedding):区分不同句子或段落的标识信息。

2. 自注意力机制(Self-Attention)

Transformer 的核心是自注意力机制,它通过动态计算输入的所有 token 间的相关性来捕获上下文信息。

1. 生成 Query, Key, Value 向量:


o 每个输入 token 的嵌入通过线性变换生成三个向量:Query (Q)、Key (K) 和 Value (V)。
o 这些向量的维度相同,通常是固定大小,例如 64 或 128。

2. 计算注意力分数:
o 对于每个 token 的 Query,计算它与所有其他 token 的 Key 的点积,得到注意力分数(相似度)。
o
o

o 得到的概率表示当前 token 对其他 token 的关注程度。

3. 加权求和:
o 使用注意力分数对每个 token 的 Value 进行加权求和,得到每个 token 的上下文表示。

3. 多头注意力(Multi-Head Attention)

 自注意力机制被扩展为多头注意力,通过多个独立的 Q-K-V 计算路径捕获更多的语义信息。


 每个头捕捉不同的语义模式,最终将所有头的结果拼接并线性变换。
4. 前馈神经网络(Feed-Forward Network, FFN)

 自注意力机制的输出通过一个两层的前馈神经网络:
1. 第一层线性变换 + 激活函数(ReLU 或 GELU)。
2. 第二层线性变换,将输出维度映射回原始维度。

5. 层归一化和残差连接

 残差连接(Residual Connection):
o 将输入直接加到输出,缓解深度模型的梯度消失问题。
 层归一化(Layer Normalization):
o 对每一层的输出进行归一化,稳定训练过程。

6. 堆叠多层 Transformer 编码器(Encoder Layers)

 Transformer 的编码器由多层自注意力和前馈网络堆叠而成。
 每一层都会捕获更高层次、更深层的上下文关系。

7. 输出向量

 最终的输出是每个 token 的上下文表示向量。


o 例如,句子 "I love NLP" 可能被编码为 3 个向量:

o 每个向量维度通常为 768(BERT 基础版)或更高。


 句子级别表示:
o 使用 [CLS] 向量作为整个句子的语义表示,或对所有 token 向量取平均值。

8. Transformer 如何实现向量化

Transformer 实现向量化的关键在于:

1. 捕捉全局上下文关系:
o 自注意力机制让每个 token 能动态关注整个句子的其他 token。
2. 语义表示学习:
o 每一层都会提取更抽象、更高层的语义信息。
3. 输出固定大小向量:
o 对于句子,生成固定大小的句子向量(如 768 维),捕捉整个句子的核心语义。

总结

Transformer 通过自注意力机制和多层网络结构,将输入的文本转化为上下文相关的数值向量。这些向量不仅包含单词的语义信息,还结合了
句子的全局上下文关系。这样的表示形式非常适合 NLP 任务,如分类、相似度计算、机器翻译等。

在 Transformer 中,Query (Q)、Key (K) 和 Value (V) 是自注意力机制(Self-Attention)的核心概念,用于计算输


入序列中各个 token 之间的相关性,并生成上下文相关的表示。

1. Query (Q)、Key (K)、Value (V) 的含义

这三个向量是从每个输入 token 的嵌入(embedding)中线性变换得到的,用于不同目的:

 Query (Q):
表示“查询”的向量,用来查找和它相关的其他 token。它可以看作是当前 token 的一个问题:“我需要关注哪些 token,和它们
的相关性有多大?”
 Key (K):
表示“键”的向量,用来匹配其他 token 的 Query。可以看作是每个 token 提供的答案:“这是我的内容,请看看是否对你有帮
助。”
 Value (V):
表示“值”的向量,存储与 token 相关的实际信息。在确定了 Query 和 Key 的相关性后,根据这个相关性对 Value 进行加
权求和,生成最终的上下文表示。

2. 生成 Query、Key、Value

每个 token 的嵌入向量通过 3 个独立的线性变换矩阵生成对应的 Q、K、V 向量:

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \quad K = XW_K, \quad V = XW_VQ=XWQ


,K=XWK,V=XWV

 XXX:输入的嵌入矩阵(一个句子或序列的所有 token 的嵌入)。


 WQW_QWQ、WKW_KWK、WVW_VWV:学习的权重矩阵,分别用于生成 Query、Key 和 Value。

这些向量的维度通常会被设置为一个固定的值(例如 64 或 128),而输入嵌入的维度可以是 768(如 BERT 模型)。

3. Query、Key、Value 的作用

计算相关性(Attention Scores)

 Query 和 Key 的点积衡量了 Query 与 Key 的相似度,即相关性分数: Score(Q,K)=Q⋅KT\text{Score}


(Q, K) = Q \cdot K^TScore(Q,K)=Q⋅KT
o 大点积值表示 Query 和 Key 高度相关。
o 分数会通过 Softmax 归一化为概率分布。

加权 Value

 根据注意力分数对所有的 Value 加权求和,生成当前 token 的上下文表示:


Attention(Q,K,V)=Softmax(Q⋅KTdk)⋅V\text{Attention}(Q, K, V) = \text{Softmax}\left(\
frac{Q \cdot K^T}{\sqrt{d_k}}\right) \cdot VAttention(Q,K,V)=Softmax(dkQ⋅KT)⋅V
o dk\sqrt{d_k}dk:缩放因子,避免分数过大导致梯度消失。
o 加权后的 Value 是融合了上下文的表示。

4. 直观理解

假设你在阅读一段文本,并试图理解一个单词时:

 Query (Q) 是你当前对单词语义的需求,例如“这个词和哪些词有关?”


 Key (K) 是每个单词的标识,用来判断它能否回答你的需求。
 Value (V) 是每个单词实际携带的语义信息。

例如:

 句子:The cat sat on the mat.


 当前处理的 Query (Q) 是 cat。
 通过和其他单词的 Key (K) 比较,可能会发现 sat 和 mat 与 cat 高度相关。
 使用注意力分数对 Value (V) 加权求和,生成上下文表示,这样 cat 的最终向量就结合了 sat 和 mat 的语义信息。

5. 总结

 Query (Q) 是提问,“我需要关注谁?”


 Key (K) 是标识,“我能回答哪些问题?”
 Value (V) 是内容,“这是我携带的信息。”
 自注意力机制通过计算 Query 和 Key 的相关性分数(注意力分数),对 Value 进行加权求和,生成每个 token 的上下文表
示。

You might also like