为什么 Bert Transformer 使用 [CLS] 令牌进行分类而不是对所有令牌进行平均?

2024-02-29

我正在对 bert 架构进行实验,发现大多数微调任务都将最终的隐藏层作为文本表示,然后将其传递给其他模型以进行进一步的下游任务。

Bert 的最后一层如下所示:

我们获取每个句子的 [CLS] 标记:

图片来源 https://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/

我对此进行了多次讨论拥抱问题 https://github.com/huggingface/transformers/issues/1950, 数据科学论坛问题 https://datascience.stackexchange.com/questions/66207/what-is-purpose-of-the-cls-token-and-why-its-encoding-output-is-important, github问题 https://github.com/google-research/bert/issues/196大多数数据科学家给出了这样的解释:

BERT 是双向的,[CLS] 被编码,包括所有 通过多层的所有代币的代表性信息 编码过程。 [CLS] 的表示是单独的 不同的句子。

我的问题是,为什么作者忽略其他信息(每个标记的向量)并采用平均值、max_pool或其他方法来利用所有信息而不是使用[CLS]标记进行分类?

与所有标记向量的平均值相比,这个 [CLS] 标记有何帮助?


BERT 主要是为迁移学习而设计的,即对特定任务数据集进行微调。如果对状态进行平均,则每个状态都会以相同的权重进行平均:包括停用词或与任务不相关的其他内容。这[CLS]向量是使用自注意力计算的(就像 BERT 中的所有内容一样),因此它只能从其余隐藏状态收集相关信息。所以,从某种意义上说[CLS]向量也是令牌向量的平均值,只是计算得更巧妙,特别是针对您微调的任务。

另外,我的经验是,当我保持重量固定并且do not微调 BERT,使用 token 平均值会产生更好的结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Bert Transformer 使用 [CLS] 令牌进行分类而不是对所有令牌进行平均? 的相关文章

随机推荐

  • SQL从另一列插入不同值的计数

    我目前正在努力解决以下查询 我在数据库中有一个表 其中包含公司列表及其拥有的许多产品 我正在寻找Count的数量独特的产品他们拥有并将其插入到表中其公司名称所在的行中 我尝试过以下方法 INSERT INTO table name SET
  • 如何在 JavaScript 中有效地将大块细分为许多大小为 2 的幂的小块

    建设关闭这个答案 https stackoverflow com questions 66253424 how to efficiently segment a large block of predefined size into sma
  • Android 编译器上的 Delphi PATH 错误

    我刚刚在我办公室的 DELL 工作站中安装了 Delphi 10 Seattle 并且能够编译 32 位和 64 位 当我选择Android时 出现这样的错误 执行错误 命令 PATH C Program 文件 Java jdk1 7 0
  • 使用 OpenCV 2.2 实施 Sift

    有人知道 SIFT 实现示例与 OpenCV 2 2 的链接吗 问候 下面是一个最小的例子 include
  • 如何知道 Cosmos 中的 Cygnus 通知表名称?

    我正在使用 Cygnus 通过 httpfs 向 Cosmos 发送 Orion Context Broker 通知 Hive 历史记录中发送到 Cosmos 的数据存储在哪里 存储 Cygnus 数据的表的名称是什么 Cygnus 在 C
  • Flask URL Route:将所有其他 URL 路由到某个函数

    我正在使用 Flask 0 9 我有使用 Google App Engine 的经验 在 GAE 中 url 匹配模式按照它们出现的顺序进行评估 先到先得 Flask 中也是同样的情况吗 在 Flask 中 如何编写 url 匹配模式来处理
  • Android 多屏限定符定义

    我想创建一个与大量设备和屏幕兼容的布局 我一直在研究 发现最常见的屏幕分辨率是 249x320 480x800 600x1024 720x1280 以及与这些成比例的其他一些屏幕 好吧 阅读文档后我发现有两种方法可以做到这一点 到 3 2
  • 使用 J2V8 从 .js 执行函数

    我正在使用 J2V8 在 Android 上执行 JavaScript 代码 在我的 Java 代码中 我可以访问和执行单独 js 文件的 JavaScript 函数吗 如果可以的话 我该怎么做 与许多 JavaScript 环境一样 您只
  • Anorm 中的原子 MySQL 事务

    我编写了一个简单的命中计数器 它使用 Anorm 更新 MySQL 数据库表 我希望交易是原子的 我认为最好的方法是将所有 SQL 字符串连接在一起并执行一个查询 但这对于 Anorm 似乎是不可能的 相反 我将每个选择 更新和提交放在单独
  • 如何在 PyTorch 中保存模型架构?

    我知道我可以通过以下方式保存模型torch save model state dict FILE or torch save model FILE 但两者都不保存模型的架构 那么我们如何在 PyTorch 中保存模型的架构 就像创建一个 p
  • R CMD 氧气无法识别

    我刚刚尝试了 Roxygen 套餐 在 R 中 我可以运行 Roxygen Vignette 中的示例 但是在命令行中 R CMD roxygen未被识别为有效命令 当我跑步时R CMD help 我可以看到全部INSTALL check
  • 如何设置超时来中止工厂或服务内的 $http.get() ?

    我有以下方法getData url 在我的factory它使用 http get url 从 URL 获取数据 angular module az app factory WebServiceFactory function http q
  • 使用 ResumableJS 取消、中止和重试单个文件上传

    我已经成功地使用以下方法将多个文件分块上传到服务器可恢复JS http www resumablejs com 在上传过程中 用户可以看到整体上传进度和单个文件上传百分比 还可以暂停 恢复整个上传 我现在想要的是允许用户取消 中止单个文件上
  • 无法从没有窗口的视图中呈现弹出窗口

    这个错误说明什么 Popovers cannot be presented from a view which does not have a window 救了我一命的事情 if self view window nil popoverC
  • 如何读取浏览器中所有存储的 Cookie

    我只想读取浏览器中存储的所有 cookie 使用标准 Javascript API 我无法阅读它 但有没有一种方法可以读取所有 cookie 而不仅仅是通过我的网站注册的 cookie 浏览器安全会故意阻止这种情况 如果你能做到这一点 你就
  • 从代码运行测试时在 Eclipse 中显示 JUnit 视图

    当我在 Eclipse 中运行 Testclass 时 我会看到显示树结构以及测试是否成功的 JUnit 视图 如果我从代码开始测试 JUnitCore core new JUnitCore core run SimpleTests cla
  • MySQL语句选择特定列的最新条目

    我正在使用 MySQL 并且该表是使用以下架构创建的 CREATE TABLE example id INT UNSIGNED NOT NULL AUTO INCREMENT version INT UNSIGNED NOT NULL te
  • 如何加载离子段内的其他页面?

    任何人都知道如何加载离子段内的其他页面 我正在使用 ionic v4 我有三页试图在离子段内部显示 概况 疫苗接种 发育 我想将页面的功能分开以便于维护 这是孩子的详细信息页面 https i stack imgur com pta0M p
  • BOOST_FUSION_ADAPT_STRUCT 的限制

    我尝试过玩BOOST FUSION ADAPT STRUCT宏并尝试了一些天真的事情 例如使用 Fusion 打印任何任意结构 从此开始文档中给出的示例代码 http www boost org doc libs 1 55 0 libs f
  • 为什么 Bert Transformer 使用 [CLS] 令牌进行分类而不是对所有令牌进行平均?

    我正在对 bert 架构进行实验 发现大多数微调任务都将最终的隐藏层作为文本表示 然后将其传递给其他模型以进行进一步的下游任务 Bert 的最后一层如下所示 我们获取每个句子的 CLS 标记 图片来源 https jalammar gith