Введение в машинное обучение: люди и изобретения, способствовавшие его зарождению и развитию в it

Содержание

Надо понимать суть, принципы и концепции, интуицию. Не стоит пытаться просто запомнить

«Знание некоторых принципов избавляет от необходимости знания многих фактов»

«Зри в корень» (Козьма Прутков)

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

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

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

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

Эндрю Ын (Andrew Ng), известный евангелист использования нейронных сетей и педагог, чьи курсы по нейронным сетям очень популярны, подчеркивал ключевую роль данного принципа в своих интервью. Свои курсы он строит так, чтобы научить интуиции разных подходов (в будущих статьях дам ссылки и рекомендации по этим курсам).

Примеры

Примеры принципов машинного обучения, которые надо понять интуитивно:

  • идея стохастического градиентного спуска и почему именно стохастический вариант

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

  • что такое оверфиттинг (упаси Вас бог стараться это понять через формулы)

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

  • почему средняя «аккуратность» прогнозирования — плохое средство измерить его качество модели машинного обучения

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

В математике тоже работает понимание принципов, которое поможет запомнить формулы:

  • в логистической регрессии надо понять зачем вводят логарифм соотношения шансов разных классов (log-odds), хотя в конечном счете обучают модель, предсказывающую вероятность

  • в методах log-likelihood: зачем снова этот log? Почему с ним легче, чем без него

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

Делитесь своей работой

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

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

Во время обучения, я делился своей работой в Интернете. Мой GitHub был заполнен проектами, которые я сделал, профиль на LinkedIn я забросил и стал делиться своими знаниями через YouTube и статьи на Medium.

Я никогда не писал резюме для Max Kelsen, потому что они и так уже все про меня знали из моего профиля на LinkedIn.

Моя публичная деятельность и была моим резюме.

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

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

Обучение по спирали: возвращайтесь к одной теме многократно, постепенно углубляясь

Снова может показаться, что этот принцип противоречит самому первому, что во всём следует стараться разбираться основательно. Так и есть, но даже стремясь к качественному пониманию — не всегда получается что-то досконально понять сразу.

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

Соответственно, на каждой стадии обучения книги и курсы вы должны подбирать в соответствии со своими текущим этапом:

  • На первом хорошо подходят книги рассказывающие об общих конецпциях machine learning и data science и, например, вообще не вдающиеся в математику. В математике в данный момент достаточно знать, что такое производная/градиент и иметь общие представления о теор.вере (без знаний о проверке гипотез и разных стат.распределениях).

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

  • Потом имеет смысл брать книги, раскрывающие детали реализации отдельных методов, изучать их принципы более глубоко, понимать математику этих методов. Тут уже полезно и математику более глубоко вспоминать/учить, по мере того, как она будет необходима для понимания алгоритмов. Потому что «сухая математика» без примеров применения — понимается и запоминается хуже, из этого также следует будущий принцип, и об этом писал даже Ричард Фейнман (нобелевский лауреат по физике), в своей автобиографии.

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

Кажется, видел этот совет у Andrej Karpathy, руководителя группы искуственного интеллекта в Tesla, чьи блог-посты о нейронных сетях стали ключевыми вехами, на которые ссылаются другие авторы. Предлагается читать научные статьи о новинках в области нейронных сетей три раза:

Сюда же относится подход к первому прохождения курсов и прочтению книг или статей «по диагонали», с тем, чтобы еще раз, не перескакивая, прочитать их позднее. Кажется, видел этот совет у Andrej Karpathy, руководителя группы искуственного интеллекта в Tesla, чьи блог-посты о нейронных сетях стали ключевыми вехами, на которые ссылаются другие авторы. Предлагается читать научные статьи о новинках в области нейронных сетей три раза:

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

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

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

Индустрия 4.0

Как работают искусственный интеллект, машинное и глубокое обучение

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

Есть три причины, почему разработчики стараются перенести часть машинного обучения с серверов на устройства:

  1. Лучше защита персональных данных. Если «умная» колонка сама распознает ваш голос, то передаст на сервер только текстовый запрос, и утечка биометрических данных будет невозможна в принципе;
  2. Быстрее и устойчивее к плохой сети. Например, во время звонка ВКонтакте нейросеть на смартфоне определяет, когда вы говорите, и передает только полезный сигнал, а неинформативный шум пропускает. За счет этого экономится интернет и у вас, и у собеседников;
  3. Дешевле сервисная инфраструктура. Это помогает разработчикам внедрять новые фичи, думая в первую очередь о качестве продукта, а не о том, на что хватит серверов.

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

Изучайте свои модели (и не только)

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

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

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

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

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

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

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

Этот подход может сэкономить много времени.

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

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

Чем занимается специалист по машинному обучению

Задачи специалиста по МL отличаются в разных компаниях и проектах, но чаще всего он делает вот что:

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

Собирать данные вручную сложно: если это, например. изображения, требуются сотни тысяч фото с разных ракурсов и разными условиями освещённости. «ВКонтакте» недавно запустил новую функцию — сеть показывает фото пользователей их друзьям и спрашивает: «Это Вася Иванов?» Чтобы отметить друга на фото, требуется меньше секунды. Не поленитесь и сделайте это. Так вы поможете нейросети научиться распознавать лица, а заодно почувствуете себя специалистом по ML — хоть немножко 🙂

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

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

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

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

coursera.org

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

Данный портал был первопроходцем в он-лайн образовании, выводя в он-лайн разные курсы от топовых преподавателей американских университетов. Т.к. изначально это был вывод он-лайн лучших университетских курсов — они были ориентированы  на преподавание базовых и фундаментных принципов. Именно это свойство качественно отличает курсы на данной платформе, от других платформ. Сейчас кроме университетских курсов там также есть курсы от ведущих организаций (Google, Яндекс, deeplearning.ai, т.п.) 

Также на этой платформе есть хорошие курсы по математике ( а т.ч. специальные «математика для data science») и много других университетских курсов по самым разным областям знаний.

Следите за курсами данных организаций

Возможно, лучшие курсы по самым основам машинного обучения и дата сайенс — изначально русскоязычные и доступны на этой платформе. Это хорошие курсы и специализации Высшей школы экономики, Яндекс (+МФТИ). Даже если вы прекрасно владеете английским — основы я рекомендую изучать по этим русскоязычным курсам. В целом, каждый курс от представленных выше организацией, был мне в чём-то полезен.

Англоязычный курс по нейронным сетям от Andrew Ng (deeplearning.ai), вероятно, самые известный из всех курсов по нейронным сетям. Другие курсы от «deeplearning.ai» по нейронным сетям также хороши.

В отдельной статье, дам шорт-лист из курсов данных партнеров.

Как бесплатно просматривать курсы на coursera.org

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

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

 Другая возможность — написать в coursera.org и попросить дать вам бесплатный доступ, с мотивировкой почему вам следует его дать. Эта возможность явно указана у них на сайте. По опыту знакомых (высокооплачиваемая мать-одиночка из Германии) — они вполне идут на встречу.Также для получения скидки на курс или первый месяц подписки — можете воспользоваться ссылкой: http://fbuy.me/v/odemidenko

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

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

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

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

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

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

Подход традиционного программирования

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

Как инженер создает решение с помощью традиционного программирования

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

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

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

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

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

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

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

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

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

Как дата-инженер разрабатывает решение при помощи машинного обучения

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

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

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

Книги: learning.oreilly.com (также есть и курсы)

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

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

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

В последние годы они также развивают он-лайн курсы на своей платформе, которые доступны в рамках той же подписки. Я их пробовал только в 2019г, тогда им не хватало возможностей отработки практических навыков. Кажется, курсов, ориентированных фундаментальные знания, как на coursera.org, там было мало. Но курсов, посвященных отдельным ИТ-технологиям на этой платформе множество и самых разнообразных.

В бесплатном доступе ничего нет, и подписка достаточно дорогая (~400$ в год). Если подписаться на новости и рассылки на сайте oreilly.com — раз в год они устраивают 2 недели распродаж (в разное время! обычно — осенью). В этот период подписку можно купить со скидкой 50%

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

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

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

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

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

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

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

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

Python

Python лидирует в машинном обучении. И вот почему:

  1. Это универсальный язык, и на нём можно написать что угодно — от облачного сервиса до нейронной сети.
  2. У Python активное сообщество и огромное количество свободных МL-инструментов (TensorFlow, Keras, scikit-learn, Pandas).
  3. Новички в разработке нередко начинают именно с Python — его синтаксис прост и понятен.

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

Пример ML-проекта на Python: Video Object Removal ― программа, которая использует алгоритмы глубокого обучения, чтобы убрать из видео любые лишние объекты всего за пару секунд.

Нейросети и глубокое обучение (Deep learning)

Любая нейросеть — это набор нейронов (функций) и связей между ними. Задача нейрона — взять входные числа, выполнить над ними определенные действия и выдать результат. Пример полезного нейрона: просуммировать все цифры со входов и, если их сумма больше N, отправить на выход единицу, иначе — ноль.

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

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

Для чего необходимы нейронные сети:

В упрощённом виде работа нейросети выглядит примерно так:

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

Виды ансамблевых методов

Наиболее популярными ансамблевыми методами являются: стекинг, бэггинг, бустинг.

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

  • Бэггинг. В этом случае однородные модели обучают на разных наборах данных и объединяют. Получают прогноз путём усреднения. Если использовать в качестве слабого ученика деревья решений, то получится случайный лес RandomForestClassifier / RandomForestRegressor.

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

Как обучают специальности в GeekBrains

Рассказывает Александр Скударнов – методист образовательных программ GeekBrains.

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

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

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

Если это не ваши варианты, но вы хотите развиваться в Data Science – вам лучше выбрать факультет искусственного интеллекта или аналитики Big Data, где учат с нуля.

Заключение

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

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

  • Искусственный интеллект: общие положения
  • Как подготовить сервер к машинному обучению
  • Визуализация временных рядов в Python 3
  • Прогнозирование временных рядов с помощью Prophet в Python 3

AIMLМашинное обучение