23 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как создать собственную нейронную сеть с нуля на языке Python

Как создать собственную нейронную сеть с нуля на языке Python

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

Мотивация: ориентируясь на личный опыт в изучении глубокого обучения, я решил создать нейронную сеть с нуля без сложной учебной библиотеки, такой как, например, TensorFlow. Я считаю, что для начинающего Data Scientist-а важно понимание внутренней структуры нейронной сети.

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

Изучаем нейронные сети за четыре шага

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

Шаг 1. Нейроны и метод прямого распространения

Так что же такое «нейронная сеть»? Давайте подождём с этим и сперва разберёмся с одним нейроном.

Нейрон похож на функцию: он принимает на вход несколько значений и возвращает одно.

Круг ниже обозначает искусственный нейрон. Он получает 5 и возвращает 1. Ввод — это сумма трёх соединённых с нейроном синапсов (три стрелки слева).

В левой части картинки мы видим 2 входных значения (зелёного цвета) и смещение (выделено коричневым цветом).

«Ситиконсалт», удалённо, 200 000 ₽

Входные данные могут быть численными представлениями двух разных свойств. Например, при создании спам-фильтра они могли бы означать наличие более чем одного слова, написанного ЗАГЛАВНЫМИ БУКВАМИ, и наличие слова «виагра».

Входные значения умножаются на свои так называемые «веса», 7 и 3 (выделено синим).

Теперь мы складываем полученные значения со смещением и получаем число, в нашем случае 5 (выделено красным). Это — ввод нашего искусственного нейрона.

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

Если бы это был спам-фильтр, факт вывода 1 означал бы то, что текст был помечен нейроном как спам.

Иллюстрация нейронной сети с Википедии.

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

Я очень рекомендую посмотреть серию видео от Welch Labs для улучшения понимания процесса.

Шаг 2. Сигмоида

После того, как вы посмотрели уроки от Welch Labs, хорошей идеей было бы ознакомиться с четвертой неделей курса по машинному обучению от Coursera, посвящённой нейронным сетям — она поможет разобраться в принципах их работы. Курс сильно углубляется в математику и основан на Octave, а я предпочитаю Python. Из-за этого я пропустил упражнения и почерпнул все необходимые знания из видео.

Сигмоида просто-напросто отображает ваше значение (по горизонтальной оси) на отрезок от 0 до 1.

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

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

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

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

Шаг 3. Метод обратного распространения ошибки

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

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

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

Скриншот из руководства Мэтта Мазура по методу обратного распространения ошибки.

Вот три источника, которые помогли мне разобраться в этом методе:

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

Шаг 4. Создание своей нейронной сети

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

Ещё одной полезной статьёй оказалась A Neural Network in 11 lines of Python от IAmTrask. В ней содержится удивительное количество знаний, сжатых до 11 строк кода.

Читать еще:  Как сделать чтобы использовалась вся оперативная память?

Скриншот руководства от IAmTrask

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

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

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

Скриншот из руководства WildML

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

Для поиска хороших наборов данных можете посетить мой сайт Datasets.co и выбрать там подходящий.

Так или иначе, теперь вам лучше начать свои эксперименты, чем слушать мои советы. Лично я сейчас изучаю Python-библиотеки для программирования нейронных сетей, такие как Theano, Lasagne и nolearn.

Какие задачи глубокое обучение решает сегодня?

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

  • популярные виртуальные помощники Siri/Alexa/Google Assistant;
  • предложение отметить друга на только что загруженной фотографии в Facebook;
  • автономное вождение в автомобилях Tesla;
  • фильтр с кошачьими мордами в Snapchat;
  • рекомендации в Amazon и Netflix;
  • недавно выпущенные, но получившие вирусную популярность приложения для обработки фото — FaceApp и Prisma.

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

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

Нейронные сети с нуля. Обзор курсов и статей на русском языке, бесплатно и без регистрации

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

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

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

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

Вводные статьи

Требуемый уровень: школьное образование, знание русского языка.
Требуемое время: несколько часов.

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

Расширяем горизонты

Требуемый уровень: базовое понимание работы нейронных сетей.
Требуемое время: несколько часов.

Перечислите основные:

  • типы задач, которые решают нейронные сети
  • типы архитектур нейронных сетей
  • функции активации
  • типы нейронов / слоёв

Углубляем знания

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

Чтобы определиться самому и помочь с выбором остальным хабровчанам, я построил график падения интереса к курсу на основе падения количества просмотров каждого следующего ролика. Выводы неутешительные — мало кто доходит до конца. Самый большой процент дошедших до конца — у курса от АФТИ НГУ.


(График падения количества просмотров составлялся пару месяцев назад и текущая картина может немного отличаться).

Примеры применения на практике

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

Другие материалы

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

Другие статьи-обзоры на хабре по изучению машинного обучения

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

Читать еще:  Системное администрирование для начинающих

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

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

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

Программа курса Введение в нейронные сети на Python

  1. Простейшие нейронные сети
    • Теоретическая часть: основные понятия; классификация задач, решаемых с помощью методов машинного обучения; виды данных, понятие датасета; полносвязные нейронные сети.
    • Практическая часть: первичный анализ датасета, предобработка данных, построение полносвязной нейронной сети.
  2. Математические основы нейронных сетей
    • Теоретическая часть: метрики качества работы нейронной сети, градиентный спуск, алгоритм обратного распространения ошибки, эффект переобучения.
    • Практическая часть: тонкая настройка нейронной сети на примере задачи классификации изображений.
  3. Свёрточные нейронные сети
    • Теоретическая часть: параметры сверточных нейронных сетей, предобученные нейронные сети.
    • Практическая часть: использование предобученных нейронных сетей на примере задачи классификации изображений.
  4. Решение кейса: “Классификация изображений”
    • Теоретическая часть: построение набора данных, фильтрация и предобработка данных.
    • Практическая часть: решение кейса.
  5. Использование нейронных сетей вproduction
    • Теоретическая часть: сериализация/десериализация объектов в Python, фреймворк Flask.
    • Практическая часть: создание веб-сервиса на фреймворке Flask.

Нейронные сети простыми словами

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

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

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

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

Создание рекуррентной нейронной сети на примере

Представим, что у нас есть нейронная сеть, которая работает по принципу «многое ко многим«. Входные данные — x , х 1, … x n, а результаты вывода — y , y 1, … y n. Данные x i и y i являются векторами и могут быть произвольных размеров.

Рекуррентные нейронные сети RNN работают путем итерированного обновления скрытого состояния h , которое является вектором, что также может иметь произвольный размер. Стоит учитывать, что на любом заданном этапе t :

  1. Следующее скрытое состояние h t подсчитывается при помощи предыдущего h t — 1 и следующим вводом x t;
  2. Следующий вывод y t подсчитывается при помощи h t.

Рекуррентная нейронная сеть RNN многие ко многим

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

  • W xh используется для всех связок x t → h t
  • W hh используется для всех связок h t-1 → h t
  • W hy используется для всех связок h t → y t

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

  • b h добавляется при подсчете h t
  • b y добавляется при подсчете y t

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

Следующие уравнения являются компактным представлением всего вышесказанного:

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

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

Об­ра­зо­ва­ние. Шесть ша­гов на пути к Data Sci­en­tist

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

Шаг 1. Ста­ти­сти­ка, ма­те­ма­ти­ка, ли­ней­ная ал­геб­ра

Для се­рьез­но­го по­ни­ма­ния Data Sci­ence по­на­до­бит­ся фундамен­таль­ный курс по тео­рии ве­ро­ят­но­стей (математический ана­лиз как необ­хо­ди­мый ин­стру­мент в теории ве­ро­ят­но­стей), ли­ней­ной ал­геб­ре и ма­те­ма­ти­че­ской ста­ти­сти­ке.

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

Что по­чи­тать

«Эле­мен­ты ста­ти­сти­че­ско­го обу­че­ния», Тре­вор Ха­сти, Ро­берт Тиб­ши­ра­ни и Дже­ром Фрид­ман — если по­сле уче­бы в универси­те­те оста­лось мно­го про­бе­лов. Классические разделы ма­шин­но­го обу­че­ния пред­став­ле­ны в тер­ми­нах матема­ти­че­ской статисти­ки со стро­ги­ми ма­те­ма­ти­че­ски­ми вычис­ле­ни­я­ми.

«Глу­бо­кое обу­че­ние», Ян Гуд­фел­лоу. Луч­шая кни­га о математи­че­ских прин­ци­пах, ле­жа­щих в ос­но­ве ней­рон­ных сетей.

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

Пол­ное ру­ко­вод­ство по ма­те­ма­ти­ке и ста­ти­сти­ке для Data Science. Кру­тое и нескучное по­ша­го­вое ру­ко­вод­ство, ко­то­рое по­мо­жет сори­ен­ти­ро­вать­ся в ма­те­ма­ти­ке и ста­ти­сти­ке.

Читать еще:  На что оказывает влияние объем оперативной памяти?

Вве­де­ние в ста­ти­сти­ку для Data Sci­ence по­мо­жет по­нять централь­ную пре­дель­ную тео­ре­му. Оно охва­ты­ва­ет генеральные со­во­куп­но­сти, вы­бор­ки и их рас­пре­де­ле­ние, содер­жит по­лез­ные ви­део­ма­те­ри­а­лы.

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

Ли­ней­ная ал­геб­ра для Data Sci­en­tists. Ин­те­рес­ная ста­тья, знако­мя­щая с ос­но­ва­ми ли­ней­ной ал­геб­ры.

Шаг 2. Про­грам­ми­ро­ва­ние

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

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

Что по­чи­тать

«Ав­то­ма­ти­за­ция ру­тин­ных за­дач с по­мо­щью Python: практическое ру­ко­вод­ство для на­чи­на­ю­щих». Прак­ти­че­ское ру­ко­вод­ство для тех, кто учит­ся с нуля. До­ста­точ­но про­честь гла­ву «Ма­ни­пу­ли­ро­ва­ние стро­ка­ми» и вы­пол­нить практические за­да­ния из нее.

Codecad­emy — здесь вы на­учи­тесь хо­ро­ше­му об­ще­му синтакси­су.

Лег­кий спо­соб вы­учить Python 3 — бле­стя­щий ма­ну­ал, в котором объ­яс­ня­ют­ся основы.

Dataquest по­мо­жет осво­ить син­так­сис.

По­сле того, как изу­чи­те ос­но­вы Python, по­зна­комь­тесь с основ­ны­ми биб­лио­те­ка­ми:

Ма­шин­ное обу­че­ние и глу­бо­кое обу­че­ние:

Об­ра­бот­ка есте­ствен­но­го язы­ка:

Web scrap­ing (Ра­бо­та с web):

Python
для работы
с данными

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

Шаг 3. Ма­шин­ное обу­че­ние

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

Пер­вый шаг в изу­че­нии ма­шин­но­го обу­че­ния — зна­ком­ство с тре­мя его ос­нов­ны­ми фор­ма­ми.

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

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

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

Что по­чи­тать

Ви­зу­а­ли­за­ция в ма­шин­ном обу­че­нии. От­лич­ная ви­зу­а­ли­за­ция, ко­то­рая по­мо­жет понять, как ис­поль­зу­ет­ся ма­шин­ное обучение.

Шаг 4. Data Min­ing (ана­лиз данных) и ви­зу­а­ли­за­ция данных

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

Что по­чи­тать и по­смот­реть

Как ра­бо­та­ет ана­лиз дан­ных. От­лич­ное ви­део с до­ход­чи­вым объ­яс­не­ни­ем ана­ли­за дан­ных.

«Ра­бо­та убор­щи­ка дан­ных — глав­ное пре­пят­ствие для ана­ли­за» — ин­те­рес­ная ста­тья, в ко­то­рой по­дроб­но рас­смат­ри­ва­ет­ся важ­ность ана­ли­за дан­ных в об­ла­сти Data Sci­ence.

Шаг 5. Прак­ти­че­ский опыт

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

Ис­поль­зуй­те Kag­gle. Здесь про­хо­дят со­рев­но­ва­ния по ана­ли­зу дан­ных. Су­ще­ству­ет боль­шое ко­ли­че­ство от­кры­тых мас­си­вов дан­ных, ко­то­рые мож­но ана­ли­зи­ро­вать и пуб­ли­ко­вать свои резуль­та­ты. Кро­ме того, вы мо­же­те смот­реть скрип­ты, опуб­лико­ван­ные дру­ги­ми участ­ни­ка­ми и учить­ся на успеш­ном опыте.

Шаг 6. Под­твер­жде­ние квалифи­ка­ции

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

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

По­след­ний со­вет: не будь­те ко­пи­ей ко­пий, най­ди­те свой путь. Лю­бой мо­жет стать Data Sci­en­tist. В том чис­ле са­мо­сто­я­тель­но. В сво­бод­ном до­сту­пе есть всё необходи­мое: он­лайн-кур­сы, кни­ги, со­рев­но­ва­ния для прак­ти­ки.

Но не сто­ит приходить в сфе­ру толь­ко из-за моды. Что мы слы­шим о Data Sci­ence: это кру­то, это са­мая при­вле­ка­тель­ная ра­бо­та XXI века. Если это ос­нов­ной сти­мул для вас, его вряд ли хва­тит на­дол­го. Что­бы до­бить­ся успе­ха, важ­но по­лу­чать удо­воль­ствие от процесса.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: