BERT (языковая модель) — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(first version)
 
Строка 9: Строка 9:
 
[[Файл:BERT_input-repr.png|450px|thumb|right|Рис.1, представление входных данных модели]]
 
[[Файл:BERT_input-repr.png|450px|thumb|right|Рис.1, представление входных данных модели]]
 
При подаче текста на вход сети сначала выполняется его токенизация. Токенами служат слова, доступные в словаре, или их составные части {{---}} если слово отсутствует в словаре, оно разбивается на части, которые в словаре присутствуют. (см. рис. 1)
 
При подаче текста на вход сети сначала выполняется его токенизация. Токенами служат слова, доступные в словаре, или их составные части {{---}} если слово отсутствует в словаре, оно разбивается на части, которые в словаре присутствуют. (см. рис. 1)
Словарь является составляющей модели {{---}} так, в BERT-Base используется словарь около 30,000 слов.
+
Словарь является составляющей модели {{---}} так, в BERT-Base<ref>[https://github.com/google-research/bert Github — Google Research — BERT]</ref> используется словарь около 30,000 слов.
 
В самой нейронной сети токены кодируются своими [[Векторное_представление_слов | векторными представлениями]] (англ. ''embeddings''), а именно, соединяются представления самого токена (предобученные), номера его предложения, а также позиции токена внутри своего предложения. Входные данные поступают на вход и обрабатываются сетью параллельно, а не последовательно, но информация о взаимном расположении слов в исходном предложении сохраняется, будучи включённой в позиционную часть эмбеддинга соответствующего токена.
 
В самой нейронной сети токены кодируются своими [[Векторное_представление_слов | векторными представлениями]] (англ. ''embeddings''), а именно, соединяются представления самого токена (предобученные), номера его предложения, а также позиции токена внутри своего предложения. Входные данные поступают на вход и обрабатываются сетью параллельно, а не последовательно, но информация о взаимном расположении слов в исходном предложении сохраняется, будучи включённой в позиционную часть эмбеддинга соответствующего токена.
  
Строка 33: Строка 33:
 
== Возможности ==
 
== Возможности ==
  
В отличие от прежних классических языковых моделей, BERT обучает контексто-зависимые представления. Например,[https://en.wikipedia.org/wiki/Word2vec word2vec] генерирует единственный эмбеддинг для одного слова, даже если слово многозначное и его смысл зависит от контекста. Использование BERT же позволяет учитывать окружающий контекст предложения, и генерировать различные эмбеддинги в таких случаях.
+
В отличие от прежних классических языковых моделей, BERT обучает контексто-зависимые представления. Например, word2vec<ref>[https://code.google.com/archive/p/word2vec word2vec] </ref> генерирует единственный эмбеддинг для одного слова, даже если слово многозначное и его смысл зависит от контекста. Использование BERT же позволяет учитывать окружающий контекст предложения, и генерировать различные эмбеддинги в таких случаях.
  
 +
== См. также ==
 +
# [[Векторное_представление_слов | Векторное представление слов]]
 +
# [[Обработка_естественного_языка | Обработка естественного языка]]
 +
# [[Автокодировщик]]
 +
== Примечания ==
 +
<references/>
 
== Источники информации ==
 
== Источники информации ==
 
# [https://arxiv.org/abs/1810.04805 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding] {{---}} Оригинальная статья
 
# [https://arxiv.org/abs/1810.04805 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding] {{---}} Оригинальная статья
 
# [https://en.wikipedia.org/wiki/BERT_(language_model) BERT (language model)] {{---}} статья в англоязычной Википедии
 
# [https://en.wikipedia.org/wiki/BERT_(language_model) BERT (language model)] {{---}} статья в англоязычной Википедии

Версия 15:28, 22 января 2021

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

Архитектура

BERT представляет собой нейронную сеть, основу которой составляет композиция кодировщиков трансформера. BERT является автокодировщиком.

Представление данных

Рис.1, представление входных данных модели

При подаче текста на вход сети сначала выполняется его токенизация. Токенами служат слова, доступные в словаре, или их составные части — если слово отсутствует в словаре, оно разбивается на части, которые в словаре присутствуют. (см. рис. 1) Словарь является составляющей модели — так, в BERT-Base[1] используется словарь около 30,000 слов. В самой нейронной сети токены кодируются своими векторными представлениями (англ. embeddings), а именно, соединяются представления самого токена (предобученные), номера его предложения, а также позиции токена внутри своего предложения. Входные данные поступают на вход и обрабатываются сетью параллельно, а не последовательно, но информация о взаимном расположении слов в исходном предложении сохраняется, будучи включённой в позиционную часть эмбеддинга соответствующего токена.

Выходной слой основной сети имеет следующий вид: поле, отвечающее за ответ в задаче next sentence prediction, а также токены в количестве, равном входному. Обратное преобразование токенов в вероятностное распределение слов осуществляется полносвязным слоем с количеством нейронов, равным числу токенов в исходном словаре.


Обучение

Предобучение

Схема этапа предобучения BERT

BERT обучается одновременно на двух задачах — предсказания следующего предложения (англ. next sentence prediction) и генерации пропущенного токена (англ. masked language modeling). На вход BERT подаются токенизированные пары предложений, в которых некоторые токены скрыты. Таким образом, благодаря маскированию токенов, сеть обучается глубокому двунаправленному представлению языка, учится понимать контекст предложения. Задача же предсказания следующего предложения есть задача бинарной классификации — является ли второе предложение продолжением первого. Благодаря ей сеть можно обучить различать наличие связи предложений в тексте.

Интерпретация этапа предобучения — обучение модели языку.

Точная настройка (Fine-tuning)

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

Интерпретация этапа fine-tuning — обучение решению конкретной задачи при уже имеющейся общей модели языка.

Возможности

В отличие от прежних классических языковых моделей, BERT обучает контексто-зависимые представления. Например, word2vec[2] генерирует единственный эмбеддинг для одного слова, даже если слово многозначное и его смысл зависит от контекста. Использование BERT же позволяет учитывать окружающий контекст предложения, и генерировать различные эмбеддинги в таких случаях.

См. также

  1. Векторное представление слов
  2. Обработка естественного языка
  3. Автокодировщик

Примечания

Источники информации

  1. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding — Оригинальная статья
  2. BERT (language model) — статья в англоязычной Википедии