Эта статья представляет собой резюме моего выступления на ежегодном мероприятии Webstep Kompetensbio. Каждый год Webstep приглашает всех разработчиков на это бесплатное мероприятие, которое проходит в каком-нибудь хорошем местном кинотеатре, где они могут насладиться интересными техническими беседами и посмотреть какой-нибудь захватывающий фильм. В этом году мероприятие впервые прошло в трех городах: Уппсала, Мальмё и Стокгольм.

Вступление

С детства и по сей день я был большим поклонником научной фантастики. Выросший в маленьком городке в стране бывшего Восточного блока был не очень веселым. Особенно если вы были умны и любопытны. Допросить представителей власти не разрешалось, как и задавать много вопросов.

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

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

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

  • Что такое машинное обучение?
  • Почему это важно для вас и почему это должно вас волновать?
  • Как это работает?
  • Когда его следует использовать, а когда нет?
  • Как это можно сделать эффективно?
  • Как AWS SageMaker может в этом помочь?

Реклама

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

Честно говоря, нет ничего более далекого от правды. Эти передовые боевые машины находятся далеко в будущем, если они вообще когда-нибудь появятся. Я уверен, что множество правил и договоров предотвратят подобное. Что касается нашей работы, все изменится в этом отношении, но не так резко, как репортеры хотят, чтобы мы думали. Мы вернемся к этому позже.

Перемена

За последнее десятилетие мы стали свидетелями того, что такие компании, как Airbnb, Netflix, Amazon и т. Д., Полностью изменили отрасли, в которых они работают. Помимо невероятного успеха, у всех этих компаний есть еще кое-что общее: все они используют данные для построения своего бизнеса. модели. И все они автоматизировали большинство бизнес-процессов, управляющих повседневными операциями.

Здесь мы видим именно то, что предсказал Марк Андриесен в своей статье: Почему программы пожирают мир? По сути, он хотел сказать следующее: в конечном итоге каждый процесс, который можно автоматизировать, будет помещен в какое-то программное обеспечение. И каждая компания, независимо от ее происхождения, станет компанией-разработчиком программного обеспечения.

Революция

Эти изменения являются частью гораздо более масштабной истории, которая продолжается уже столетия. Это рассказ о промышленной революции. Тот, в котором мы сейчас находимся, - это 4-я промышленная революция. Все три предыдущие революции начались с некоторых важных технологических изобретений: паровой двигатель в 1760 году, электричество в 1820 году, вычисления в 1960 году, а теперь и AI и ML (машинное обучение).

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

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

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

Определения

Что такое машинное обучение? Есть много определений, но лучше всего описывает одно предложение известного хоккеиста Уэйна Гретцки. Он не имел в виду машинное обучение, когда сказал: «Я катаюсь там, где будет шайба, а не там, где она была». Он просто отвечал на вопрос репортера, почему он так хорошо играет? На мой взгляд, тот же принцип применим и к самой природе машинного обучения: попытка предсказать следующий лучший ход, чтобы выиграть игру.

Если мы хотим использовать более формальные определения машинного обучения (ML), AI и Deep Learning (DL), мы могли бы описать их следующим образом:

  • AI: методы, которые позволяют машинам имитировать поведение человека: распознавание изображений, распознавание речи и т. Д.
  • ML: подмножество ИИ с использованием статистических методов, позволяющих машинам учиться на собственном опыте
  • DL: подмножество ML, которое делает возможным вычисление многослойных нейронных сетей.

Есть еще много похожих определений, но они достаточно просты и имеют для меня смысл.

Алгоритмы

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

Код

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

При машинном обучении входные данные - это данные и выход, или «правильные ответы», собранные из прошлого опыта. Эти входные данные, объединенные и пропущенные через алгоритм машинного обучения, дают нам модель - или новый алгоритм, который изучил правила на основе данных. Таким образом, мы получаем желаемые правила без явного программирования.

Предпосылки

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

Используйте машинное обучение, когда:

  • Данные существуют в большом количестве и высокого качества. Данные - самый важный компонент. Без достаточного количества правильных данных невозможно построить хорошую модель машинного обучения.
  • Доступны реальные ответы, и «правильный ответ» известен
  • Проблема имеет очень сложную логику. Простые проблемы не должны быть слишком сложными. Используйте простые правила для решения проблемы, а не применяйте машинное обучение.
  • Проблема адаптируется в реальном времени. Иногда проблема заставляла нас менять правила очень часто и неожиданным образом. В таких случаях ищите более общее решение с помощью машинного обучения.
  • 100% точность НЕ требуется. Алгоритмы машинного обучения никогда не бывают правильными на 100%. Если этого достаточно для решения вашей проблемы, подумайте об их использовании. И если ваша модель машинного обучения верна на 100% - вы что-то делаете не так!
  • Конфиденциальность - это НЕ проблема. Только когда у нас есть разрешение на использование данных для решения данной проблемы, мы должны рассмотреть возможность применения к ней машинного обучения. В противном случае использование таких данных может быть незаконным или, по крайней мере, аморальным и неэтичным.

Случаи применения

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

Рейтинг - это поиск самого релевантного. Подумайте, например, о поиске в Google.

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

Кластеризация - это объединение похожих вещей в одну группу. Например, сегментация клиентов.

Регрессия - это предсказание числового значения чего-либо. Здесь в качестве примера можно упомянуть прогноз цен на жилье.

Рекомендация - подсказывает самое интересное. Мы видели это много раз, например, в случае рекомендации фильмов на Netflix.

Классификация - это поиск того, что что-то есть. Подумайте, например, о фильтрации спама в электронной почте.

Жизненный цикл машинного обучения

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

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

Наконец, когда наша любимая модель будет готова, ее можно будет использовать для работы какой-либо службы или приложения, и ее нужно будет развернуть. После этого его производительность оценивается, чтобы убедиться, что он работает в соответствии с ожиданиями. Данные, которые мы собираем в результате его мониторинга и в результате его функционирования, могут быть использованы для дальнейшего улучшения модели. Это этап развертывания.

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

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

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

К настоящему времени вы, должно быть, задаетесь вопросом, есть ли способ лучше? К счастью, есть! И поэтому заговорили об AWS SageMaker.

AWS SageMaker

Этот облачный сервис Amazon был создан с единственной идеей: передать машинное обучение каждому разработчику, независимо от его знаний в этой области. Он обеспечивает простой, быстрый и масштабируемый способ выполнить все три обычных шага: сборку, обучение и развертывание.

Этап сборки выполняется путем подключения к другим сервисам AWS, например S3, и преобразования данных в записных книжках Amazon SageMaker. Этап обучения - это использование алгоритмов и фреймворков AWS SageMaker или использование наших собственных для распределенного обучения. После завершения обучения модели можно развернуть на конечных точках Amazon SageMaker для прогнозирования в реальном времени или пакетного прогнозирования.

Строить

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

Тренироваться

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

Развертывать

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

Машинное обучение AWS SageMaker way

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

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

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

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

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