Технологии машинного обучения направлены на создание алгоритмов, которые делают то, что естественно для людей – учатся, исходя из опыта. Алгоритмы машинного обучения используют математические методы, чтобы «учиться» получать информацию напрямую из данных без использования каких-то предопределенных уравнений или моделей. При этом чем больше данных используется для обучения, тем более точные получаются модели.
В машинном обучении существует две разные техники:
Обучение с учителем также в свою очередь разделяется на две техники:
Самой распространённой техникой машинного обучения без учителя является кластеризация, когда на основе имеющихся данных, мы разбиваем объекты на какие-то группы, исходя из скрытых взаимосвязей, которые человек может не видеть или не понимать. Часто используется как метод исследования данных (data mining).
В рамках приведенных техник существует больше количество различных методов машинного обучения, начиная от простых и интуитивных, заканчивая настолько сложными, что разбираться в их математике исследователю не имеет смысла (нейросети).
Важно понимать, что среди десятков разных методов не существует тех, которые наилучшим образом подходят для всех задач: простые модели могут работать недостаточно точно, а сложные – быть очень тяжелыми и сложными в реализации. Выбор метода под конкретную задачу почти всегда осуществляется методом проб и ошибок. К счастью, MATLAB позволяет очень быстро пробовать разные методы и помогает выбирать наиболее подходящие.
Рабочий процесс начинается с получения данных. Данные могут храниться в файлах, в базах данных, в интернете. MATLAB позволяет не только получать данные из указанных источников, но и собирать напрямую с оборудования, если это сигналы, например.
Собранные данные нужно обработать, чтобы повысить их качество. Например, заменить пропуски, удалить выбросы, отфильтровать шумы. MATLAB имеет готовые функции для решения подобных задач, которые расширяются специализированными тулбоксами.
Когда данные подготовлены, нужно внимательно их изучить и выбрать из всего многообразия именно те данные, которые должны или теоретически могут повлиять на результат предсказания. Например, если мы распознаем пол человека по фото, то цвет глаз человека вряд ли поможет определить его пол. Поэтому этот признак имеет смысл исключить из процесса обучения, что позволит сделать более адекватную и менее перегруженную модель. Варьируя набор признаков, мы можем получать модели разного качества, поэтому это один из самых важных этапов.
MATLAB предлагает набор техник машинного обучения по выделению признаков из данных.
Дальше начинается во многом творческий процесс подбора нужной модели из всего многообразия. Мы меняем типы моделей, меняем их настройки и обучаем, пока не получим модель приемлемой точности и сложности. Конечно, не обязательно начинать с нуля. Изучив предметную область, мы можем сразу начинать подбор с наиболее успешных кандидатов. К примеру, для задач распознавания часто имеет смысл начинать сразу с глубоких нейросетей.
MATLAB позволяет сильно оптимизировать процесс подбора и обучения моделей, доведя его буквально до автоматизации, а встроенные в документацию примеры позволят изначально выбрать самых перспективных кандидатов.
После получения итоговой модели, её нужно развернуть, чтобы модель начала приносить пользу. Для переноса моделей машинного обучения с компьютера разработчика в производство MATLAB предлагает несколько подходов и инструментов.
Например, MATLAB Compiler позволит скомпилировать модель в независимое приложение, которое можно развернуть на сервере предприятия, а MATLAB Coder – сгенерировать C/C++, HDL или GPU код для запуска алгоритмов на встраиваемых системах и автономных устройствах.
Отдельный инструмент MATLAB Production Server позволит развернуть в сети вашего предприятия или в облаке полноценную аналитическую систему на основе алгоритмов MATLAB.
MATLAB позволяет обучать модели на больших данных (Big Data) для получения более точных моделей, а также использовать параллельные вычисления (на многоядерных процессорах, кластерах и GPU), чтобы существенно ускорять процесс получения моделей.
Реализована работа с этими технологиями максимально бесшовно и удобно для разработчиков, которые избавлены от необходимости вникать в тонкости работы с большими данными и распараллеливанием алгоритмов и могут полностью посвятить свое время непосредственно процессу обучения.