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

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

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

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

Надеюсь, это поможет!

Понять, что такое машинное обучение

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

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

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

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

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

Проще говоря, это и есть машинное обучение.

Из чего состоит машинное обучение

Машинное обучение состоит из двух основных частей: алгоритмы и данные.

Алгоритмы

Алгоритмы — это, по сути, «разумы, которые учатся», а данные — это то, что эти алгоритмы используют для обучения. Я не буду вдаваться в подробности алгоритмов (или моделей) в этом посте, но в приведенном выше примере «кошка против собаки» наиболее часто используемый алгоритм — это нейронная сеть, которая является подобластью машинного обучения, называемой «Глубокое обучение». Обучение (подробнее об этом в следующем посте).

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

Данные

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

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

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

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

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

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

1. Посмотрите вводный курс по основам

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

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

https://www.youtube.com/playlist?list=PLQVvvaa0QuDcjD5BAw2DxE6OF2tius3V3

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

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

2. Изучите основы кодирования

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

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

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

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

Программирование для всех (Начало работы с Python); https://www.coursera.org/learn/python

Структуры данных Python; https://www.coursera.org/learn/python-data

Классы Python и наследование; https://www.coursera.org/learn/python-classes-inheritance

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

3. Пройдите вводный онлайн-курс

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

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

Первым онлайн-курсом, который я лично прошел и который действительно помог мне соединить все точки воедино, был DeepLearning.AI «Нейронные сети и глубокое обучение», который преподает единственный и неповторимый Эндрю Нг.

https://www.coursera.org/learn/neural-networks-deep-learning

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

4. Стройте!

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

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

Если это не выбор, очень хорошим вариантом является Kaggle (https://www.kaggle.com/)! Если вы не знакомы с Kaggle, это платформа, на которой люди соревнуются в создании решений для конкретных проблем. Это отличный способ улучшить свои навыки, познакомиться с другими людьми, которые интересуются той же областью, что и вы, и постепенно создать свое портфолио.

5. Продолжайте работать, учиться и применять

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

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

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

И помните, сравнивайте сегодняшнего только с себя вчерашним, а НЕ с другими :).

Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏, чтобы выразить свою поддержку автору 👇

🚀Разработчики: учитесь и развивайтесь, не отставая от того, что важно, ПРИСОЕДИНЯЙТЕСЬ К FAUN.