【发布时间】:2020-06-21 22:00:36
【问题描述】:
我正在处理文本分类问题(例如情感分析),我需要将文本字符串分类为五个类别之一。
我刚刚开始使用 Huggingface Transformer 包和带有 PyTorch 的 BERT。我需要的是一个顶部有一个 softmax 层的分类器,这样我就可以进行 5 路分类。令人困惑的是,Transformer 包中似乎有两个相关选项:BertForSequenceClassification 和 BertForMultipleChoice。
我应该使用哪一个来完成我的 5 路分类任务?它们有哪些合适的用例?
BertForSequenceClassification 的文档根本没有提到 softmax,尽管它确实提到了交叉熵。我不确定这个类是否仅用于 2 类分类(即逻辑回归)。
Bert 模型转换器,顶部带有序列分类/回归头(池输出顶部的线性层),例如用于 GLUE 任务。
- labels(torch.LongTensor of shape (batch_size,),可选,默认为 None)- 用于计算序列分类/回归损失的标签。索引应该在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1 计算回归损失(均方损失),如果 config.num_labels > 1 计算分类损失(交叉熵)。
BertForMultipleChoice的文档中提到了softmax,但是标签的描述方式,听起来这个类是针对多标签分类的(即多标签的二元分类)。
顶部带有多项选择分类头的 Bert 模型(池输出顶部的线性层和 softmax),例如用于 RocStories/SWAG 任务。
- labels(torch.LongTensor of shape (batch_size,),可选,默认为 None)- 用于计算多项选择分类损失的标签。索引应该在 [0, ..., num_choices] 中,其中 num_choices 是输入张量的第二维的大小。
感谢您的帮助。
【问题讨论】:
标签: python machine-learning pytorch bert-language-model huggingface-transformers