Знаменитая улица Сезам
Аббревиатуры для предварительно обученных языковых моделей в основном представляют собой символы «Улицы Сезам». Это, очевидно, замысел известных мастеров искусства. Они могли бы даже отказаться от аббревиатуры, чтобы придумать название «Улицы Сезам».
Модели, показанные на рисунке выше (кроме Big Bird, потому что такой модели нет), имеют между собой нечто общее, то есть они могут встраивать слово через контекст предложения, и существует множество сетевых архитектур, которые могут для достижения этой цели. , такие как LSTM, уровни самоконтроля, древовидная модель (сосредоточьтесь на грамматике, обычно работают плохо, работают хорошо, только когда структура грамматики очень строгая) и т. д.
Smaller Model
Предварительно обученные языковые модели становятся все больше и больше, раздутыми и менее интересными. Однако уменьшение размера модели, как мы идем в Африку, может повысить покупательную способность юаня в городах первого уровня. Это BERT для бедных. НапримерDistill BERT,Tiny BERT,Mobile BERT,Q8BERT,ALBERT
Лучше научить человека ловить рыбу, чем дать ему рыбу Какие есть способы уменьшить Модель? может относиться кСжатие модели учителя Ли Хунъивидеоуроки иAll The Ways You Can Compress BERTЭта статья. Общие методы следующие
- Обрезка сети
- Дистилляция знаний Дистилляция знаний
- Квантование параметров
- Архитектурный дизайн
Network Architecture Improvements
В дополнение к сжатию модели более популярными попытками в последние годы являются проектирование архитектуры модели. НапримерTransfomer-XLОчень длинные последовательности можно обрабатывать, понимая содержимое фрагментов;ReformerиLongformerСложность само-внимания может быть уменьшена сприбытьеще ниже
How to Fine-tune
В этой части г-н Ли Хунъи много говорил, но лично мне кажется, что многие из них относительно просты. Например, как классифицировать предложение при вводе[CLS]
За выходными данными следует слой линейной классификации, или выходные данные всех токенов рассчитываются как среднее, а затем отправляются в слой линейной классификации. Целью двух вышеупомянутых методов является классификация, но существенное различие между ними заключается в том, что то, что используется для представления встраивания предложения, лучше, Вы можете взглянуть на это.Sentence-BERTдиссертация илиПриговор-детали BERTВ этой статье есть несколько экспериментов, чтобы доказать, какие вещи лучше представляют вектор предложения.
Extraction-based QA
Что вы можете не увидеть, так это то, как использовать предварительно обученную модель для выполнения задач QA (ответы на вопросы) на основе извлечения.
Например, теперь закиньте документ и вопрос в QA Model, модель выдаст два целых числаи, эти два целых числа представляют ответ на этот вопрос первым в документесловослова, а именно
Интересен и способ получения этих двух целых чисел. Сначала мы генерируем два вектора (оранжевый и синий на приведенном выше рисунке), используем один из (оранжевых) векторов для создания скалярного произведения с выводом всех позиций документа, а затем проходим через Softmax, чтобы получить ряд значения вероятности, мы берем максимальную вероятность Нижний индекс, где находится значение (фактически argmax), получает начало ответа
где заканчивается ответСпособ его получения аналогичен, то есть с помощью другого (синего) вектора сделать скалярное произведение с выводом всех позиций документа, а также получить индекс максимальной вероятности после Softmax. Тогда окончательный ответслова в этом диапазоне
Вернемся к теме, как настроить предварительно обученную языковую модель? Один метод заключается в том, чтобы исправить предварительно обученную модель и использовать ее в качестве экстрактора признаков.Во время обучения обновляются только параметры последующей модели для конкретной задачи; другой метод заключается в том, чтобы не исправлять параметры предварительно обученной языковой модели. , все параметры обновляются во время обучения. Однако, согласно многим проведенным мной экспериментам, эффект последнего лучше, чем первого, но проблема в том, что многие предварительно обученные модели очень велики, и часто 11 ГБ видеопамяти недостаточно, поэтому первый метод имеет быть использованным.
Combination of Features
Мы знаем, что BERT имеет много уровней кодирования, и общепринятая практика состоит в том, чтобы извлекать выходные данные последнего уровня для последующих задач, но действительно ли это оптимальное решение? На самом деле, кто-то провел эксперимент над задачей NER, комбинируя выходы разных слоев различными способами, и результаты следующие:
Сяо Хан создал Github под названиемbert-as-service— это проект с открытым исходным кодом, целью которого является использование BERT для создания встраивания слов в ваш текст. Он пробовал разные способы совмещения этих вложений, и в проектеFAQНекоторые выводы и обоснования представлены на странице
Точка зрения Сяо Хань такова:
- Первый слой — это слой встраивания, так как он не имеет контекстной информации, векторы одного и того же слова в разных контекстах одинаковы
- По мере углубления в сеть встраивание слов получает все больше и больше контекстной информации от каждого слоя.
- Однако по мере того, как вы приближаетесь к последнему слою, вложения слов начинают собирать информацию для конкретных задач предварительной подготовки BERT (MLM и NSP).
- Разумнее использовать предпоследний слой
Why Pre-train Models?
Почему мы используем эти предварительно обученные модели? Очевидная причина в том, что у нас нет столько денег, чтобы обучить относительно большую модель с нуля, поэтому мы можем просто использовать то, что было обучено другими.
Конечно, статья с EMNLP 2019Visualizing and Understanding the Effectiveness of BERTС академической точки зрения тщательно анализируется причина использования модели предварительного обучения.В статье показано, что модель предварительного обучения может значительно ускорить сходимость потерь, а потери труднее уменьшить без использования предварительного обучения. -тренировочная модель. Можно понять, что предварительно обученная модель обеспечивает лучшую инициализацию, чем случайная инициализация.
Другой вывод заключается в том, что предварительно обученные модели могут значительно увеличить способность модели к обобщению. На приведенном выше рисунке видно, что когда модели заданы разные параметры, потери в конечной точке модели после обучения будут достигать положения локальных минимумов. Чем круче положение локальных минимумов, тем хуже способность к обобщению.Поскольку вход изменяется незначительно, его потери будут сильно меняться, и, наоборот, чем более гладкие локальные минимумы, тем сильнее способность к обобщению.
ELMo
ELMo в настоящее время является относительно известной двусторонней сетью. Традиционный LSTM просто проходит через предложение слева направо, тогда информация, по которой прогнозируется следующий токен, может зависеть только от содержимого слева от него.Чтобы действительно использовать контекст этого токена, мы можем пройти через предложение снова справа налево. , а именно BiLSTM. Но на самом деле этого недостаточно, потому что при кодировании модели, он не видит часть после предложения, в то время как в кодированииКогда , предыдущая часть предложения не учитывается, поэтому ELMo на самом деле не является двунаправленным, когда кодирует в нижней части. На верхнем уровне из-за того, что вложение с обеих сторон является согласованным, он одновременно видит только двустороннюю информацию.
BERT
Для модели класса Transformer (обычно BERT) механизм внутреннего внимания позволяет ему одновременно видеть контекст, и каждый токен может взаимодействовать друг с другом.Единственное, что нужно сделать, это случайным образом использовать токен для[MASK]
Просто прикрой это
Если вы вернетесь в историю, вернитесь кWord2vecКогда революция НЛП только началась, вы обнаружите, что метод обучения CBOW почти такой же, как и у BERT.Основное различие между ними заключается в том, что длина диапазона, на котором может сосредоточиться BERT, является переменной, в то время как диапазон CBOW фиксированный.
Whole Word Masking (WWM)
Действительно ли хорошо случайным образом маскировать определенный токен? В китайском языке слова состоят из нескольких иероглифов, а иероглиф — это токен. Если мы случайным образом замаскируем определенный токен, модели может не потребоваться изучение большого количества семантических зависимостей, и она может легко предсказать токен по предыдущему слову или последующему слову. Для этого нам нужно немного увеличить сложность.То, что покрывается, является не определенным токеном, а определенным словом (span).Модель должна изучить больше семантики, чтобы предсказать покрываемый промежуток.Это BERT-wwm. Точно так же мы можем расширить диапазон слов до уровня фразы, уровня сущности (ЭРНИ).
SpanBERT
Существует также усовершенствование BERT под названием SpanBERT. это будет покрывать каждый разжетоны, из нихоснован на вероятностях, показанных на рисунке выше. Экспериментальные результаты показали, что этот метод выбора количества токенов для покрытия на основе вероятности лучше подходит для некоторых задач.
SpanBERT также предлагает метод обучения под названием Span Boundary Objective (SBO). Как правило, мы обучаем только замаскированные токены. И SBO надеется предсказать, какие вещи находятся в охваченном диапазоне, посредством вывода левой и правой сторон охваченного диапазона. Как показано на рисунке выше,иВыходные данные и индекс отправляются в следующую сеть, где этот индекс указывает, какую позицию в диапазоне мы хотим предсказать.
XLNet
О XLNet более подробное объяснение можно посмотреть здесьблог. Проще говоря, XLNet считает, что этапы обучения и тестирования модели BERT не унифицированы (этап обучения[MASK]
токен, а не в бета-версии), поэтому могут возникнуть некоторые проблемы. Если вы посмотрите на XLNet с точки зрения авторегрессии, то на самом деле он берет входные данные не по порядку в качестве входных данных, а затем предсказывает следующий токен слева направо. Если мы посмотрим на XLNet с точки зрения AutoEncoder (BERT), мы надеемся, что согласно[MASK]
левая или правая информация для прогнозирования[MASK]
слово местонахождение. В отличие от BERT, ввод XLNet не[MASK]
Присутствие
MASS / BART
В модели класса BERT отсутствует возможность генерировать предложения, поэтому она не подходит для задачи Seq2Seq, а две модели MASS и BART решают проблему, в которой BERT не умеет генерировать. Мы сначала вводим предложение в кодировщик, Мы надеемся, что выход декодера является входом кодировщика, но следует отметить, что мы должны уничтожить вход кодировщика в определенной степени, потому что, если нет повреждений , декодер напрямую преобразует ввод кодировщика.Просто введите копию, он может не узнать ничего полезного
Подход MASS заключается в случайном использовании некоторых частей ввода.[MASK]
Токен закрыт. Выходные данные не должны восстанавливать полную последовательность предложений, если это возможно.[MASK]
часть прогноза верна
В документе BART предлагается множество методов: помимо предоставления случайных масок входной последовательности, он также может напрямую удалять токен или случайным образом упорядочивать и комбинировать их. Для более подробного объяснения BART вы можете прочитать этостатья
UniLM
Существует также модель под названием UniLM, которая может быть либо кодировщиком, либо декодером, либо Seq2Seq. UniLM состоит из множества преобразователей и одновременно выполняет три вида обучения, включая BERT в качестве кодировщика, GPT в качестве декодера и MASS/BART в качестве метода Seq2Seq. Когда он используется как Seq2Seq, ввод делится на два фрагмента.Когда вводится первый фрагмент, токены на фрагменте могут обращать внимание друг на друга, но второй фрагмент может видеть только токен слева
ELECTRA
Интенсивность обучения, необходимая для предсказания вещи, очень велика. ELECTRA хочет упростить этот вопрос и превратить его в проблему бинарной классификации, чтобы определить, было ли случайно заменено определенное входное слово.
Но вопрос в том, как заменить некоторые слова, убедившись, что грамматика правильная, а семантика не такая странная? Потому что, если токен заменить на что-то странное, модель легко обнаружит, и ELECTRA не узнает ничего интересного. В документе используется другой относительно небольшой BERT для вывода замаскированных слов.Здесь нет необходимости использовать хороший BERT, потому что, если эффект BERT слишком хорош, он будет напрямую выводить те же слова, что и оригинал, а это не то, что мы ожидаем. . . . Эта архитектура немного похожа на GAN, но на самом деле это не GAN, потому что Генератору GAN приходится обманывать Дискриминатор при обучении. Небольшой BERT здесь обучается сам по себе, пока предсказывается положение маски, он не имеет ничего общего с правильным или нет последующего предсказания модели.
Тренировочный эффект ELECTRA поразителен: при том же объеме предварительной подготовки оценка GLUE намного лучше, чем у BERT, и для достижения эффекта XLNet требуется всего 1/4 вычислений.
T5
Предварительное обучение языковых моделей требует слишком много ресурсов, и обычные люди не могут делать это случайно. У Google есть документ под названием T5, в котором показаны огромные финансовые и вычислительные ресурсы Google.В этом документе однажды были опробованы все виды методов предварительного обучения, а затем были сделаны некоторые выводы, так что другим не нужно проводить исследования.