Какие слои есть в модели BERT?

BERT (Bidirectional Encoder Representations from Transformers) — это трансформерная архитектура, состоящая только из энкодеров. Она разработана для получения двунаправленных контекстных представлений токенов на основе всего предложения, в отличие от традиционных языковых моделей, работающих слева направо или справа налево. Ниже приведено детальное описание всех ключевых слоёв и компонентов архитектуры BERT.

Входной слой (Input Layer)

Перед подачей в трансформер входной текст преобразуется в формат, который включает несколько элементов:

1. Token Embeddings

Каждое слово/токен (после токенизации WordPiece) преобразуется в эмбеддинг фиксированной размерности. Используется словарь (обычно ~30 тыс. токенов), и каждому присваивается соответствующий вектор.

2. Segment Embeddings

BERT может принимать в качестве входа пару предложений. Для различения их используется сегментная маркировка:

  • Первый сегмент (A) → вектор сегмента 0

  • Второй сегмент (B) → вектор сегмента 1

Если вход содержит только одно предложение, все сегментные эмбеддинги равны 0.

3. Position Embeddings

Трансформеры не имеют рекуррентной структуры, поэтому информация о позиции вводится отдельно. Для каждого положения в последовательности используется свой вектор позиционного кодирования.

Все три эмбеддинга складываются:

Einput=Etoken+Esegment+EpositionE_{\\text{input}} = E_{\\text{token}} + E_{\\text{segment}} + E_{\\text{position}}  

Encoder Stack (12 / 24 / 48 блоков)

Каждый блок энкодера в BERT повторяется N раз (12 в BERT-base, 24 в BERT-large) и состоит из следующих компонентов:

1. Multi-Head Self-Attention Layer

Каждый токен «смотрит» на все остальные токены, включая себя, чтобы собрать контекстную информацию. Это реализуется через механизм многоголового внимания:

  • Векторы запроса (Q), ключа (K) и значения (V) извлекаются через линейные проекции.

  • Attention формула:

Attention(Q,K,V)=softmax(QKdk)V\\text{Attention}(Q, K, V) = \\text{softmax} \\left( \\frac{QK^\\top}{\\sqrt{d_k}} \\right)V
  • Множественные attention головы (например, 12) работают параллельно, обучаясь фокусироваться на разных аспектах.

2. Add & LayerNorm (после Attention)

Результат attention-преобразования складывается с исходным входом (residual connection) и нормализуется через LayerNorm.

LayerNorm(x+Attention(x))\text{LayerNorm}(x + \text{Attention}(x))

3. Feed-Forward Layer (FFN)

Каждый токен обрабатывается через одинаковую двухслойную нейросеть:

FFN(x)=max(0,xW1+b1)W2+b2\\text{FFN}(x) = \\max(0, xW_1 + b_1)W_2 + b_2
  • Первый слой обычно имеет размерность 3072 (в BERT-base).

  • Второй слой возвращает обратно к 768 (размерность эмбеддинга).

4. Add & LayerNorm (после FFN)

Применяется такая же остаточная связь и нормализация:

LayerNorm(x+FFN(x))\\text{LayerNorm}(x + \\text{FFN}(x))

Структура одного слоя энкодера в BERT:

Input 
├──> Multi-Head Attention  Add & Norm 
├──> FFN  Add & Norm 
Output

CLS-токен и выход модели

1. [CLS]-токен

На первой позиции входа всегда добавляется специальный токен [CLS]. Он используется для задач классификации. Его выходной вектор на последнем слое берётся как агрегация информации обо всей последовательности.

2. [SEP]-токен

Разделяет предложения внутри одного входа. Например:

\[CLS\] Текст 1 \[SEP\] Текст 2 \[SEP\]

Выходные представления

BERT можно использовать несколькими способами:

  1. Выход с последнего слоя:

    • Получение представлений токенов из последнего энкодера.

    • Используется для задач NER, классификации, question answering.

  2. Агрегация токенов (например, [CLS]):

    • Для классификации всего предложения.

    • Выходной вектор [CLS] → dense слой → softmax.

  3. Использование нескольких слоёв:

    • Иногда берут сумму, среднее или конкатенацию выходов нескольких верхних слоёв.

Выходные слои для задач

BERT — это универсальная архитектура. Для разных задач добавляются специализированные головы:

  • Sequence Classification:

    • Один линейный слой поверх [CLS]

    • Softmax/Logits → классы

  • Token Classification (NER, POS):

    • Линейный слой на каждый токен

    • Softmax по каждому токену

  • Question Answering:

    • Два линейных слоя: один для start-индекса, второй — для end-индекса
  • Masked Language Modeling (MLM):

    • На случайно замаскированные токены накладывается softmax-классификатор, предсказывающий правильное слово.
  • Next Sentence Prediction (NSP):

    • Предсказывает, является ли пара предложений связанными.

Пример конфигурации BERT-base

Параметр Значение
Кол-во энкодеров 12
--- ---
Attention головы 12
--- ---
Размер эмбеддинга 768
--- ---
FFN размер 3072
--- ---
Макс. длина 512 токенов
--- ---
Обучение MLM + NSP
--- ---
Позиционные эмбеддинги Learnable
--- ---

Таким образом, модель BERT представляет собой стек энкодеров, каждый из которых использует self-attention и полносвязные слои. Эта структура позволяет эффективно обучать глубокие контекстные представления, которые применимы практически во всех NLP-задачах: от классификации и извлечения сущностей до генерации и понимания текста.