Машинное обучение с чего начать

Машинное обучение. С чего начать? Часть 1

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Jul 30, 2019 · 4 min read

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

Введение. Машинное обучение с помощью Python

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

Насколько это сложно?

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

Не удивительно, что Python выбирают создатели библиотек, работы которых в последствии используют специалисты по обработке данных и аналитики для решения своих задач. Далее мы обсудим эти must-have библиотеки для машинного обучения.

Знаменитая библиотека для анализа числовых данных. Она способна на многое: от вычисления медианы распределения данных до обработки многомерных массивов.

Тот самый инструмент, который поможет вам обрабатывать CSV файлы.

Библиотека для визуализации данных, например дата фреймов Pandas.

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

И, наконец, самое главное — библиотека с алгоритмами и другими необходимыми вещами для машинного обучения.

6. Tensorflow и Pytorch

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Проекты

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Пример проекта, который мы рассмотрим в этом уроке:

Titanic: Machine Learning from Disaster

Речь пойдёт о печально известном «Титанике». Трагическая катастрофа 1912 года, в которой погибли 1502 из 2224 пассажиров и экипажа. В этом конкурсе (или уроке) на основе реальных данных о катастрофе ваша задача предсказать, выжил ли человек во время трагедии.

Для начала давайте установим необходимые инструменты.

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

Далее установите все необходимые библиотеки через Python pip. Pip должен установиться автоматически с дистрибутивом Python.

В терминале, командной строке или Powershell введите следующее:

Если вы ещё не знакомы с jupyter notebook, то это популярный инструмент для интерактивного написания кода. Название состоит из слов Julia, Python, и R. Напишите в терминале jupyter notebook, и вам откроется такая страничка:

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Наберите код в зелёном поле и сразу увидите результат.

Теперь, когда все инструменты установлены, можно приступать.

Исследование данных

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

Импортируем нужные библиотеки:

Вы должны увидеть такую таблицу:

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Это и есть наши данные. Здесь есть следующие колонки:

В процессе изучения данных часто всплывают недостающие данные. Давайте найдём их:

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Отсутствуют некоторые значения в колонках Cabin, Age и Embarked. Очень много неизвестных номеров кают. С этим нужно что-то делать. Это называют очисткой данных.

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

Источник

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

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

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

Мне эти принципы помогли относительно быстро перейти из 1С в дата-сайентиста и за два года вырасти до уровня синьора, по уровню ЗП и автономности (ссылка на прошлую статью об этом)

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

Для запоминания нужно повторение

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

Как применять повторение:

в изучении программирования: напишите мини-программу. Поэтому, например, для изучения самых базовых основ Python для меня было эффективно решение мини-задачек, как на сайте http://pythontutor.ru/

Нередко перечитывая даже одну и ту же книгу или статью по 2-3 раза можно всё более глубоко понять ту же концепцию или мысль автора. Также об этом в следующем принципе.

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

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

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

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

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

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

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

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

Не заставляйте себя. Поддерживайте свою энергию и интерес к обучению

«Товарищ, запомни правило простое: Работаешь — сидя, Отдыхай — стоя!» (В.Маяковский).

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

Интуицию данного принципа хорошо выразил Михаил Жванецкий:

Лучше поспать. Лучше поесть. Лучше посмотреть на огонь, на ребенка, на женщину, на воду…»

Постоянно исследуйте алтернативные способы обучения

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

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

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

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

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

Применение данного принципа в образовании

Большинство людей применяют этот принцип интуитивно. Но при этом могут использовать его не во всех сферах своей жизни. Хотя он эффективно применим, например, к самообразованию. Существуют десятки разных курсов и книг, по которым можно что-либо изучать. Можно ли точно знать заранее, какой из них окажется эффективнее для вас? По разным признакам это можно определить. С опытом вы можете понять, что курсы на udemy.com часто оказываются менее глубокими чем на coursera.org. Но всё равно: возможно, вы попробовали мало вариантов или что-то изменилось. Поэтому следует изучать новинки и альтернативные книги/курсы. Особенно когда вы только начинаете изучать эту сферу, особенно когда вы чувствуете что текущий курс или книга, которые вам все рекомендовали, почему то «не идут».

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

Экстра-принцип для одноязычной аудитории: учите английский!

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

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

Чтобы быть эффективным в data science, вы должны уметь свободно понимать технические тексты. Это легче, чем понимать художественные тексты, вам даже необязательно учиться и уметь говорить/писать самому. Достаточно, чтобы с английским у вас было как у персонажей из «Кавказской пленницы»: «Они совершенно не умеют говорить по-русски, но всё понимают».

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

Для запоминания слов в соответствии с принципом повторения, описанным выше, рекомендую компьютерную версию anki и ankidroid для Андроида и составлять для себя свой собственный словарь только по самым важным словам. Эту программу я открыл благодаря курсу об эффективном обучении, ссылку на который давал выше. И позже я встретил гигантский пост от автора одной из уникальных базовых книг о нейронных сетях о том, как он использует этот ankidroid для изучения всего от концепций машинного обучения до сигнатуры команд bash. Он именно составляет свой собственный словарь, не используя стандартные, и ведёт один словарь для всего, без деления по темам. Нюансы читайте в статье.

Другие статьи о самообразовании

Готов стать ментором

Источник

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

Полный курс на русском языке можно найти по этой ссылке.
Оригинальный курс на английском доступен по этой ссылке.

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Выход новых лекций запланирован каждые 2-3 дня.

Интервью с Себастьяном Труном, CEO Udacity

— И снова всем привет, с вами я, Пейдж и сегодня со мной гость — Себастьян.
— Привет, я Себастьян!
— … человек у которого невероятная карьера, успевшего сделать множество потрясающих вещей! Вы являетесь со-основателем Udacity, вы основали Google X, вы професcор в Стэнфорде. Вы занимались невероятными исследованиями и глубоким обучением на всём протяжении своей карьеры. Что приносило вам наибольшее удовлетворение и в какой из областей вы получали наибольшее вознаграждение за проделанную работу?
— Скажу честно, я очень люблю находиться в Кремниевой долине! Мне нравится находится рядом с людьми, которые значительно умнее меня, и я всегда рассматривал технологии, как инструмент менющий правила игры различными способами — начиная от образования и заканчивая логистикой, здравохранением и т.д. Всё это меняется настолько быстро, и возникает невероятное желание быть участником этих изменений, наблюдать за ними. Ты смотришь на окружающее тебя и понимаешь, что большинство из того, что ты видишь вокруг, не работает так, как это должно — всегда можно изобрести нечто новое!
— Ну что ж, это очень оптимистичный взгляд на технологии! Какой момент на протяжении всей вашей карьеры был самой большой «эврикой»?
— Господи, их было так много! Помню один из дней, когда Ларри Пейдж позвонил мне и предложил создать автопилотируемые автомобили, которые смогли бы проезжать по всем улицам Калифорнии. В то время я считался экспертом, меня к таковым причисляли и, я был тем самым человеком, который сказал «нет, этого нельзя сделать». После этого Ларри убедил меня, что, в принципе, это возможно сделать, стоит только начать и сделать попытку. И мы сделали это! Это был момент, когда я осознал, что даже эксперты ошибаются и говоря «нет» мы на 100% становимся пессимистами. Я думаю мы должны быть более открыты новому.
— Или, например, если вам звонит Ларри Пейдж и говорит, — «Хэй, сделай крутую вещь вроде Google X» и получается нечто достаточно крутое!
— Да, это точно, жаловаться не приходится! Я имею ввиду, что всё это — процесс, который проходит через множество обсуждений на пути к реализации. Мне, действительно, повезло работать и я горжусь этим, в Google X и над другими проектами.
— Потрясающе! Итак, этот курс полностью о работе с TensorFlow. У вас есть опыт использования TensorFlow или может быть вы знакомы (слышали) с ним?
— Да! Я, в буквальном смысле, люблю TensorFlow, конечно! В моей собственной лаборатории мы используем его часто и много, одна из самых значимых работ на основе TensorFlow вышла около двух лет назад. Мы узнали, что iPhone и Android могут быть эффективнее в определении рака кожи, чем лучшие дерматологи в мире. Своё исследование мы опубликовали в Nature и это произвело своего рода переполох в медицине.
— Звучит потрясающе! Значит вы знаете и любите TensorFlow, что само по себе здорово! Вы уже успели поработать с TensorFlow 2.0?
— Нет, к сожалению пока не успел.
— Он будет просто восхитителен! Все студенты этого курса будут работать с этой версией.
— Я завидую им! Обязательно попробую!
— Прекрасно! На нашем курсе очень много студентов, которые в своей жизни ни разу не занимались машинным обучение, от слова «совсем». Для них область может быть нова, возможно для кого-то само программирование будет вновинку. Какой у вас совет для них?
— Я бы пожелал им оставаться открытыми — к новым идеям, методикам, решениям, позициям. Машинное обучение, на самом деле, проще, чем программирование. В процессе программирования вам необходимо учитывать каждый случай в исходных данных, адаптировать под него логику программы и правила. В это самое время, используя TensorFlow и машинное обучение вы, по сути, тренируете компьютер используя примеры, предоставляя компьютеру самому находить правила.
— Это невероятно интересно! Мне не терпится рассказать студентам этого курса немного больше о машинном обучении! Себастьян, благодарю, что нашел время и пришёл сегодня к нам!
— Благодарю! Оставайтесь на связи!

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

Итак, давайте начнём со следующей задачи — даны входные и выходные значения.

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Когда в качестве входного значения у вас значение 0, то в качестве выходного значения — 32. Когда в качестве входного значения у вас 8, то в качестве выходного значения — 46.4. Когда в качестве входного значения у вас 15, то в качестве выходного значения — 59 и так далее.

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Если вы ответили 100.4, то оказались правы!

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Итак, как мы могли решить эту задачу? Если присмотреться внимательнее к значениям, то можно заметить, что они связаны выражением:

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Где С — градусы Цельсия (входные значения), F — Фаренгейта (выходные значения).

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

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Итак, что мы имеем? Функция принимает входное значение C, затем вычисляет выходное значение F используя явно заданный алгоритм, а затем возвращает вычисленное значение.

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

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

Мы тренируем нейронную сеть через повторяющиеся попытки сопоставить входные значения выходным.

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

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

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

А вот одна крутая вещь над которой стоит задуматься! Если вы решили задачу преобразования градусов Цельсия в Фаренгейты, которая обозначена в видео и в тексте ниже, вы, вероятно, решили её потому, что обладали неким предыдущим опытом или знанием, как производить подобного рода преобразования из градусов Цельсия в Фаренгейты. Например, вы могли просто знать, что 0 градусов Цельсия соответствуют 32 градусам по Фаренгейту. С другой стороны, системы основанные на машинном обучении не обладают предыдущими вспомогательными знаниями для решения поставленной задачи. Они учатся решать подобного рода задачи не основываясь на предыдущих знаниях и при их полном отсутствии.

Довольно разговоров — переходим к практической части лекции!

CoLab: преобразуем градусы Цельсия в градусы Фаренгейта

Основы: обучение первой модели

Добро пожаловать в CoLab, где мы будем тренировать нашу первую модель машинного обучения!

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

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Безусловно, было бы проще просто написать функцию конвертации на Python или любом другом языке программирования, которая бы выполняла непосредственные вычисления, но в таком случае это не было бы машинным обучением 🙂

Вместо этого мы подадим на вход TensorFlow имеющиеся у нас входные значения градусов Цельсия (0, 8, 15, 22, 38) и их соответствующие градусы по Фаренгейту (32, 46, 59, 72, 100). Затем мы натренируем модель таким образом, чтобы та примерно соответствовала приведённой выше формуле.

Импорт зависимостей

Подготовка данных для тренировки

Создаём модель

Строим сеть

Мы назовём слой l0 (layer и ноль) и создадим его, инициализировав tf.keras.layers.Dense со следующими параметрами:

Преобразуем слои в модель

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

Компилируем модель с функцией потерь и оптимизаций

Перед тренировкой модель должна быть скомпилирована (собрана). При компиляции для тренировки необходимы:

Функция потерь и функция оптимизации используются во время тренировки модели ( model.fit(. ) упоминаемая ниже) для выполнения первичных вычислений в каждой точке и последующей оптимизации значений.

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

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

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

Что полезно знать об этих параметрах:

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

Тренируем модель

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

Отображаем статистику тренировок

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Используем модель для предсказаний

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

Например, сколько будет 100.0 градусов Цельсия по Фаренгейту? Попробуйте угадать перед тем как запускать код ниже.

Правильный ответ 100×1.8+32=212, так что наша модель справилась достаточно хорошо!

Смотрим на веса

Значение первой переменной близко к

32. Эти значения (1.8 и 32) являются непосредственными значениями в формуле конвертации градусов Цельсия в градусы Фаренгейта.

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

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

Немного экспериментов

Как вы могли уже заметить, текущая модель тоже способна достаточно хорошо предсказывать соответствующие значения градусов Фаренгейта. Однако, если взглянуть на значения внутренних переменных (веса) нейронов по слоям, то никаких значений похожих на 1.8 и 32 мы уже не увидим. Добавленная сложность модели скрывает «простую» форму преобразования градусов Цельсия в градусы Фаренгейта.

Оставайся на связи и в следующей части мы рассмотрим то, каким образом работают Dense-слои «под капотом».

Краткое резюме

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Это было по-настоящему впечатляюще, учитывая то, сколько строчек кода нам понадобилось написать:

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

Процесс тренировки

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

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

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

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

К этому моменты вы уже должны быть знакомы со следующими терминами:

Dense-слои

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

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Чтобы создать приведенную выше нейронную сеть нам достаточно следующих выражений:

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

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

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

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

Давайте теперь вернёмся к нашему примеру конвертации градусов Цельсия в градусы Фаренгейта.

Машинное обучение с чего начать. Смотреть фото Машинное обучение с чего начать. Смотреть картинку Машинное обучение с чего начать. Картинка про Машинное обучение с чего начать. Фото Машинное обучение с чего начать

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

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

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

Оставайтесь на связи, потому что сейчас начнётся самое интересное!

Итоги

… и стандартные call-to-action — подписывайся, ставь плюс и делай share 🙂

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *