«В нашем датасете был текст, который состоял из повторения слова „Адыгея“ и весил несколько гигабайтов |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-11-20 13:53 Мы уже рассказали, как появились языковые модели и как они научились беседовать с людьми. Но до последнего времени они умели делать это полноценно только по-английски. Например, для обучения 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 Комментарии: |
|