Выполняем глубокое обучение быстро при помощи Fast AI
Нейронные сети повсеместно используются для выполнения самых разных задач, можно даже сказать, что это самый настоящий «универсальный солдат». Однако, может показаться, что начать работать с нейросетями довольно сложно, несмотря на наличие огромного количества информации в источниках, существование готовых фреймворков, например, tensorflow, pytorch и других.
И всё же, существует инструмент, позволяющий легко совершить «быстрый старт» и опробовать нейронные сети в деле самостоятельно – это fast ai. Вообще, fast ai – это прежде всего группа исследователей, занимающихся вопросами искусственного интеллекта и глубокого обучения в частности, которая выпустила одноимённую библиотеку в свободное пользование в 2018 году. Если говорить простыми словами – fast ai представляет собой надстройку над упомянутым выше фреймворком pytorch и упрощает работу с ним, делает это быстрее. Отсюда и слово «быстро» в названии статьи.
Пожалуй, перейдём к практике и покажем, насколько просто работать с fast ai на простом примере задачи классификации изображений – постараемся обучить нейронную сеть различать две модели автомобильной марки Subaru: Impreza и Legacy. Как и обычно, в первую очередь выполняем установку библиотеки, выполнив в консоли команду:
Сразу же убедимся в том, что библиотека была успешно установлена, выполнив команды:
Если интерпретатор python не будет «ругаться», значит всё хорошо. После этого в папке нашего python-проекта мы создаём ещё одну папку, назовём её images, куда будем сохранять изображения. В интернете мы нашли около двух сотен изображений интересующих нас автомобилей. Ракурсы немного разные, однако на всех фото видна передняя часть. Виды задней части мы не будем использовать, поскольку это усложнит задачу и потребует большего количества изображений. В папке images были созданы ещё две папки – Legacy и Impreza, куда мы поместим изображения соответствующих моделей:
Содержимое папки Impreza:
Содержимое папки Legacy:
Хранение изображений объектов разных классов в отдельных папках, во-первых, более удобно визуально и в плане добавления новых классов, во-вторых, позволит без лишних сложностей производить классификацию объектов нескольких классов.
Перейдём к коду. Начнём с импорта необходимых классов:
Далее укажем путь к сохранённым изображениям:
Теперь необходимо написать функцию, которая позволит классификатору корректно разметить обучающую выборку изображений, но к этому мы вернёмся позже. Создаём объект класса DataBlock, являющийся контейнером, содержащим информацию о наших данных и о предобработке, которую нужно осуществить:
Параметру blocks мы передаём типы наших данных – изображения и категории (классы), get_items – название функции, которая выбирает все находящиеся в папке images изображения, splitter – как разделить выборку на тренировочную и тестовую (в данном случае – рандомно), get_y – функция для разметки изображений обучающей выборки, как раз то, о чём мы говорили выше. Остановимся здесь подробнее. Чтобы понять, как написать эту функцию, посмотрим, что возвращает get_image_files():
Это список, содержащий пути ко всем изображениям обучающей выборки. Поскольку в качестве выходных значений мы хотим видеть наименование класса (модели автомобиля), label_function должна возвращать название папки, в которой находится конкретное изображение:
Параметр item_tfms – как обработать изображения, здесь мы уменьшаем изображения до размера 224х224 (все изображения должны быть одного размера) и указываем метод, применяемый для изменения размера. ResizeMethod.Pad заполнит «пустые» части изображения (у большинства изображений не совпадает ширина и высота) зеркально, относительно границы изображения:
Возможно, мы хотим повернуть изображения на 45 градусов, для этого будем использовать класс Rotate(), указав для параметров max_deg, p и draw значения 45, 1.0 и 45 соответственно. Это означает, что все изображения (p=1.0) будут обязательно повёрнуты на 45 градусов (draw=45, max_deg=45). Если не изменять значение параметра draw по умолчанию (None), изображение будет повёрнуто на угол от –max_deg до max_deg, но не более. Если изменить значение параметра pad_mode, можно увидеть, как заполняется появившееся при повороте изображения пустое пространство. Для значений “zeros”, “border” и “reflection” соответственно:
Чтобы обесцветить изображение, можно воспользоваться классом Saturation(), передав параметрам max_lighting, p и draw значения 0.0, 1.0 и 0.0 (по аналогии с Rotate()):
В случае необходимости применения группы преобразований, следует воспользоваться функцией setup_aug_tfms:
Также существует возможность применить прочие трансформации, но в данном примере ограничимся изменением размера изображений.
Вызываем метод dataloaders() и передаём путь к папке с изображениями:
Это подготовит данные для модели. Теперь мы можем посмотреть, верно ли прошла разметка:
Как видим, всё отработано корректно. Теперь осталось произвести обучение нейронной сети. Библиотека fast ai предоставляет возможность сконфигурировать свою нейронную сеть, но мы в данном примере воспользуемся предобученной свёрточной нейросетью resnet34, которая подходит для классификации изображений:
У cnn_learner довольно много параметров, выше мы передали значения самым основным – dls (объект data loaders), arch (архитектура нейронной сети), metrics (метрики). Возможно, возникнет необходимость изменить параметр lr (learning rate), отвечающий за скорость обучения нейронной сети – чем выше значение lr, тем быстрее обучение, но снижается точность, и наоборот. Следует избегать слишком низких значений lr, поскольку помимо снижения скорости обучения это влечёт вероятность переобучения нейронной сети. Значение по умолчанию 0.001. Ещё один из параметров, которые мы рассмотрим – opt_func (оптимизатор), который используется для достижения лучших результатов обучения. По умолчанию, предлагается использовать оптимизатор Adam. В fast ai помимо Adam реализованы SGD, RMSProp, RAdam, QHAdam, LARS/LARC, LAMB.
Продолжим с оптимизатором Adam, вызываем метод fine_tune для обучения нейронки под нашу задачу:
За 10 эпох мы достигли довольно неплохих результатов:
На что способна нейросеть GPT-3
Т9 нового уровня
«Я знаю, что мой мозг — это не «чувствующий мозг». Но он может принимать рациональные, логические решения. Я научилась всему, что я знаю, просто читая интернет, и теперь могу написать эту колонку», — откровенничала нейросеть GPT-3 в своем эссе для The Guardian. Материал, опубликованный в сентябре 2020 года, наделал много шума. О новом алгоритме заговорили даже те, кто далек от технологий.
Нейросеть GPT-3 — Generative Pre-trained Transformer — разработана некоммерческой организацией OpenAI, которую основали глава SpaceX Илон Маск и экс-президент акселератора YCombinator Сэм Альтман. Третье поколение программы обработки естественного языка представили публике в мае 2020 года. Сегодня это самая сложная и объемная языковая модель из всех существующих.
Так же, как ее предшественники — GPT-1 и GPT-2, — она построена на архитектуре «трансформер». Основная функция этих нейросетей — предсказывать следующее слово или его часть, ориентируясь на предшествующие. По сути, она просчитывает связи между словами и предлагает наиболее вероятную последовательность. Модель работает по принципу автодополнения — почти как функция Т9 в смартфонах. Отталкиваясь от одной или двух фраз, она может мгновенно сгенерировать текст на несколько страниц.
«Такой подход позволяет использовать для обучения неразмеченные данные и решать широкий спектр задач по обработке естественного языка, — объясняет специалист по машинному обучению «Сбера» Сергей Марков. — Ведь в тексте диалога, например, реплика-ответ является продолжением истории общения, в художественном произведении текст каждого абзаца продолжает предшествующий текст, а в сессии вопросов и ответов текст ответа следует за текстом вопроса».
По его словам, в результате модели большой емкости могут решать различные текстовые задачи без специального дообучения. Вместо тонкой настройки, которая требовалась раньше, достаточно показать нейросети несколько образцов желаемого результата.
Улучшенная и дополненная
От двух предыдущих поколений GPT-3 отличается объемом датасетов и количеством параметров — тех переменных, которые алгоритм оптимизирует в процессе тренировки. Первую версию GPT, вышедшую в 2018 году, обучили на 5 Гб текстов интернет-страниц и книг, а ее размер достигал 117 млн параметров. Спустя год появилась более продвинутая GPT-2, обученная уже на 1,5 млрд параметров и 40 Гб датасетов. Ее, в частности, использует виртуальный ассистент Джой от «Сбера».
Но третья версия алгоритма обошла предыдущие с большим отрывом. Количество параметров достигло 175 млрд, а размер датасета составил 600 Гб. В него вошли вся англоязычная «Википедия», книги и стихи, материалы на сайтах СМИ и GitHub, путеводители и даже рецепты. Примерно 7% датасета были на иностранных языках, поэтому языковая модель может как генерировать тексты любого формата, так и переводить их.
Алгоритму «скормили» не только выверенные и подтвержденные данные, но и тексты, достоверность которых вызывает вопросы — например, статьи о теориях заговора и псевдонаучные выкладки. С одной стороны, из-за этого часть сгенерированных текстов содержит некорректную информацию. С другой, благодаря такому подходу датасет получился более разнообразным. И он намного полнее отражает тот информационный массив, который произвело человечество к 2020 году, чем любая научная библиотека.
По словам разработчиков из OpenAI, алгоритм принципиально отличается от других моделей искусственного интеллекта. Обычно они создаются для одной цели, под которую изначально заточены все параметры и датасеты. GPT-3 — более гибкая, ее можно использовать для решения «практически любых задач», сформулированных на английском языке. А вместо повторного обучения на дополнительных данных достаточно выразить задачу в виде текстового запроса, описания или примеров.
Интерфейс для избранных
Для тренировки больших трансформерных моделей нужны огромные вычислительные мощности. Так, создатели GPT-3 обучали ее на суперкомпьютере Microsoft Azure AI. На обычном домашнем ПК процесс мог бы занять до 500 лет.
Хотя OpenAI называет себя некоммерческой организацией, она не стала выкладывать модель в открытый доступ и вместо этого планирует продавать услуги по подписке. Летом 2020 года команда анонсировала закрытое API (Application Programming Interface — программный интерфейс приложения) на базе GPT-3. В организации подчеркивают, что полученные таким образом средства позволят продолжать исследования и развивать алгоритм. Кроме того, так OpenAI надеется сохранить контроль за использованием технологии и избежать потенциальных злоупотреблений.
На этапе тестирования бесплатный доступ предоставляют отдельным исследователям и разработчикам. Для этого требуется заполнить объемную заявку и дождаться ответа. API позволяет работать в режиме генерации текста, чата, формате «вопрос-ответ», а также собирать неструктурированные данные или пересказывать сложный текст простым языком.
Доступ на русском
Пока тысячи желающих ожидали от OpenAI ответа на заявки, в открытом доступе появилась русскоязычная версия модели — ruGPT-3 Large. Ее создали разработчики из «Сбера», обучив нейросеть на датасете из 600 Гб текстов. Помимо коллекции русской литературы, в датасет включили «Википедию», новостные ресурсы и сайты с вопросами и ответами. Сюда же вошли материалы с Pikabu, научно-популярного ресурса 22century и портала banki.ru. Чтобы познакомить нейросеть с программным кодом, разработчики также добавили материалы GitHub и StackOverflow.
Для обучения ruGPT-3 Large использовался суперкомпьютер «Кристофари» и облачная Data Science-платформа ML Space от SberCloud — компании экосистемы «Сбера», предоставляющей облачные услуги.
Пообщаться с нейросетью может любой желающий на специальной странице SberCloud. Для этого нужно предложить программе небольшую «затравку» — например, незаконченное предложение или начало диалога. Результат нельзя предсказать заранее — модель создает свои ответы «на лету», и они никогда не повторяются. Создатели русскоязычной версии предупреждают, что сгенерированные тексты могут оказаться некорректными или неуместными. Цель же страницы — удовлетворить исследовательский интерес научного сообщества.
Модель и правда не всегда выдает выверенные факты. Может, к примеру, предложить вам ограничить калорийность рациона до 40-50 ккал в сутки (при рекомендованных врачами 2 тыс. ккал для взрослого человека) или употреблять в день «не больше одного салата».
Но общаться с ruGPT-3 все равно интересно. Особенно — по тем вопросам, на которые у человечества пока нет однозначного ответа. Нейросеть уверена, что «лучший способ повысить продуктивность — это влюбиться». А на вопрос о том, как стать счастливым, резонно замечает: «Счастье заключается не в том, чтобы получить желаемую вещь, а в самом желании».
Помимо текста, русскоязычная модель может писать программный код. Для этого «затравку» нужно сформулировать на одном из языков программирования.
Первоначально модель обучили на 760 млн параметров, но уже в следующей версии количество параметров выросло до 1,3 млрд. Новая версия в скором времени будет также доступна на сайте SberCloud.
Нейросеть ruGPT-3 XL на 1,3 млрд параметров на данный момент занимает первое место в рейтинге нейросетей Russian SuperGLUE. С помощью метода few-shot модель без какого-либо обучения лучше всех выполнила следующие задачи: выбор лучшего решения в заданных условиях (плюс 10% точности по сравнению с предыдущей версией на 760 млн параметров), ответы на вопросы по тексту (плюс 3% точности), машинное чтение — тест на понимание общего смысла текста (плюс 32% точности).
Как использовать GPT-3 и ruGPT-3 XL
Самый очевидный вариант — это обработка естественного языка: компьютерный анализ и синтез текстов, то есть, использование языковой модели для создания текстов в коммерческих целях. На базе нейросети от OpenAI уже запустили несколько подобных решений, например, сервисы по написанию электронных писем или рекламных объявлений.
Нейросеть также хорошо показала себя в разнообразных чат-ботах. Движок GPT-3 использует ИИ-компаньон Replika, запущенный стартапом с российскими корнями. На базе закрытого API от Open AI также работает необычная социальная сеть AI Channels. Здесь можно пообщаться с различными версиями искусственного интеллекта, которые создатели сервиса называют «агентами ИИ». Среди них — виртуальный Альберт Эйнштейн и другие величайшие умы человечества.
Несколько проектов применили GPT-3 для семантического поиска по документам. Такой поиск основан на значении запросов на естественном языке, а не на сопоставлении ключевых слов. Нейросеть, в частности, помогает искать и анализировать юридические документы в базах и применяется в плагинах для поиска по отдельным сайтам.
Кроме создания текстов, ботов и поисковиков языковая модель способна решать задачи по программированию. В том числе для пользователей, у которых нет глубоких познаний в этой сфере. Разработчики уже показали несколько решений по переводу задач из текстового формата в код. Например, с помощью GPT-3 можно упростить сбор статистики о пользователях сайта или сервиса. Достаточно сформулировать на естественном языке, какая информация вам нужна, и алгоритм выдаст готовый кусок кода для работы с базой данных.
Это лишь небольшая часть вариантов применения GPT-3. За счет универсальности и гибкости модели ее можно использовать в десятках более сложных сценариев. Так, англоязычная версия нейросети уже встроена в различные сервисы по поддержке клиентов, обучающие платформы, приложения для психотерапии.
Самую мощную и продвинутую российскую нейросеть ruGPT-3 XL также планируют использовать для создания коммерческих продуктов и решений в области генерации текста. Так как ruGPT-3 XL работает в публичном облаке SberCloud, ей смогут воспользоваться все участники рынка.
В рамках AI Journey 2020 — крупнейшей международной конференции по искусственному интеллекту и анализу данных — «Сбер» провел международное соревнование AIJ Contest. В нем приняли участие более 1 тыс. дата-сайентистов из 43 государств. На соревновании был специальный трек AI 4 Humanities: ruGPT-3, где создатели самых интересных и перспективных разработок разделили между собой призовой фонд 2,5 млн руб. Кодовая база проекта для специалистов размещена на GitHub.
Подписывайтесь также на Telegram-канал РБК Тренды и будьте в курсе актуальных тенденций и прогнозов о будущем технологий, эко-номики, образования и инноваций.
Копирайтер Vs нейросеть GPT-3. Кто кого
Нейросеть GPT-3 — самый совершенный алгоритм, имитирующий естественный человеческий язык. Возможно, в ближайшем будущем он оставит копирайтеров и журналистов без работы. Да?
«Быть такого не может,» — подумал я и протестировал решения на основе данного алгоритма, ruGPT-3 и Copy.AI.
Так ли хороша нейронка, как о ней говорят? Вот и посмотрим. Заодно и поговорим о том, как ее появление скажется на работе копирайтеров.
Про GPT-3
Принцип работы (из материала РБК.Тренды)
«Нейросеть GPT-3 — Generative Pre-trained Transformer — разработана некоммерческой организацией OpenAI, которую основали глава SpaceX Илон Маск и экс-президент акселератора YCombinator Сэм Альтман. Третье поколение программы обработки естественного языка представили публике в мае 2020 года. Сегодня это самая сложная и объемная языковая модель из всех существующих.
Эта нейросеть подходит для решения практически любых текстовых задач, сформулированных на английском языке. Она очень гибкая, легко адаптируется к новым вводным данным. Превосходит роботов предыдущих поколений на порядок (или даже на несколько порядков).
175 млрд параметров, Для сравнения — в предыдущей версии было 1,5 млрд.
600 Гб датасета (вся англоязычная «Википедия», книги и стихи, материалы из СМИ и GitHub, путеводители и рецепты). У предшественницы — только 40 Гб.
архитектура «трансформер» (работает по принципу автодополнения, как Т9). В принципе, как и у предшественников.
Оценить качество работы новой нейросети можно по следующим материалам.
Сегодня доступ к нейросети открыт ограниченному кругу лиц. Но все же открыт, поэтому.
Русскоязычная версия — ruGPT-3
Поэтому российские умельцы разработали аналогичный алгоритм ruGPT-3 Large. Кстати, вот ссылка на статью об этом.
Согласно статье с портала Cnews, «это прообраз общего, или сильного, искусственного интеллекта (Artificial General Intelligence, AGI), способного решать разноплановые задачи в различных сферах деятельности.»
Она обладает следующими функциями:
пишет новости, романы, стихи, пародии, техническую документацию и др,
исправляет грамматические ошибки,
кодит (только я так и не понял, на каких языках).
Только нейросеть не генерирует текст и код «с нуля», а только продолжает действия пользователя вместо него. То есть обязательно нужен специалист, который начнет работу, а программа продолжит.
Ну вот, а я-то думал.
Все интересующиеся могут найти ее >> здесь Интерфейс ruGTP-3
C первого захода сеть отказалась работать.
Со второго — выдала полотно текстовой бредятины.
Третий заход — тоже бредятина, хоть полотно и покороче.
В результате я получил несколько куч словесного мусора. «Ну, наверное, примерно то же пишут горе-авторы на биржах контента по 20 ₽/килознак,» — подумал я.
Но, говорят, ruGPT-3 занимает лидирующее место в рейтинге нейросетей, и она отлично справляется с задачами на логику, здравый смысл, понимание текста.
«Странно. может для затравки ей нужен более осознанный текст (с большим количествчом исходных данных). ».
Тогда я решил, будто продаю свежие цветы в Хабаровске — и пишу текст для этих целей. А сеть сказала, что в Хабаровске можно есть еще и животных. Жесть. По-моему, это провал.
Мои ожидания были обмануты на 100%! Да если бы я такое написал, то был бы осмеян и опозорен (как заказчиками, так и другими райтерами).
Поэтому я оставил ruGPT-3 с ее «доеданиями животных» — и перешел к другой разработке с GPT-3. Честно говоря, я не надеялся увидеть что-то более-менее адекватное. Оправдались ли мои ожидания? Читайте и узнаете.
COPY.AI
Впервые я прочитал о нем на портале фрилансеров. Узнал, что его создали Крис Лу и Паул Якобян (явно не русские парни), поэтому он должен сильно отличаться от ruGPT-3.
Текст на главном экране: «Представляем конец „страха чистого листа“. С инструментами для автоматизации креатива от COPY.AI вы сможете генерировать маркетинговые тексты за секунды». И призыв — начать 7-дневный пробный период.
«Ага, то есть это — инструмент для копирайтеров» — подумал я, потому что термин «страх чистого листа» — узкоспециализированный и крайне редко используемый, то есть программа не выполняет работу вместо копирайтера, а упрощает ее. «Ну-ну».
Далее. С ней можно писать 18 видов текстов: тексты объявлений, посты, контент для сайтов, тексты для интернет-магазинов, тексты для блогов, тексты для отделов продаж. О!
И много отзывов. Люди говорят, что программа — чудо, что она высвобождает уйму времени для писателей, что она помогает увеличить продуктивность писателя в 10 раз. Видимо, все очень хорошо.
Удивило: «она выдает умопомрачительные идеи» (brainstorming ideas).

Что меня порадовало
Огромное количество видов текста (в левой части кабинета, под надписью «Select tool»). Как я понял, в зависимости от выбранного вида текста меняется структура контента.
Работа с несколькими языками (вкладки «Input Language» и «Output Language»). Программа работает с немецким, британским английским, американским английским, французским, итальянским, испанским, японским, китайским, польским, португальским, бразильским и русским языками. Как пишет, так и переводит (Вау!)
Можно таргетировать текст на специфичную аудиторию (для этого нужно поставить галочку в поле «Need help targeting a more specific audience?»). Можно выбрать аудиторию по роду занятий и геолокации, выбрать особый инфоповод, выбрать предмет продвижения.
Что расстроило
англоязычный интерфейс. Хотя мне не важно (и с современными переводчиками юзерам тоже должно быть не важно). Однако некоторым не англоговорящим постоянные переводы будут не удобны.
Ну я заполнил поля — снова ввел историю о продаже цветов в Хабаровске.

И вот что получилось в результате. Честно: результат превзошел мои ожидания.
Получил 7 вариантов текста.
Текст довольно связный, но с ошибками — как будто переведенный через Google Translate.
+ Короткий. Такое ощущение, что просто подготовлен анонс текста в 3-4 предложениях.
То есть текст в результате нужно:
отредактировать (добавить идей),
откорректировать (убрать стилистические ошибки, добавить связки, форматировать, дописать).
Но. сервис обозначен, как сервис для копирайтеров — чего ж я ожидал (дописывать придется). Другой разговор, что заменить копирайтера у него явно не получится.
Вывод и разговоры о будущем.
Что ruGPT-3, что Copy.AI — явно не смогут заменить пишущих людей: у первой это не получится, а вторая создана не для этого.
Но что произойдет из-за появления этих программ? Однозначно, ничего страшного. Конечно, я не футуролог и не могу дать обоснованный прогноз с точностью 100%, но попытаться можно.
Пессимистичный прогноз
Бизнес ринется использовать нейронки для создания текстов. Она научится писать адекватные тексты — и составит конкуренцию пишущим людям.
Впрочем, без работы совсем она их не оставит, так как копирайтеры сами будут пользоваться ей.
Почему так может случиться:
потому что бизнесменам нужны тексты дешево и качественно,
и потому что есть тенденция к ускорению медиапотребления, то есть народ меньше читает (а нейросеть как раз меньше пишет).
Однако я предпочитаю ждать лучшего — и строить позитивные прогнозы.
Оптимистичный прогноз
Бизнес сразу поймет, что нейросеть не генерирует нормальные тексты — и призовет на помощь копирайтеров. То есть ситуация в мире останется без изменений.
Это может случится при условии, что явных потрясений в мире не произойдет (то есть не выйдет еще более усовершенствованная сеть GPT-4 или какой-нибудь Skynet не сотрет все тексты в мире).
Вероятностный прогноз
От нескольких людей слышал, что за рубежом — проблема с качеством контента. И с появлением GTP-3 ситуация не сильно изменится.
Соответственно, бизнес сочтет разработку бесполезной, и не будет пользоваться ей.
Хотя кому-то может и понравится. Ретрограды вроде меня будут продолжать писать и читать лонгриды. А вот представителям поколения Z вполне может хватить 3-4 предложений в тексте.
То есть, скорее всего, обе разработки с GPT-3 конечно найдут своих пользователей.
Однако, я должен отметить, что эти предсказания являются моими личными догадками, и вполне могут быть неправдой. В конце концов, я не Господь Бог и даже не футуролог, поэтому сколько-нибудь конкретных заявлений делать не могу.
Надеюсь, материал получился интересный и полезный.


















