Машинное обучение — всё по этой теме для программистов


Оглавление (нажмите, чтобы открыть):

Введение в машинное обучение

Перевод статьи разработчика алгоритмов машинного обучения, бизнес-консультанта и популярного автора Ганта Лаборде «Machine Learning: from Zero to Hero».

Начнешь c “Зачем?”, придешь к “Я готов!”

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

Почему машинное обучение сейчас в тренде

Искусственный интеллект (далее ИИ) всегда имел применение, начиная от перемещения ракетки в пинг понге и заканчивая выполнением комбо в Street Fighter.

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

Несмотря на это, компьютер поддается обучению для игры в видеоигры, понимания языка и распознавания людей и предметов. Этот навык исходит из старой концепции, которая только недавно получила необходимые вычислительные мощности для существования вне теории. Я имею в виду машинное обучение (ML, Machine learning).

Не продумывайте сложные алгоритмы самостоятельно — обучите компьютер создавать собственные сложные алгоритмы. Как это будет работать? Алгоритм не столько написан, сколько выведен. Посмотри это короткое видео, с помощью анимации оно должно дать понимание общего принципа создания ИИ.

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

Впечатлены? Как это возможно? К счастью, Элон Маск представил некоммерческую компанию, которая предоставляет возможность подключения ИИ к любым играм и задачам с помощью дюжины строк кода. Посмотрите, как это работает.

Зачем следует использовать машинное обучение?

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

Во-вторых, если не влияете на мир, мир повлияет на вас. Компании инвестируют в ML, и эти инвестиции уже меняют мир. Лидеры мысли предупреждают, что нельзя позволить алгоритмам машинного обучения быть в тени. Представьте себе, если бы монополия из нескольких корпораций контролировала Интернет. Если мы не “возьмемся за оружие”, наука не будет нашей.

Christian Heilmann высказал правильную мысль в беседе о машинном обучении:

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

Хорошо, теперь я заинтересован…

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

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

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

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

Классический пример машинного обучения в действии — датасет прямиком из 1936-го года, называемый ирисами Фишера. На презентации эксперта JavaFX, посвященной машинному обучению, я узнал, как использовать этот инструмент, чтобы визуализировать прикрепление и обратное распространение весов к нейронам в нейронной сети. Понаблюдайте за тем, как тренируется нейронная сеть.

Обучение нейронной сети Ирисы

Готовы стать Эйнштейном новой эры? Прорывы происходят каждый день, поэтому начинайте сейчас.

С чего мне начать?

Доступных ресурсов много. Я рекомендую два подхода.

Основы

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

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

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

Гонщик

Если вы не заинтересованы в написании алгоритмов, но хотите использовать их для создания сайтов и приложений, то используйте TensorFlow и погрузитесь в crash course.

TensorFlow — это библиотека с открытым исходным кодом для машинного обучения. Ее можно использовать любым способом, даже с JavaScript. А вот crash source.

Услуги ML

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

Предупреждаю, что нет гарантии, что ваши данные будут в безопасности или вообще останутся вашими, но предложения услуг по ML очень привлекательны, если вы заинтересованы в результате и имеете возможность загрузить данные на Amazon/Microsoft/Google.

Давайте быть созидателями

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

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

Надеюсь, эта статья вдохновила вас и ваше окружение изучать ML!

Что нужно знать о machine learning, чтобы найти хорошую работу?

Автор: Рауль Шарма

Перевод: Мария Агеева, Binary District

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

Термин «искусственный интеллект», как известно, программисты и исследователи использовали ещё в 1950-х — для описания машин, способных без посредничества человека адекватно решать абстрактные задачи. А machine learning — это один из наиболее известных методов практической реализации возможностей искусственного интеллекта. Машинное обучение базируется на создании алгоритмов, обладающих встроенной способностью распознавать паттерны при анализе больших массивов данных и использовать их для самообучения.

Почему карьера в machine learning — отличный выбор?

Кейсы Netflix и Amazon наглядно иллюстрируют, насколько умными, причём именно по-человечески умными, могут быть технологии благодаря применению machine learning. Когда Netflix, словно читая ваши мысли, предлагает вам именно те фильмы и сериалы, что непременно вас заинтересуют, — за этим стоит ML. Благодаря машинному обучению Amazon столь успешно убеждает вас купить в нагрузку к приобретаемому товару ещё что-нибудь. Чтобы предложить именно те товары, которые придутся вам по вкусу, используются сложные алгоритмы, обрабатывающие терабайты данных. Попробуйте представить, сколько существует бизнес-кейсов, в которых ML может изменить статус-кво. Очевидно, что machine learning — привлекательная сфера как для тех, кто только готовится к выбору профессии, так и для тех, кто мечтает о новом витке IT-карьеры.

Гибкий подход к языкам программирования

Большинство энтузиастов machine learning волнует вопрос – учить Python или R? Для разработки программ, основанных на алгоритмах машинного обучения, действительно чаще всего применяются эти два языка программирования. Однако разработчикам, ориентированным на долгосрочный карьерный успех, такой вопрос себе задавать не стоит.

— Уникальные преимущества некоторых языков программирования облегчают решение связанных с AI проблем, а вы ведь не хотите провалить проект?

— Обладая доступом к библиотекам, не так уж сложно разрабатывать основанные на ML программы на любом языке программирования

— Некоторые из основанных на ML технологий не могут справиться с определёнными задачами, в таком случае программист должен уметь найти альтернативный вариант

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

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

Основы теории вероятности составляют ядро машинного обучения. Теорема Байеса, условная вероятность, функция правдоподобия, независимые и взаимообусловленные события — всем, кто мечтает об интересной работе в сфере machine learning, необходимо разобраться в этих элементах теории вероятности. Ведь эти концепции являются научной базой для решения проблемы неопределённости в алгоритмах машинного обучения. Математическое ожидание, медиана, мода, дисперсия, биномиальное распределение и т.д. — любой программист или специалист по анализу данных должен владеть этими концепциями, ведь иначе он не сможет проверять работу алгоритмов ML и совершенствовать их. Многие алгоритмы машинного обучения представляют из себя логичное продолжение процедур статистического моделирования.

Моделирование данных

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

Почему вам необходимо освоить библиотеки machine learning

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

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

— уметь выбирать подходящую для конкретного типа данных обучающую процедуру

— понимать, как гиперпараметры влияют на обучаемость алгоритма

— уметь оценивать плюсы и минусы разных подходов

Советуем энтузиастам, желающим постичь все нюансы machine learning, посетить сайт Kaggle, где собрано немало интересного материала по ML и анализу данных, включая практические задания.

Умелое обращение с данными

Важно понимать, что данные всегда важнее алгоритмов. На основе данных можно реализовать выдающуюся программу — даже если алгоритм будет базовым. Так что всем, кто хочет построить IT-карьеру, работая с ML, придётся сначала изучить управление данными, организацию данных, анализ данных и только потом погружаться в разработку продвинутых алгоритмов. Ведь программисты, специализирующиеся на machine learning, много времени уделяют преобразованию данных, это – ключевой аспект их работы.

Распределённая обработка данных

Технология machine learning сопряжена с обработкой больших массивов данных. Программисты едва смогли бы выполнять такой огромный объём работ, используя ресурсы лишь одного компьютера. Решение проблемы — распределённая обработка данных. Любой опыт в этой сфере может оказаться бесценным. Apache Hadoop и Amazon EC2 предлагают удачные решения для распределённой обработки данных, так что вам, вероятно, было бы полезно ознакомиться хотя бы с их основами.

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

17 февраля на площадке Digital October пройдёт интенсивный однодневный курс Introduction to Machine learning, AI . Мы расскажем всё о самом перспективном инструменте для бизнеса, основанном на технологии искусственного интеллекта.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Машинное обучение против традиционного программирования

Некоторые называют AI и ML переоцененными, не являющимися ничем большим в сравнении с традиционным программированием. Я же предлагаю вам взглянуть фактам в лицо дабы самим проверить это. В данной статье я сопоставлю различные термины, а также продемонстрирую разницу между специалистами: инженер-программист, разработчик программного обеспечения, специалист по машинному обучению, специалист по данным… некоторые люди также используют термины программер или кодер, а некоторые даже достигают уровня ниндзя, гуру или рок-звезды! Но так ли они тождественны? И если все-таки да, какова грань между машинным обучением и традиционным программированием?

Машинное обучение против программирования: что такое машинное обучение?

Легко сказать, что AI и ML — не что иное, как условные конструкции или даже просто статистика. Что еще мы постоянно слышим о них? ML — всего лишь новое слово, чтобы описать математику + алгоритмы? Иногда такие упрощения смешат, но, очевидно, что ML куда сложнее.

Давайте посмотрим на более подходящее объяснение.

Простыми словами, искусственный интеллект — это зонтик, содержащий другие сферы, такие как обработка изображений, когнитивная наука, нейронные сети и многое другое. Машинное обучение также является компонентом, расположенным под этим зонтиком. Его основная идея заключается в том, что компьютер не просто использует заранее написанный алгоритм, но и учится решать проблему самостоятельно. Или, чтобы объяснить это другими словами, есть прекрасное определение Артура Самуэля (который фактически ввел термин ML):

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

Так что, да, ML позволяет машине решать различные задачи, которые трудно решить алгоритмически. Что это за задачи? Вы наверняка уже натыкались на них в практике. Например, это может быть распознавание лица или голоса вашим телефоном, вождение автомобиля (Google Self-Driving Car), диагностика заболеваний по симптомам (Watson), рекомендация продуктов, книг (Amazon), фильмов (Netflix), музыки (Spotify), выполнение функции личного помощника (Сири, Кортана)… этот список можно продолжать бесконечно.

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

Любую работающую ML-технологию можно условно отнести к одному из трех уровней доступности. Что это означает? Первый уровень — это когда технология доступна исключительно крупным технологическим гигантам, таким как Google или IBM. Второй уровень — когда студент с определенными знаниями может ее использовать. И последний, третий уровень доступности ML — когда справится даже бабушка.

Текущий уровень развития ML — стык второго и третьего уровней. Благодаря этому темп изменения мира с помощью этой технологии растет с космической скоростью.

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

Машинное обучение против программирования: чем ML отличается от программирования?

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

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

ML, как и AI, — это не замена, а дополнение к традиционным подходам разработки. Например, ML можно использовать при разработке прогнозирующих алгоритмов для интернет-магазина, в то время как пользовательский интерфейс, визуализация данных и другие его элементы будут разрабатываться на общепринятых для этого языках программирования, таких как Ruby или Java.

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

Что это значит на практике? Вот отличное объяснение на основе классической ML-проблемы прогнозирования обменного курса и двух возможных способов реализации:

Традиционный подход разработки

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

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

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

Тогда на сцену и выходит подход машинного обучения

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

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

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

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

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

Подводя итог: специалист по машинному обучению, специалист по данным, программист и инженер-программист… кто есть кто?

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

Пока звучит не очень заманчиво. Но дальше есть кое-то интересное:

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

И самая интересная часть:

В 2012 году Harvard Business Review назвал науку о данных «Самой привлекательной работой 21 века».

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

Как насчет программирования? В настоящее время специалисты по данным программируют исключительно в интересах исследований. Они также должны знать прикладную статистику или иметь опыт ее исследования. Некоторые также занимаются разработкой программного обеспечения, особенно в компаниях, обслуживающих науку о данных / машинное обучение в своих продуктах. Самое интересное, что специалист по данным не обязан уметь хорошо программировать, а может ограничиться рядом инструментов, например Matlab, SPSS, SAS и так далее.

Каково же место инженера по машинному обучению?

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

Из ключевых отличий я бы выделил:

  • Сильные навыки программирования на одном или нескольких языках (обычно Python)
  • Меньше внимания уделяется умению работать в средах анализа данных, но больше внимания уделяется алгоритмам машинного обучения
  • Навык использования готовых библиотек для разных стеков, например, NumPy / SciPy
  • Навык создания распределенных приложений, используя Hadoop и других подобных инструментов

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

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

Но если копнуть глубже, мы обнаружим, что есть и другие термины, такие как инженер-программист и разработчик программного обеспечения, и оба они также не похожи. Например, инженер-программисты должны проектировать. Они занимаются боевыми приложениями, распределенными системами, параллелизмом, системами сборки, микросервисами. А разработчик программного обеспечения должен понимать все циклы разработки программного обеспечения, а не только его реализацию (которая иногда даже не требует программирования).

Итак, программирование и машинное обучение… чувствуете ли вы разницу сейчас? Я надеюсь, что этот пост помог вам избежать путаницы с этими терминами. Несомненно, у всех них есть общее — технология, но число их различий гораздо больше. Таким образом, ML-инженер, инженер-программист и разработчик программного обеспечения совершенно не взаимозаменяемы.

Профессия Data Scientist: машинное обучение

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

Первым 20 участникам курса — скидка 20%.

  • Подходит студентам без опыта
  • Преподаватели практики
  • Реальный проект для диплома
  • Зарплата от 90 000 р. в месяц

Курс идеально подойдет

Новичкам

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

Программистам

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

Менеджерам и бизнесу

Получите структурированные прикладные знания о Data Science от практиков. Научитесь использовать данные для построения прогнозов и оптимизации бизнес-процессов и переведете компанию на новый уровень развития.

Чему вы научитесь

Новые знания и навыки можно будет сразу же применять на практике.

Научитесь программировать на Python

это самый популярный язык для работы с данными.

Сможете работать с источниками данных

CSV, XML и XLSX, JSON.

Освоите визуализацию данных

и сможете разрабатывать дашборды или интерактивную инфографику.

Опробуете разные модели машинного обучения

и откроете себе двери в новые интересные проекты.

Поработаете с машинным зрением

и сможете найти себе работу в машиностроении и робототехнике.

Напишете рекомендательную систему

для реального клиента и добавите ее себе в портфолио.

Записаться на курс скидка 20% первым студентам

Программа курса

Программа курса содержит 4 основных блокa.

Аналитика для машинного обучения

Машинное обучение. Начальный уровень

Машинное обучение. Средний уровень

Получите полную программу и индивидуальную консультацию

Преподаватели


  • Валентин Пановский преподаватель МАИ, Chief Data Scientist в Skillbox
  • Михаил Овчинников ведущий инженер-программист Badoo
  • Алла Тамбовцева преподаватель НИУ ВШЭ
  • Александр Джумурат руководитель команды разработки рекомендательной системы в ivi.ru
  • Дмитрий Коробченко Deep Learning R&D, инженер и менеджер в NVIDIA
  • Алексей Мастов Deep Learning инженер в NVIDIA
  • Лидия Храмова Team Lead Data Scientist группы бизнес-моделирования в Qiwi

Как проходит обучение

Вы выполняете домашние задания и открываете доступ к новому уникальному контенту по теме. Достаточно выделить 3–5 часов в неделю.

Изучаете
тему

В курсе — полезные видеоуроки.

Мастер Йода рекомендует:  Роль юристов в IT-сфере

Выполняете домашнее задание

В том темпе, в котором вам удобно.

Общаетесь с наставником

Закрепляете знания и исправляете ошибки.

Защищаете дипломный проект

И дополняете им свое портфолио.

Ваше резюме после обучения

Аделина Ветрова специалист по машинному обучению

Ожидаемая зарплата от 90 000

Python Язык программирования общего назначения, применяется для работы с данными.

Jupyter Notebook Командная оболочка для интерактивных вычислений.

NumPy Библиотека с открытым исходным кодом для Python.

Pandas программная библиотека на Python для обработки и анализа данных.

SQL Язык программирования для работы с реляционными БД.

Matplotlib библиотека на Python для визуализации данных 2D-графикой.

SciPy библиотека для Python с открытым исходным кодом для выполнения научных и инженерных расчётов.

Scikit-Learn библиотека машинного обучения для Python.

Keras Открытая нейросетевая библиотека, написанная на Python.

TensorFlow Открытая программная библиотека для машинного обучения от Google

Ключевые навыки:

  • Python для работы с данными
  • чтение и запись данных, работа с библиотеками;
  • визуализация данных на Matplotlib;
  • работа с нейронными сетями;
  • владение методом Q-learning;
  • написание рекомендательных систем.
  • машинное обучение: регрессия, классификация, кластеризация;

Диплом Skillbox

Подтверждает успешное прохождение курса «Профессия Data Scientist: машинное обучение»

Профессия Data Scientist: машинное обучение

Стоимость обучения

Скидка 20% первым 20

Стоимость обучения 88 500

2 950 Рассрочка без первого взноса

70 800 Для первых 20 студентов

Гарантия возврата денег в течение 14 дней

Запишитесь на курс

Дата начала: 10 ноября

Осталось: 15 мест

О Skillbox

Максимально практическое обучение от лидеров digital-рынка. Курсы от компаний, работающих на реальных проектах.

После обучения вы можете трудоустроиться в эти компании или к партнёрам университета.

студентов учатся на наших курсах

студентов довольны преподавателями

выпускников получают карьерный рост

выпускников довольны курсом и результатом

Часто задаваемые вопросы

Я никогда не программировал. У меня получится?

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

Какой график обучения? Получится ли совмещать его с работой?

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

Сколько часов в неделю мне нужно будет уделять учебе?

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

Я могу общаться с преподавателем?

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

Действуют ли какие-нибудь программы рассрочки?

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

А я точно смогу трудоустроиться?

Курс дает достаточно знаний, чтобы получить позицию Data Scientist. Конечно, многое будет зависеть и от вас самих.

Записаться на курс или получить консультацию

Появились вопросы по курсу?

Оставьте ваш номер телефона, и наш специалист свяжется с вами, чтобы дать подробную информацию.

г. Москва, метро Октябрьская,
Ленинский проспект, дом 6, строение 20

GeekUniversity

Онлайн-университет от

с гарантированным трудоустройством

Наша цель — ваше трудоустройство

Наши ученики трудоустроились в компании:

Получите программу курса на email

Посмотрите, как будет строиться учебный процесс

Проектно-ориентированное обучение

Мы учим на практике и используем подходы ведущих учебных центров США. Вы решите четыре проектные задачи по работе с данными и примените полученные навыки на практике. Полтора года обучения в GeekUniversity = полтора года реального опыта работы с большими данными для вашего резюме.

Наставник

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

Основательная математическая подготовка

Профессионализм в Data Science — это на 50% умение строить математические модели и еще на 50% — работать с данными. GeekUniversity прокачает ваши знания в матанализе, которые обязательно проверят на собеседовании в любой серьезной компании.

Истории успеха

За время изучения Python в GeekUniversity Максим Столпасов успел пройти практику в Австрии и трудоустроиться. Рассылать резюме не пришлось — на стажировку, а затем и постоянную работу его пригласил преподаватель курса Django. Своей историей, впечатлениями от учебы и рекомендациями новичкам Максим поделился в интервью.

— Привет! Расскажи, пожалуйста, чем ты занимался до GU? Был ли опыт с Python и почему решил изучать Django?

— До GeekUniversity я 10 лет занимался автоматизацией: внедрял ERP-систему и поддерживал ее работоспособность на предприятии клиента.

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

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

В 2012 году понадобилось создать для нашего продукта среду разработки. Мы взяли текстовый редактор Sublime и стали писать к нему плагины. Так я познакомился с Python. Тут же влюбился в этот язык — гибкий, понятный, с близким мне подходом к программированию.

Шесть лет я изучал Python самостоятельно. В 2020 решил сменить работу и подобрать что-то связанное с «питоном». Достаточного опыта не было, фундаментальной теоретической подготовки тоже, а без этого никуда не брали.

Один друг показал мне тесты по Python на сайте GeekBrains. Я знаком с темой подготовки учебных материалов и мог оценить качество тестов. Оно мне очень понравилось. Подумал: если так составлены тесты, учебная программа должна соответствовать. И не ошибся.

— Что показали тесты?

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

— Как тебе учеба?

— За первые два месяца мы освоили все, что я до этого учил шесть лет! Для меня это был шок.

Занимался я всерьез: выполнял все домашние задания, читал методички и дополнительные материалы, старался сделать чуть больше, чем требовалось для оценки «отлично».

Курс Django 1 у нас вел Максим Данилов — очень рекомендую его как преподавателя! Мы общались не только на занятиях, но и в WhatsApp. Обсуждали домашние задания, подходы к решению задач. По окончании курса Максим предложил пройти практику в его фирме в Австрии. Надо было выйти из зоны комфорта: на месяц уехать в другую страну от семьи, детей. Со старой работы я тогда еще не уволился, пришлось договариваться. Но в итоге ради практики я смог все уладить и поехал.

— Учебу на это время пришлось прервать?

— Нет. Практика совпала с периодом командной разработки в GU. Мои одногруппники делали очень классный проект: систему тестирования EasyTest. Я за ним следил, анализировал рекомендации преподавателей. Максим тоже шел навстречу — выделял мне время для учебы.

По возвращении я отчитался преподавателю по командной разработке — Сергею Кручинину, — что я делал, как взаимодействовал с коллегами и применял полученные в GU знания. Этот опыт мне засчитали за командный проект.

**— Над чем ты работал во время практики? Насколько хватало знаний, чему удалось научиться?88

— Пригодились общие знания Python и все, что мы изучали на курсе Django. Особенно полезным оказалось умение сокращать объем потребляемой памяти в Python и работать с классами Django.

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

Приходилось узнавать на ходу и лучшие практики, которые мы еще не успели разобрать в GU. Максим показывал мне их на реальных примерах: хороших и плохих. Причем он объяснял, почему здравая на первый взгляд идея на деле плохо работает. Было очень интересно.

— А что за продукт вы делали и в чем была твоя роль?

— Продукт называется winePad Der Digitale Sommelier — это система автоматизации продаж вин. В приложении не нужно заводить номенклатуру — в него встроена одна из лучших баз данных по винам Европы, с фото и описаниями.

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

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

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

Я нашел библиотеку, которая обеспечивала похожие функции, но она была написана на Python 3. Мне пришлось править ее для совместимости с Python 2.7.

— Ты говоришь, что учился взаимодействию с коллегами. Команда большая, интернациональная?

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

— Где именно в Австрии находился офис? И насколько жизнь компании отличалась от того, к чему ты привык в России?

— Я жил в городе Ландек в Тироле. Что сильно отличалось — это корпоративы. В российских компаниях, где я работал, при организации корпоративов ставка делалась на развлечение. Кроме застолья всегда были встречи со знаменитостями, разные выступления. В Австрии я впервые попал на корпоратив, полностью нацеленный на удовольствие от еды! Меня впечатлил подбор вин и угощений.

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

Один из совладельцев бизнеса — сомелье мирового уровня — раскрывал нам секреты вин. Я не большой их любитель, но был ошеломлен.

Нам наливают вино, сомелье о нем рассказывает (Максим мне переводит), затем предлагает понюхать и попробовать. Что ж, хорошее вкусное вино. «Поставьте его на пять минут», — говорит он и опять рассказывает. Через пять минут вино продышалось, пробуем снова — вкус абсолютно другой. Оставляем еще на пять минут — вкус третий. И так шесть раз! Плюс были всякие интересные закуски.

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

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

Для меня все это было ожидаемо: примерно так, как нам рассказывали на курсе командной разработки GU.

— В этом курсе помимо практики дают теорию?

— На первом этапе. Сначала нас организовали в команды, рассказали, как выбрать, что мы будем разрабатывать. Когда студенты определились с проектом, надо было рассчитать его целевую аудиторию. Во всем этом я участвовал, и только практическую часть выполнял отдельно.

Еще нам объясняли, как работает распределенная команда, как правильно относиться к задачам и взаимодействовать. Рекомендации я брал на вооружение, польза их подтвердилась.

— Сейчас ты продолжаешь работать у Максима, но уже удаленно?

— Да. Когда я ехал в Австрию, не рассчитывал на последующее трудоустройство. Моей целью было погрузиться в практическую разработку на Python и Django, получить месяц опыта.

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

Я был поглощен делом и не ждал большего. Но под католическое Рождество (25 декабря) Максим предложил сотрудничать на удаленной основе. Два раза в год я должен приезжать на месяц в Австрию, чтобы скорректировать планы на полугодие.

По перспективам, деньгам, удобству и всему остальному это предложение было идеальным — просто рождественская сказка!

Раньше мне приходилось каждый день ездить на работу через всю Москву: с севера области на юг. На дорогу в одну сторону уходило в среднем 2–2,5 часа. Сейчас я снял себе коворкинг и работаю в двадцати минутах от дома. Зарплата чуть выше прежней. И главное — перспективы. Компания оплатила мне курсы английского, чтобы я мог лучше взаимодействовать с командой.

Работа мечты, по-другому назвать не могу!

— И ее не пришлось искать.

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

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

— Какие проекты ты реализовал в GU?

— Пока я продолжаю учиться и за плечами один «сквозной» проект, который мы дорабатывали в ходе каждого учебного курса — это интернет-магазин на Django. Мы начинали с верстки (курс HTML & CSS), затем нам показали, как увязать сайт с базой данных и фреймворком Django.

Мы научились выносить повторяющуюся информацию в контексты и выводить данные из базы. Дальше — оптимизировали хранение данных, разобрались, как строятся индексы в базе, как правильно спроектировать модель магазина, исходя из реляционной структуры БД. Попутно научились работать с системой контроля версий — все изменения фиксировались в git.

Мы привязали к сайту систему перевода страниц на другие языки. Дальше начался более продвинутый курс Django 2, по итогам которого мы реализовали для магазина авторизацию через соцсети.

Мы также научились пользоваться встроенными в Django тестами: провели нагрузочное, функциональное и unit-тестирование.

Прелесть «сквозного» проекта в том, что теперь я умею делать и frontend, и backend — все, кроме дизайна. Полноценный интернет-магазин уже есть, его можно дорабатывать. У меня появились идеи, как прикрутить к нему telegram-бота.

— Зачастую в GU и GB фронтендеры кооперируются с бэкендерами и делают курсовые проекты вместе. А вы, получается, — мастера на все руки.

— Нас готовят как Middle fullstack-разработчиков, поэтому учат всему.

Кстати, неожиданно Frontend меня очень зацепил! Этот курс у нас вел Алексей Кадочников — шикарный преподаватель. Он так заинтересовал нас этим HTML: я ночами не спал — изучал дальше. Потом Алексей посоветовал мне, в какие темы углубиться дополнительно.

— Что из проектов у тебя впереди по учебному плану?

— В середине марта у нас начинается разработка мессенджера на Python. После этого научимся использовать PyQt для взаимодействия с базой данных.

— Сейчас ты занимаешься вебом, но в принципе ты ведь «питонист широкого профиля». Есть планы освоить новые направления Python-разработки?

— Машинное обучение — обязательно. За ним будущее! Я заинтересовался этой темой в первые же месяцы учебы в GU.

Тогда, еще на старой моей работе, надо было оптимизировать распределение задач в отделе. Для начала их нужно было классифицировать, и вот на этом примере я впервые «пощупал» machine learning. Разобрался, как построить вектор по заголовку и описанию задачи. Удалось довести правильность распределения задач до 90 %.

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

Мы уже обсуждали с Максимом возможность прикрутить машинное обучение к проекту WinePad. Выяснились интересные моменты. Я раньше не представлял, как модель обучения может взаимодействовать с Django.

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

— Прикольно. Я пока в этом не разобрался, нужно будет вникнуть.

— В завершение беседы поделись, пожалуйста, опытом. Что ты посоветуешь поступающим на ту же специальность?

— Мой совет: помните, что в программе обучения GU нет ничего лишнего. Вам дают самый необходимый минимум, который обязательно пригодится в работе. Берите этот объем знаний целиком. Домашние задания — наше всё! Смотрите занятия онлайн, пересматривайте, читайте методички, в ДЗ обязательно делайте все задачи со звездочками и еще что-нибудь сверху. Вы оцените результат.


Когда Максим приходит ко мне с новой задачей, я думаю: «Где-то такое уже было!» — и сразу вспоминаю, в какую методичку смотреть и какой код поднимать.

— При твоей увлеченности и мотивации, что тебе задачи со звездочками. 🙂 Думаю, секрет в этом.

— Не всегда. Мотивация — штука непостоянная! То она пропадает, то объективно времени нет и приходится сидеть ночами. Надо себя заставлять и не сдаваться! Домашнее задание — оно маленькое, примерно на два часа. Это время надо по-честному полностью уделять занятиям.

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

— Вы работаете сетевым инженером в «Альфа-Банке». Почему решили сменить профессию, ведь вы уже в IT?

— Изначально эта работа была действительно интересной. Постоянно добавлялись новые задачи и обязанности. Но теперь обслуживание специфического сетевого оборудования превратилась для меня в рутину.
Более того, после мониторинга рынка я осознал, что мои нынешние знания и опыт не особо помогут продвинуться в профессии. Фактически я оказался в тупике развития. Это я осознал примерно через четыре года работы в компании.
Все остальное нравится: адекватное руководство, отличный коллектив. Но я считаю, что в IT главное — развиваться.

— C вашей специальностью совсем не получилось бы продвигаться?

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

— Почему вы решили изучать Python?

— Все решилось само собой. Мне понадобилось написать скрипт для выгрузки данных. А знаний для этого практически не было, так как последние занятия по программированию у меня были еще в вузе. Но я слышал и читал, что для таких задач идеально подходит Python.
Огромный плюс этого языка для меня — относительная простота в освоении. Я не хотел тратить месяцы на обучение, чтобы написать скрипт. Ну а поскольку Python используется также в других аспектах веб-разработки и для аналитики, то мой выбор был очевидным.
GeekBrains я выбрал потому, что двое моих друзей учились здесь. Я поступил на курс «Программист Python».

— Что дало вам обучение?

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

— Как планируете развиваться?

— Решил продолжать работу с Python и смежными сферами. Недавно поступил в Geek University на факультет аналитики Big Data. Сложновато совмещать работу и учебу, и с маленькой дочкой тоже хочется проводить время. Но я справляюсь.

— А что с работой, уже нашли новое место?

— Пока нет, но и к поискам приступил недавно. Ищу работу по специальности «аналитик Big Data» или Data Scientist. Это очень востребованное направление: спрос на таких специалистов велик, как и спектр задач, которые они решают.
Активно начну искать новое место после того, как закончу обучение. Помимо курсов в GU еще изучаю машинное обучение и анализ данных на Coursera. Подтягиваю математику и алгоритмы. Не хватает реальной практики — хотя и будет выпускной проект, который объединит все полученные знания в одну задачу.
Мне хотелось бы найти работу в крупной технокорпорации, которая специализируется на разработке и аналитике. Например, в Mail.ru или Яндексе. Хочу принимать участие в разработке проектов, которые будут полезны миллионам пользователей. Именно эта цель заставляет меня идти вперед, даже когда устал.

— Вы живете в Москве. Как считаете, подходит ли столица для представителей IT-сферы?

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

— Как считаете, чего обычно боятся те, кто только планирует уйти в IT или сменить специальность?

— У меня много раз при смене работы появлялись мысли вроде «А вдруг на новом месте будет не так комфортно, как здесь?». Но в итоге все оказывалось хорошо и я понимал, что не стоило переживать. Главное — верить в свои силы. Лично мне здорово помогала мысль «Если кто-то смог, то почему я не смогу?». И медведей учат на мотоцикле кататься.
Смена сферы деятельности может многих отпугнуть тем, что все как бы приходится начинать с нуля. Но это не совсем верно. Если вы для смены работы закончили хорошие курсы, то при выпуске у вас есть рабочие проекты, юзкейсы, а не просто набор теоретических знаний.

Начать свое дело
Пять лет назад я решил основать собственный бизнес. До этого с момента окончания вуза я работал программистом 1С, прошел путь от рядового сотрудника до руководителя проектов. За несколько лет в этой сфере я изучил подводные течения рынка, проблемы и потребности клиентов. Из-за медлительности исполнителей, лишней функциональности ПО и банальных сбоев системы крупные компании за одну ночь могли лишиться миллионной прибыли. Со временем у меня сформировалась идея, как автоматизировать типовые процессы в финансовом учете. Чтобы заняться этим, надо было перестать быть наемным сотрудником — лоббирование идей часто отнимает больше сил, чем их воплощение.

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

Понять, чему учиться дальше
Этот интерес привел меня к тому, что пару лет назад я увлекся разработкой приложений на iOS. Изучая материалы в интернете, наткнулся на портал GeekBrains. Посмотрел несколько вебинаров, изучил блог и описания курсов. В итоге начал обучение по профессии «iOS-разработчик». Вскоре отметил, насколько качественно и быстро сегодня можно получить специальность в IT.

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

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

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

Мы занимаемся корпоративным сопровождением — у наших клиентов (каждый — от 20 пользователей) ежедневно возникают вопросы и задачи. И большинство из них — типовые, которые можно легко сортировать и решать без участия человека. Это может здорово сэкономить время и ресурсы, необходимые для расширения клиентской базы, улучшения качества услуг. А в итоге — увеличить прибыль.

Я начал читать книги и статьи. Но в этой области без фундаментального образования не обойтись. А в GeekUniversity как раз стартовал факультет искусственного интеллекта. Я планировал отправить на обучение нескольких сотрудников, но захотелось сначала попробовать самому. Так в апреле 2020 года я снова стал студентом, на этот раз в онлайне.

Просыпаться и заниматься
Имея свой бизнес, невозможно выделять время на обучение каждый вечер. Так что я сдвинул режим сна и стал заниматься по утрам. Теперь ложусь в 23 часа и встаю в 5. Есть очевидный плюс: когда занимаюсь, голова свежая и никто не беспокоит. Вебинары просматриваю на удвоенной скорости — удобно при дефиците времени.

Больших сложностей в обучении нет, мне хватает 4–8 часов в неделю, в том числе на практические задания. Но иногда требуется намного больше — особенно когда берешься за задачи «со звездочкой». Скорее всего, дальше будет сложнее, так как пока мы прошли только вводную часть. Но польза от обучения уже есть. По подаче и актуальности курс мне нравится. Уже думаю над тем, кого из сотрудников наградить поступлением в GeekUniversity.

И сразу использовать знания
Изученные возможности я уже внедряю в бизнес. В компании мы запустили процессы DevOps. Много времени уходит на организацию совместной разработки и загрузки изменений в продакшн у клиента. Особенно когда клиент работает с раннего утра до 23 часов — тогда возможность внести изменения в его базу есть только ночью. Внедрение Git и сопутствующих технологий позволило автоматизировать процесс и разгрузить разработчиков.

На Python пишем нагрузочные тесты для веб-сервисов. Получается хорошо — благодаря простому и удобному синтаксису, а также богатым библиотекам.

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

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

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

Мастер Йода рекомендует:  Оптимизация индексов MySQL

Четыре проекта, где Machine Learning приносит пользу

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

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

Здравоохранение, IBM и Watson

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

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

Преобразование текста в голос и распознавание речи

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

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

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

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

Распознавание лиц

Как гово­рят спе­ци­а­ли­сты, Face Recognition — самый про­стой в мире API для рас­по­зна­ва­ния лиц для Python. Точ­ность рас­по­зна­ва­ния — 99,38% в тесте Labeled Faces in the Wild. Тест моде­ли­ру­ет реаль­ное исполь­зо­ва­ние тех­но­ло­гии, смот­рит, как она рас­по­зна­ёт людей на фото и даже с экра­нов теле­фо­нов.

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

Восстановление испорченных изображений

Deep-image-prior — про­грам­ма для вос­ста­нов­ле­ние изоб­ра­же­ний с помо­щью ней­рон­ных сетей, автор — Дмит­рий Улья­нов из Скол­ко­во. Зву­чит скуч­но, но вот, что она уме­ет:

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

Что такое машинное обучение и почему оно может лишить вас работы

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

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

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

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

Что такое машинное обучение

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

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

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

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

Почему машинное обучение — это важно

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

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

Помимо прочего, машины могут слушать нас и отвечать. Виртуальные ассистенты в наших смартфонах — будь то Siri, Cortana или Google Now — воплощают прорывы в машинной обработке естественного языка и продолжают развиваться.

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

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

Как машинное обучение применяют сегодня

Алгоритмы машинного обучения уже способны впечатлить.

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

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

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

Недавно IBM опросила Automotive 2025: Industry without borders. руководителей автомобильных компаний. 74% из них ожидают появления на дорогах умных машин уже к 2025 году.

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

Чего ждать от машинного обучения в будущем

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

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

Почему вам стоит следить за машинным обучением

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

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

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

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

По данным The Future of Jobs. Всемирного экономического форума, в течение следующих пяти лет компьютеры и роботы займут пять миллионов рабочих мест, которые сейчас принадлежат людям.

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

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

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

Лень читать лонгрид — повтыкайте хотя бы в картинку, будет полезно.

Думаю потом нарисовать полноценную настенную карту со стрелочками и объяснениями, что где используется, если статья зайдёт.

И да. Классифицировать алгоритмы можно десятком способов. Я выбрал этот, потому что он мне кажется самым удобным для повествования. Надо понимать, что не бывает так, чтобы задачу решал только один метод. Я буду упоминать известные примеры применений, но держите в уме, что «сын маминой подруги» всё это может решить нейросетями.

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

Часть 1. Классическое обучение

Первые алгоритмы пришли к нам из чистой статистики еще в 1950-х. Они решали формальные задачи — искали закономерности в циферках, оценивали близость точек в пространстве и вычисляли направления.

Сегодня на классических алгоритмах держится добрая половина интернета. Когда вы встречаете блок «Рекомендованные статьи» на сайте, или банк блокирует все ваши деньги на карточке после первой же покупки кофе за границей — это почти всегда дело рук одного из этих алгоритмов.

Да, крупные корпорации любят решать все проблемы нейросетями. Потому что лишние 2% точности для них легко конвертируются в дополнительные 2 миллиарда прибыли. Остальным же стоит включать голову. Когда задача решаема классическими методами, дешевле реализовать сколько-нибудь полезную для бизнеса систему на них, а потом думать об улучшениях. А если вы не решили задачу, то не решить её на 2% лучше вам не особо поможет.

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

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

Классификация

«Разделяет объекты по заранее известному признаку. Носки по цветам, документы по языкам, музыку по жанрам»

Сегодня используют для:

  • Спам-фильтры
  • Определение языка
  • Поиск похожих документов
  • Анализ тональности
  • Распознавание рукописных букв и цифр
  • Определение подозрительных транзакций

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

Классификация вещей — самая популярная задача во всём машинном обучении. Машина в ней как ребёнок, который учится раскладывать игрушки: роботов в один ящик, танки в другой. Опа, а если это робот-танк? Штош, время расплакаться и выпасть в ошибку.

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

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

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

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

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

Для этой задачи придумали Деревья Решений. Машина автоматически разделяет все данные по вопросам, ответы на которые «да» или «нет». Вопросы могут быть не совсем адекватными с точки зрения человека, например «зарплата заёмщика больше, чем 25934 рубля?», но машина придумывает их так, чтобы на каждом шаге разбиение было самым точным.

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

Деревья нашли свою нишу в областях с высокой ответственностью: диагностике, медицине, финансах.

Два самых популярных алгоритма построения деревьев — CART и C4.5.

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

Но самым популярным методом классической классификации заслуженно является Метод Опорных Векторов (SVM). Им классифицировали уже всё: виды растений, лица на фотографиях, документы по тематикам, даже странных Playboy-моделей. Много лет он был главным ответом на вопрос «какой бы мне взять классификатор».

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

У классификации есть полезная обратная сторона — поиск аномалий. Когда какой-то признак объекта сильно не вписывается в наши классы, мы ярко подсвечиваем его на экране. Сейчас так делают в медицине: компьютер подсвечивает врачу все подозрительные области МРТ или выделяет отклонения в анализах. На биржах таким же образом определяют нестандартных игроков, которые скорее всего являются инсайдерами. Научив компьютер «как правильно», мы автоматически получаем и обратный классификатор — как неправильно.

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

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

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

Регрессия

«Нарисуй линию вдоль моих точек. Да, это машинное обучение»

Сегодня используют для:

  • Прогноз стоимости ценных бумаг
  • Анализ спроса, объема продаж
  • Медицинские диагнозы
  • Любые зависимости числа от времени

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

Регрессию очень любят финансисты и аналитики, она встроена даже в Excel. Внутри всё работает, опять же, банально: машина тупо пытается нарисовать линию, которая в среднем отражает зависимость. Правда, в отличии от человека с фломастером и вайтбордом, делает она это математически точно — считая среднее расстояние до каждой точки и пытаясь всем угодить.

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

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

Для желающих понять это глубже, но тоже простыми словами, рекомендую цикл статей Machine Learning for Humans

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

Обучение без учителя (Unsupervised Learning) было изобретено позже, аж в 90-е, и на практике используется реже. Но бывают задачи, где у нас просто нет выбора.

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

Когда нет разметки, есть надежда на капитализм, социальное расслоение и миллион китайцев из сервисов типа Яндекс.Толока, которые готовы делать для вас что угодно за пять центов. Так обычно и поступают на практике. А вы думали где Яндекс берёт все свои крутые датасеты?

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

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

Кластеризация

«Разделяет объекты по неизвестному признаку. Машина сама решает как лучше»

Сегодня используют для:

  • Сегментация рынка (типов покупателей, лояльности)
  • Объединение близких точек на карте
  • Сжатие изображений
  • Анализ и разметки новых данных
  • Детекторы аномального поведения

m.neumann/sp2020/cse517/lecturenotes/images/c22kmeans/TimoKmeans.png Всего у нас получается 256 * 256 * 256 = 16 777 216 возможных точек, где может оказаться каждый пиксель изображения, и столько же уникальных цветов(!). А нам-то нужно всего 32. 1. Мы рандомно закидываем в это 3D-пространство 32 центроида (пока еще не обладающие цветовым кодом. Пока что они нужны нам только для первичной кластеризации «3D-взвеси») 2. Далее смотрим, к какому из центроидов каждый пиксель нашей «взвеси» находится ближе. То есть тупо по трем дименшенам. Получаем кластеры первого порядка 3. Далее перемещаем центроиды внутри наших получившихся 32 кластеров первого порядка. Перемещаем так, чтобы центроиды реально были центроидами и были равноудалены от каждой точки в кластере 4. Смотрим, не изменили ли некоторые пиксели принадлежность к кластеру. Ведь в предыдущем шаге 32 центроида переместлись. Наверняка некоторые пиксели оказались теперь ближе к другому центроиду. Границы кластеров чуть-чуть изменились после этого шага за счет смены некоторыми пикселями принадлежности к кластеру 5. Повторяются шаги 3-4 до тех пор, пока не окажется, что центроиды уже не двигаются на шаге 3. То есть они и так уже равноудалены. Когда центроиды окончательно останавливаются, пункт 4 уже неактуален, т.к. изменений нет. Переходим к пункту 6 6. Прекращение перемещения центроидов означает, что у нас есть хорошие сбитые математически выверенные кластеры, сформированные вокруг них. 7. Теперь мы просто смотрим координаты каждого из 32 центроидов. Например (38, 228, 238). И все пиксели, которые у нас были «скластеризованы» вокруг него, перекрашиваем в данный RGB-цвет. 8. Возвращаем все пиксели на место. Готово. У вас 32-цветовое изображение. Вы великолепны! Если где-то ошибся, пардон. Исправьте, если не прав. PS Кстати, нашел ссылку на изображение, содержащее все 16 777 216 RGB-цветов: https://davidnaylor.org/temp/all16777216rgb-diagonal.png

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

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

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

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

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

Проблема только, как быть с цветами типа Cyan ◼︎ — вот он ближе к зеленому или синему? Тут нам поможет популярный алгоритм кластеризации — Метод К-средних (K-Means). Мы случайным образом бросаем на палитру цветов наши 32 точки, обзывая их центроидами. Все остальные точки относим к ближайшему центроиду от них — получаются как бы созвездия из самых близких цветов. Затем двигаем центроид в центр своего созвездия и повторяем пока центроиды не перестанут двигаться. Кластеры обнаружены, стабильны и их ровно 32 как и надо было.

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

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

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

Работает такой подход, по сравнению с классификацией, не очень. Но за спрос не бьют, вдруг получится.

Уменьшение Размерности (Обобщение)


«Собирает конкретные признаки в абстракции более высокого уровня»

Сегодня используют для:

  • Рекомендательные Системы (★)
  • Красивые визуализации
  • Определение тематики и поиска похожих документов
  • Анализ фейковых изображений
  • Риск-менеджмент

Изначально это были методы хардкорных Data Scientist’ов, которым сгружали две фуры цифр и говорили найти там что-нибудь интересное. Когда просто строить графики в экселе уже не помогало, они придумали напрячь машины искать закономерности вместо них. Так у них появились методы, которые назвали Dimension Reduction или Feature Learning.

Проецируем 2D-данные на прямую (PCA)

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

Инструмент на удивление хорошо подошел для определения тематик текстов (Topic Modelling). Мы смогли абстрагироваться от конкретных слов до уровня смыслов даже без привлечения учителя со списком категорий. Алгоритм назвали Латентно-семантический анализ (LSA), и его идея была в том, что частота появления слова в тексте зависит от его тематики: в научных статьях больше технических терминов, в новостях о политике — имён политиков. Да, мы могли бы просто взять все слова из статей и кластеризовать, как мы делали с ларьками выше, но тогда мы бы потеряли все полезные связи между словами, например, что батарейка и аккумулятор, означают одно и то же в разных документах.

Точность такой системы — полное дно, даже не пытайтесь.

Нужно как-то объединить слова и документы в один признак, чтобы не терять эти скрытые (латентные) связи. Отсюда и появилось название метода. Оказалось, что Сингулярное разложение (SVD) легко справляется с этой задачей, выявляя для нас полезные тематические кластеры из слов, которые встречаются вместе.

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

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

Мастер Йода рекомендует:  Подборка статей, переводов, докладов и ресурсов для Frontend-разработчика

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

На эту тему есть неплохая лекция Яндекса — Как работают рекомендательные системы

Поиск правил (ассоциация)

«Ищет закономерности в потоке заказов»

Сегодня используют для:

  • Прогноз акций и распродаж
  • Анализ товаров, покупаемых вместе
  • Расстановка товаров на полках
  • Анализ паттернов поведения на веб-сайтах

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

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

То же касается интернет-магазинов, где задача еще интереснее — за каким товаром покупатель вернётся в следующий раз?

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

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

Часть 2. Обучение с подкреплением

«Брось робота в лабиринт и пусть ищет выход»

Сегодня используют для:

  • Самоуправляемых автомобилей
  • Роботов пылесосов
  • Игр
  • Автоматической торговли
  • Управления ресурсами предприятий

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

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

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

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

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

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

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

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

Эта идея лежит в основе алгоритма Q-learning и его производных (SARSA и DQN). Буква Q в названии означает слово Quality, то есть робот учится поступать наиболее качественно в любой ситуации, а все ситуации он запоминает как простой марковский процесс.

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

Ответ — хрен знает, никак, магии не бывает, исследователи постоянно этим занимаются, изобретая свои костыли. Одни прописывают все ситуации руками, что позволяет им обрабатывать исключительные случаи типа проблемы вагонетки. Другие идут глубже и отдают эту работу нейросетям, пусть сами всё найдут. Так вместо Q-learning’а у нас появляется Deep Q-Network (DQN).

Reinforcement Learning для простого обывателя выглядит как настоящий интеллект. Потому что ух ты, машина сама принимает решения в реальных ситуациях! Он сейчас на хайпе, быстро прёт вперёд и активно пытается в нейросети, чтобы стать еще точнее (а не стукаться о ножку стула по двадцать раз).

Потому если вы любите наблюдать результаты своих трудов и хотите популярности — смело прыгайте в методы обучения с подкреплением (до чего ужасный русский термин, каждый раз передёргивает) и заводите канал на ютюбе! Даже я бы смотрел.

Помню, у меня в студенчестве были очень популярны генетические алгоритмы (по ссылке прикольная визуализация). Это когда мы бросаем кучу роботов в среду и заставляем их идти к цели, пока не сдохнут. Затем выбираем лучших, скрещиваем, добавляем мутации и бросаем еще раз. Через пару миллиардов лет должно получиться разумное существо. Теория эволюции в действии.

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

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

Введение в машинное обучение

Машинное обучение – это подполе искусственного интеллекта (AI). Цель машинного обучения состоит в анализе структур данных и создании на их основе моделей, которые могут понимать и использовать люди.

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

Машинное обучение положительно влияет на все современные технологии.

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

Машинное обучение постоянно развивается. Потому при работе с методами машинного обучения или прианализе влияния его процессов следует учитывать некоторые нюансы.

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

Методы машинного обучения

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

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

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

Рассмотрим эти методы более подробно.

Машинное обучение с учителем

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

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

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

Машинное обучение без учителя

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

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

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

Алгоритм, который не знает «правильных» ответов, может анализировать и организовывать более широкие и несвязанные наборы данных. Обучение без учителя часто используется для обнаружения аномалий (в том числе выявления для мошенничества с кредитными картами) и создания систем рекомендаций, которые советуют пользователю, какие продукты купить/ какой фильм посмотреть и т.п. на основе его предпочтений. При обучении без учителя немаркированные изображения собак могут использоваться в качестве входных данных для алгоритма поиска сходств и классификации всех фотографий собак.

Подходы в машинном обучении

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

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

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

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

Метод k-ближайшего соседа

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

Сосредоточимся на методах для классификации объектов в k-NN. Вывод этого метода относит объект к одному из доступных классов. Это присвоит новый объект классу, наиболее часто используемому среди его ближайших соседей. Если k = 1, объект присваивается классу ближайшего соседа.

Для примера представьте, что у нас есть два класса объектов: красные ромбы и синие треугольники.

Если в пространстве появляется новый объект – к примеру, зеленый круг, — алгоритм должен отнести его к определенному классу.

При k = 3 алгоритм находит трех ближайших соседей зеленого круга и классифицирует их. Предположим, тремя ближайшими соседями круга оказались один ромб и два треугольника. В таком случае круг будет отнесен к классу треугольников.

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

Деревья принятия решений

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

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

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

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

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

Глубокое обучение

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

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

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

Подходы глубокого обучения оказали существенное влияние на развитие компьютерного зрения и распознавания речи. Хорошим примером системы, которая использует глубокое обучение, является IBM Watson.

Языки программирования и машинное обучение

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

Сегодня можно предположить, что наиболее востребованным языком программирования в профессиональной области машинного обучения является Python. Затем идет Java, затем R и C ++.

Популярность Python может быть вызвана интенсивной разработкой систем глубокого обучения: TensorFlow, PyTorch и Keras. Будучи языком с удобочитаемым синтаксисом, который можно использовать в качестве языка сценариев, Python одинаково производителен как в предварительной обработке данных, так и в работе с данными напрямую. Библиотека машинного обучения scikit-learn построена на основе нескольких других пакетов Python, популярных среди разработчиков: NumPy, SciPy и Matplotlib.

Читайте также:

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

Среди библиотек машинного обучения для Java:

  • Deeplearning4j, распределенная библиотека с открытым исходным кодом для глубокого обучения, написанная для Java и Scala.
  • MALLET (MAchine Learning for LanguagE Toolkit), набор инструментов для машинного обучения по текстам, который включает поддержку обработки естественного языка, моделирования тем, классификации документов и кластеризации.
  • Weka, набор алгоритмов машинного обучения для обработки интеллектуального анализа данных.

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

  • caret (сокращение от Classification And REgression Training), библиотека для создания прогностических моделей.
  • randomForest, пакет для классификации и регрессии.
  • e1071, пакет, предоставляющий функции статистики и теории вероятностей.

Язык C++ обычно используется для машинного обучения и искусственного интеллекта в игровых или роботизированных приложениях (в том числе для передвижения роботов). Разработчики встроенных вычислительных аппаратов и инженеры-электроники предпочитают использовать C++ или C в приложениях для машинного обучения благодаря их гибкости и предлагаемому уровню контроля. Популярными библиотеками машинного обучения C++ являются масштабируемый пакет mlpack, Dlib с широким набором алгоритмов машинного обучения и модульная библиотека с открытым исходным кодом Shark.

Человеческий фактор в машинном обучении

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

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

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

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

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

Заключение

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

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

Лучшие инструменты машинного обучения и искусственного интеллекта для разработчиков программ

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

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

1. Инструменты машинного обучения от Microsoft

На недавней конференции Ignite Microsoft, которая была проведена в городе Орландо, штат Флорида, корпорация запустила три новых инструмента машинного обучения:

  • сервис Azure Machine Learning Experimentation
  • сервис Azure Machine Learning Workbench
  • сервис Azure Machine Learning Model Management.

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

Для не разработчиков программ корпорация также запустила инструмент использования функционала искусственного интеллекта в пределах таблиц Excel.

В начале текущего года для «обеспечения всеобщего доступа к новой технологии» Microsoft предложил разработчикам такие инструменты искусственного интеллекта как:

  • Custom Speech Service
  • Content Moderator
  • Bing Speech

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

2. Ai-one – ваш интеллектуальный помощник

Ai-one — продукт, стимулом разработки которого, по словам его творцов, явился «биологический интеллект», предоставляет разработчикам возможность создания интеллектуальных помощников внутри большинства приложений.

Набор инструментов «Analyst Toolbox» содержит библиотеку документов, инструментарий для конструирования интеллектуальных агентов и API. Ai-one может трансформировать данные в обобщенный свод правил, благоприятно влияющий на большинство глубоких структур искусственного интеллекта и машинного обучения.

3. Protege – инструмент для программ, основанных на знаниях

В целом, Protege используется для разработок бизнес-приложений. Вместе с тем, Protege имеет набор инструментов открытого кода, который идеален при разработке «приложений, основанных на знаниях с элементами онтологии».

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

4. IBM Watson – платформа от IBM с множеством инструментов

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

Watson представлен как набор API с открытым кодом. Пользователи Watson будут иметь доступ к примерам кодов, стартовый набор инструментов, а также смогут создавать когнитивные поисковые движки и виртуальных агентов.

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

5. DiffBlue – платформа автоматизации кодирования

Платформа, которая создана Daniel Kroening из Оксфордского университета, является простой и чрезвычайно полезной для осуществления автоматизации кодирования. DiffBlue автоматически осуществляет такие процессы как локализация багов, проведение рефакторинга кода и написание тестов, выявление и фиксация слабых мест в коде.

6. Google’s TensorFlow – платформа для проектов машинного обучения

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

Работа TensorFlow основывается на библиотеке численных расчетов, использующих графы потока данных. Это позволяет разработчикам осуществлять развертывание технологии глубокого изучения над множеством центральных процессоров (CPU) мобильных и настольных устройств и планшетов.

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

7. Nervana Neon – следующее поколение интеллектуальных агентов и приложений

Nervana Neon является совместным продуктом компаний Nervana и Intel. Это библиотека машинного обучения на базе языка Python с открытым исходным кодом.

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

Неон предлагает большое количество видео учебных материалов и «моделей zoo», содержащих предтренинговые алгоритмы и примеры скриптов.

8. Амазон AWS для веб-сервисов предлагает новый инструментарий искусственного интеллекта

На прошлогодней re:invent конференции в Сан-Франциско Амазон AWS для веб-сервисов объявил о новых трех наборах сервисного инструментария искусственного интеллекта для разработчиков программ.

Сервис AWS Rekognition использует искусственный интеллект для обеспечения возможностей дополнения приложений такими функциями как анализ и модерация изображений и распознавание лица. Данные приложения нередко используются в системах безопасности, основанных на анализе биометрических характеристик людей.

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

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

9. OpenNN – библиотека программирования на языке С++

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

OpenNN также создал инструмент для продвинутой аналитики — Neural Designer, который позволяет упростить и провести интерпретацию ввода данных посредством создания визуального контента в виде графиков и таблиц.

10. Apache Spark MLlib предлагает большую базу алгоритмов

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

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

11. Caffe – фреймворк для глубокого изучения C++

Caffe предлагает основанный на изображении инструмент автоматического инспектора, который создан Berkeley Vision и Learning Center (BVLC) совместно с сообществом разработчиков.

Фреймворк уже используется как часть «научных исследований, в прототипах стартапов и даже в промышленных приложениях, применяемых для компьютерного зрения, распознавания речи и в мультимедиа. Известными пользователями Caffe являются Facebook и Pinterest.

12. Veles – готовое к использованию API

Veles является частью распределенной платформы глубокого изучения Samsung. Написан на C++ и использует язык Python для координации нод.

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

13. Apache Mahout для маштабирования приложений

Mahout создан для специалистов, которые хотели бы разработать масштабируемые приложения машинного обучения. Mahout предоставляет разработчикам возможность использовать пред-сформированные алгоритмы для Apache Spark, H20 и Apache Flink.

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

14. Microsoft Azure позволяет выгрузить предиктивную аналитику

Самым большим бонусом инструмента машинного обучения Azure является платформа «Azure Machine Learning Studio», которая позволяет разработчикам, не имеющим глубокого опыта в сфере машинного обучения, перетаскивать (DnD) datasets и выгружать предиктивную аналитику,

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

Добавить комментарий