Удаление токена SEP в Bert для классификации текста

Учитывая набор данных классификации настроений, я хочу уточнить Берта.

Как вы знаете, BERT создан для предсказания следующего предложения с учетом текущего предложения. Таким образом, чтобы сеть знала об этом, они вставили токен [CLS] в начало первого предложения, затем они добавили токен [SEP], чтобы отделить первое предложение от второго и, наконец, еще один [SEP] в конце второго предложения (это не ясно мне, почему они добавляют еще один токен в конце).

В любом случае, что касается классификации текста, то, что я заметил в некоторых примерах в Интернете (см. BERT в Keras с концентратором Tensorflow) заключается в том, что они добавляют токен [CLS], затем предложение и в конце еще один токен [SEP].

Если в других исследовательских работах (например, Обогащение предварительно обученной языковой модели информацией о сущностях для классификации отношений) они удалить последний [SEP] токен.

Почему нецелесообразно добавлять токен [SEP] в конец вводимого текста, если в моей задаче используется только одно предложение?


person user_007    schedule 13.01.2020    source источник
comment
. @ user_007 интересный вопрос, есть ли у вас какие-нибудь идеи?   -  person MJimitater    schedule 20.01.2021
comment
@MJimitater, к сожалению, нет.   -  person user_007    schedule 20.01.2021
comment
Я предложил некоторые (к сожалению, довольно неудовлетворительные) свои идеи в ответе ниже, пожалуйста, дайте мне знать свои мысли по этому поводу, чтобы мы оба могли двигаться дальше к истине.   -  person MJimitater    schedule 20.01.2021


Ответы (2)


Я не совсем уверен, почему BERT нужен токен разделения [SEP] в конце для задач с одним предложением, но я предполагаю, что BERT - это модель автокодирования, которая, как уже упоминалось, изначально была разработана для моделирования языка и прогнозирования следующего предложения. Таким образом, BERT был обучен таким образом, чтобы всегда ожидать токена [SEP], что означает, что токен участвует в базовых знаниях, которые BERT накопил во время обучения.

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

BERT может учиться быстрее, если [SEP] добавляется в конце одного предложения, потому что он кодирует в этом токене некоторую информацию, которая отмечает конец ввода. Без него BERT все равно будет знать, где заканчивается предложение (из-за маркеров заполнения), что объясняет, что ранее упомянутое исследование не учитывает токен, но это может немного замедлить обучение, поскольку BERT может быстрее учиться с добавленным токеном [SEP]. , особенно если в усеченном вводе нет маркеров заполнения.

person MJimitater    schedule 20.01.2021
comment
Спасибо @MJimitater .. Думаю, это наиболее вероятный ответ. Мне все еще неясно, почему он работает с ним и без него (с научной точки зрения)? Чувствую, что на это никто не ответит, тогда ваш ответ будет принят как принятый;) - person user_007; 20.01.2021
comment
Думаю, это близко к истине. Модель всегда это видела и, наверное, этого ожидает. - person Jiulin Teng; 30.01.2021

Как упоминалось в статье BERT, BERT предварительно обучается с использованием двух новых задач прогнозирования без учителя: Маскированная языковая модель и прогнозирование следующего предложения. В задаче «Предсказание следующего предложения» модель принимает пару предложений в качестве входных данных и учится предсказывать, будет ли второе предложение следующей последовательностью в исходном документе или нет.

Соответственно, я думаю, что модель BERT использует отношения между двумя текстовыми предложениями в задаче классификации текста, а также в других задачах. Это отношение можно использовать, чтобы предсказать, принадлежат ли эти два предложения к одному классу или нет. Следовательно, токен [SEP] необходим для объединения этих двух предложений и определения отношения между ними.

person Soroush Faridan    schedule 15.08.2020
comment
Это не отвечает на мой вопрос: почему, когда есть одно предложение для классификации, некоторые работы / статьи добавляют SEP в конце этого предложения, а другие нет? - person user_007; 16.08.2020
comment
Я не знаю, почему некоторые работы / статьи не добавляют токен [SEP] в конце предложения. Но я думаю, что ниже объясняется, почему другие так поступают: представьте, что есть набор предложений, которые вы хотите классифицировать, например, предложение A, предложение B, предложение C и предложение D. На первом этапе BERT выделяет A и B, чтобы понять отношения между ними и предсказать, принадлежат ли они к одному классу или нет. Таким образом, объединенная последовательность будет такой: [CLS] A [SEP] B [SEP], и этот шаг следует повторить для AC, AD, BC и т. Д. На мой взгляд, это причина использования токена [SEP] в конец каждого предложения. - person Soroush Faridan; 16.08.2020
comment
Спасибо, но я знаю об этом ... это основная идея BERT. Пожалуйста, прочтите мой вопрос еще раз, особенно последнее предложение (when my task uses only single sentence). - person user_007; 16.08.2020
comment
Задачу классификации нельзя применить к одному предложению. Это должен быть набор предложений. Я не понимаю, что ты имеешь в виду. Вы можете привести пример? - person Soroush Faridan; 16.08.2020
comment
Если ваша задача - задача классификации, то приведите пример. Если нет, поясните, пожалуйста, вашу задачу. - person Soroush Faridan; 16.08.2020
comment
@SorousFaridan имеется в виду задача классификации текста, такая как классификация настроений: фильм был скучным - ›0; Актеры были фантастическими - ›1 - person MJimitater; 20.01.2021