8
правок
Изменения
first version
'''BERT''' (англ. '''B'''idirectional '''E'''ncoder '''R'''epresentations from '''T'''ransformers) — языковая модель, основанная на архитектуре ''трансформер'', предназначенная для предобучения языковых представлений с целью их последующего применения в широком спектре задач [[Обработка_естественного_языка | обработки естественного языка]].
== Архитектура ==
BERT представляет собой нейронную сеть, основу которой составляет композиция ''кодировщиков'' трансформера. BERT является [[Автокодировщик | автокодировщиком]].
=== Представление данных ===
[[Файл:BERT_input-repr.png|450px|thumb|right|Рис.1, представление входных данных модели]]
При подаче текста на вход сети сначала выполняется его токенизация. Токенами служат слова, доступные в словаре, или их составные части {{---}} если слово отсутствует в словаре, оно разбивается на части, которые в словаре присутствуют. (см. рис. 1)
Словарь является составляющей модели {{---}} так, в BERT-Base используется словарь около 30,000 слов.
В самой нейронной сети токены кодируются своими [[Векторное_представление_слов | векторными представлениями]] (англ. ''embeddings''), а именно, соединяются представления самого токена (предобученные), номера его предложения, а также позиции токена внутри своего предложения. Входные данные поступают на вход и обрабатываются сетью параллельно, а не последовательно, но информация о взаимном расположении слов в исходном предложении сохраняется, будучи включённой в позиционную часть эмбеддинга соответствующего токена.
Выходной слой основной сети имеет следующий вид: поле, отвечающее за ответ в задаче ''next sentence prediction'', а также токены в количестве, равном входному.
Обратное преобразование токенов в вероятностное распределение слов осуществляется полносвязным слоем с количеством нейронов, равным числу токенов в исходном словаре.
== Обучение ==
=== Предобучение ===
[[Файл:BERT_pre-training.png|350px|thumb|right|Схема этапа предобучения BERT]]
BERT обучается одновременно на двух задачах {{---}} предсказания следующего предложения (англ. ''next sentence prediction'') и генерации пропущенного токена (англ. ''masked language modeling''). На вход BERT подаются токенизированные пары предложений, в которых некоторые токены скрыты. Таким образом, благодаря маскированию токенов, сеть обучается глубокому двунаправленному представлению языка, учится понимать контекст предложения. Задача же предсказания следующего предложения есть задача бинарной классификации {{---}} является ли второе предложение продолжением первого. Благодаря ей сеть можно обучить различать наличие связи предложений в тексте.
Интерпретация этапа предобучения {{---}} обучение модели языку.
=== Точная настройка (Fine-tuning) ===
Этот этап обучения зависит от задачи, и выход сети, полученной на этапе предобучения, может использоваться как вход для решаемой задачи. Так, например, если решаем задачу построения [https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%BD%D0%BE-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 вопросно-ответной системы], можем использовать в качестве ответа последовательность токенов, следующую за разделителем предложений. В общем случае дообучаем модель на данных, специфичных задаче: знание языка уже получено на этапе предобучения, необходима лишь коррекция сети.
Интерпретация этапа fine-tuning {{---}} обучение решению конкретной задачи при уже имеющейся общей модели языка.
== Возможности ==
В отличие от прежних классических языковых моделей, BERT обучает контексто-зависимые представления. Например,[https://en.wikipedia.org/wiki/Word2vec word2vec] генерирует единственный эмбеддинг для одного слова, даже если слово многозначное и его смысл зависит от контекста. Использование BERT же позволяет учитывать окружающий контекст предложения, и генерировать различные эмбеддинги в таких случаях.
== Источники информации ==
# [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)] {{---}} статья в англоязычной Википедии
== Архитектура ==
BERT представляет собой нейронную сеть, основу которой составляет композиция ''кодировщиков'' трансформера. BERT является [[Автокодировщик | автокодировщиком]].
=== Представление данных ===
[[Файл:BERT_input-repr.png|450px|thumb|right|Рис.1, представление входных данных модели]]
При подаче текста на вход сети сначала выполняется его токенизация. Токенами служат слова, доступные в словаре, или их составные части {{---}} если слово отсутствует в словаре, оно разбивается на части, которые в словаре присутствуют. (см. рис. 1)
Словарь является составляющей модели {{---}} так, в BERT-Base используется словарь около 30,000 слов.
В самой нейронной сети токены кодируются своими [[Векторное_представление_слов | векторными представлениями]] (англ. ''embeddings''), а именно, соединяются представления самого токена (предобученные), номера его предложения, а также позиции токена внутри своего предложения. Входные данные поступают на вход и обрабатываются сетью параллельно, а не последовательно, но информация о взаимном расположении слов в исходном предложении сохраняется, будучи включённой в позиционную часть эмбеддинга соответствующего токена.
Выходной слой основной сети имеет следующий вид: поле, отвечающее за ответ в задаче ''next sentence prediction'', а также токены в количестве, равном входному.
Обратное преобразование токенов в вероятностное распределение слов осуществляется полносвязным слоем с количеством нейронов, равным числу токенов в исходном словаре.
== Обучение ==
=== Предобучение ===
[[Файл:BERT_pre-training.png|350px|thumb|right|Схема этапа предобучения BERT]]
BERT обучается одновременно на двух задачах {{---}} предсказания следующего предложения (англ. ''next sentence prediction'') и генерации пропущенного токена (англ. ''masked language modeling''). На вход BERT подаются токенизированные пары предложений, в которых некоторые токены скрыты. Таким образом, благодаря маскированию токенов, сеть обучается глубокому двунаправленному представлению языка, учится понимать контекст предложения. Задача же предсказания следующего предложения есть задача бинарной классификации {{---}} является ли второе предложение продолжением первого. Благодаря ей сеть можно обучить различать наличие связи предложений в тексте.
Интерпретация этапа предобучения {{---}} обучение модели языку.
=== Точная настройка (Fine-tuning) ===
Этот этап обучения зависит от задачи, и выход сети, полученной на этапе предобучения, может использоваться как вход для решаемой задачи. Так, например, если решаем задачу построения [https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%BD%D0%BE-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 вопросно-ответной системы], можем использовать в качестве ответа последовательность токенов, следующую за разделителем предложений. В общем случае дообучаем модель на данных, специфичных задаче: знание языка уже получено на этапе предобучения, необходима лишь коррекция сети.
Интерпретация этапа fine-tuning {{---}} обучение решению конкретной задачи при уже имеющейся общей модели языка.
== Возможности ==
В отличие от прежних классических языковых моделей, BERT обучает контексто-зависимые представления. Например,[https://en.wikipedia.org/wiki/Word2vec word2vec] генерирует единственный эмбеддинг для одного слова, даже если слово многозначное и его смысл зависит от контекста. Использование BERT же позволяет учитывать окружающий контекст предложения, и генерировать различные эмбеддинги в таких случаях.
== Источники информации ==
# [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)] {{---}} статья в англоязычной Википедии