Автоматическое машинное обучение — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Auto-WEKA)
(Добавлены более современные подходы.)
 
(не показано 8 промежуточных версий 2 участников)
Строка 1: Строка 1:
<b> Автоматическое машинное обучение </b> {{---}} процесс создания динамической комбинации различных методов для формирования простой в использовании сквозной конвейерной системы машинного обучения. AutoML использует хорошо зарекомендовавшие себя методы, которые мы классифицируем в следующие категории на основе пайплайна машинного обучения (показано на Рис.1): подготовка данных, конструирование признаков, генерация моделей и их оценка.
+
<b> Автоматическое машинное обучение </b>(англ. Automated Machine Learning, AutoML) {{---}} процесс создания динамической комбинации различных методов для формирования простой в использовании сквозной конвейерной системы машинного обучения. AutoML использует хорошо зарекомендовавшие себя методы, которые мы классифицируем в следующие категории на основе конвеера машинного обучения (показано на Рис.1): подготовка данных, конструирование признаков, генерация моделей и их оценка.
[[Файл:automl_1.png|1000px|thumb|center|Рисунок 1: AutoML конвеер]]
+
[[Файл:automl_1_1.png|1000px|thumb|center|Рисунок 1: Конвеер автоматического машинного обучения]]
 
<br>
 
<br>
 
Подготовка данных состоит из двух этапов: сбор данных и их предварительная обработка.<br>
 
Подготовка данных состоит из двух этапов: сбор данных и их предварительная обработка.<br>
 
Конструирование признаков состоит из 3 процессов: извлечение признаков, выбор признаков и построение признаков.<br>
 
Конструирование признаков состоит из 3 процессов: извлечение признаков, выбор признаков и построение признаков.<br>
 
Этап генерации модели включает в себя выбор модели и оптимизацию гиперпараметров выбранной модели.<br>
 
Этап генерации модели включает в себя выбор модели и оптимизацию гиперпараметров выбранной модели.<br>
Методы оптимизации гиперпараметров: рандомный поиск, поиск по сетке, градиентный спуск (gradient descent, GD), [[Обучение с подкреплением | обучение с подкреплением]] (reinforcement learning, RL), [[Эволюционные алгоритмы | эволюционный алгоритм]]  
+
Методы [[Настройка гиперпараметров | оптимизации гиперпараметров]]: случайный поиск, поиск по сетке, градиентный спуск (gradient descent, GD), [[Обучение с подкреплением | обучение с подкреплением]], [[Эволюционные алгоритмы | эволюционный алгоритм]]  
 
(evolutionary algorithm, EA), байесовская оптимизация (Bayesian optimization, BO), байесовская оптимизация на основе гиперболы (Bayesian optimization based hyperband, BOBH).
 
(evolutionary algorithm, EA), байесовская оптимизация (Bayesian optimization, BO), байесовская оптимизация на основе гиперболы (Bayesian optimization based hyperband, BOBH).
  
 
== Подготовка данных ==
 
== Подготовка данных ==
Первым шагом в пайплайне машинного обучения идет этап подготовки данных. Как правило, во многих задачах, например, распознавание изображений в медицине, бывает трудно получить достаточно данных, или <i>качественно размеченных</i> данных. Мощная система AutoML должна уметь справляться с этой проблемой. Для исследования этой задачи процесс подготовки данных разделяется на два подэтапа: сбор данных и их предобработка.
+
Первым шагом в конвейере машинного обучения идет этап подготовки данных. Во многих задачах, например, в задаче распознавания образов в медицине, бывает трудно получить достаточно данных, или <i>качественно размеченных</i> данных. Мощная система AutoML должна уметь справляться с этой проблемой. Для исследования этой задачи процесс подготовки данных разделяется на два подэтапа: сбор данных и их предобработка.
 
=== Сбор данных ===
 
=== Сбор данных ===
Углубленное изучение ML привело к консенсусу, что качественные данные общедоступны. В результате появилось множество открытых наборов данных. Однако, как правило, очень трудно найти надлежащий набор данных с помощью вышеуказанных подходов для специализированных задач, таких как медицинская помощь или другие частные вопросы. Для решения этой задачи предлагается два типа методов: синтез данных и поиск данных.
+
Углубленное изучение ML привело к консенсусу, что качественные данные общедоступны. В результате появилось множество открытых наборов данных. Однако, с помощью вышеуказанных подходов, как правило, очень трудно найти надлежащий набор данных для специализированных задач, таких как задачи, связанные с медициной. Для решения этой задачи предлагается два типа методов: синтез данных и поиск данных.
 
==== Синтез данных ====
 
==== Синтез данных ====
 
Одним из наиболее часто используемых методов является аугментация существующего набора данных. Для данных изображений существует множество [[Практики реализации нейронных сетей | операций аугментации]], таких как обрезка, поворот, изменение размера и т.д.<br>
 
Одним из наиболее часто используемых методов является аугментация существующего набора данных. Для данных изображений существует множество [[Практики реализации нейронных сетей | операций аугментации]], таких как обрезка, поворот, изменение размера и т.д.<br>
Строка 19: Строка 19:
 
Так как интернет является неисчерпаемым источником данных, поиск веб-данных {{---}} это интуитивно понятный способ сбора наборов данных. Тем не менее, есть некоторые проблемы с использованием данных, полученных таким образом.<br>
 
Так как интернет является неисчерпаемым источником данных, поиск веб-данных {{---}} это интуитивно понятный способ сбора наборов данных. Тем не менее, есть некоторые проблемы с использованием данных, полученных таким образом.<br>
 
Во-первых, результаты поиска могут не совсем совпадать с ключевыми словами. Чтобы решить эту проблему, несвязанные данные могут быть отфильтрованы.<br>
 
Во-первых, результаты поиска могут не совсем совпадать с ключевыми словами. Чтобы решить эту проблему, несвязанные данные могут быть отфильтрованы.<br>
Во-вторых, веб-данные могут быть неправильно размечены или не размечены вовсе. Для решения этой проблемы часто используется метод self_labeling. К примеру, [[Активное обучение | метод активного обучения]] выбирает наиболее "неопределенные" неразмеченные отдельные примеры для разметки вручную, а затем итеративно размечаются оставшиеся данные. Чтобы полностью устранить потребность в разметке данных вручную и еще больше ускорить этот процесс, предлагается множество методов саморазметки [[Обучение с частичным привлечением учителя | с частичным привлечением учителя]].<br>
+
Во-вторых, веб-данные могут быть неправильно размечены или не размечены вовсе. Для решения этой проблемы часто используются self-labeling методы. К примеру, один из таких методов [[Активное обучение | активного обучения]] выбирает наиболее "неопределенные" неразмеченные отдельные примеры для разметки вручную, а затем итеративно размечаются оставшиеся данные. Чтобы полностью устранить потребность в разметке данных вручную и еще больше ускорить этот процесс, предлагается множество методов саморазметки [[Обучение с частичным привлечением учителя | с частичным привлечением учителя]].<br>
Однако, имеет также место быть проблема того, что наш набор данных не сбалансирован. Решением этой проблемы является, к примеру, [[Алгоритм SMOTE | алгоритм SMOTE]], который помогает синтезировать новые данные, которые будут относиться к миноритарным классам, а также уменьшать количество данных, относящихся к мажоритарным классам.
+
Однако, также существует проблема, что наш набор данных не сбалансирован. Решением этой проблемы является, к примеру, [[Алгоритмы сэмплирования | алгоритм SMOTE]], который помогает синтезировать новые данные, которые будут относиться к миноритарным классам, а также уменьшать количество данных, относящихся к мажоритарным классам.
 
=== Предварительная обработка данных ===
 
=== Предварительная обработка данных ===
 
После того, как необработанные данные были собраны, они должны быть предварительно обработаны, чтобы удалить избыточные, неполные или неправильные данные. Например, распространенными типами ошибок в полученных наборах данных являются пропущенные значения и неправильные типы данных. Типичными операциями, используемыми для обработки данных, являются стандартизация, масштабирование, бинаризация количественных характеристик и замена недостающих значений средними значениями.<br>
 
После того, как необработанные данные были собраны, они должны быть предварительно обработаны, чтобы удалить избыточные, неполные или неправильные данные. Например, распространенными типами ошибок в полученных наборах данных являются пропущенные значения и неправильные типы данных. Типичными операциями, используемыми для обработки данных, являются стандартизация, масштабирование, бинаризация количественных характеристик и замена недостающих значений средними значениями.<br>
При работе с картинками, может возникнуть проблема, что картинка имеет неверную метку. В таких случаях применимы методы саморазметки. Тем не менее, процесс обработки данных обычно должен быть определен заранее вручную, потому что разные методы могут иметь различные требования, даже для одного и того же набора данных. Например, нейронная сеть может работать только с числовыми данными, в то время как методы, основанные на деревьях принятия решений, могут работать как с числовыми, так и с категориальными данными.
+
При работе с картинками может возникнуть проблема, что картинка имеет неверную метку. В таких случаях применимы методы саморазметки. Тем не менее, процесс обработки данных обычно должен быть определен заранее вручную, потому что разные методы могут иметь различные требования, даже для одного и того же набора данных. Например, нейронная сеть может работать только с числовыми данными, в то время как методы, основанные на деревьях принятия решений, могут работать как с числовыми, так и с категориальными данными.
  
 
== Конструирование признаков ==
 
== Конструирование признаков ==
Конструирование признаков состоит из трёх подэтапов: выбор признаков (англ. feature selection), извлечение признаков (англ. feature extraction) и построение признаков (англ. feature construction). Извлечение и построение признаков {{---}} это варианты преобразования, с помощью которых создается новый набор признаков. Во многих случаях, целью извлечения признаков является уменьшение исходной размерности путём применения некоторых функций отображения, в то время как построение признаков используется для расширения исходного пространства признаков. Цель выбора признаков состоит в том, чтобы уменьшить избыточность признаков путем выбора наиболее важных из них. В итоге, суть автоматического конструирования признаков в некоторой степени заключается в динамическом сочетание этих трех принципов.
+
Конструирование признаков состоит из трёх подэтапов: выбор признаков (англ. feature selection), извлечение признаков (англ. feature extraction) и построение признаков (англ. feature construction). Извлечение и построение признаков {{---}} это варианты преобразования, с помощью которых создается новый набор признаков. Во многих случаях, целью извлечения признаков является [[Уменьшение размерности | уменьшение исходной размерности]] путём применения некоторых функций отображения, в то время как построение признаков используется для расширения исходного пространства признаков. Цель выбора признаков состоит в том, чтобы уменьшить избыточность признаков путем выбора наиболее важных из них. В итоге, суть автоматического конструирования признаков в некоторой степени заключается в динамическом сочетании этих трех принципов.
  
 
=== Выбор признаков ===
 
=== Выбор признаков ===
 
[[Файл:automl_2.png|300px|right|thumb|Рис. 2: Итерационный процесс выбора признаков. Подмножество признаков выбирается на основе стратегии поиска, а затем оценивается. После этого выполняется процедура валидации, чтобы определить, является ли полученное подмножество валидным. Описанные выше шаги повторяются до того момента, пока не будет достигнут критерий остановки.]]
 
[[Файл:automl_2.png|300px|right|thumb|Рис. 2: Итерационный процесс выбора признаков. Подмножество признаков выбирается на основе стратегии поиска, а затем оценивается. После этого выполняется процедура валидации, чтобы определить, является ли полученное подмножество валидным. Описанные выше шаги повторяются до того момента, пока не будет достигнут критерий остановки.]]
При выборе признаков строится подмножество объектов на основе исходного набора объектов путем сокращения нерелевантных или избыточных признаков. Это, как правило, упрощает модель, таким образом, избегая переобучения и улучшая производительность модели. Выбранные объекты обычно расходятся и сильно коррелируют со значениями объектов.<br>
+
При [[Уменьшение_размерности#Выбор признаков|выборе признаков]] строится подмножество объектов на основе исходного набора объектов путем сокращения нерелевантных или избыточных признаков. Это, как правило, упрощает модель, таким образом, избегая переобучения и улучшая производительность модели. Выбранные объекты обычно расходятся и сильно коррелируют со значениями объектов.<br>
 
Стратегия поиска для выбора признаков включает в себя три типа алгоритмов: полный поиск, эвристический поиск и случайный поиск.
 
Стратегия поиска для выбора признаков включает в себя три типа алгоритмов: полный поиск, эвристический поиск и случайный поиск.
  
 
=== Построение признаков ===  
 
=== Построение признаков ===  
Это процесс создания новых признаков из исходного пространства или необработанных данных с целью улучшения качества и обобщаемой способности модели. Этот процесс сильно зависит от человеческого опыта, и одним из наиболее часто используемых методов являются препроцессинговые преобразования, такие как стандартизация, нормализация или дискретизация признаков. Кроме того, операции преобразования для различных типов признаков могут отличаться. Например, такие операции, как конъюнкция, дизъюнкция и отрицание, обычно используются для булевых признаков; такие операции, как минимум, максимум, сложение, вычитание, среднее значение, обычно используются для числовых признаков.<br>
+
Это процесс создания новых признаков из исходного пространства или необработанных данных с целью улучшения качества и обобщаемой способности модели. Этот процесс сильно зависит от человеческого опыта, и одним из наиболее часто используемых методов являются препроцессинговые преобразования, такие как стандартизация, нормализация или дискретизация признаков. Кроме того, операции преобразования для различных типов признаков могут отличаться. Например, такие операции, как конъюнкция, дизъюнкция и отрицание, обычно используются для бинарных признаков; такие операции, как минимум, максимум, сложение, вычитание, среднее значение, обычно используются для числовых признаков.<br>
 
Невозможно вручную исследовать все возможности. Таким образом, для дальнейшего повышения эффективности были предложены некоторые автоматические методы построения признаков, которые позволяют достичь результатов, которые не уступают или даже превосходят результаты, достигнутые человеческим опытом. Эти алгоритмы направлены на автоматизацию процесса поиска и оценки комбинации операций.
 
Невозможно вручную исследовать все возможности. Таким образом, для дальнейшего повышения эффективности были предложены некоторые автоматические методы построения признаков, которые позволяют достичь результатов, которые не уступают или даже превосходят результаты, достигнутые человеческим опытом. Эти алгоритмы направлены на автоматизацию процесса поиска и оценки комбинации операций.
  
 
=== Извлечение признаков ===
 
=== Извлечение признаков ===
Это процесс уменьшения размерности пространства признаков путем применения некоторых функций отображения.Он извлекает наиболее информативные признаки с учетом выбранных метрик. В отличие от выбора признаков, извлечение признаков изменяет исходные признаки. Главной частью извлечения признаков является функция отображения, которая может быть реализована многими способами. Наиболее распространенными подходами являются [[Метод главных компонент (PCA) | метод главных компонент (PCA)]], метод независимых компонент (ICA), [[Стохастическое вложение соседей с t-распределением | t-SNE]], isomap, нелинейное уменьшение размерности.
+
Это процесс уменьшения размерности пространства признаков путем применения некоторых функций отображения. Он извлекает наиболее информативные признаки с учетом выбранных метрик. В отличие от выбора признаков, извлечение признаков изменяет исходные признаки. Главной частью извлечения признаков является функция отображения, которая может быть реализована многими способами. Наиболее распространенными подходами являются [[Метод главных компонент (PCA) | метод главных компонент (PCA)]], метод независимых компонент (ICA), [[Стохастическое вложение соседей с t-распределением | t-SNE]], isomap, нелинейное уменьшение размерности.
  
 
== Генерация модели ==
 
== Генерация модели ==
После генерации признаков нам нужно сгенерировать модель и задать ее гиперпараметры. Как показано на Рис. 1, генерация модели состоит из двух этапов: [[Модель алгоритма и её выбор | выбора модели]] и [[Настройка гиперпараметров | оптимизации гиперпараметров]]. <br><br>
+
После конструирования признаков нам нужно сгенерировать модель и задать ее гиперпараметры. Как показано на Рис. 1, генерация модели состоит из двух этапов: [[Модель алгоритма и её выбор | выбора модели]] и [[Настройка гиперпараметров | оптимизации гиперпараметров]].
 
Существует множество способов выбора модели. Ниже приведены некоторые из них:
 
Существует множество способов выбора модели. Ниже приведены некоторые из них:
 
=== TPOT (Tree-base Pipeline Optimization Tool) ===
 
=== TPOT (Tree-base Pipeline Optimization Tool) ===
В основе [[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке Tree-base Pipeline Optimization Tool (TPOT) для Python. | TPOT]] лежит эволюционный алгоритм поиска для нахождения лучшей модели и оновременной оптимизации её гиперпараметров. Время работы TPOT сильно зависит от размера входных данных.
+
В основе [[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке Tree-base Pipeline Optimization Tool (TPOT) для Python. | TPOT]] лежит эволюционный алгоритм поиска для нахождения лучшей модели и одновременной оптимизации её гиперпараметров. Представляет собой надстройку над scikit-learn<ref>[https://scikit-learn.org/stable/ Библиотека scikit-learn]</ref>, при этом в данную библиотеку также включены собственные алгоритмы регрессии и классификации. В мае 2020 года вышла версия, в которую был добавлен модуль для работы с нейронными сетями на основе PyTorch<ref>[https://pytorch.org/ Библиотека PyTorch]</ref>.
 +
Время работы TPOT сильно зависит от размера входных данных. Не поддерживает обработку естественного языка и категориальных данных.
  
 
=== Auto-WEKA ===
 
=== Auto-WEKA ===
[[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке auto-WEKA для Java | Auto-WEKA]] позволяет нам одновременно выбирать лучшую модель и настраивать ее гиперпараметры. Время работы алгоритма достаточно долгое, потому что нам нужно перебрать все возможные алгоритмы и для каждого из них настроить его гиперпараметры.
+
[[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке auto-WEKA для Java | Auto-WEKA]] позволяет одновременно выбирать лучшую модель и настраивать ее гиперпараметры. Для этого процесса используется алгоритм [[Настройка гиперпараметров#Последовательная конфигурация алгоритма на основе модели | SMAC]]. Из-за перебора всех возможных моделей и их гиперпараметров алгоритм работает довольно долго.
  
 
=== Auto-sklearn ===
 
=== Auto-sklearn ===
Так же, как и в Auto-WEKA, в [[Модель алгоритма и её выбор | Auto-sklearn]] мы можем автоматически выбрать лучшую модель из тех, что поддерживаются, и сразу настроить ее гиперпараметры.  
+
В [[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке auto-sklearn для Python | Auto-sklearn]] реализован автоматический выбор лучшего алгоритма из представленных в scikit-learn, а также настройка его гиперпараметров. Для улучшения обобщающей способности используются [[Уменьшение размерности#Другие методы|ансамбли]] из моделей, которые были получены в ходе оптимизации. В Auto-sklearn применяются идеи [[Мета-обучение|мета-обучения]], которые позволяют выделять похожие датасеты и использовать знания о них.
 +
 
 +
=== Auto-sklearn 2.0 ===
 +
Auto-sklearn 2.0 является улучшенной версией библиотеки auto-sklearn. В обновленном варианте пакета каждый pipeline способен совершать раннюю остановку и сохранять результаты промежуточных вычислений. Это изменение кардинально улучшило производительность и качество работы.
 +
Следующим нововведением стало ограничение множества алгоритмов, в котором производится перебор, до моделей, которые можно обучать итеративно, в частности, методы, основанные на деревьях решений. Изменился подход к мета-обучению, предыдущая версия библиотеки использовала мета-признаки для определения схожих между собой датасетов. В Auto-sklearn 2.0 реализован другой подход, было создано единое портфолио лучших решений для различных датасетов. Был добавлен автоматический выбор стратегии подбора наилучшей модели.
 +
 
 +
=== Auto-Keras ===
 +
Открытая библиотека для автоматизированного подбора архитектуры модели, которая использует в своей основе scikit-learn, PyTorch и Keras<ref>[https://keras.io/ Библиотека Keras]</ref>. Библиотека параллельно использует CPU и GPU, а также адаптируется под лимиты памяти, за счёт чего обладает высокой производительностью. Auto-Keras показывает высокие результаты близкие к [[Автоматическое машинное обучение#Google Cloud AutoML | Google AutoML]], однако в отличии от продукта Google является бесплатной.
 +
Идея библиотеки в том, чтобы исследовать пространство поиска архитектур с помощью алгоритма байесовской оптимизации. Алгоритм поиска нейросетевой архитектуры состоит из трех повторяющихся шагов: обновление, генерация и наблюдение. Обновлением называется обучение гауссовского процесса на имеющихся данных. На этапе генерации создаётся новая архитектура через оптимизацию функции исследования. В качестве наблюдения записываются результаты новой архитектуры.
 +
 
 +
=== MLBox ===
 +
Мощная библиотека для автоматического машинного обучения, разработанная для Python. Реализует быстрое чтение, распределенную предобработку данных, выбор признаков, оптимизацию гиперпараметров в многомерном пространстве, современные предсказательные модели классификации и регрессии.
 +
 
 +
=== TransmogrifAI ===
 +
AutoML библиотека написанная на SCALA работающая поверх Apache Spark. Она разработана с упором на повышение производительности разработки за счёт проверки типов во время компиляции, их переиспользования и модульности. Обеспечивает быстрое обучение моделей с минимальной ручной настройкой.
 +
 
 
== Оценка модели ==
 
== Оценка модели ==
 
После того, как новая модель была сгенерирована, ее производительность должна быть оценена. Интуитивный метод состоит в том, чтобы обучить сеть сходиться, а затем оценить ее производительность. Однако этот метод требует значительных временных и вычислительных ресурсов. Для ускорения процесса оценки модели было предложено несколько алгоритмов, которые приведены ниже.
 
После того, как новая модель была сгенерирована, ее производительность должна быть оценена. Интуитивный метод состоит в том, чтобы обучить сеть сходиться, а затем оценить ее производительность. Однако этот метод требует значительных временных и вычислительных ресурсов. Для ускорения процесса оценки модели было предложено несколько алгоритмов, которые приведены ниже.
=== Низкая точность (Low fidelity) ===
+
=== Низкая точность (англ. Low fidelity) ===
 
Поскольку время обучения модели тесно связано с набором данных и размером модели, оценка модели может быть ускорена различными способами. <br>
 
Поскольку время обучения модели тесно связано с набором данных и размером модели, оценка модели может быть ускорена различными способами. <br>
Во-первых, может быть уменьшено количество изображений, или их разрешение (в терминах задач классификации изображений). <br>
+
В случае обработки изображений может быть уменьшено их количество или разрешение (в терминах задач классификации изображений). <br>
Во-вторых, оценка модели может быть реализована путем уменьшения размера модели, например, путем обучения с меньшим количеством фильтров на слой.
+
Также, оценка модели может быть реализована путем уменьшения размера модели, например, путем обучения с меньшим количеством фильтров на слой.
=== Суррогатный метод (Surrogate method) ===
+
=== Суррогатный метод (англ. Surrogate method) ===
Суррогатный метод {{---}} это еще один мощный инструмент, который аппроксимирует black-box функцию. В общем случае, как только получено хорошее приближение, задача найти конфигурации, которые непосредственно оптимизируют исходную дорогостоящую цель, становится тривиальной. К примеру, [https://arxiv.org/abs/1712.00559 прогрессивный поиск оптимизации нейронной сети (PNAS)] вводит суррогатную модель для управления методом поиска. Хотя было доказано, что [https://towardsdatascience.com/illustrated-efficient-neural-architecture-search-5f7387f9fb6 эффективный поиск нейронной сети (ENAS)] очень эффективен, PNAS еще более эффективен, поскольку число моделей, оцениваемых PNAS, более чем в пять раз превышает число моделей, оцениваемых ENAS, и PNAS в восемь раз быстрее с точки зрения общей вычислительной скорости. Однако, когда пространство оптимизации слишком велико и трудно поддается количественной оценке, а оценка каждой конфигурации чрезвычайно дорогостоящая, суррогатный метод неприменим.
+
Суррогатный метод {{---}} это еще один мощный инструмент, который аппроксимирует black-box функцию. В общем случае, как только получено хорошее приближение, задача найти конфигурации, которые непосредственно оптимизируют исходную дорогостоящую цель, становится тривиальной. К примеру, [https://arxiv.org/abs/1712.00559 прогрессивный поиск оптимизации нейронной сети (PNAS)] вводит суррогатную модель для управления методом поиска. Хотя было доказано, что [https://towardsdatascience.com/illustrated-efficient-neural-architecture-search-5f7387f9fb6 эффективный поиск нейронной сети (ENAS)] показывает высокую производительность, PNAS еще более эффективен, поскольку число моделей, оцениваемых PNAS, более чем в пять раз превышает число моделей, оцениваемых ENAS, и PNAS в восемь раз быстрее с точки зрения общей вычислительной скорости. Однако, когда пространство оптимизации слишком велико и трудно поддается количественной оценке, а оценка каждой конфигурации чрезвычайно дорогостоящая, суррогатный метод неприменим.
=== Ранняя остановка (Early stopping) ===
+
=== Ранняя остановка (англ. Early stopping) ===
 
Метод ранней остановки впервые был применен для избежания [[Переобучение | переобучения]] в классических задачах машинного обучения. Он используется для ускорения оценки модели путем остановки оценивания, которое, как предполагается, плохо работает на валидационном наборе.
 
Метод ранней остановки впервые был применен для избежания [[Переобучение | переобучения]] в классических задачах машинного обучения. Он используется для ускорения оценки модели путем остановки оценивания, которое, как предполагается, плохо работает на валидационном наборе.
=== Оптимизация ресурсов (Resource-aware) ===
+
=== Оптимизация ресурсов (англ. Resource-aware) ===
 
В большинстве исследований в прошлом больше внимания уделялось поиску нейронных архитектур, достигающих более высокой производительности (например, точности классификации), независимо от связанного с этим потребления ресурсов (т.е. количества графических процессоров и требуемого времени). Поэтому во многих последующих исследованиях исследуются алгоритмы, учитывающие ресурсы (resource-aware), чтобы найти компромисс между эффективностью и количеством вычислительных ресурсов. Для этого эти алгоритмы добавляют вычислительную стоимость к функции потерь в качестве ограничения ресурсов.<br>
 
В большинстве исследований в прошлом больше внимания уделялось поиску нейронных архитектур, достигающих более высокой производительности (например, точности классификации), независимо от связанного с этим потребления ресурсов (т.е. количества графических процессоров и требуемого времени). Поэтому во многих последующих исследованиях исследуются алгоритмы, учитывающие ресурсы (resource-aware), чтобы найти компромисс между эффективностью и количеством вычислительных ресурсов. Для этого эти алгоритмы добавляют вычислительную стоимость к функции потерь в качестве ограничения ресурсов.<br>
 
Эти алгоритмы отличаются друг от друга типом вычислительной стоимости, которым могут являться:
 
Эти алгоритмы отличаются друг от друга типом вычислительной стоимости, которым могут являться:
* число параметров
+
* число параметров,
* число операций умножения-накопления (MAC)
+
* число операций умножения-накопления (MAC),
* число операций с плавающей точкой (FLOP)
+
* число операций с плавающей точкой (FLOP),
 
* действительная задержка
 
* действительная задержка
 +
 +
== AutoML сервисы ==
 +
 +
=== Google Cloud AutoML ===
 +
Сервис от компании Google, который позволяет создавать модели машинного обучения, использующий запатентованную технологию Google Research, чтобы помочь пользовательским моделям достичь наиболее высокой производительности и точных предсказаний. Используется простой графический пользовательский интерфейс Cloud AutoML для обучения, оценки и оптимизации моделей на основе пользовательских данных. Также есть возможность генерировать высококачественные данные для интересующих задач.
 +
 +
==== Инструменты Cloud AutoML ====
 +
* компьютерное зрение {{---}} [https://cloud.google.com/vision/overview/docs#automl-vision AutoML Vision], [https://cloud.google.com/video-intelligence/automl/docs AutoML Video Intelligence]
 +
* машинный перевод {{---}} [https://cloud.google.com/natural-language/automl/docs AutoML Natural Language], [https://cloud.google.com/translate/automl/docs AutoML Translation]
 +
* структурирование данных {{---}} [https://cloud.google.com/automl-tables/docs AutoML Tables]
 +
 +
=== IBM Watson Machine Learning ===
 +
Сервис IBM Cloud с широким спектром услуг. Предоставляет обширные возможности для работы с естественным языком (например преобразование текста в речь и наоборот, динамический перевод документов, классификацию текста, анализ эмоциональной составляющей текста), а также инструменты для распознавания изображений. Поддерживает ограниченный набор типов библиотек, таких как scikit-learn и Keras.
 +
 +
=== MLJAR ===
 +
Сервис для автоматизации машинного обучения предоставляющий возможности по предобработке данных, обучению алгоритма, и выбору гиперпараметров без использования кода. Предобработка реализована в виде заполнения недостающих данных, преобразовании типов признаков, а также [https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4 one-hot encoding]. В качестве алгоритмов предлагаются Xgboost, LightGBM, Regularized Greedy Forest, cлучайный лес, алгоритм k-ближайших соседей, логистическая регрессия, нейронные сети и другие. Обученную модель можно использовать как удаленно на сервере, так и локально на своей машине.
 +
 +
=== AzureML ===
 +
Облачный сервис компании Microsoft, который предоставляет многочисленные возможности для упрощения разработки и развертывания проектов. В AzureML реализованы пользовательские интерфейсы конструктора машинного обучения и автоматического машинного обучения. В облаке вы можете хранить свои датасеты, модели, конвейеры, базы данных и т.д. Сервис поддерживает следующие среды разработки: VSCode, Pycharm, Visual Studio, Jupyter Notebook, а также два языка программирования: R и Python вместе с основными библиотеками и фреймворками.
  
 
== См. также ==
 
== См. также ==
Строка 81: Строка 116:
 
* [https://towardsdatascience.com/tpot-automated-machine-learning-in-python-4c063b3e5de9 TPOT Automated Machine Learning in Python]
 
* [https://towardsdatascience.com/tpot-automated-machine-learning-in-python-4c063b3e5de9 TPOT Automated Machine Learning in Python]
 
* [https://www.automl.org/wp-content/uploads/2018/12/auto-sklearn-1.pdf Auto-sklearn: Efficient and Robust Automated Machine Learning]
 
* [https://www.automl.org/wp-content/uploads/2018/12/auto-sklearn-1.pdf Auto-sklearn: Efficient and Robust Automated Machine Learning]
 +
* [https://www.automl.org/auto-sklearn-2-0-the-next-generation/ Auto-sklearn 2.0: The next generation]
 +
 +
== Примечания ==
  
 
[[Категория: Машинное обучение]]
 
[[Категория: Машинное обучение]]
 +
[[Категория: Автоматическое машинное обучение]]

Текущая версия на 16:36, 13 января 2021

Автоматическое машинное обучение (англ. Automated Machine Learning, AutoML) — процесс создания динамической комбинации различных методов для формирования простой в использовании сквозной конвейерной системы машинного обучения. AutoML использует хорошо зарекомендовавшие себя методы, которые мы классифицируем в следующие категории на основе конвеера машинного обучения (показано на Рис.1): подготовка данных, конструирование признаков, генерация моделей и их оценка.

Рисунок 1: Конвеер автоматического машинного обучения


Подготовка данных состоит из двух этапов: сбор данных и их предварительная обработка.
Конструирование признаков состоит из 3 процессов: извлечение признаков, выбор признаков и построение признаков.
Этап генерации модели включает в себя выбор модели и оптимизацию гиперпараметров выбранной модели.
Методы оптимизации гиперпараметров: случайный поиск, поиск по сетке, градиентный спуск (gradient descent, GD), обучение с подкреплением, эволюционный алгоритм (evolutionary algorithm, EA), байесовская оптимизация (Bayesian optimization, BO), байесовская оптимизация на основе гиперболы (Bayesian optimization based hyperband, BOBH).

Подготовка данных[править]

Первым шагом в конвейере машинного обучения идет этап подготовки данных. Во многих задачах, например, в задаче распознавания образов в медицине, бывает трудно получить достаточно данных, или качественно размеченных данных. Мощная система AutoML должна уметь справляться с этой проблемой. Для исследования этой задачи процесс подготовки данных разделяется на два подэтапа: сбор данных и их предобработка.

Сбор данных[править]

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

Синтез данных[править]

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

Поиск данных[править]

Так как интернет является неисчерпаемым источником данных, поиск веб-данных — это интуитивно понятный способ сбора наборов данных. Тем не менее, есть некоторые проблемы с использованием данных, полученных таким образом.
Во-первых, результаты поиска могут не совсем совпадать с ключевыми словами. Чтобы решить эту проблему, несвязанные данные могут быть отфильтрованы.
Во-вторых, веб-данные могут быть неправильно размечены или не размечены вовсе. Для решения этой проблемы часто используются self-labeling методы. К примеру, один из таких методов активного обучения выбирает наиболее "неопределенные" неразмеченные отдельные примеры для разметки вручную, а затем итеративно размечаются оставшиеся данные. Чтобы полностью устранить потребность в разметке данных вручную и еще больше ускорить этот процесс, предлагается множество методов саморазметки с частичным привлечением учителя.
Однако, также существует проблема, что наш набор данных не сбалансирован. Решением этой проблемы является, к примеру, алгоритм SMOTE, который помогает синтезировать новые данные, которые будут относиться к миноритарным классам, а также уменьшать количество данных, относящихся к мажоритарным классам.

Предварительная обработка данных[править]

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

Конструирование признаков[править]

Конструирование признаков состоит из трёх подэтапов: выбор признаков (англ. feature selection), извлечение признаков (англ. feature extraction) и построение признаков (англ. feature construction). Извлечение и построение признаков — это варианты преобразования, с помощью которых создается новый набор признаков. Во многих случаях, целью извлечения признаков является уменьшение исходной размерности путём применения некоторых функций отображения, в то время как построение признаков используется для расширения исходного пространства признаков. Цель выбора признаков состоит в том, чтобы уменьшить избыточность признаков путем выбора наиболее важных из них. В итоге, суть автоматического конструирования признаков в некоторой степени заключается в динамическом сочетании этих трех принципов.

Выбор признаков[править]

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

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

Построение признаков[править]

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

Извлечение признаков[править]

Это процесс уменьшения размерности пространства признаков путем применения некоторых функций отображения. Он извлекает наиболее информативные признаки с учетом выбранных метрик. В отличие от выбора признаков, извлечение признаков изменяет исходные признаки. Главной частью извлечения признаков является функция отображения, которая может быть реализована многими способами. Наиболее распространенными подходами являются метод главных компонент (PCA), метод независимых компонент (ICA), t-SNE, isomap, нелинейное уменьшение размерности.

Генерация модели[править]

После конструирования признаков нам нужно сгенерировать модель и задать ее гиперпараметры. Как показано на Рис. 1, генерация модели состоит из двух этапов: выбора модели и оптимизации гиперпараметров. Существует множество способов выбора модели. Ниже приведены некоторые из них:

TPOT (Tree-base Pipeline Optimization Tool)[править]

В основе TPOT лежит эволюционный алгоритм поиска для нахождения лучшей модели и одновременной оптимизации её гиперпараметров. Представляет собой надстройку над scikit-learn[1], при этом в данную библиотеку также включены собственные алгоритмы регрессии и классификации. В мае 2020 года вышла версия, в которую был добавлен модуль для работы с нейронными сетями на основе PyTorch[2]. Время работы TPOT сильно зависит от размера входных данных. Не поддерживает обработку естественного языка и категориальных данных.

Auto-WEKA[править]

Auto-WEKA позволяет одновременно выбирать лучшую модель и настраивать ее гиперпараметры. Для этого процесса используется алгоритм SMAC. Из-за перебора всех возможных моделей и их гиперпараметров алгоритм работает довольно долго.

Auto-sklearn[править]

В Auto-sklearn реализован автоматический выбор лучшего алгоритма из представленных в scikit-learn, а также настройка его гиперпараметров. Для улучшения обобщающей способности используются ансамбли из моделей, которые были получены в ходе оптимизации. В Auto-sklearn применяются идеи мета-обучения, которые позволяют выделять похожие датасеты и использовать знания о них.

Auto-sklearn 2.0[править]

Auto-sklearn 2.0 является улучшенной версией библиотеки auto-sklearn. В обновленном варианте пакета каждый pipeline способен совершать раннюю остановку и сохранять результаты промежуточных вычислений. Это изменение кардинально улучшило производительность и качество работы. Следующим нововведением стало ограничение множества алгоритмов, в котором производится перебор, до моделей, которые можно обучать итеративно, в частности, методы, основанные на деревьях решений. Изменился подход к мета-обучению, предыдущая версия библиотеки использовала мета-признаки для определения схожих между собой датасетов. В Auto-sklearn 2.0 реализован другой подход, было создано единое портфолио лучших решений для различных датасетов. Был добавлен автоматический выбор стратегии подбора наилучшей модели.

Auto-Keras[править]

Открытая библиотека для автоматизированного подбора архитектуры модели, которая использует в своей основе scikit-learn, PyTorch и Keras[3]. Библиотека параллельно использует CPU и GPU, а также адаптируется под лимиты памяти, за счёт чего обладает высокой производительностью. Auto-Keras показывает высокие результаты близкие к Google AutoML, однако в отличии от продукта Google является бесплатной. Идея библиотеки в том, чтобы исследовать пространство поиска архитектур с помощью алгоритма байесовской оптимизации. Алгоритм поиска нейросетевой архитектуры состоит из трех повторяющихся шагов: обновление, генерация и наблюдение. Обновлением называется обучение гауссовского процесса на имеющихся данных. На этапе генерации создаётся новая архитектура через оптимизацию функции исследования. В качестве наблюдения записываются результаты новой архитектуры.

MLBox[править]

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

TransmogrifAI[править]

AutoML библиотека написанная на SCALA работающая поверх Apache Spark. Она разработана с упором на повышение производительности разработки за счёт проверки типов во время компиляции, их переиспользования и модульности. Обеспечивает быстрое обучение моделей с минимальной ручной настройкой.

Оценка модели[править]

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

Низкая точность (англ. Low fidelity)[править]

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

Суррогатный метод (англ. Surrogate method)[править]

Суррогатный метод — это еще один мощный инструмент, который аппроксимирует black-box функцию. В общем случае, как только получено хорошее приближение, задача найти конфигурации, которые непосредственно оптимизируют исходную дорогостоящую цель, становится тривиальной. К примеру, прогрессивный поиск оптимизации нейронной сети (PNAS) вводит суррогатную модель для управления методом поиска. Хотя было доказано, что эффективный поиск нейронной сети (ENAS) показывает высокую производительность, PNAS еще более эффективен, поскольку число моделей, оцениваемых PNAS, более чем в пять раз превышает число моделей, оцениваемых ENAS, и PNAS в восемь раз быстрее с точки зрения общей вычислительной скорости. Однако, когда пространство оптимизации слишком велико и трудно поддается количественной оценке, а оценка каждой конфигурации чрезвычайно дорогостоящая, суррогатный метод неприменим.

Ранняя остановка (англ. Early stopping)[править]

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

Оптимизация ресурсов (англ. Resource-aware)[править]

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

  • число параметров,
  • число операций умножения-накопления (MAC),
  • число операций с плавающей точкой (FLOP),
  • действительная задержка

AutoML сервисы[править]

Google Cloud AutoML[править]

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

Инструменты Cloud AutoML[править]

IBM Watson Machine Learning[править]

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

MLJAR[править]

Сервис для автоматизации машинного обучения предоставляющий возможности по предобработке данных, обучению алгоритма, и выбору гиперпараметров без использования кода. Предобработка реализована в виде заполнения недостающих данных, преобразовании типов признаков, а также one-hot encoding. В качестве алгоритмов предлагаются Xgboost, LightGBM, Regularized Greedy Forest, cлучайный лес, алгоритм k-ближайших соседей, логистическая регрессия, нейронные сети и другие. Обученную модель можно использовать как удаленно на сервере, так и локально на своей машине.

AzureML[править]

Облачный сервис компании Microsoft, который предоставляет многочисленные возможности для упрощения разработки и развертывания проектов. В AzureML реализованы пользовательские интерфейсы конструктора машинного обучения и автоматического машинного обучения. В облаке вы можете хранить свои датасеты, модели, конвейеры, базы данных и т.д. Сервис поддерживает следующие среды разработки: VSCode, Pycharm, Visual Studio, Jupyter Notebook, а также два языка программирования: R и Python вместе с основными библиотеками и фреймворками.

См. также[править]

Источники информации[править]

Примечания[править]