Это всего лишь… Еще один человек в мире, желающий изучить машинное обучение. 😉 (Здесь бесплатные ресурсы !!)

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

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

Планирование: -
Большое спасибо видео Люблю Баббара на YouTube (я знаю, что название немного странное, но что поделаешь) для того, чтобы прояснить все ресурсы и сделать дорожную карту более понятной.
Судя по этому видео, мне потребуется около 6–9 месяцев, чтобы правильно понять и применить приложения машинного обучения из Создание → Производство → Общедоступное. Надеюсь, это займет меньше времени.

Еще одно видео, которое мне очень понравилось, было Видео о дорожной карте Дэниела Бурка.

Ресурсы: -

Книги: -
1. Практика машинного обучения с помощью Scikit-Learn, Keras и Tensorflow (2-е издание)
2. Математика для машинного обучения

Вам не обязательно знать математику, лежащую в основе каждого алгоритма, пока вы это не сделаете, поэтому я подумал, зачем ее пропускать. Также я не продвигаю это, но эти ресурсы доступны бесплатно в Z-Library.

Веб-сайты (основы): -
1. Элементы ИИ
2. Ускоренный курс машинного обучения в Google
3. Сделано с помощью машинного обучения

Веб-сайты (для опытных пользователей): -
1. Deep Learning.ai от Эндрю Нг
2. Fast.ai (Часть 1 и Часть 2)
3. CS50 Into to AI in Python by Harvard

Проверка навыков в действии: -
1. Kaggle
2. Workera.ai

ПРОГРЕСС

Итак, что я на самом деле узнал в свой первый день.

1. Почему ML?

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

2. Типы систем машинного обучения?

Существуют разные типы систем машинного обучения.

  1. Тот, который может обучаться самостоятельно или нуждается в человеческом вмешательстве, например, контролируемое или неконтролируемое ML.
  2. Могут ли они учиться постепенно на лету (Online v / s Batch)
  3. Работают ли они, сравнивая новые точки данных с известными, или вместо этого обнаруживают закономерности в обучающих данных и строят прогнозные модели.

2 а. Обучение с учителем / без учителя

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

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

Обратите внимание, что некоторые алгоритмы регрессии также могут использоваться для классификации, и наоборот. Например, для классификации обычно используется логистическая регрессия, поскольку она может выводить значение, которое соответствует вероятности принадлежности к данному классу (например, 20% -ная вероятность того, что это спам).

Вот некоторые из наиболее важных алгоритмов контролируемого обучения (рассмотренных в этой книге):

  • k-Ближайшие соседи
  • Линейная регрессия
  • Логистическая регрессия
  • Машины опорных векторов (SVM)
  • Деревья решений и случайные леса
  • Нейронные сети

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

Вот некоторые из наиболее важных алгоритмов обучения без учителя.

Кластеризация: -

Например, предположим, что у вас есть много данных о посетителях вашего блога. Вы можете запустить алгоритм кластеризации, чтобы попытаться обнаружить группы похожих посетителей. Вы ни в коем случае не сообщаете алгоритму, к какой группе принадлежит посетитель: он находит эти связи без вашей помощи. Например, можно заметить, что 40% ваших посетителей - мужчины, которые любят комиксы и обычно читают ваш блог по вечерам, а 20% - молодые любители научной фантастики, которые посещают его по выходным, и так далее. Если вы используете алгоритм иерархической кластеризации, он также может подразделить каждую группу на более мелкие группы. Это может помочь вам настроить таргетинг ваших сообщений для каждой группы.

  • К-средние
  • DBSCAN
  • Иерархический кластерный анализ (HCA)

Обнаружение аномалий и обнаружение новизны: -

Еще одна важная неконтролируемая задача - обнаружение аномалий - например, обнаружение необычных транзакций по кредитным картам для предотвращения мошенничества, выявление производственных дефектов или автоматическое удаление выбросов из набора данных перед передачей его другому алгоритму обучения. Во время обучения системе показываются в основном нормальные экземпляры, поэтому она учится распознавать их, и когда она видит новый экземпляр, она может определить, выглядит ли он как нормальный или, вероятно, это аномалия (см. Рис. 1–10). Очень похожая задача - обнаружение новизны: разница в том, что алгоритмы обнаружения новизны ожидают увидеть только нормальные данные во время обучения, в то время как алгоритмы обнаружения аномалий обычно более терпимы, они часто могут хорошо работать даже с небольшим процентом выбросов в обучающей выборке.

  • Одноклассная SVM
  • Изолированный лес

Визуализация и уменьшение размерности: -

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

  • Анализ главных компонентов (PCA)
  • Ядро PCA
  • Локально-линейное вложение (LLE)
  • t-распределенное стохастическое соседнее вложение (t-SNE)

Изучение правил связывания: -

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

  • Априори
  • Эклат

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

Некоторые сервисы фотохостинга, такие как Google Фото, являются хорошими примерами этого. После того, как вы загрузите все свои семейные фотографии в сервис, он автоматически распознает, что один и тот же человек A отображается на фотографиях 1, 5 и 11, а другой человек B отображается на фотографиях 2, 5 и 7. Это неконтролируемая часть алгоритма (кластеризация). Теперь все, что нужно системе, - это сказать ей, кто эти люди. Только один ярлык на человека, и он может назвать всех на каждой фотографии, что полезно для поиска фотографий.

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

Например, многие роботы реализуют алгоритмы обучения с подкреплением, чтобы научиться ходить. Программа DeepMind AlphaGo также является хорошим примером обучения с подкреплением: она попала в заголовки газет в мае 2017 года, когда победила чемпиона мира Ке Цзе в игре го. Он изучил свою политику выигрыша, проанализировав миллионы игр, а затем сыграв много игр против самого себя. Обратите внимание, что во время игр с чемпионом обучение было отключено; AlphaGo просто применяла усвоенную политику.

2b. Пакетное и онлайн-обучение

Могут ли системы машинного обучения учиться постепенно из потока входящих данных?
О, да, мы можем !!! 😉

Пакетное обучение

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

  1. Требует много времени и вычислительных ресурсов, поэтому выполняется в автономном режиме.
  2. Обучено → Запущено в производстве → Работает без обучения, применяет полученные знания.

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

Онлайн-обучение

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

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

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

2c Обучение на основе экземпляров и обучение на основе моделей

Обучение на основе экземпляров. Это называется обучением на основе экземпляров: система изучает примеры наизусть, а затем обобщает их на новые случаи, сравнивая их с изученными примерами (или их подмножество), используя меру подобия.

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

3. Основные проблемы машинного обучения.

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

Неверные данные: -

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

Плохие алгоритмы: -

  1. Переоснащение обучающих данных
  2. Недостаток тренировочных данных

4. Тестирование и проверка

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

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

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

5. Настройка гиперпараметров и выбор модели

Итак, оценить модель достаточно просто: просто используйте набор тестов. Теперь предположим, что вы колеблетесь между двумя моделями (скажем, линейной моделью и полиномиальной моделью): как вы можете решить? Один из вариантов - обучить обоих и сравнить, насколько хорошо они обобщают, используя набор тестов.

Теперь предположим, что линейная модель обобщает лучше, но вы хотите применить некоторую регуляризацию, чтобы избежать переобучения. Возникает вопрос: как выбрать значение гиперпараметра регуляризации? Один из вариантов - обучить 100 различных моделей, используя 100 различных значений этого гиперпараметра. Предположим, вы нашли лучшее значение гиперпараметра, которое дает модель с наименьшей ошибкой обобщения, скажем, всего 5%.

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

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

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

6. ХОРОШО ПОДРОБНЕЕ…

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

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

Следите за обновлениями и делитесь своими знаниями, комментарий ниже или аплодисменты будут действительно отличными !! ✌