bert 问题:"池化层"是什么意思?为什么叫池化层?

nkcskrwz  于 5个月前  发布在  其他
关注(0)|答案(6)|浏览(61)

这个问题主要关于术语“pooler”,可能更多地是一个英语问题,而不是关于BERT的问题。
通过阅读这个仓库及其问题,我发现“pooler层”是在Transformer编码器堆栈之后放置的,并且它根据训练任务而变化。
但是我无法理解为什么它被称为“pooler”。
我在网上搜索了“pooler”和“pooler层”的含义,似乎这不是机器学习术语。
顺便说一下,在CNN中出现的池化层(pooling layer)是一个类似的词,但似乎是不同的东西。

qpgpyjmq

qpgpyjmq1#

线性变换在利用"下一句预测"(NSP)策略进行训练时。

你好,我有一个关于这个NSP目的的问题。既然池化器用于下游任务,如句子分类,那么使用一个为预测下一句而训练的池化器是否有帮助?因为现在的目标是预测一个标签...

谢谢

xj3cbfub

xj3cbfub2#

我理解他们可能正在做某种形式的$GlobalMaxPool_1D$,但是你是否知道他们使用的具体算法来降低维度?恐怕他们使用的是$GlobalMaxPool_1D$中使用的“max”。

谢谢。

o7jaxewo

o7jaxewo3#

@secsilm 我理解这可能是在做某种全局最大池化1D操作,但是你知道他们具体使用了什么算法来降低维度吗?我担心他们使用的是GlobalMaxPool1D中的"max",但实际上不是。
谢谢
不是max。他们只是用第一个标记的向量来表示整个序列。

eaf3rand

eaf3rand4#

正确。对于大多数任务,第一个标记是一个特殊标记(例如,用于分类任务的 [CLS])。这就是为什么像 [CLS] 这样的标记是存在的。

tvmytwxo

tvmytwxo5#

我同意pooler这个名字可能有点让人困惑。为了更容易理解BERT模型,我们可以将其分为三个部分:

  1. 嵌入层:从单词的one-hot编码中获取嵌入
  2. 编码器:这是具有自注意力头的Transformer
  3. 池化器:它接收与第一个标记对应的输出表示,并将其用于下游任务

在描述BERT的paper中,经过模型处理后的句子,输出中与第一个标记对应的表示将用于像SQuAD和GLUE这样的任务的微调。因此,池化层正是这样做的,它在第一个标记表示上应用线性变换。线性变换是在使用“下一个句子预测”(NSP)策略进行训练时进行的。

egmofgnx

egmofgnx6#

我认为将"pooler"层称为"池化层"是可以的。这个层将Transformer的输出形状从 [batch_size, seq_length, hidden_size] 转换为 [batch_size, hidden_size] 。这与 GlobalMaxPool1D 相似,但不是最大池化,而是直接对第一个词进行池化。因此,从功能上讲,这就是池化。

相关问题