我想用使用 BERT 隐藏状态的分类算法进行分析

Posted

技术标签:

【中文标题】我想用使用 BERT 隐藏状态的分类算法进行分析【英文标题】:I want to analysis with classification algoritms using BERT's hidden state 【发布时间】:2021-12-23 02:27:56 【问题描述】:

我正在使用 Huggingface Transformer 包和带有 PyTorch 的 BERT。 我尝试使用CamembertForSequenceClassification 进行文本分类。 我可以得到结果,但我想挑战更艰巨的任务。 我指的是这个literature。在本文档的第 4.1 节中,指出

训练后,我们去掉 softmax 激活层,使用 BERT 的隐藏状态作为特征向量,然后将其用作不同分类算法的输入。

所以,我检查了modeling_bert.py。有 attention_probs = nn.Softmax(dim=-1)(attention_scores)如果我按照论文看,是否意味着在通过 Softmax 函数之前使用 attention_scores?如果是这样,我该如何使用 attention_scores 并将其应用于分类算法?简而言之,我想要做的是使用 BERT 的隐藏状态并将其应用于逻辑回归等。感谢您的帮助。

【问题讨论】:

【参考方案1】:

他们不是指 Softmax 层,因为那是在 BertAttention 内部。他们的意思是 BERT 之上的池化层。

我找到了他们在论文中提供的存储库:https://github.com/axenov/politik-news

似乎当他们训练时,他们使用普通的 BertForSequenceClassification。 (其中使用 hidden_​​states -> 池化激活 -> 线性分类器 -> 损失)

当他们预测时,他们只使用 hidden_​​states(或在 bert_modeling.py 中称为 sequence_output),然后将其传递给加载到 BiasPredictor.py:L26 中的不同分类器。

因此,如果您想尝试不同的分类器,请使用它here。

【讨论】:

非常感谢!!!多亏了你,我现在了解了 Softmax。我想用modeling_bert.py,但如果是这样,是不是意味着我只是通过Logistic Regression什么的传递得到的sequence_output? 很高兴我能帮上忙!是的,使用 sequence_output 作为所需分类器的输入特征。但是,你应该先训练它。他们在“BERT_baseline.ipynb”中这样做

以上是关于我想用使用 BERT 隐藏状态的分类算法进行分析的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Bert 转换器使用 [CLS] 令牌进行分类,而不是对所有令牌进行平均?

常见文本分类模型

使用 BERT 等预训练模型进行文档分类

如何微调 HuggingFace BERT 模型以进行文本分类 [关闭]

BERT 作为分类服务?

删除 Bert 中的 SEP 令牌以进行文本分类