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

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

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

Так, в процессе машинного обучения выделяются три основных элемента:

  • сбор данных – в этом элементе наблюдается самая прямая зависимость: чем большим количеством входных данных оперирует алгоритм, тем точнее получаются результаты его работы. Например, при анализе изображений компьютер предварительно обучается на очень больших массивах изображений, которые могут занимать сотни терабайт;

  • извлечение признаков – в результате изучения входных данных компьютер формирует определённые признаки входных данных, строит так называемое признаковое описание данных. Этот процесс входит в состав процедуры обучения;

  • выбор алгоритма – различные алгоритмы отличаются разной эффективностью для решения прикладных задач, поэтому можно сказать, что каждая задача требует хорошего подбора наиболее соответствующего ей алгоритма.

Есть большое количество подходов, согласно которым можно классифицировать способы машинного обучения, однако на практике для упрощения этого процесса принято разделять машинное обучение на три больших группы.

Обучение с учителем

Этот вариант очень похож на обучение в реальной жизни, только в данном случае в роли ребёнка выступает алгоритм, на вход которому подаются данные, которые он должен анализировать. Они уже заранее промаркированы, и главной целью алгоритма в процессе становится необходимость выявить все взаимосвязи и ответить на вопрос «Почему, собственно, всё именно так?»

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

Обычно в процессе такого обучения применяются метод опорных векторов, линейная и логистическая регрессии и другие.

Обучение без учителя

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

Здесь можно применять такие алгоритмы, как алгоритмы k внутригрупповых средних (k means), анализ ассоциативных правил и основных и независимых компонентов.

Источник фото: https://pikabu.ru/story/science_memes_7543270?utm_source=linkshare&utm_medium=sharing
Источник фото: https://pikabu.ru/story/science_memes_7543270?utm_source=linkshare&utm_medium=sharing

Обучение с подкреплением

Этот тип обучения заключается в поиске оптимального пути. В наличии есть набор разных сценариев. Обычно такой тип обучения находится где-то между обучением с учителем и без него.

Если попытаться выразить основное назначение этого алгоритма, то можно сказать, что он предназначен для решения задачи выживания в реальной среде. То есть, например, поиск оптимального пути движения робота-пылесоса, ориентация в пространстве автопилота электромобиля и т. д.

Для решения этой задачи могут применяться алгоритмы SARSA и DQN, которые строятся на базе родительского алгоритма Q-learning.

Нейросети и машинное обучение

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

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

Ещё совсем недавно, в начале двухтысячных годов, аппаратные возможности не позволяли в полной мере использовать преимущества нейронных сетей для решения интеллектуальных задач. Однако сегодня нейронные сети достаточно широко применяются и позволяют решать вопросы, например, из области распознавания изображений, речи (в некоторых случаях даже эффективнее, чем сам человек).

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

Источник фото: http://memesmix.net/media/created/tfc0hf.jpg
Источник фото: http://memesmix.net/media/created/tfc0hf.jpg

Говоря об архитектурах нейронных сетей, можно выделить следующие:

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

В процессе анализа входной информации перцептрон позволяет сформировать связь между входными данными и тем, какая реакция должна быть на выходе. Например, это связь между зрительной картинкой и требуемой реакцией мышц (увидели препятствие – обошли его).

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

Сети адаптивного резонанса. Подобные сети часто используют в задачах распознавания образов, и их работа заключается в сравнении припоминаемых образов с реально наблюдаемыми. Если разница между двумя образами не превышает определённое значение, то считается, что наблюдаемый объект успешно распознан и относится к одной из категорий. Важной особенностью работы подобной системы является возможность накопления нового опыта без отказа от уже имеющегося.

Как применить машинное обучение для решения вашей задачи?

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

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

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

Определение задачи

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

В процессе необходимо определить:

  • можно ли категории вашей задачи каким-либо образом систематизировать;

  • выражаются ли они в каких-то конкретных числах (например, сколько в среднем человек перевозит метро с 9:00 до 10:00); 

  • может ли быть на основе анализа сформулирован какой-либо набор правил, методов и подходов к обработке данных.

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

На первоначальном этапе формулирования задачи она должна быть обозначена в виде максимально короткого описания, желательно в одно предложение.

Анализ входных данных

Так как алгоритм работает с входными данными, необходимо понять:

  • насколько они являются структурированными, то есть могут ли быть помещены в некую таблицу, которая имеет чёткие названия столбцов и строк?

  • являются ли они статистической информацией, содержащей массив исторических данных, который практически неизменен, либо являются потоковыми данными, получаемыми в непрерывном режиме или с некой периодичностью?

  • достаточен ли объем имеющихся данных для проведения исследований или же требуется расширение объёма выборки путём моделирования или аугментаций?

Тут, однако, нужно иметь в виду, что многие данные могут быть смешанных типов.

Насколько хороша должна быть модель?

Важным вопросом является определение критериев истинности тех прогнозов, которые будут считаться приемлемыми по результатам работы модели. Здесь можно привести такую аналогию. Например, мы решаем задачу ориентирования промышленного робота в пространстве. Робот должен привозить и отвозить детали только к определённому станку. Будет ли считаться приемлемой ситуацией, если робот не узнает свой станок и выгрузит детали у другого станка? И что будет, если мы согласимся с тем, что точность работы модели в 50% или даже 85% является приемлемой?

Особенности входных данных

Любые данные обладают определёнными характеристиками, которые можно подразделить на категории, числовые параметры и производные данные.

При учёте этих характеристик необходимо руководствоваться следующим:

  • во время обучения модели и во время развёртывания в дальнейшем необходимо, чтобы условия осуществления процесса обучения и развёртывания сохранялись неизменными (то есть снизить до минимума возможную ошибку разности в условиях эксперимента);

  • необходимо тщательно проанализировать имеющиеся особенности входных данных и определить только те, которые имеет смысл учитывать в анализе. Дело в том, что определённые характеристики могут быть присущи только малому числу данных. Как пример здесь можно привести корзину с яблоками: несмотря на то, что в корзине 100 яблок, только два из них являются зелёными;

  • необходимо критически относиться к процессу проведения эксперимента: если что-то идёт слишком хорошо, наверняка что-то тут не так.

Выбор модели

При выборе модели необходимо руководствоваться следующими критериями:

  • насколько легко модель настраивается, насколько хорошо её результаты могут быть поняты человеком, как добиться их улучшения;

  • насколько велик массив входных данных и  будет ли он изменяться с течением времени.

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

Для экономии своего времени и ресурсов имеет смысл на этом этапе постараться по максимуму воспользоваться уже имеющимися в доступе моделями для создания своего собственного прототипа. После того как прототип максимально специфицирован (после ряда итераций), можно заняться и созданием собственной модели (если потребуется).

Как мы уже говорили ранее, можно использовать предварительно обученные другими разработчиками модели, которые доступны по адресам: PyTorch hub, TensorFlow hub, model zoo, fast.ai framework.

Что можно улучшить?

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

Применение машинного обучения

Сегодня на рынке представлено несколько десятков программных инструментов:

Фреймворки для работы с глубокими сетями. TensorFlow, Keras.io, Pytorch, Caffe, Accord.NET, Apache Mahout, Shogun, Rapid Miner.

Платформы для ML-разработки. Google Cloud ML Engine, Amazon Machine Learning (AML), SberCloud ML Space, Microsoft Azure ML.

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

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

Кстати, технологии машинного обучения позволяют привнести новое и в творческую сферу: например, известный проект www.ostagram.me, в основу которого положены свёрточные нейронные сети, позволяет любую фотографию превратить в художественную картину.

Источник фото: https://www.ostagram.me/assets/stat/megan-f3e4d6091406091d6216373423c17eefdfdd96855e37c6df44cfba1c229a9697.jpg
Источник фото: https://www.ostagram.me/assets/stat/megan-f3e4d6091406091d6216373423c17eefdfdd96855e37c6df44cfba1c229a9697.jpg

А 2021 год ознаменовался запуском проекта ruDALL-E, который позволяет генерировать изображения по их текстовому описанию. Обучение нейросети ruDALL-E на кластере Christofari стало самой большой вычислительной задачей в России: 

  1. модель ruDALL-E Kandinsky (XXL) обучалась 37 дней на 512 GPU TESLA V100, а затем ещё 11 дней на 128 GPU TESLA V100 – всего 20 352 GPU-дня;

  2. модель ruDALL-E Malevich (XL) обучалась 8 дней на 128 GPU TESLA V100, а затем ещё 15 дней на 192 GPU TESLA V100 – всего 3 904 GPU-дня.

Таким образом, суммарно обучение обеих моделей заняло 24 256 GPU-дней.

Долгосрочная цель нового направления – создание «мультимодальных» нейронных сетей, которые выучивают концепции в нескольких модальностях. В первую очередь, в текстовой и визуальной областях, чтобы «лучше понимать мир». 

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

  1. Возможность точно описать желаемое и получить персонализированное изображение, которого раньше не существовало.

  2. В любой момент создавать необходимое количество licence-free-иллюстраций в неограниченном объёме.

Первые очевидные применения генерации изображений:

  • иллюстрации для статей, копирайтинга, рекламы. Можно автоматически (значит, быстрее и дешевле) создавать фото к статьям, генерировать концепты для рекламы по описанию;

  • иллюстрации, свободные от лицензии фотостоков, тоже можно генерировать бесконечно;

  • визуализации дизайна интерьеров – можно проверять свои идеи для ремонта, играть с цветовыми решениями, формами и светом.

В основе архитектуры DALL-E – так называемый трансформер, он состоит из энкодера и декодера. Суть состоит в том, чтобы вычислить embedding по входным данным с помощью энкодера, а затем с учётом известного выхода правильным образом декодировать этот embedding.

Чтобы не учить только краткосрочные зависимости между пикселями и текстами, а делать это более высокоуровнево, обучение модели проходит в 2 этапа:

  1. Предварительно сжатые изображения с разрешением 256х256 поступают на вход автоэнкодера (мы обучили свой SBER VQ-GAN, улучшив метрики для генерации по некоторым доменам, и об этом как раз рассказывали тут, причём также поделились кодом), который учится сжимать изображение в матрицу токенов 32х32. Фактор сжатия 8 позволяет восстанавливать изображение с небольшой потерей качества: см. котика ниже.

  2. Трансформер учится сопоставлять токены текста (у ruDALL-E их 128) и 32×32=1024 токена изображения (токены конкатенируются построчно в последовательность). Для токенизации текстов использовался токенизатор YTTM.

Что дальше?

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

Готовые модели позволят множеству разработчиков применять их, дообучая в процессе под конкретные цели.

Несмотря на развитие достаточно сложных технологий, на которых базируется машинное обучение, в настоящее время актуальной темой является активное внедрение легковесных моделей, которые могут быть запущены даже на слабом аппаратном обеспечении (TinyML).

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

Источник фото: https://sun9-58.userapi.com/impf/_0Prz7-T2KaAxqbsknbYuQwQGhbPvWtlhQ1EHQ/hpKdWnl8Jrk.jpg?size=604x479&quality=96&sign=be8757941bde2db2ed7194c736a009c0&c_uniq_tag=_QeX4e5sCoT_lD_7o8rmewyA5Cr-gllf_3TY7mlzbBE&type=album
Источник фото: https://sun9-58.userapi.com/impf/_0Prz7-T2KaAxqbsknbYuQwQGhbPvWtlhQ1EHQ/hpKdWnl8Jrk.jpg?size=604x479&quality=96&sign=be8757941bde2db2ed7194c736a009c0&c_uniq_tag=_QeX4e5sCoT_lD_7o8rmewyA5Cr-gllf_3TY7mlzbBE&type=album

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

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

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

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

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

Комментарии (3)


  1. VVitaly
    02.08.2022 19:11
    +1

    Все что нужно знать о машинном обучении и результатах его работы, вы можете оценить по текущим прогнозам погоды... :-)


    1. Myclass
      02.08.2022 20:54
      +6

      Или по рекламным предложениям купить кошелёк, после того как вы его купили в Амазоне.


  1. vladislavmartinov98
    05.08.2022 11:13

    Может быть, вы хотите предсказывать цену акций на бирже? Или вам интересно составить прогноз цены на жильё?

    Нет, это неинтересно. Вот отсортировать 20 пар почти одинаковых черных носков — вот это задача:)