Какие слои есть в модели 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(QK⊤dk)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 можно использовать несколькими способами:
-
Выход с последнего слоя:
-
Получение представлений токенов из последнего энкодера.
-
Используется для задач NER, классификации, question answering.
-
-
Агрегация токенов (например, [CLS]):
-
Для классификации всего предложения.
-
Выходной вектор [CLS] → dense слой → softmax.
-
-
Использование нескольких слоёв:
- Иногда берут сумму, среднее или конкатенацию выходов нескольких верхних слоёв.
Выходные слои для задач
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-задачах: от классификации и извлечения сущностей до генерации и понимания текста.