BERT – это «Bidirectional Encoder Representations from Transformers». Я не знаю, как это вменяемо перевести на русский язык так, чтобы вас не накрыло флешбеками гугл-переводчика в его ранние годы, поэтому просто объясню, что это значит.
Первое и самое важное здесь – двунаправленность (Bidirectional). В отличие от той же GPT, которая генерирует текст токен за токеном и не «видит», что будет дальше (мы разбирали этот механизм здесь), BERT видит контекст с двух сторон. Ее задача состоит в том, чтобы предсказать токен, опираясь на другие токены, которые предшествуют данному и следуют за ним. Пускай для примера токен будет словом: «Кошка <MASK> на диване». <MASK> – это токен, который надо предсказать. В то время как GPT будет знать только о существовании «кошки» и попытается предсказать следующее слово на основании этой информации, BERT будет иметь в виду, что кошка «на диване».
Одно это уже позволяет предположить некоторые сильные и слабые стороны BERT в сравнении с GPT. Но мы не будем спешить.
BERT – это трансформер (Transformers), который состоит только из кодировщика (Encoder). GPT, напротив, декодировщик (Decoder).
Representations – это векторные представления токенов, тут, думаю, все понятно. Если не совсем понятно, подробнее можно почитать здесь.
BERT была представлена миру в далеком 2018 году в статье «BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding» («BERT: предобучение глубоких двунаправленных трансформеров для понимания текста»).
На вход BERT принимает последовательность токенов, организованную специальным образом. Последовательность содержит токены-разделители [SEP] и [CLS].
[SEP] разделяет последовательность токенов, относящихся к разным предложениям: «Кошка сидит на диване [SEP] Она лежит на футболке, которую я только что постирала». Наличие такого разделителя важно, например, когда мы тренируем модель для ответов на вопросы: «Где моя только что постиранная футболка? [SEP] Она на диване под кошкой». Без разделителя BERT нас не поймет.