Видео проигрыватель загружается.Воспроизвести видеоВоспроизвестиБез звукаТекущее время 0:00/Продолжительность 5:27Загрузка: 0.00%0:00Тип потока ОНЛАЙНSeek to live, currently behind liveОНЛАЙНОставшееся время -5:27 1xСкорость воспроизведения2x1.75x1.5x1.25x1x, выбрано0.75x0.5xГлавыГлавыОписанияОтключить описания, выбраноСубтитрынастройки субтитров, откроется диалог настройки субтитровСубтитры выкл., выбраноЗвуковая дорожкаPicture-in-PictureПолноэкранный режимThis is a modal window.Начало диалоговго окна. Кнопка Escape закроет или отменит окноТекстColorБелыйЧерныйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйФонColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйПрозрачныйОкноColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачныйПолупрозрачныйПрозрачностьРазмер шрифта50%75%100%125%150%175%200%300%400%Стиль края текстаНичегоПоднятыйПониженныйОдинаковыйТеньШрифтПропорциональный без засечекМоноширинный без засечекПропорциональный с засечкамиМоноширинный с засечкамиСлучайныйПисьменныйМалые прописныеСбросить сбросить все найстройки по умолчаниюГотовоЗакрыть модальное окноКонец диалогового окна.
Итак, мы разобрали нейронные сети, которые появились сравнительно недавно, но, тем не менее, уже стали, в некотором роде, классическими. Теперь давайте пойдём дальше и узнаем, что же происходило позднее, были ли какие-то принципиальные усовершенствования в архитектурах после таких популярных BERT и ELMo. А также давайте обсудим, что на текущий момент является state of the art (сотами) для многих задач в области обработки текста. Чтобы понять, какие улучшения были придуманы и какое было развитие у идей BERT, ELMo, OpenAI трансформера, нужно, для начала, сформулировать какие проблемы стояли перед исследователями и инженерами[4] при работе с ванильным трансформером (ну или с BERT). Например, одна проблема: иногда бывает так, что слово в предложении связано с каким-то термином, который встречался в предыдущем абзаце текста, или даже на предыдущей странице книги.[5] Такие зависимости называются долговременными. По умолчанию, трансформер умеет работать с контекстом фиксированного размера и все фрагменты обрабатывает отдельно.[1] Соответственно, некоторые зависимости могут быть не учтены. Особенно речь идёт про долговременные зависимости. Кроме того, текст бьётся на фрагменты произвольно, что может приводить к тому, что предложение разделится на два кусочка и первый кусок попадёт в один фрагмент, а второй кусок — в другой фрагмент, что явно не очень хорошо. Чтобы преодолеть эти проблемы, сотрудники Google придумали новый трансформер и назвали его Transformer-XL.[3] Основные две идеи в этой архитектуре следующие. Первая — это рекуррентный механизм на основе сегментов, а вторая — это relative positional encoding. Давайте рассмотрим обе эти идеи и чуть подробнее про них поговорим. Итак, идея номер один: рекуррентный механизм на уровне сегментов. Давайте коротко опишем, в чём заключается основной смысл. Во время обучения, представления, вычисленные для предыдущего сегмента, будут фиксироваться и кэшироваться для повторного использования, и этот расширенный контекст модель будет учитывать, когда она обрабатывает следующий сегмент. Это дополнительное соединение увеличивает максимально возможную длину зависимости в N раз, где N — это глубина сети. И, поскольку теперь контекстная информация может перетекать через границы сегмента, это обеспечивает хорошее качество работы трансформера. Кроме того, этот механизм повторения также решает проблему фрагментации контекста, обеспечивая необходимый контекст для токенов в передней части нового сегмента. Звучит очень круто, и если мы посмотрим на схему, то можно убедиться, что теперь у долговременных зависимостей есть гораздо больше шансов не потеряться и сыграть свою роль в процессе обучения. При этом, у такого подхода всё-таки есть несколько проблем. Например, наивное применение такого рекуррентного механизма не работает совершенно, поскольку, как минимум, позиционные кодировки не являются когерентными при повторном использовании предыдущих сегментов.[2] Например, давайте рассмотрим старый сегмент с контекстными позициями: "0", "1", "2", "3". Когда новый сегмент обрабатывается, у нас есть позиции "0", "1", "2", "3", "0", "1", "2", "3" — для двух объединённых сегментов, где семантика каждого идентификатора позиции не работает для всей последовательности. Для решения этой проблемы предлагается использовать второй основной концепт из статьи про Transformer-XL — новая схема позиционного кодирования. Она делает возможным механизм повторения, который мы рассмотрели только что, который называется "рекуррентным механизмом на уровне сегментов". Кроме того, в отличие от других схем позиционного кодирования, предложенная авторами Transformer-XL формулировка использует фиксированные эмбеддинги с обучаемыми трансформациями вместо обучаемых эмбеддингов. И такая схема гораздо лучше обобщается на более длинные последовательности во время тестирования. Когда оба эти подходы объединены, Transformer-XL получает гораздо более длинный эффективный контекст, чем стандартный ванильный трансформер. Из ещё очевидных плюсов Transformer-XL стоит отметить его быструю скорость работы на этапе тестирования. Авторы статьи отмечают, что им удалось добиться ускорения в 1800 раз при сравнении с ванильным трансформером (на этапе тестирования). Теперь давайте посмотрим на схему и обратим внимание на то, как работает ванильный трансформер и Transformer-XL. Для стандартного трансформера мы видим, что каждый фрагмент вычисляется каждый раз заново. А для Transformer-XL не нужно повторное вычисление, то есть мы видим, что ускорение действительно может быть достаточно большим. Если говорить про остальные преимущества Transformer-XL, то, конечно, стоит заметить то, что Transformer-XL работает с контекстом, который примерно на 80% длиннее чем у RNN, и на 450% процентов длиннее чем у ванильного трансформера. И, также, Transformer-XL гораздо более точен при прогнозировании выборки на длинных последовательностях — как раз из-за моделирования долгосрочных зависимостей. Также, на коротких последовательностях, он тоже работает лучше за счёт решения проблемы фрагментации контекста. Той самой проблемы, когда наше предложение может разбиться на два куска, и эти кусочки отнесутся к двум разным фрагментам. Но является ли Transformer-XL наилучшей моделью на текущий момент для решения задач обработки текстов? Как оказывается, нет. State of the art (sota), на текущий момент, является сетка под названием GPT-2.
[1] Mikolov T. et al. Distributed representations of words and phrases and their compositionality //Advances in neural information processing systems. – 2013. – С. 3111-3119.
[2] Transformer-XL: Unleashing the Potential of Attention Models, January 29, 2019, Zhilin Yang and Quoc Le, Google AI
[3] Dai Z. et al. Transformer-xl: Attentive language models beyond a fixed-length context //arXiv preprint arXiv:1901.02860. – 2019.
[4] Young T. et al. Recent trends in deep learning based natural language processing //ieee Computational intelligenCe magazine. – 2018. – Т. 13. – №. 3. – С. 55-75.
[5] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473 (2014).
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.