Видео проигрыватель загружается.Воспроизвести видеоВоспроизвестиБез звукаТекущее время 0:00/Продолжительность 3:04Загрузка: 0.00%0:00Тип потока ОНЛАЙНSeek to live, currently behind liveОНЛАЙНОставшееся время -3:04 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 нужен особенный формат входных данных. Так — последовательность входных токенов должна начинаться с метки "CLS", а, в случае если мы подаём на вход два предложения, то токены первого предложения отделим от токенов второго меткой "SEP". В чём же смысл этой таинственной метки "CLS"? Давайте представим, что процесс предобучения окончен и мы дообучаем модель — например, хотим классифицировать письма на "спам" и "не спам" — уже знакомая нам задача. Мы подали в BERT последовательность из N токенов, а на выходе мы получим N векторов. Но, в качестве фичей для дальнейшей классификации, мы будем использовать только единственный, первый вектор — тот самый, относящийся к метке "CLS". Это может звучать немного странно и непривычно. Тем не менее, BERT учится именно в этом векторе концентрировать информацию обо всей последовательности. В статье про BERT предлагается, в качестве классификатора на этапе дообучения, использовать всего один линейный слой с софтмаксом. Также, как и OpenAI трансформер, BERT можно дообучить на решение многих других задач, не только на решение задачи классификации. Например — можно научить BERT работать с вопросно-ответным поиском или переводить предложения с французского на английский, либо на любой другой язык. Кроме того, векторы, которые нам выдаёт предобученный BERT, можно использовать в качестве эмбеддингов. Остаётся вопрос — какие именно векторы брать? Можно использовать векторы с последнего слоя (кажется довольно логичный вариант). Но, как оказалось, существуют более эффективные схемы. Например, можно суммировать векторы со всех 12, или, например, последних четырёх слоёв. Авторы статьи утверждают, что наилучшего качества, при решении задачи извлечения именованных сущностей с помощью эмбеддингов (а именно этой задачей проверялось, какие варианты комбинаций эмбеддингов с разных слоёв лучше работают), сконкатенировав векторы с последних четырёх слоёв и использовав полученные вектора в качестве эмбеддингов, можно достичь наилучших результатов. Отлично! Но почему эти эмбеддинги так хорошо работают? Давайте вспомним проблему омонимии. В стандартном word2vec (или в GloVe, или в FastText) омонимичные слова (например, слово "косой" из предложения "косил косой косой косой") будут иметь одинаковый эмбеддинг, хотя смысл и даже часть речи у этих слов "косой", три раза встретившихся в предложении, будет совершенно разной. BERT же выдаёт эмбеддинг слова в контексте — то есть, для одного и того же слова, употреблённого в разных контекстах, мы можем получить разные векторы. Получается так, потому, что проходя через self-attention блоки BERT, слово выступает в роли query, key и value несколько раз, что дополнительно обогащает итоговый вектор слова информацией о взаимосвязях его с другими словами в предложении, о его взаимосвязях с контекстом. Возникает вопрос: а был ли BERT первой моделью, которая умеет выдавать контекстуализированные эмбеддинги? Оказывается, что нет.
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.