Ответ на этот вопрос лежит в (по общему признанию, очень кратком) описании задач:
[BertForMultipleChoice
] [...], например, для задач RocStories / SWAG.
Если посмотреть на бумагу для SWAG , кажется, что задача на самом деле - научиться выбирать из различных вариантов . Это в отличие от вашей «классической» задачи классификации, в которой «выбор» (т. Е. Классы) не меняется по вашим выборкам, а это именно то, для чего BertForSequenceClassification
предназначен.
Оба варианта могут фактически быть для произвольного числа классов (в случае BertForSequenceClassification
), соответственно вариантов (для BertForMultipleChoice
), путем изменения параметра labels
в конфигурации. Но, поскольку кажется, что вы имеете дело со случаем «классической классификации», я предлагаю использовать модель BertForSequenceClassification
.
Кратко рассмотрим отсутствующий Softmax в BertForSequenceClassification
: поскольку задачи классификации могут вычислять потери во всех классы, независимые от образца (в отличие от множественного выбора, где ваше распределение меняется), это позволяет вам использовать Cross-Entropy Loss, который учитывает Softmax на шаге обратного распространения для увеличенной численной стабильности .