зачем брать первое скрытое состояние для классификации последовательности (DistilBertForSequenceClassification) HuggingFace - PullRequest
1 голос
/ 06 февраля 2020

В последних нескольких слоях классификации последовательностей по HuggingFace они приняли первое скрытое состояние длины последовательности на выходе трансформатора, который будет использоваться для классификации.

hidden_state = distilbert_output[0]  # (bs, seq_len, dim) <-- transformer output
pooled_output = hidden_state[:, 0]  # (bs, dim)           <-- first hidden state
pooled_output = self.pre_classifier(pooled_output)  # (bs, dim)
pooled_output = nn.ReLU()(pooled_output)  # (bs, dim)
pooled_output = self.dropout(pooled_output)  # (bs, dim)
logits = self.classifier(pooled_output)  # (bs, dim)

Есть ли какое-либо преимущество в использовании первого скрытого состояния по сравнению с последним, средним или даже в использовании слоя Flatten вместо этого?

1 Ответ

2 голосов
/ 20 февраля 2020

Да, это напрямую связано со способом обучения BERT. В частности, я призываю вас взглянуть на оригинальную бумагу BERT , в которой авторы вводят значение [CLS] токена:

[CLS] является специальным Символ добавляется перед каждым входным примером [...].

В частности, он используется для целей классификации и, следовательно, является первым и самым простым выбором для любой тонкой настройки для задач классификации. То, что делает ваш соответствующий фрагмент кода, в основном просто извлекает этот [CLS] токен.

К сожалению, документация DistilBERT библиотеки Huggingface явно не ссылается на это, но вам лучше проверить их Документация BERT , в которой также освещаются некоторые проблемы с токеном [CLS], аналогичные вашим проблемам:

Наряду с MLM BERT обучался с использованием цели прогнозирования следующего предложения (NSP) с использованием [CLS] токен как последовательность приблизительная. Пользователь может использовать этот токен (первый токен в последовательности, построенной из специальных токенов), чтобы получить прогноз последовательности, а не прогноз токена. Однако усреднение по последовательности может дать лучшие результаты, чем использование токена [CLS].

...