Я пытаюсь решить задачу многокомпонентной классификации из 10 классов с относительно сбалансированным обучающим набором, состоящим из ~ 25K образцов, а оценочный набор состоит из ~ 5K образцов.
Я использую обнимающееся лицо:
model = transformers.BertForSequenceClassification.from_pretrained(...
и получить довольно хорошие результаты (ROC AUC = 0,98).
Однако я наблюдаю какое-то странное поведение, в котором, кажется, не понимаю -
Я добавляю следующие строки кода:
for param in model.bert.parameters():
param.requires_grad = False
при этом убедитесь, что изучены другие слои модели, то есть:
[param[0] for param in model.named_parameters() if param[1].requires_grad == True]
gives
['classifier.weight', 'classifier.bias']
Обучение модели при такой настройке дает неприятно плохие результаты (ROC AUC = 0,59).
Я работал в предположении, что готовая предварительно обученная модель BERT (без какой-либо тонкой настройки) должна служить относительно хорошим средством извлечения признаков для уровней классификации. Итак, где я ошибся?
[p[0] for p in model.named_parameters() if p[1].requires_grad == True]
? - person cronoik   schedule 25.10.2020