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

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

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

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

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

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

Типы проблем ML

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

  1. Контролируемое обучение

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

Обратите внимание, что некоторые алгоритмы регрессии также могут использоваться для классификации и наоборот. Например, логистическая регрессия обычно используется для классификации, поскольку она может выводить значение, соответствующее вероятности принадлежности к данному классу (например, 20%-ная вероятность того, что это спам).
Вот некоторые из наиболее важных алгоритмов обучения с учителем:
1. k-ближайшие соседи
2. Линейная регрессия
3. Логистическая регрессия
4. Машины опорных векторов (SVM)< br /> 5. Деревья решений и случайные леса
6. Нейронные сети

2. Неконтролируемое обучение
При неконтролируемом обучении, как вы могли догадаться, обучающие данные не размечены. Система пытается учиться без учителя. Вот некоторые из наиболее важных алгоритмов обучения без учителя (мы рассмотрим уменьшение размерности в
A). Кластеризация
1. k-Means
2. Иерархический кластерный анализ (HCA)
3. Максимизация ожиданий

B) Визуализация и уменьшение размерности
1. Анализ главных компонентов (PCA)
2. Ядерный анализ PCA
3. Локально-линейное вложение (LLE)
4. Стохастическое соседство с t-распределением Встраивание (t-SNE)

C) Изучение правил ассоциации
1. Априори
2. Eclat

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

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

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

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

Помимо вышеупомянутых типов, проблемы ML также можно классифицировать как:

1. Пакетное обучение
При пакетном обучении система не может обучаться постепенно: ее необходимо обучать, используя все доступные данные. Как правило, это занимает много времени и вычислительных ресурсов, поэтому обычно выполняется в автономном режиме. Сначала система обучается, а затем запускается в продакшн и работает без обучения
больше; он просто применяет то, чему научился. Это называется обучение в автономном режиме.
Если вы хотите, чтобы система пакетного обучения знала о новых данных (например, о новом типе спама), вам необходимо обучить новую версию системы с поцарапать полный набор данных (не только новые, но и старые данные), затем остановить старую систему и заменить ее новой.
Это простое решение, которое часто работает нормально, набор данных может занять много часов, поэтому обычно вы обучаете новую систему каждые 24 часа или даже еженедельно. Если ваша система должна адаптироваться к быстро меняющимся данным (например, для прогнозирования цен на акции), вам нужно более быстро реагирующее решение.
Кроме того, обучение на полном наборе данных требует много вычислительных ресурсов (процессор, память пространство, дисковое пространство, дисковый ввод-вывод, сетевой ввод-вывод и т. д.). Если у вас много данных и вы автоматизируете свою систему для ежедневного обучения с нуля, это в конечном итоге будет стоить вам больших денег. Если объем данных огромен, может быть даже невозможно использовать алгоритм пакетного обучения.
Лучшим вариантом во всех этих случаях является использование алгоритмов, способных к постепенному обучению.

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

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

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

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

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

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

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

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

2. Обучение на основе моделей

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

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

Не стесняйтесь комментировать и следить за дополнительной информацией.