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

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

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

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

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

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

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

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

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

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

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

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

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

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

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