《一文读懂Transformers库:开启自然语言处理新世界的大门》

《一文读懂Transformers库:开启自然语言处理新世界的大门》



GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.

HF-Mirror

Hello! · Transformers快速入门

pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple

import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
from datasets import load_dataset
dataset = load_dataset("数据集名称")
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
from transformers import Trainer, TrainingArguments

一、引言:探索 NLP 领域的宝藏库

在自然语言处理(Natural Language Processing,NLP)这个充满无限可能与挑战的领域中,Transformers 库宛如一颗璀璨的明星,散发着独特的光芒。它为研究者和开发者们提供了一个强大且便捷的工具集,极大地推动了 NLP 技术的发展与应用。

从早期简单的文本分类任务,到如今复杂的机器翻译、文本生成、问答系统等,NLP 的应用场景不断拓展,对技术的要求也日益提高。而 Transformers 库的出现,如同一场及时雨,满足了人们在这些任务中对高效、准确模型的需求。

以机器翻译为例,在过去,传统的翻译模型往往难以准确捕捉语言之间复杂的语义和语法关系,翻译结果常常差强人意。但自从有了基于 Transformers 库构建的模型,机器翻译的质量得到了显著提升。它们能够更好地理解源语言的含义,并将其准确地转换为目标语言,使得跨国交流变得更加顺畅。

在文本生成领域,Transformers 库同样表现出色。无论是创作新闻报道、撰写故事,还是生成诗歌,基于该库的模型都能生成流畅、富有逻辑的文本。例如,一些智能写作助手利用 Transformers 库,能够根据用户输入的关键词和主题,快速生成高质量的文章大纲甚至完整内容,为创作者们节省了大量的时间和精力。

问答系统也是 NLP 的重要应用之一。Transformers 库使得问答系统能够理解复杂的问题,并从大量的文本中提取准确的答案。如今,智能客服、智能助手等应用广泛采用基于 Transformers 库的问答系统,为用户提供了更加智能、高效的服务。

可以说,Transformers 库已经成为 NLP 领域不可或缺的一部分,它为我们打开了一扇通往自然语言理解与生成的大门,让我们能够更加深入地探索语言的奥秘,实现更多令人惊叹的应用。在接下来的内容中,我们将深入探讨 Transformers 库的方方面面,揭开它神秘的面纱 。

二、Transformers 库初相识

(一)诞生背景与发展历程

在自然语言处理的早期发展阶段,研究人员主要依赖基于规则的系统和传统机器学习方法来处理文本。基于规则的系统需要人工编写大量的语法和语义规则,这是一个极其耗时且费力的过程,并且难以应对语言的多样性和复杂性。而传统机器学习方法,如朴素贝叶斯、支持向量机等,虽然在一定程度上提高了处理效率,但它们对于特征工程的要求较高,泛化能力也相对有限。

随着深度学习的兴起,神经网络开始在 NLP 领域崭露头角。循环神经网络(RNN)及其变体长短时记忆网络(LSTM)和门控循环单元(GRU),能够处理序列数据,捕捉文本中的长距离依赖关系,在语言建模、机器翻译等任务中取得了一定的成果。然而,RNN 存在梯度消失和梯度爆炸的问题,并且在处理长序列时计算效率较低,难以满足大规模数据处理的需求 。

在这样的背景下,2017 年,谷歌大脑团队在论文《Attention Is All You Need》中提出了 Transformer 模型。该模型摒弃了传统的 RNN 结构,完全基于自注意力(Self-Attention)机制,能够并行处理序列数据,大大提高了计算效率,同时在捕捉长距离依赖关系方面表现出色。Transformer 模型的提出,开启了 NLP 领域的新篇章,为后续一系列强大的预训练模型的诞生奠定了基础。

Hugging Face 团队敏锐地捕捉到了 Transformer 模型的巨大潜力,为了让研究人员和开发者更方便地使用这些先进的模型,他们开发了 Transformers 库。最初的 Transformers 库主要是对一些基本的 Transformer 模型进行了封装,提供了简单的 API 接口,使得用户可以快速加载和使用这些模型。随着时间的推移,越来越多基于 Transformer 架构的预训练模型被提出,如 BERT、GPT-2、RoBERTa 等,Transformers 库也不断更新迭代,将这些模型纳入其中,并持续优化库的性能和功能。

如今,Transformers 库已经成为 NLP 领域最受欢迎和广泛使用的工具之一,它不仅支持多种深度学习框架,如 PyTorch 和 TensorFlow,还涵盖了几乎所有主流的 NLP 任务,如文本分类、生成、摘要、问答等。同时,库中提供的预训练模型可以在不同的数据集上进行微调,以适应各种具体的应用场景,为 NLP 从业者节省了大量的时间和精力。

(二)Hugging Face 与 Transformers 库

Hugging Face 是一家专注于自然语言处理和人工智能的公司,成立于 2016 年,总部位于纽约市。起初,Hugging Face 以开发聊天机器人而闻名,但很快公司便将重心转向开发和发布 NLP 工具和资源,其中最具代表性的就是 Transformers 库。

Hugging Face 与 Transformers 库之间有着紧密且不可分割的联系。可以说,Hugging Face 是 Transformers 库的缔造者和主要推动者。公司的愿景是让 NLP 技术变得更加普及和易用,而 Transformers 库正是实现这一愿景的关键工具。Hugging Face 团队投入了大量的精力和资源,不断完善和扩展 Transformers 库的功能,使其成为一个强大而全面的 NLP 工具包。

作为一个开源库,Transformers 库的发展离不开社区的支持和贡献。Hugging Face 积极营造一个活跃的开源社区,吸引了全球各地的开发者和研究者参与其中。在这个社区中,用户可以分享自己的经验、代码和模型,共同探讨和解决问题。许多开发者基于 Transformers 库进行二次开发,提出了各种创新的应用和改进方案,进一步丰富了库的生态系统。

Hugging Face 还提供了 Model Hub,这是一个共享和下载预训练模型的平台。在 Model Hub 上,用户可以方便地找到各种基于 Transformer 架构的预训练模型,涵盖了不同的语言、任务和领域。这些模型可以直接下载使用,也可以根据自己的需求进行微调,极大地降低了使用 Transformer 模型的门槛。截至目前,Model Hub 上已经收录了数千个预训练模型,并且这个数量还在不断增长。

除了 Transformers 库和 Model Hub,Hugging Face 还开发了其他一些与 NLP 相关的工具和库,如 Datasets 库和 Tokenizers 库。Datasets 库提供了大量的 NLP 数据集,方便用户进行模型的训练和评估;Tokenizers 库则提供了高效的文本分词工具,支持 Transformer 模型的分词需求。这些工具和库相互配合,形成了一个完整的 NLP 开发工具链,为开发者提供了全方位的支持。

Hugging Face 通过开源 Transformers 库和构建活跃的社区,极大地推动了 Transformer 模型在 NLP 领域的应用和发展。它使得 Transformer 模型不再是少数研究机构和大型企业的专利,而是让更多的开发者和研究者能够轻松地使用这些先进的技术,为 NLP 领域的创新和发展注入了新的活力 。

三、核心原理:Transformer 模型架构解析

(一)Transformer 模型的起源

2017 年,谷歌大脑团队发表了一篇名为《Attention Is All You Need》的论文,在这篇具有开创性意义的论文中,Transformer 模型首次被提出。当时,自然语言处理领域主要依赖于循环神经网络(RNN)及其变体,如长短时记忆网络(LSTM)和门控循环单元(GRU)来处理序列数据 。

然而,RNN 存在着一些固有的缺陷。其一,RNN 在处理长序列时会面临梯度消失和梯度爆炸的问题。由于 RNN 的循环结构,梯度在反向传播过程中需要经过多次乘法运算,随着序列长度的增加,梯度可能会变得非常小(梯度消失),导致模型难以学习到长距离的依赖关系;或者梯度变得非常大(梯度爆炸),使得模型训练不稳定。其二,RNN 的计算过程是顺序进行的,难以并行化,这在处理大规模数据时效率较低,无法充分利用现代硬件的并行计算能力。

为了解决这些问题,Transformer 模型应运而生。它的最大创新之处在于摒弃了传统的 RNN 结构,完全基于自注意力(Self-Attention)机制来构建。自注意力机制允许模型在处理序列时,能够同时关注输入序列中的不同位置,直接计算序列中任意两个位置之间的关联,而不需要像 RNN 那样按顺序依次处理每个位置。这使得 Transformer 模型能够有效地捕捉长距离依赖关系,并且可以并行计算,大大提高了计算效率。

Transformer 模型的提出,打破了传统 NLP 模型的束缚,为后续的研究和发展开辟了新的道路。它不仅在自然语言处理领域取得了巨大的成功,还被广泛应用于计算机视觉、语音识别等其他领域,成为了现代深度学习中最重要的模型架构之一。许多基于 Transformer 的预训练模型,如 BERT、GPT 系列等,在各种 NLP 任务中取得了优异的成绩,推动了整个 NLP 领域的快速发展 。

(二)自注意力机制(Self - Attention)

自注意力机制是 Transformer 模型的核心,它的主要作用是计算输入序列中词汇之间的关联程度,从而让模型能够更好地捕捉上下文信息。在自然语言处理中,理解一个单词的含义往往需要考虑它周围的其他单词,自注意力机制就提供了这样一种方式,让模型在处理每个单词时,能够关注到整个输入序列中与该单词相关的其他单词。

自注意力机制的计算过程可以分为以下几个步骤。假设输入序列为\(X = [x_1, x_2, ..., x_n]\),其中\(x_i\)表示第\(i\)个单词的向量表示。首先,对于每个单词\(x_i\),模型会通过线性变换分别生成三个向量:查询向量(Query,记为\(q_i\))、键向量(Key,记为\(k_i\))和值向量(Value,记为\(v_i\))。具体来说,\(q_i = x_iW_Q\),\(k_i = x_iW_K\),\(v_i = x_iW_V\),这里\(W_Q\)、\(W_K\)和\(W_V\)是可学习的权重矩阵。

接下来,计算查询向量\(q_i\)与其他所有键向量\(k_j\)(\(j = 1, 2, ..., n\))的点积,得到一个表示它们之间关联程度的分数\(e_{ij}\),即\(e_{ij} = q_ik_j^T\)。这些分数表示了第\(i\)个单词对其他每个单词的关注度。为了使分数的范围更加稳定,通常会将分数除以一个缩放因子\(\sqrt{d_k}\),其中\(d_k\)是键向量\(k\)的维度。

然后,通过 Softmax 函数对这些分数进行归一化处理,得到注意力权重\(a_{ij}\),即\(a_{ij} = \frac{exp(e_{ij}/\sqrt{d_k})}{\sum_{j=1}^{n} exp(e_{ij}/\sqrt{d_k})}\)。注意力权重\(a_{ij}\)表示了第\(i\)个单词在关注第\(j\)个单词时的相对重要性,所有注意力权重之和为 1。

最后,根据注意力权重对值向量进行加权求和,得到第\(i\)个单词的自注意力输出\(z_i\),即\(z_i = \sum_{j=1}^{n} a_{ij}v_j\)。这个输出\(z_i\)综合了输入序列中所有单词的信息,并且重点关注了与第\(i\)个单词相关的单词。

例如,对于句子 “我 喜欢 吃 苹果”,当模型处理单词 “苹果” 时,通过自注意力机制,它会计算 “苹果” 与 “我”“喜欢”“吃” 这几个单词的关联程度。如果发现 “吃” 这个单词与 “苹果” 的关联度很高(比如注意力权重较大),那么在生成 “苹果” 的自注意力输出时,“吃” 这个单词的值向量就会对结果产生较大的影响,从而让模型更好地理解 “苹果” 在这个句子中的语义角色,即它是 “吃” 这个动作的对象 。

通过自注意力机制,模型可以在编码阶段将重要信息进行聚焦和提取,从而更好地理解输入序列的语义和结构。这种机制在很多自然语言处理任务中都取得了很好的效果,它使得模型能够更有效地处理长距离依赖关系,相比传统的 RNN 模型,大大提高了模型的性能和效率 。

(三)多头注意力(Multi - Head Attention)

多头注意力机制是对自注意力机制的进一步扩展和增强。它通过并行化多个自注意力机制,使得模型能够同时从不同的子空间捕捉输入序列的不同上下文关系,从而学习到更丰富的信息。

具体来说,多头注意力机制首先将输入的查询(Query)、键(Key)和值(Value)分别通过多个不同的线性变换,得到多个 “头” 的查询、键和值。假设有\(h\)个头,那么对于输入\(X\),会得到\(h\)组查询向量\(Q_1, Q_2, ..., Q_h\),\(h\)组键向量\(K_1, K_2, ..., K_h\)和\(h\)组值向量\(V_1, V_2, ..., V_h\)。

然后,每个头独立地进行自注意力计算,即对于第\(i\)个头,计算其注意力输出\(z_i\):\(z_i = Attention(Q_i, K_i, V_i) = softmax(\frac{Q_iK_i^T}{\sqrt{d_k}})V_i\) 。

最后,将这\(h\)个头的输出拼接起来,并通过一个线性变换,得到多头注意力的最终输出\(Z\)。公式表示为:\(Multi - Head Attention(Q, K, V) = Concat(head_1, head_2, ..., head_h)W^O\),其中\(head_i\)表示第\(i\)个头的注意力输出,\(W^O\)是用于最终线性变换的权重矩阵 。

以机器翻译任务为例,当翻译句子 “我 喜欢 中国 的 美食” 时,不同的注意力头可以关注到不同的语义关系。一个头可能主要关注 “我” 和 “喜欢” 之间的主谓关系,另一个头则可能更关注 “中国” 和 “美食” 之间的修饰关系。通过多头注意力机制,模型能够同时捕捉到这些不同的关系,从而更准确地进行翻译。

多头注意力机制的优势在于它可以让模型从多个角度去学习输入序列的特征和关系。不同的头可以关注到不同的上下文信息,有的头擅长捕捉局部信息,有的头则更善于捕捉长距离依赖关系。这种并行化和多样化的学习方式,大大提高了模型的表达能力和对复杂语义的理解能力 。

(四)位置编码(Positional Encoding)

在 Transformer 模型中,由于自注意力机制本身不考虑输入序列中元素的顺序信息,为了让模型能够捕捉到序列中词汇的位置信息,引入了位置编码(Positional Encoding)。

位置编码的作用是将每个词汇在序列中的位置信息编码成一个向量,并将其与词汇本身的词嵌入向量相加,从而使模型能够感知到词汇的位置。具体来说,位置编码使用正弦和余弦函数来生成位置向量。对于位置\(pos\)和维度\(i\),位置编码的计算公式如下:\(PE(pos, 2i) = sin(pos / 10000^{2i / d_{model}})\)

\(PE(pos, 2i + 1) = cos(pos / 10000^{2i / d_{model}})\)

其中,\(d_{model}\)是模型的维度。从公式中可以看出,位置编码在偶数维度上使用正弦函数,在奇数维度上使用余弦函数,通过不同的频率来编码不同的位置信息。

例如,对于一个简单的句子 “苹果 是 红色 的”,“苹果” 在句子中的位置是 1,“是” 的位置是 2。通过位置编码,会为 “苹果” 和 “是” 生成不同的位置向量,然后将这些位置向量分别与 “苹果” 和 “是” 的词嵌入向量相加,得到包含位置信息的新向量。这样,当模型处理这些向量时,就能够知道 “苹果” 和 “是” 在句子中的先后顺序,从而更好地理解句子的结构和语义。

位置编码的引入使得 Transformer 模型能够处理具有顺序性的自然语言数据,它在许多 NLP 任务中都发挥了重要作用。无论是文本分类、机器翻译还是文本生成,位置信息对于模型准确理解和处理文本都至关重要。通过位置编码,模型可以更好地捕捉到句子中词汇之间的依赖关系,提高模型在这些任务中的性能 。

(五)前馈神经网络(Feed - Forward Neural Network)

在前馈神经网络在 Transformer 模型中,它位于多头注意力机制之后,主要作用是对多头注意力输出的特征进行进一步的处理和变换,提取词汇的局部特征,增强模型的表达能力。

前馈神经网络的结构相对简单,它由两个全连接层组成,中间使用 ReLU 激活函数进行非线性变换。假设多头注意力的输出为\(Z\),其维度为\((batch\_size, seq\_length, d_{model})\),其中\(batch\_size\)是批量大小,\(seq\_length\)是序列长度,\(d_{model}\)是模型维度。前馈神经网络首先将\(Z\)通过第一个全连接层,将其维度从\(d_{model}\)变换到一个更高的维度\(d_{ff}\)(通常\(d_{ff}\) >> \(d_{model}\)),然后使用 ReLU 激活函数进行非线性变换:\(FFN_1(Z) = ReLU(Z W_1 + b_1)\),这里\(W_1\)是第一个全连接层的权重矩阵,\(b_1\)是偏置项。

接着,将经过 ReLU 激活后的结果通过第二个全连接层,将维度再变换回\(d_{model}\):\(FFN_2(FFN_1(Z)) = FFN_1(Z) W_2 + b_2\),其中\(W_2\)是第二个全连接层的权重矩阵,\(b_2\)是偏置项。最终得到前馈神经网络的输出,这个输出将继续参与后续的计算。

以文本分类任务为例,当模型通过多头注意力机制捕捉到文本中的各种语义关系后,前馈神经网络会对这些关系进行进一步的抽象和提炼。它可以从这些关系中提取出与文本类别相关的局部特征,比如特定的词汇组合、语义模式等。通过这种方式,模型能够更好地对文本进行分类,提高分类的准确性。

前馈神经网络的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue里面elementUi-aside 和el-main不垂直排列

先说解决方法 main.js少导包 import element-ui/lib/theme-chalk/index.css; //加入此行即可 问题复现 排查了一个小时终于找出来问题了,建议导包去看官方的文档,作者就是因为看了别人的导包流程导致的问题 导包官网地址Element UI导包快速入门

MYSQL 常用字符串函数 和 时间函数详解

一、字符串函数 1、​CONCAT(str1, str2, …) 拼接多个字符串。 SELECT CONCAT(Hello, , World); -- 输出 Hello World2、SUBSTRING(str, start, length)​​ 或 ​SUBSTR() 截取字符串。 SELECT SUBSTRING(MySQL, 3, 2); -- 输出 SQ3、LENGTH(str)​​ 与 ​CHAR_LENGTH…

Python-Agent调用多个Server-FastAPI版本

Python-Agent调用多个Server-FastAPI版本 Agent调用多个McpServer进行工具调用 1-核心知识点 fastAPI的快速使用agent调用多个server 2-思路整理 1)先把每个子服务搭建起来2)再暴露一个Agent 3-参考网址 VSCode配置Python开发环境:https:/…

Drools+自定义规则库

文章目录 前言一、创建规则库二、SpringBootDrools程序1.Maven依赖2.application.yml3.Mapper.xml4.Drools配置类5.Service6.Contoller7.测试接口 前言 公司的技术方案想搭建Drools自定义规则库配合大模型进行数据的校验。本篇用来记录使用SpringBoot配合Drools开发Demo程序。…

潮了 低配电脑6G显存生成60秒AI视频 本地部署/一键包/云算力部署/批量生成

最近发现了一个让人眼前一亮的工具——FramePack,它能用一块普通的6GB显存笔记本GPU,生成60秒电影级的高清视频画面,效果堪称炸裂!那么我们就把他本地部署起来玩一玩、下载离线一键整合包,或者是用云算力快速上手。接下…

【蓝桥杯选拔赛真题104】Scratch回文数 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch回文数 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch回文数 第十五届青少年蓝桥杯scratch编…

大厂面试-框架篇

前言 本章内容来自B站黑马程序员java大厂面试题和小林coding 博主学习笔记,如果有不对的地方,海涵。 如果这篇文章对你有帮助,可以点点关注,点点赞,谢谢你! 1.Spring 1.1 Spring框架中的单例bean是线程…

【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)

文章目录 DIY 实战:从扫雷小游戏开发再探问题分解能力3 问题分解实战(自顶向下)3.2 页面渲染逻辑3.3 事件绑定逻辑 4 代码实现(自底向上)4.1 页面渲染部分4.2 事件绑定部分 写在前面 本篇将利用《Learn AI-assisted Py…

微信小程序开发1------微信小程序中的消息提示框总结

微信小程序中的消息提示框主要分为以下几种: 1. wx.showToast(Object object) 功能: 显示消息提示框,一般用于显示操作结果、状态等。 特点: 提示框显示在屏幕中间,持续一段时间后自动消失(默认1.5秒&…

AI 场景落地:API 接口服务 VS 本地部署,哪种更适合?

在当前 AI 技术迅猛发展的背景下,企业在实现 AI 场景落地时,面临着一个关键抉择:是选择各大厂商提供的 API 接口服务,还是进行本地化部署?这不仅关乎成本、性能和安全性,还涉及到技术架构、数据治理和长期战…

Android 加壳应用运行流程 与 生命周期类处理方案

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ DexClassLoader DexClassLoader 可以加载任意路径下的 dex,或者 jar、apk、zip 文件(包含classes.dex)。常用于插件化、热…

c++进阶——类与继承

文章目录 继承继承的基本概念继承的基本定义继承方式继承的一些注意事项 继承类模板 基类和派生类之间的转换继承中的作用域派生类的默认成员函数默认构造函数拷贝构造赋值重载析构函数默认成员函数总结 不能被继承的类继承和友元继承与静态成员多继承及其菱形继承问题继承模型…

GAEA情感坐标背后的技术原理

基于GAEA的去中心化物理基础设施网络(DePIN),用户有机会在GAEA平台上获得宝贵的数据共享积分。为了提升这些洞察的丰富性,用户必须花费一定数量的积分,将过去的网络数据与当前的情感数据绑定,从而产生一种新…

图形编辑器基于Paper.js教程27:对图像描摹的功能实现,以及参数调整

本篇文章来讲一下 图像描摹的功能的实现。 我们知道要雕刻图片可以通过分析图片的像素来生成相应的gcode进行雕刻,但如果你想要将图片转换为线稿进行雕刻,这个时候就要从图片中提取出 线稿。 例如下面的图片: 你想要获取到这个图片的线稿&…

人工智能与机器学习,谁是谁的子集 —— 再谈智能的边界与演进路径

人工智能(Artificial Intelligence, AI)作为当代最具影响力的前沿技术之一,常被大众简化为 “深度学习” 或 “大模型” 等标签。然而,这种简化认知往往掩盖了AI技术内部结构的复杂性与多样性。事实上,AI并非单一方法的…

Oracle_开启归档日志和重做日志

在Oracle中,类似于MySQL的binlog的机制是归档日志(Archive Log)和重做日志(Redo Log) 查询归档日志状态 SELECT log_mode FROM v$database; – 输出示例: – LOG_MODE – ARCHIVELOG (表示已开启) – NO…

IDEA编写flinkSQL(快速体验版本,--无需配置环境)

相关资料 文档内容链接地址datagen生成器https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/connectors/table/datagen/print 生成器https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/connectors/table/print/ 准备工作 优点就是下载个ide…

基于AI技术的高速公路交通引流系统设计与应用研究

基于AI技术的高速公路交通引流系统设计与应用研究 1. 研究背景与意义 1.1 交通系统演化脉络 1.1.1 发展阶段划分 机械化时代(1950-1990):固定式信号控制信息化时代(1991-2010):SCATS/SCOOT系统智能化时代…

NEGATIVE LABEL GUIDED OOD DETECTION WITH PRETRAINED VISION-LANGUAGE MODELS

1. 介绍: 这篇论文也是基于CLIP通过后处理的方法实现的OOD的检测,但是设计点在于,之前的方法是使用的ID的类别,这篇工作是通过添加一些在语义上非常不同于ID的类别的外分布类来做的OOD检测。 CLIP做OOD检测的这个系列里面我看的以及记录的第一篇就是MCM的方法,这也是确实是…

Linux 网络基础三 (数据链路层协议:以太网协议、ARP 协议)

一、以太网 两个不同局域网的主机传递数据并不是直接传递的,而是通过路由器 “一跳一跳” 的传递过去。 跨网络传输的本质:由无数个局域网(子网)转发的结果。 所以,要理解数据跨网络转发原理就要先理解一个局域网中数…