1. ホーム
  2. python

[解決済み] 文の多クラス分類のためのBertForSequenceClassificationとBertForMultipleChoiceの比較

2022-01-29 01:09:26

質問

テキスト分類問題(センチメント分析など)に取り組んでいます。テキスト文字列を5つのクラスのいずれかに分類する必要があります。

を使い始めたところです。 ハギングフェーストランスフォーマー パッケージとBERTをPyTorchと一緒に使っています。私が必要とするのは、5方向分類を行うことができるように、上にソフトマックスレイヤーを持つ分類器です。混乱したことに、Transformerパッケージには2つの関連するオプションがあるようです。 BertForSequenceClassification(バートフォースシーケンスクラシフィケーション BertForMultipleChoice(バートフォーマルチプルチョイス .

5分類のタスクには、どれを使えばいいのでしょうか?また、それらの適切なユースケースは何ですか?

のドキュメントを参照してください。 BertForSequenceClassification (バートフォーシーケンスクラシフィケーション) はクロスエントロピーには言及していますが、ソフトマックスには全く言及していません。このクラスが2クラス分類(つまりロジスティック回帰)だけのものなのかどうかはわかりません。

<ブロッククオート

Bert Model transformer with a sequence classification/regression head on top (a linear layer on top of pooled output) e.g. for GLUE tasks.

  • ラベル (torch.LongTensor of shape (batch_size,), optional, defaults to None) - シーケンスの分類/回帰損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲でなければならない.config.num_labels == 1 ならば回帰損失(平均二乗損失), config.num_labels > 1 ならば分類損失(クロスエントロピー)が計算されます.

のドキュメントは BertForMultipleChoice はソフトマックスに言及していますが、ラベルの記述の仕方からすると、このクラスはマルチラベル分類(つまり、複数のラベルに対する2値分類)のためのものであるように聞こえます。

<ブロッククオート

バートモデルに複数選択肢の分類ヘッドをつけたもの(プールされた出力とソフトマックスの上に線形層)例えばRocStories/SWAGタスクのためのもの。

  • ラベル (torch.LongTensor of shape (batch_size,), optional, defaults to None) - 多肢選択式分類損失を計算するためのラベルです。インデックスは [0, ..., num_choices] であり、num_choices は入力テンソルの2次元目のサイズである。

よろしくお願いします。

どのように解決するのですか?

この答えは、(確かに非常に簡潔な)タスクが何であるかの記述にあります。

<ブロッククオート

[ BertForMultipleChoice ] [RocStories/SWAGのタスクなど。

を見るとき SWAGのための紙 を実際に学習しているようです。 様々な選択肢から選ぶ . これは,古典的な分類課題では,選択肢(クラス)である 変化しない サンプル間で、まさに BertForSequenceClassification はそのためのものです。

どちらのバージョンも、実際には任意の数のクラスに対するものである可能性があります (例. BertForSequenceClassification の場合)、それぞれ選択肢( BertForMultipleChoice を変更することで対応できます。 labels パラメータを設定します。しかし、あなたが扱っているのは古典的な分類のケースのようなので、このパラメータを使用することをお勧めします。 BertForSequenceClassification モデルを使用します。

で不足しているSoftmaxにすぐさま対応。 BertForSequenceClassification : 分類タスクはサンプルに依存しないクラス間の損失を計算できるため(分布が変化する多肢選択式とは異なります),バックプロパゲーションステップでソフトマックスを考慮したクロスエントロピ損失を使用することが可能です. 数値安定性の向上 .