«В нашем датасете был текст, который состоял из повторения слова „Адыгея“ и весил несколько гигабайтов

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Мы уже рассказали, как появились языковые модели и как они научились беседовать с людьми. Но до последнего времени они умели делать это полноценно только по-английски. Например, для обучения GPT-3 использовали всего 7 процентов неанглийских текстов, так что нейросеть практически не знала другие языки, в том числе русский. А значит, её нельзя было интегрировать в русскоязычные сервисы.

Из этого текста вы узнаете, как разработчики Яндекса учили русскому свою генеративную модель YaLM (Yet another Language Model), на которую их вдохновила GPT-3.

Повторим пройденное

Напомним, что языковая модель — это система, которая умеет дописывать текст. Не больше и не меньше. Вы говорите модели: «В день рождения желаю тебе…» — а она дописывает: «…здоровья» или «…успехов в работе и учёбе» или «…встретить свою любовь и уехать с ней на необитаемый остров». Работает это потому, что модель видела очень много текстов, написанных людьми, и на них научилась предсказывать вероятные концовки.

В какой-то момент люди заметили, что языковые модели зашли в своём развитии довольно далеко. Например, хорошей модели можно написать текст «Основные плюсы каркасной байдарки» — и она в ответ перечислит вполне релевантные вещи, с которыми согласятся и бывалые байдарочники: «прочность», «высокую мореходность» и так далее. Или попросить её продолжить текст «Столицей Непала является» — и она допишет «Катманду». Или написать ей «У оленя четырёхкамерное сердце, а у рыбы» — и получить текст, начинающийся со словам «двухкамерное».

Кстати, все примеры реальные и получены с помощью модели YaLM от Яндекса.

То есть, обучаясь генерировать тексты на основе миллионов других текстов, модели впитали в себя разнообразные знания о мире — примерно как мы в школе. И при грамотном запросе модели могут эти знания выдавать. Можно подсунуть модели довольно интеллектуальные задачи, если завернуть их в формат такого вот дописывания текста. Причём чем больше становились модели — тем лучше они эти задачи решали. И тем меньше дополнительной настройки им надо для новой задачи.

Поэтому сегодня обучать большие языковые модели — это передний край науки об искусственном интеллекте. И Яндекс вышел на этот передний край с моделью YaLM.

На чём училась YaLM

Умная языковая модель складывается из двух составляющих: хороший алгоритм для обучения и большие обучающие данные, то есть коллекция текстов. О современных алгоритмах для языкового моделирования мы уже рассказывали, теперь поговорим о текстах.

Модель GPT-3 обучалась на 600 гигабайтах текста, в основном — из англоязычного интернета. Модель YaLM от Яндекса, вдохновлённая GPT-3, обучена на нескольких терабайтах русскоязычных текстов. Именно информация, содержащаяся в этих текстах и обобщённая YaLM в процессе обучения, позволяет модели хорошо генерировать текст на русском языке и порой проявлять признаки интеллектуальности.

Откуда Яндекс взял все эти тексты? Конечно, тоже из интернета. Правда, если собирать весь русскоязычный текстовый интернет, коллекция получится слишком большая — сотни терабайтов или даже петабайты. Поэтому первоначально отобранные тексты фильтровали. Во-первых, тексты в интернете многократно повторяются — дубли из коллекции удалялись. Дедупликация особенно важна, чтобы исключить совпадение текстов в обучающих и в тестовых данных — то есть в текстах, которые модель не видела при обучении и на которых тестируют её способности в порождении правдоподобного текста.

Во-вторых, интернет полон мусора, который лишь формально является текстом. «Например, в нашем датасете был текст, который состоял из повторения слова „Адыгея“ и весил несколько гигабайтов. То есть там были миллиарды повторений слова „Адыгея“. Такие тексты мы тоже выкидывали», — говорит Николай Зинов, один из создателей YaLM. Из обучающих данных автоматически удалялись слишком длинные и слишком короткие тексты, тексты с подозрительно короткими предложениями и однотипные тексты вроде шаблонных объявлений.

Датасетом называется совокупность данных, собранных для какой-то цели. В задачах языкового моделирования датасет — это просто коллекция текстов. Её ещё иногда называют корпусом.

Одновременно с фильтрацией некачественных текстов разработчики модели YaLM повышали для неё приоритет качественных. К ним относятся русскоязычная Википедия, датасет «Тайга» в 5 миллиардов слов, состоящий в основном из прозы, книги, а также новости из базы Яндекс.Новостей. Такие тексты учитывались моделью с большей значимостью, или весом — то есть правилам, которые модель могла вывести из таких текстов, она далее уделяла больше внимания, чем остальным. Именно поэтому YaLM в большинстве случаев не страдает от грамматических ошибок (хотя оказии случаются — всё же в данных для обучения есть и не очень грамотные тексты из интернета).

картинка для статьи «Словаря Даля не хватит»

Углублённое изучение русского

Языковые модели — это область, в которой пока побеждает метод «грубой силы». Как только учёным удаётся увеличить размеры самой модели и объём данных, на которых она учится, — растёт и качество её работы. Ответы модели становятся более последовательными и реалистичными, а качество работы построенных на её основе продуктов — ощутимо возрастает. Поэтому побеждает тот, кому хватает «железа» и данных, чтобы натренировать ещё более гигантскую модель.

В разных версиях модели YaLM от Яндекса — от 1 до 13 миллиардов параметров. Параметры модели можно сравнить с множеством маленьких вентилей, через которые проходят данные. Чем больше параметров у модели — тем больше закономерностей об устройстве языка она может выучит и тем лучше потом ловит тонкости и нюансы конкретных фраз.

Сам процесс обучения языковой модели в очень упрощённом виде выглядит так. Фрагменты текстов режутся на слова или даже на кусочки слов. Слова или их кусочки в таких случаях называют токенами. Затем каждый такой токен превращается в набор чисел фиксированной длины — его эмбеддинг, сжатое векторное представление (подробно о них мы рассказывали здесь). Сначала этот эмбеддинг случайный, затем, в процессе обучения модели, числа в нём начинают отражать его связи с другими словами, то есть обобщённый контекст токена: например, числа в эмбеддинге слова «фонарь» оказываются ближе к «лампе», а «кошки» — к «собаке».

На основе этих сжатых векторных представлений модель уже обучается генерировать продолжение к тексту. Если продолжение не похоже на реальное (а поначалу оно точно не будет похоже) — модель начинает «крутить вентили», пытаясь уменьшить долю ошибки. Веса, то есть циферки на вентилях, перераспределяются, входные эмбеддинги тоже меняются, после чего модель совершает следующую попытку предсказания текста. И так — пока модель не подберёт параметры удачно и не начнёт генерировать что-то близкое к реальным текстам. Этот процесс происходит долго и с огромным количеством вычислений. Именно для этого модели и нужно столько обучающих данных — чтобы научиться продолжать разнообразные тексты, ей надо пропустить очень много готовых разнообразных текстов через себя.

В случае обучения такой огромной модели, как YaLM, прогонять через одну модель все тексты последовательно один за другим нельзя — это заняло бы годы даже на мощнейших видеокартах. Поэтому Яндексу пришлось организовывать сложный процесс распараллеливания обучения.

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

Здесь не подошёл простой способ распараллеливания, когда разные видеокарты обучают одну и ту же модель на своём кусочке данных, попутно обмениваясь параметрами, чтобы все копии модели сохраняли синхронизацию друг с другом. Когда параметров миллиард и больше — модель в принципе не влезает в одну видеокарту. Поэтому пришлось применять более хитрые подходы.

Скажем, на каждом шаге половину вентилей вращает одна видеокарта, а другую половину — другая. То есть фактически половинки модели учатся отдельно друг от друга на разных видеокартах — опять же обмениваясь результатами по ходу, чтобы обучение в целом сходилось. На программном уровне любая модель представляет собой перемножение множества табличек с числами параметров, и у математиков есть способы производить такие операции по кусочкам, а затем соединять.

картинка для статьи «Словаря Даля не хватит»

Связь с реальностью

Сложности с обучением гигантских моделей окупаются итоговым результатом. Размеры позволяют моделям вроде GPT-3 или YaLM генерировать длинный связный текст на заданную тему, а также хранить в себе много знаний о мире. Это делает порождаемые тексты более осмысленными.

«Какая-нибудь маленькая модель может внезапно сгенерировать, что камень упал в воду и поплыл. А модель большего размера, скорее всего, таким страдать не будет. Она понимает, что камень, упавший в воду, тонет. Чем больше модель, тем больше она запоминает фактической информации, тем больше из неё можно вытащить этих фактов», — объясняет Николай Зинов.

Большие модели умеют настраиваться на новую задачу всего на нескольких примерах — это называется few-shot learning. Например, вы подаёте языковой модели текст:

Хариус — рыба, жужелица — насекомое, пингвин

И она продолжит: «птица».

Хотя специально модель никогда не учили классифицировать животных. И в другом контексте она бы про пингвина сказала что-то ещё. Например, можно попытаться с помощью обучения на нескольких примерах настроить модель на задачу определения места жительства животного:

Лев — Африка, гризли — Америка, кенгуру — Австралия, пингвин

И она ответит не только «Антарктида». Но и добавит от себя: «павлин — Азия, попугай — Африка».

Раньше модели не были способны к обучению на нескольких примерах: их нужно было обучать под каждую задачу на отдельном наборе данных. Современные гигантские языковые модели умеют схватывать задачи на лету — поэтому варианты их применений безграничны.

Сейчас модель YaLM уже встроена голосового помощника Алису — она помогает обрабатывать запросы пользователя и генерирует некоторую часть ответов. А ещё YaLM используется в Поиске — об этом далее.


Источник: techno.yandex.ru

Комментарии: