84
правки
Изменения
Нет описания правки
<b> Автоматическое машинное обучение </b> {{---}} процесс создания динамической комбинации различных методов для формирования простой в использовании сквозной конвейерной системы машинного обучения. AutoML использует хорошо зарекомендовавшие себя методы, которые мы классифицируем в следующие категории на основе пайплайна машинного обучения (показано на Рис.1): подготовка данных, конструирование признаков, генерация моделей и их оценка.
[[Файл:1.jpeg|1000px|thumb|center|Рисунок 1: AutoML конвеер]]
<br>
Подготовка данных состоит из двух этапов: сбор данных и их предварительная обработка.<br>
Конструирование признаков состоит из 3 процессов: извлечение признаков, выбор признаков и построение признаков.<br>
Этап генерации модели включает в себя выбор модели и оптимизацию гиперпараметров выбранной модели.<br>
Градиентный спуск (gradient descent, GD), [[Обучение с подкреплением | обучение с подкреплением]] (reinforcement learning, RL), [[Эволюционные алгоритмы | волюционный эволюционный алгоритм]] (evolutionary algorithm, EA), байесовская оптимизация (Bayesian optimization, BO), байесовская оптимизация на основе гиперболы (Bayesian-optimization based hyperband, BOBH).
== Подготовка данных ==
Одним из наиболее часто используемых методов является аугментация существующего набора данных. Для данных изображений существует множество [[Практики реализации нейронных сетей | операций аугментации]], таких как обрезка, поворот, изменение размера и т.д.<br>
Также, существуют два подхода к созданию дополнительных обучающих примеров: искажение данных и синтетическая избыточная выборка. Первый генерирует дополнительные семплы, применяя преобразования к пространству данных, а второй создает дополнительные семплы в пространстве признаков. Текстовые данные могут быть дополнены синонимами или сначала переводом текста на иностранный язык, а затем переводом его обратно на оригинальный.<br>
Плюс ко всему, одним из распространенных методов является Генеративно-Состязательные Сети[[Generative Adversarial Nets | порождающие состязательные сети]], которые, в основном, применяются для генерации картинок и текстов.
==== Поиск данных ====
Так как интернет является неисчерпаемым источником данных, поиск веб-данных {{- --}} это интуитивно понятный способ сбора наборов данных. Тем не менее, есть некоторые проблемы с использованием данных, полученных таким образом.<br>
Во-первых, результаты поиска могут не совсем совпадать с ключевыми словами. Чтобы решить эту проблему, несвязанные данные могут быть отфильтрованы.<br>
Во-вторых, веб-данные могут быть неправильно размечены или не размечены вовсе. Для решения этой проблемы часто используется метод self_labeling. К примеру, [[Активное обучение | метод активного обучения ]] выбирает наиболее "неопределенные" неразмеченные отдельные примеры для разметки вручную, а затем итеративно размечаются оставшиеся данные. Чтобы полностью устранить потребность в разметке данных вручную и еще больше ускорить этот процесс, предлагается множество методов self-labeling саморазметки [[Обучение с частичным привлечением учителя| с частичным привлечением учителя]].<br>Однако, имеет также место быть проблема того, что наш набор данных не сбалансирован. Решением этой проблемы является, к примеру, [[Алгоритм SMOTE | алгоритм SMOTE]], который помогает синтезировать новые данные, которые будут относиться к миноритарным классам, а также уменьшать количество данных, относящихся к мажоритарным классам.
=== Предварительная обработка данных ===
После того, как необработанные данные были собраны, они должны быть предварительно обработаны, чтобы удалить избыточные, неполные или неправильные данные. Например, распространенными типами ошибок в полученных набор наборах данных являются пропущенные значения и неправильные типы данных. Типичными операциями, используемыми для обработки данных, являются стандартизация, масштабирование, бинаризация количественных характеристик и замена недостающих значений средними значениями.<br>При работе с картинками, может быть возникнуть проблема, что картинка имеет неверную метку. В таких случаях применимы такие методы, как self-labelingсаморазметки. Тем не менее, процесс обработки данных обычно должен быть определен заранее вручную, потому что разные методы могут иметь различные требования, даже для одного и того же набора данных. Например, нейронная сеть может работать только с числовыми данными, в то время как методы, основанные на деревьях принятия решений, могут работать как с числовыми, так и с категориальными данными.
== Конструирование признаков ==
Конструирование признаков состоит из трёх подэтапов: выбор признаков (англ. feature selection), извлечение признаков (англ. feature extraction) и построение признаков (англ. feature construction). Извлечение и построение признаков {{--- }} это варианты преобразования, с помощью которых создается новый набор признаков. Во многих случаях, целью feature extraction извлечения признаков является уменьшение исходной размерности путём применения некоторых функций отображения, в то время как feature construction построение признаков используется для расширения исходного пространства признаков. Цель feature selection выбора признаков состоит в том, чтобы уменьшить избыточность признаков путем выбора наиболее важных из них. В итоге, суть автоматического конструирования признаков в некоторой степени заключается в динамическом сочетание этих трех принципов.
=== Выбор признаков ===
[[Файл:2_automl.png|right|thumb|Рис. 2: Итерационный процесс выбора признаков. Подмножество признаков выбирается на основе стратегии поиска, а затем оценивается. После этого выполняется процедура валидации, чтобы определить, является ли полученное подмножество валидным. Описанные выше шаги повторяются до того момента, пока не будет достигнут критерий остановки.]]
=== Построение признаков ===
=== Извлечение признаков ===
Это процесс уменьшения размерности пространства признаков путем применения некоторых функций отображения.Он извлекает наиболее информативные признаки с учетом выбранных метрик. В отличие от feature selectionвыбора признаков, feature extraction извлечение признаков изменяет исходные признаки. Главной частью feature extraction извлечения признаков является функция отображения, которая может быть реализована многими способами. Наиболее распространенными подходами является являются [[Метод главных компонент (PCA)| метод главных компонент (PCA)]], метод независимых компонент (ICA), [[Стохастическое вложение соседей с t-распределением | t-SNE]], isomap, нелинейное уменьшение размерности.
== Генерация модели ==
{|align="center"
|-valign="top"
|[[Файл:3_automl.png|400px|thumb|Рис. 3: Алгоритмы и методы, которые поддерживаются Auto-WEKA и количество их гиперпараметров соответственно. Все алгоритмы и методы используются для задач классификации, помеченные звёздочков {{- --}} также для задач регрессии.]]
|[[Файл:4_automl.png|thumb|Рис. 4: Алгоритмы и методы, которые поддерживаются Auto-sklearn и количество их гиперпараметров соответственно]]
|}
Так же, как и в Auto-WEKA, в Auto-sklearn мы можем автоматически выбрать лучшую модель из тех, что поддерживаются, и сразу настроить ее гиперпараметры. <br>На рис.4 показано, что Auto-sklearn поддерживает 15 алгоритмов и у каждого из них свое количество гиперпараметров. <br>Сначала используется мета-обучение на основе различных признаков и мета-признаков набора данных, чтобы найти наилучшие модели. После этого используется подход байесовской оптимизации, чтобы найти лучшие гиперпараметры для выбранных моделей.
== Оценка модели ==
После того, как новая нейронная сеть модель была сгенерирована, ее производительность должна быть оценена. Интуитивный метод состоит в том, чтобы обучить сеть сходиться, а затем оценить ее производительность. Однако этот метод требует значительных временных и вычислительных ресурсов. Для ускорения процесса оценки модели было предложено несколько алгоритмов, которые приведены ниже.
=== Низкая точность (Low fidelity) ===
Поскольку время обучения модели тесно связано с набором данных и размером модели, оценка модели может быть ускорена различными способами. <br>
Во-вторых, оценка модели может быть реализована путем уменьшения размера модели, например, путем обучения с меньшим количеством фильтров на слой.
=== Суррогатный метод (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 в восемь раз быстрее с точки зрения общей вычислительной скорости. Однако, когда пространство оптимизации слишком велико и трудно поддается количественной оценке, а оценка каждой конфигурации чрезвычайно дорогостоящая, суррогатный метод неприменим.
=== Ранняя остановка (Early stopping) ===
Метод ранней остановки впервые был применен для избежания [[Переобучение | переобучения ]] в классических задачах машинного обучения. Он используется для ускорения оценки модели путем остановки оценивания, которое, как предполагается, плохо работает на валидационном наборе.
=== Оптимизация ресурсов (Resource-aware) ===
В большинстве исследований в прошлом больше внимания уделялось поиску нейронных архитектур, достигающих более высокой производительности (например, точности классификации), независимо от связанного с этим потребления ресурсов (т.е. количества графических процессоров и требуемого времени). Поэтому во многих последующих исследованиях исследуются алгоритмы, учитывающие ресурсы (resource-aware), чтобы найти компромисс между эффективностью и количеством вычислительных ресурсов. Для этого эти алгоритмы добавляют вычислительную стоимость к функции потерь в качестве ограничения ресурсов.<br>
* [[Мета-обучение]]
* [[Настройка гиперпараметров]]
* [[Оценка качества в задаче кластеризации]]
* [[Оценка качества в задачах классификации]]
== Источники информации ==
* [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]
[[Категория: Машинное обучение]] [[Категория: Автоматическое машинное обучение]]