Transcription
Мне все равно, насколько вы умны. Вы не можете выучить машинное обучение за 3 месяца. Но что вы можете сделать, так это перестать тратить время. Когда я был новичком, я потратил 6 месяцев на изучение машинного обучения неправильным путем. Я начал курс, запутался в математике и начал сомневаться в своем подходе. Прошло 6 месяцев, и мне нечего было показать. Сегодня я поделюсь тем, как именно изучать машинное обучение структурированным способом, который действительно работает. Никакой воды, никакой программы из 500 курсов, только необходимый путь, который проведет вас от нуля до создания реальных систем машинного обучения. Давайте сделаем это.
Большинство людей терпят неудачу в машинном обучении еще до того, как начнут. И это не потому, что они недостаточно умны. Это потому, что они пропускают предварительные условия. Видите ли, машинное обучение строится на трех столпах: математика, статистика и программирование. И если любой из этих столпов слаб, все, что вы построите на нем, в конечном итоге рухнет.
Давайте начнем с математики. Я знаю, многие из вас думают: "Действительно ли мне нужна математика для машинного обучения?" Короткий ответ — да. Но вот в чем дело. Вам не нужно становиться профессором математики. Вам просто нужно понять четыре ключевые области.
Первая — линейная алгебра. Алгоритмы машинного обучения работают с данными. А данные хранятся в матрицах и векторах. Если вы не знаете, как манипулировать матрицами, вы не поймете, как алгоритмы обрабатывают ваши данные. Линейная алгебра учит именно этому.
Далее — исчисление. В основе машинного обучения лежит оптимизация. А оптимизация использует производные и градиенты, которые берутся из исчисления. Без исчисления вы будете просто копировать код, не понимая, почему он работает.
Затем у нас есть теория вероятностей. Машинное обучение — это, по сути, прогнозирование в условиях неопределенности. Стоит ли доверять этому прогнозу или нет? Насколько уверена ваша модель? Эти вопросы требуют понимания распределения вероятностей и случайных величин.
Наконец, статистика. Вам нужно понять такие концепции, как среднее значение, дисперсия, проверка гипотез и доверительные интервалы. Это поможет вам оценить, действительно ли ваша модель учится или просто запоминает.
Теперь, где мы можем все это изучить? На Khan Academy есть отдельные курсы по линейной алгебре, исчислению, теории вероятностей и статистике. Эти курсы совершенно бесплатны. Они объясняют концепции простыми словами, и у них [смех] есть практические упражнения для проверки вашего понимания. Не пытайтесь выучить все сразу. Берите по одному курсу за раз.
Как только у вас будет математическая основа, вам понадобятся навыки программирования. Для машинного обучения Python — бесспорный чемпион. Почему Python? Есть три основные причины. Первая — у него простой синтаксис, который позволяет сосредоточиться на логике, а не на языке. Вторая — у него есть мощные библиотеки, специально созданные для машинного обучения. Третья — все сообщество машинного обучения использует Python. Так что, когда вы застрянете, вы легко найдете помощь.
Чтобы изучить основы Python, зайдите на learnpython.org. Этот сайт использует активное припоминание. Вы читаете концепцию и сразу же решаете упражнения по ней. Это делает обучение намного быстрее, чем просмотр пассивных учебников. Сосредоточьтесь на основах, таких как переменные, циклы, функции и классы.
Как только вы освоите базовый Python, вам нужно будет изучить библиотеки для манипулирования данными. NumPy — ваша первая остановка. Алгоритмы машинного обучения работают с числовыми данными, хранящимися в массивах. NumPy делает операции с массивами чрезвычайно быстрыми. Без NumPy вы не сможете эффективно заниматься машинным обучением.
Далее — Pandas. Данные реального мира поступают из электронных таблиц и баз данных. Pandas помогает вам загружать, очищать и преобразовывать эти "грязные" данные. Вы потратите больше времени на подготовку данных, чем на создание моделей. Так что Pandas не является необязательным.
Затем у нас есть библиотеки визуализации. Matplotlib и Seaborn помогают создавать графики и диаграммы. Но почему это вообще важно? Потому что вам нужно понять свои данные, прежде чем скармливать их любому алгоритму. Визуализация выявляет закономерности, которые скрывают необработанные числа.
Чтобы изучить все эти библиотеки за один раз, посмотрите курс "Анализ данных с помощью Python" на YouTube-канале freeCodeCamp. Этот курс охватывает NumPy, Pandas, Matplotlib и Seaborn с реальными проектами, и он совершенно бесплатен.
Теперь вы готовы к изучению машинного обучения. Машинное обучение имеет три основных типа: обучение с учителем, обучение без учителя и обучение с подкреплением.
При обучении с учителем вы показываете алгоритму примеры с правильными ответами, например, показываете изображения кошек и собак с метками. Алгоритм учится различать их. Затем вы можете дать ему новое изображение, и он скажет вам, кошка это или собака. Большинство реальных приложений используют обучение с учителем.
При обучении без учителя вы даете алгоритму данные без каких-либо меток. Алгоритм сам находит скрытые закономерности. Например, вы можете группировать клиентов на основе их покупательского поведения, используя обучение без учителя.
Обучение с подкреплением отличается. Здесь алгоритм учится методом проб и ошибок. Алгоритм пробует разные действия и учится на вознаграждениях и наказаниях. Так работают самоуправляемые автомобили и игровой ИИ.
Чтобы правильно изучить эти концепции, пройдите специализацию по машинному обучению от Эндрю Нг на Coursera. Это, без сомнения, лучший курс по машинному обучению. Эндрю Нг — один из пионеров машинного обучения. Он был соучредителем Google Brain и главным научным сотрудником в Baidu. Специализация состоит из трех курсов. Первый охватывает обучение с учителем, такое как линейная регрессия, логистическая регрессия и деревья решений. Второй курс обучает методам обучения без учителя, таким как кластеризация K-средних и обнаружение аномалий. Третий курс знакомит с нейронными сетями и дает представление о глубоком обучении.
Что делает этот курс особенным, так это то, как Эндрю Нг объясняет сложные идеи. Он не просто забрасывает вас уравнениями. Сначала он развивает вашу интуицию, а затем показывает вам математику, а затем помогает вам написать код с нуля. В конце вы не просто знаете, что работает, вы знаете, почему это работает.
Прямо сейчас Coursera проводит специальную акцию на подписку Coursera Plus. Вы можете получить скидку 40% на 3 месяца, используя ссылку в описании.
Как только вы закончите основы машинного обучения, вы готовы к глубокому обучению. Глубокое обучение — это подмножество машинного обучения, которое использует нейронные сети. Думайте о нейронных сетях как о слоях взаимосвязанных узлов, вдохновленных тем, как работает наш мозг. Каждый слой извлекает различные признаки из ваших данных. Глубокое обучение произвело революцию в таких областях, как компьютерное зрение и обработка естественного языка. Именно оно обеспечивает распознавание лиц на вашем телефоне и перевод языков в Google. Но это требует более специализированных знаний.
Вам нужно понять прямые сети, которые являются простейшим типом нейронных сетей. Данные проходят в одном направлении от входа к выходу. Далее — обратное распространение ошибки. Так учатся нейронные сети. Они делают прогноз, вычисляют ошибку, а затем корректируют свои веса, чтобы уменьшить эту ошибку. Обратное распространение ошибки — это алгоритм, который делает эту корректировку возможной.
Затем у нас есть сверточные нейронные сети или CNN. Они специально разработаны для обработки изображений. Они могут обнаруживать края, формы и, в конечном итоге, сложные объекты на изображениях. Рекуррентные нейронные сети или RNN обрабатывают последовательные данные, такие как текст или временные ряды. У них есть память о предыдущих входных данных, что делает их идеальными для таких задач, как перевод языков или прогнозирование цен на акции.
Для создания моделей глубокого обучения у вас есть два основных фреймворка: PyTorch и TensorFlow. Оба мощные. PyTorch более интуитивно понятен для новичков, а TensorFlow более готов к производству. Выберите один и придерживайтесь его.
Чтобы правильно изучить глубокое обучение, пройдите специализацию по глубокому обучению от Эндрю Нг на Coursera. Специализация состоит из пяти курсов. Она начинается с основ нейронных сетей, затем охватывает методы оптимизации и настройку гиперпараметров. Третий курс учит вас структурировать проекты машинного обучения. Четвертый курс посвящен сверточным нейронным сетям для компьютерного зрения. А пятый курс охватывает модели последовательностей для обработки естественного языка. Эта специализация не просто учит вас теории. Вы создаете реальные проекты, используя TensorFlow. Вы создадите классификаторы изображений, построите систему распознавания лиц и даже разработаете свой собственный алгоритм переноса стиля нейронной сети. В конце у вас будет портфолио проектов глубокого обучения.
Но вот реальность. Настоящее обучение происходит не на курсах. Оно происходит, когда вы создаете свои собственные проекты. Именно там вы сталкиваетесь с трудностями. Именно там вы отлаживаете. И именно там вы действительно учитесь.
Для новичков начните с проекта прогнозирования цен на жилье. Возьмите набор данных с такими характеристиками, как количество спален, местоположение и площадь. Создайте модель, которая прогнозирует цены на жилье. Этот проект научит вас очистке данных, инженерии признаков и регрессии.
Для среднего уровня создайте систему рекомендаций фильмов. Используйте коллаборативную фильтрацию для рекомендации фильмов на основе того, что нравится похожим пользователям. Этот проект познакомит вас с матричной факторизацией и метриками сходства. К тому же, всем нравится получать рекомендации фильмов.
Для продвинутого уровня создайте систему обнаружения объектов в реальном времени. Обучите нейронную сеть обнаруживать и классифицировать несколько объектов в видеопотоках. Это сочетает в себе компьютерное зрение, обработку в реальном времени и оптимизацию моделей. Это сложно, но чрезвычайно полезно.
Машинное обучение постоянно развивается. Каждый день выходят новые исследовательские статьи. Новые методы заменяют старые. Вы никогда не сможете знать все, и это нормально. Важно оставаться в курсе тенденций. Зайдите на Hugging Face и проверьте их страницу с трендовыми исследовательскими статьями. Тратьте 30 минут каждую неделю на чтение аннотаций. Вам не нужно глубоко понимать каждую статью. Просто знайте, какие проблемы решают люди и какие подходы они используют.
Стать экспертом в машинном обучении — это не спринт, это марафон. Не торопитесь с математикой. Не пропускайте основы. Не торопитесь на каждом этапе, потому что каждый короткий путь, который вы сейчас выберете, обойдется вам позже. Я совершил эти ошибки, чтобы вам не пришлось. Меня зовут Сахил, и увидимся в следующем выпуске.