<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lindvv</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lindvv"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Lindvv"/>
		<updated>2026-08-04T13:37:07Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=75123</id>
		<title>Автоматическое машинное обучение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=75123"/>
				<updated>2020-11-08T09:19:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: добавлена категория&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;b&amp;gt; Автоматическое машинное обучение &amp;lt;/b&amp;gt;(англ. Automated Machine Learning, AutoML) {{---}} процесс создания динамической комбинации различных методов для формирования простой в использовании сквозной конвейерной системы машинного обучения. AutoML использует хорошо зарекомендовавшие себя методы, которые мы классифицируем в следующие категории на основе конвеера машинного обучения (показано на Рис.1): подготовка данных, конструирование признаков, генерация моделей и их оценка.&lt;br /&gt;
[[Файл:automl_1_1.png|1000px|thumb|center|Рисунок 1: Конвеер автоматического машинного обучения]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Подготовка данных состоит из двух этапов: сбор данных и их предварительная обработка.&amp;lt;br&amp;gt;&lt;br /&gt;
Конструирование признаков состоит из 3 процессов: извлечение признаков, выбор признаков и построение признаков.&amp;lt;br&amp;gt;&lt;br /&gt;
Этап генерации модели включает в себя выбор модели и оптимизацию гиперпараметров выбранной модели.&amp;lt;br&amp;gt;&lt;br /&gt;
Методы [[Настройка гиперпараметров | оптимизации гиперпараметров]]: случайный поиск, поиск по сетке, градиентный спуск (gradient descent, GD), [[Обучение с подкреплением | обучение с подкреплением]], [[Эволюционные алгоритмы | эволюционный алгоритм]] &lt;br /&gt;
(evolutionary algorithm, EA), байесовская оптимизация (Bayesian optimization, BO), байесовская оптимизация на основе гиперболы (Bayesian optimization based hyperband, BOBH).&lt;br /&gt;
&lt;br /&gt;
== Подготовка данных ==&lt;br /&gt;
Первым шагом в конвеере машинного обучения идет этап подготовки данных. Во многих задачах, например, в задаче распознавания образов в медицине, бывает трудно получить достаточно данных, или &amp;lt;i&amp;gt;качественно размеченных&amp;lt;/i&amp;gt; данных. Мощная система AutoML должна уметь справляться с этой проблемой. Для исследования этой задачи процесс подготовки данных разделяется на два подэтапа: сбор данных и их предобработка.&lt;br /&gt;
=== Сбор данных ===&lt;br /&gt;
Углубленное изучение ML привело к консенсусу, что качественные данные общедоступны. В результате появилось множество открытых наборов данных. Однако, с помощью вышеуказанных подходов, как правило, очень трудно найти надлежащий набор данных для специализированных задач, таких как задачи, связанные с медициной. Для решения этой задачи предлагается два типа методов: синтез данных и поиск данных.&lt;br /&gt;
==== Синтез данных ====&lt;br /&gt;
Одним из наиболее часто используемых методов является аугментация существующего набора данных. Для данных изображений существует множество [[Практики реализации нейронных сетей | операций аугментации]], таких как обрезка, поворот, изменение размера и т.д.&amp;lt;br&amp;gt;&lt;br /&gt;
Также, существуют два подхода к созданию дополнительных обучающих примеров: искажение данных и синтетическая избыточная выборка. Первый генерирует дополнительные семплы, применяя преобразования к пространству данных, а второй создает дополнительные семплы в пространстве признаков. Текстовые данные могут быть дополнены синонимами или сначала переводом текста на иностранный язык, а затем переводом его обратно на оригинальный.&amp;lt;br&amp;gt;&lt;br /&gt;
Плюс ко всему, одним из распространенных методов является [[Generative Adversarial Nets (GAN)| порождающие состязательные сети]], которые, в основном, применяются для генерации картинок и текстов.&lt;br /&gt;
==== Поиск данных ====&lt;br /&gt;
Так как интернет является неисчерпаемым источником данных, поиск веб-данных {{---}} это интуитивно понятный способ сбора наборов данных. Тем не менее, есть некоторые проблемы с использованием данных, полученных таким образом.&amp;lt;br&amp;gt;&lt;br /&gt;
Во-первых, результаты поиска могут не совсем совпадать с ключевыми словами. Чтобы решить эту проблему, несвязанные данные могут быть отфильтрованы.&amp;lt;br&amp;gt;&lt;br /&gt;
Во-вторых, веб-данные могут быть неправильно размечены или не размечены вовсе. Для решения этой проблемы часто используются self-labeling методы. К примеру, один из таких методов [[Активное обучение | активного обучения]] выбирает наиболее &amp;quot;неопределенные&amp;quot; неразмеченные отдельные примеры для разметки вручную, а затем итеративно размечаются оставшиеся данные. Чтобы полностью устранить потребность в разметке данных вручную и еще больше ускорить этот процесс, предлагается множество методов саморазметки [[Обучение с частичным привлечением учителя | с частичным привлечением учителя]].&amp;lt;br&amp;gt;&lt;br /&gt;
Однако, также существует проблема, что наш набор данных не сбалансирован. Решением этой проблемы является, к примеру, [[Алгоритмы сэмплирования | алгоритм SMOTE]], который помогает синтезировать новые данные, которые будут относиться к миноритарным классам, а также уменьшать количество данных, относящихся к мажоритарным классам.&lt;br /&gt;
=== Предварительная обработка данных ===&lt;br /&gt;
После того, как необработанные данные были собраны, они должны быть предварительно обработаны, чтобы удалить избыточные, неполные или неправильные данные. Например, распространенными типами ошибок в полученных наборах данных являются пропущенные значения и неправильные типы данных. Типичными операциями, используемыми для обработки данных, являются стандартизация, масштабирование, бинаризация количественных характеристик и замена недостающих значений средними значениями.&amp;lt;br&amp;gt;&lt;br /&gt;
При работе с картинками может возникнуть проблема, что картинка имеет неверную метку. В таких случаях применимы методы саморазметки. Тем не менее, процесс обработки данных обычно должен быть определен заранее вручную, потому что разные методы могут иметь различные требования, даже для одного и того же набора данных. Например, нейронная сеть может работать только с числовыми данными, в то время как методы, основанные на деревьях принятия решений, могут работать как с числовыми, так и с категориальными данными.&lt;br /&gt;
&lt;br /&gt;
== Конструирование признаков ==&lt;br /&gt;
Конструирование признаков состоит из трёх подэтапов: выбор признаков (англ. feature selection), извлечение признаков (англ. feature extraction) и построение признаков (англ. feature construction). Извлечение и построение признаков {{---}} это варианты преобразования, с помощью которых создается новый набор признаков. Во многих случаях, целью извлечения признаков является [[Уменьшение размерности | уменьшение исходной размерности]] путём применения некоторых функций отображения, в то время как построение признаков используется для расширения исходного пространства признаков. Цель выбора признаков состоит в том, чтобы уменьшить избыточность признаков путем выбора наиболее важных из них. В итоге, суть автоматического конструирования признаков в некоторой степени заключается в динамическом сочетании этих трех принципов.&lt;br /&gt;
&lt;br /&gt;
=== Выбор признаков ===&lt;br /&gt;
[[Файл:automl_2.png|300px|right|thumb|Рис. 2: Итерационный процесс выбора признаков. Подмножество признаков выбирается на основе стратегии поиска, а затем оценивается. После этого выполняется процедура валидации, чтобы определить, является ли полученное подмножество валидным. Описанные выше шаги повторяются до того момента, пока не будет достигнут критерий остановки.]]&lt;br /&gt;
При [[Уменьшение_размерности#Выбор признаков|выборе признаков]] строится подмножество объектов на основе исходного набора объектов путем сокращения нерелевантных или избыточных признаков. Это, как правило, упрощает модель, таким образом, избегая переобучения и улучшая производительность модели. Выбранные объекты обычно расходятся и сильно коррелируют со значениями объектов.&amp;lt;br&amp;gt;&lt;br /&gt;
Стратегия поиска для выбора признаков включает в себя три типа алгоритмов: полный поиск, эвристический поиск и случайный поиск.&lt;br /&gt;
&lt;br /&gt;
=== Построение признаков === &lt;br /&gt;
Это процесс создания новых признаков из исходного пространства или необработанных данных с целью улучшения качества и обобщаемой способности модели. Этот процесс сильно зависит от человеческого опыта, и одним из наиболее часто используемых методов являются препроцессинговые преобразования, такие как стандартизация, нормализация или дискретизация признаков. Кроме того, операции преобразования для различных типов признаков могут отличаться. Например, такие операции, как конъюнкция, дизъюнкция и отрицание, обычно используются для бинарных признаков; такие операции, как минимум, максимум, сложение, вычитание, среднее значение, обычно используются для числовых признаков.&amp;lt;br&amp;gt;&lt;br /&gt;
Невозможно вручную исследовать все возможности. Таким образом, для дальнейшего повышения эффективности были предложены некоторые автоматические методы построения признаков, которые позволяют достичь результатов, которые не уступают или даже превосходят результаты, достигнутые человеческим опытом. Эти алгоритмы направлены на автоматизацию процесса поиска и оценки комбинации операций.&lt;br /&gt;
&lt;br /&gt;
=== Извлечение признаков ===&lt;br /&gt;
Это процесс уменьшения размерности пространства признаков путем применения некоторых функций отображения. Он извлекает наиболее информативные признаки с учетом выбранных метрик. В отличие от выбора признаков, извлечение признаков изменяет исходные признаки. Главной частью извлечения признаков является функция отображения, которая может быть реализована многими способами. Наиболее распространенными подходами являются [[Метод главных компонент (PCA) | метод главных компонент (PCA)]], метод независимых компонент (ICA), [[Стохастическое вложение соседей с t-распределением | t-SNE]], isomap, нелинейное уменьшение размерности.&lt;br /&gt;
&lt;br /&gt;
== Генерация модели ==&lt;br /&gt;
После конструирования признаков нам нужно сгенерировать модель и задать ее гиперпараметры. Как показано на Рис. 1, генерация модели состоит из двух этапов: [[Модель алгоритма и её выбор | выбора модели]] и [[Настройка гиперпараметров | оптимизации гиперпараметров]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Существует множество способов выбора модели. Ниже приведены некоторые из них:&lt;br /&gt;
=== TPOT (Tree-base Pipeline Optimization Tool) ===&lt;br /&gt;
В основе [[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке Tree-base Pipeline Optimization Tool (TPOT) для Python. | TPOT]] лежит эволюционный алгоритм поиска для нахождения лучшей модели и оновременной оптимизации её гиперпараметров. Время работы TPOT сильно зависит от размера входных данных.&lt;br /&gt;
&lt;br /&gt;
=== Auto-WEKA ===&lt;br /&gt;
[[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке auto-WEKA для Java | Auto-WEKA]] позволяет нам одновременно выбирать лучшую модель и настраивать ее гиперпараметры. Время работы алгоритма достаточно долгое, потому что нам нужно перебрать все возможные алгоритмы и для каждого из них настроить его гиперпараметры.&lt;br /&gt;
&lt;br /&gt;
=== Auto-sklearn ===&lt;br /&gt;
Так же, как и в Auto-WEKA, в [[Модель алгоритма и её выбор#Автоматизированный выбор модели в библиотеке auto-sklearn для Python | Auto-sklearn]] мы можем автоматически выбрать лучшую модель из тех, что поддерживаются, и сразу настроить ее гиперпараметры.&lt;br /&gt;
&lt;br /&gt;
== Оценка модели ==&lt;br /&gt;
После того, как новая модель была сгенерирована, ее производительность должна быть оценена. Интуитивный метод состоит в том, чтобы обучить сеть сходиться, а затем оценить ее производительность. Однако этот метод требует значительных временных и вычислительных ресурсов. Для ускорения процесса оценки модели было предложено несколько алгоритмов, которые приведены ниже.&lt;br /&gt;
=== Низкая точность (англ. Low fidelity) ===&lt;br /&gt;
Поскольку время обучения модели тесно связано с набором данных и размером модели, оценка модели может быть ускорена различными способами. &amp;lt;br&amp;gt;&lt;br /&gt;
В случае обработки изображений может быть уменьшено их количество или разрешение (в терминах задач классификации изображений). &amp;lt;br&amp;gt;&lt;br /&gt;
Также, оценка модели может быть реализована путем уменьшения размера модели, например, путем обучения с меньшим количеством фильтров на слой.&lt;br /&gt;
=== Суррогатный метод (англ. Surrogate method) ===&lt;br /&gt;
Суррогатный метод {{---}} это еще один мощный инструмент, который аппроксимирует black-box функцию. В общем случае, как только получено хорошее приближение, задача найти конфигурации, которые непосредственно оптимизируют исходную дорогостоящую цель, становится тривиальной. К примеру, [https://arxiv.org/abs/1712.00559 прогрессивный поиск оптимизации нейронной сети (PNAS)] вводит суррогатную модель для управления методом поиска. Хотя было доказано, что [https://towardsdatascience.com/illustrated-efficient-neural-architecture-search-5f7387f9fb6 эффективный поиск нейронной сети (ENAS)] показывает высокую производительность, PNAS еще более эффективен, поскольку число моделей, оцениваемых PNAS, более чем в пять раз превышает число моделей, оцениваемых ENAS, и PNAS в восемь раз быстрее с точки зрения общей вычислительной скорости. Однако, когда пространство оптимизации слишком велико и трудно поддается количественной оценке, а оценка каждой конфигурации чрезвычайно дорогостоящая, суррогатный метод неприменим.&lt;br /&gt;
=== Ранняя остановка (англ. Early stopping) ===&lt;br /&gt;
Метод ранней остановки впервые был применен для избежания [[Переобучение | переобучения]] в классических задачах машинного обучения. Он используется для ускорения оценки модели путем остановки оценивания, которое, как предполагается, плохо работает на валидационном наборе.&lt;br /&gt;
=== Оптимизация ресурсов (англ. Resource-aware) ===&lt;br /&gt;
В большинстве исследований в прошлом больше внимания уделялось поиску нейронных архитектур, достигающих более высокой производительности (например, точности классификации), независимо от связанного с этим потребления ресурсов (т.е. количества графических процессоров и требуемого времени). Поэтому во многих последующих исследованиях исследуются алгоритмы, учитывающие ресурсы (resource-aware), чтобы найти компромисс между эффективностью и количеством вычислительных ресурсов. Для этого эти алгоритмы добавляют вычислительную стоимость к функции потерь в качестве ограничения ресурсов.&amp;lt;br&amp;gt;&lt;br /&gt;
Эти алгоритмы отличаются друг от друга типом вычислительной стоимости, которым могут являться:&lt;br /&gt;
* число параметров,&lt;br /&gt;
* число операций умножения-накопления (MAC),&lt;br /&gt;
* число операций с плавающей точкой (FLOP),&lt;br /&gt;
* действительная задержка&lt;br /&gt;
&lt;br /&gt;
== Google Cloud AutoML ==&lt;br /&gt;
Сервис от компании Google, который позволяет создавать модели машинного обучения, использующий запатентованную технологию Google Research, чтобы помочь пользовательским моделям достичь наиболее высокой производительности и точных предсказаний. Используется простой графический пользовательский интерфейс Cloud AutoML для обучения, оценки и оптимизации моделей на основе пользовательских данных. Также есть возможность генерировать высококачественные данные для интересующих задач.&lt;br /&gt;
=== Инструменты Cloud AutoML ===&lt;br /&gt;
* компьютерное зрение {{---}} [https://cloud.google.com/vision/overview/docs#automl-vision AutoML Vision], [https://cloud.google.com/video-intelligence/automl/docs AutoML Video Intelligence]&lt;br /&gt;
* машинный перевод {{---}} [https://cloud.google.com/natural-language/automl/docs AutoML Natural Language], [https://cloud.google.com/translate/automl/docs AutoML Translation]&lt;br /&gt;
* структурирование данных {{---}} [https://cloud.google.com/automl-tables/docs AutoML Tables]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Модель алгоритма и её выбор]]&lt;br /&gt;
* [[Мета-обучение]]&lt;br /&gt;
* [[Настройка гиперпараметров]]&lt;br /&gt;
* [[Оценка качества в задаче кластеризации]]&lt;br /&gt;
* [[Оценка качества в задачах классификации]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [https://arxiv.org/pdf/1908.00709.pdf AutoML: A Survey of the State-of-the-Art]&lt;br /&gt;
* [https://www.ml4aad.org/wp-content/uploads/2018/07/automl_book_draft_auto-weka.pdf Auto-WEKA: Automatic model selection in WEKA]&lt;br /&gt;
* [https://towardsdatascience.com/tpot-automated-machine-learning-in-python-4c063b3e5de9 TPOT Automated Machine Learning in Python]&lt;br /&gt;
* [https://www.automl.org/wp-content/uploads/2018/12/auto-sklearn-1.pdf Auto-sklearn: Efficient and Robust Automated Machine Learning]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Автоматическое машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=75122</id>
		<title>Категория:Автоматическое машинное обучение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=75122"/>
				<updated>2020-11-08T09:19:12Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: создание категории&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8&amp;diff=75121</id>
		<title>Поиск архитектуры нейронной сети</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8&amp;diff=75121"/>
				<updated>2020-11-08T09:14:57Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: Исправлены опечатки, поправлена ссылка MAPE.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Поиск архитектуры нейронной сети''' (англ. ''Neural Architecture Search, NAS'') — это процесс автоматизации проектирования архитектуры нейронной сети. Другими словами, это процесс поиска лучшей структуры модели машинного обучения. Система NAS получает на вход набор данных и тип задачи (классификация, регрессия и т.д.), и на выходе дает архитектуру модели. Полученная архитектура будет работать лучше остальных архитектур для данного типа задачи при обучении на предоставленном наборе данных. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
NAS можно рассматривать как часть [[Автоматическое машинное обучение|автоматического машинного обучения (англ. ''AutoML'')]]. NAS существенно пересекается с [[Настройка гиперпараметров|оптимизацией гиперпараметров]]. Чтобы из всех возможных архитектур найти нужную, NAS следует стратегии поиска, которая максимизирует производительность.&lt;br /&gt;
&lt;br /&gt;
== Принцип работы ==&lt;br /&gt;
Методы для NAS классифицируются по трем категориям: пространство поиска (англ. ''Search Space''), стратегия поиска (англ. ''Search Strategy'') и стратегия оценки эффективности (англ. ''Performance Estimation Strategy''). Схематичный принцип работы NAS отображен на рисунке 1.&lt;br /&gt;
[[Файл:NAS 1 rus.png|900px|thumb|center|Рисунок 1 — Обобщающая иллюстрация методов NAS. Стратегия поиска выбирает архитектуру &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; из предопределенного пространства поиска &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Архитектура передается в стратегию оценки производительности, которая возвращает оценку эффективности &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в стратегию поиска.]]&lt;br /&gt;
&lt;br /&gt;
=== Пространство поиска (англ. ''Search Space'') ===&lt;br /&gt;
Пространство поиска определяет, какую нейронную архитектуру в принципе может обнаружить система NAS. Это может быть цепочечная архитектура (рисунок 2, слева), в которой выход уровня &amp;lt;tex&amp;gt;(n-1)&amp;lt;/tex&amp;gt; подается как вход уровня &amp;lt;tex&amp;gt;(n)&amp;lt;/tex&amp;gt;. Или это может быть сложная ветвистая архитектура с пропусками соединений&amp;lt;ref&amp;gt;англ. ''Multi-branch neural networks with branch control'', пример: [https://ieeexplore.ieee.org/document/1323611, multi-branch network]&amp;lt;/ref&amp;gt; (рисунок 2, справа).&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях используют спроектированный вручную каркас архитектуры (макроархитектуру), состоящий из повторяющихся ячеек (англ. ''motifs/blocks/cells''). В таких случаях каркас является фиксированным, а задача NAS заключается в поиске архитектуры самих ячеек. Такой тип поиска известен как микро-поиск (англ. ''cell-search'') (рисунок 3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[Файл:Chain_like_NAS_rus.png|thumb|400px| Рисунок 2 — цепочечная архитектура (слева) и ветвистая архитектура (справа). Различные типы слоев визуализируются разными цветами. Ребро от слоя &amp;lt;tex&amp;gt;C_i&amp;lt;/tex&amp;gt; до слоя &amp;lt;tex&amp;gt;C_j&amp;lt;/tex&amp;gt; означает, что &amp;lt;tex&amp;gt;C_j&amp;lt;/tex&amp;gt; в качестве входных данных получает выходные данные &amp;lt;tex&amp;gt;C_i&amp;lt;/tex&amp;gt;.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[Файл:Cell_like_NAS_rus.png|thumb|450px| Рисунок 3 — Слева: архитектуры ячеек. Например, обычная (англ. ''normal cell'') вверху и редуцированная (англ. ''reduction cell'') внизу. Cправа: каркас архитектуры состоит из 3 ячеек, конкретные архитектуры ячеек помещены в каркас.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предварительные знания о типичных свойствах архитектур могут уменьшить размер пространства поиска и упростить поиск. Тем не менее, они также могут помешать человеку найти новые архитектурные ячейки, которые выходят за рамки современных человеческих знаний.&lt;br /&gt;
&lt;br /&gt;
Наиболее часто используемые типы архитектур для NAS&amp;lt;ref&amp;gt;Источник: [https://arxiv.org/pdf/1908.00709.pdf, &amp;quot;AutoML: A Survey of the State-of-the-Art&amp;quot;, стр.2]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
* полные архитектуры (англ.''entire structures'') &lt;br /&gt;
* прогрессивные архитектуры (англ. ''progressive structures'')&lt;br /&gt;
* архитектуры, основанные на ячейках (англ. ''cell-based structures'')&lt;br /&gt;
* архитектуры, основанные на [https://ru.wiktionary.org/wiki/%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC морфизме] (англ. ''morphism-based structures'')&lt;br /&gt;
&lt;br /&gt;
=== Стратегия поиска (англ. ''Search Strategy'')===&lt;br /&gt;
Стратегия поиска подробно описывает, как исследовать пространство поиска, которое часто экспоненциально велико или даже неограниченно. Она включает в себя классический компромисс между разведкой и эксплуатацией, поскольку, с одной стороны, желательно найти быстро работающие архитектуры, с другой стороны, следует избегать преждевременного схождения.&lt;br /&gt;
&lt;br /&gt;
Для изучения пространства нейронных архитектур можно использовать множество различных стратегий поиска, включая случайный поиск, байесовскую оптимизацию, эволюционные методы, [[обучение с подкреплением]] и методы на основе градиента. &lt;br /&gt;
&lt;br /&gt;
==== Сравнение методов стратегий поиска ====&lt;br /&gt;
Лучшие результаты на сегодняшний день показывает NAS с использованием стратегии байесовской оптимизации&amp;lt;ref&amp;gt;[https://arxiv.org/pdf/1910.11858.pdf, Cоответствующее исследование.]&amp;lt;/ref&amp;gt; (рисунок 4).&lt;br /&gt;
[[Файл:NAS-method-comparison_rus.png|700px|thumb|center| Рисунок 4 — Слева: результат экспериментов, минимизирующих функцию потерь и количества параметров модели. Cправа: сравнение основных используемых в NAS алгоритмов. [https://arxiv.org/pdf/1910.11858.pdf, Источник, стр. 8] ]]&lt;br /&gt;
&lt;br /&gt;
Байесовская оптимизация (англ. ''Bayes Optimization, BO'') использует алгоритм для построения вероятностной модели целевой функции, а затем использует эту модель, чтобы выбрать наиболее перспективные гиперпараметры и оценивает выбранные гиперпараметры на истинной целевой функции. Таким образом, байесовская оптимизация может итеративно обновлять вероятностную модель, ведя учет оценок прошлых результатов.&lt;br /&gt;
&lt;br /&gt;
==== BANANAS (англ. ''Bayesian optimization with neural architectures for NAS'') ====&lt;br /&gt;
[[Файл:BANANAS alg_rus.png|400px|thumb|right| Рисунок 5 — Иллюстрация мета-нейронной сети в алгоритме BANANAS. [https://arxiv.org/pdf/1910.11858.pdf, Источник, стр. 2] ]]&lt;br /&gt;
Сложностью применения байесовской оптимизации в NAS является обязательное наличие функции расстояния между различными архитектурами нейросети. Чтобы обойти этот момент, был разработан [https://github.com/naszilla/bananas BANANAS] — алгоритм, использующий специальную кодировку (англ. ''path encoding'') для кодирования входных архитектур и получающий на выходе вероятностные распределения (рисунок 5). &lt;br /&gt;
&lt;br /&gt;
Алгоритм BANANAS:&lt;br /&gt;
#Выбираются &amp;lt;tex&amp;gt;t_0&amp;lt;/tex&amp;gt; случайных архитектур из пространства поиска.&lt;br /&gt;
#Итерационно проводится обучение ансамбля мета-нейронных сетей на выбранных архитектурах. Каждая сеть ансамбля является сетью прямой связи с полностью связанными слоями, каждому слою дается случайная инициализация весов и случайный порядок обучающего набора. Используемая функция ошибки {{---}} вариация [[%D0%9E%D1%86%D0%B5%D0%BD%D0%BA%D0%B0_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B2_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8_%D0%B8_%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D0%B8#.D0.A1.D1.80.D0.B5.D0.B4.D0.BD.D1.8F.D1.8F_.D0.B0.D0.B1.D1.81.D0.BE.D0.BB.D1.8E.D1.82.D0.BD.D0.B0.D1.8F_.D0.BF.D1.80.D0.BE.D1.86.D0.B5.D0.BD.D1.82.D0.BD.D0.B0.D1.8F_.D0.BE.D1.88.D0.B8.D0.B1.D0.BA.D0.B0_.28.D0.B0.D0.BD.D0.B3.D0.BB._Mean_Absolute_Percentage_Error.2C_MAPE.29 | MAPE (англ. ''Mean Absolute Percentage Error'')]].&lt;br /&gt;
##Далее формируется набор архитектур-кандидатов посредством случайных изменений лучших архитектур после обучения.&lt;br /&gt;
##Для каждой архитектуры-кандидата определяется значение переданной на вход функции сбора [https://en.wikipedia.org/wiki/Thompson_sampling независимой выборки Томпсона] (англ. ''ITS acquisition function'').&lt;br /&gt;
##Для архитектуры-кандидата с минимальным значением функции сбора определяется значение целевой вероятностной функции.&lt;br /&gt;
&lt;br /&gt;
===Стратегия оценки эффективности (англ. ''Performance Estimation Strategy'')===&lt;br /&gt;
Целью NAS обычно является поиск архитектуры, обеспечивающей высокую точность прогнозов. Определением этой точности занимается процесс оценки эффективности. Самый простой вариант — выполнить стандартное обучение и проверку архитектуры данных, но это, к сожалению, вычислительно дорого и ограничивает количество архитектур, которые можно изучить. Поэтому многие недавние исследования направлены на разработку методов, способных снизить стоимость оценки эффективности и увеличить скорость. Уже разработанные методы:&lt;br /&gt;
*Сокращение качества оценки — более высокая скорость достигается сокращением набора данных.&lt;br /&gt;
*Экстраполяция прямой обучения — функция оценки может быть экстраполирована после всего нескольких обучающих итераций.&lt;br /&gt;
*Наследование / Сетевые морфизмы — параметры модели не ищутся каждый раз, они наследуются по каким-либо правилам.&lt;br /&gt;
*Модели ''One-Shot'' / Распределение веса — обучается только одна модель, далее ее веса/параметры используются остальными моделями.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Настройка гиперпараметров]]&lt;br /&gt;
* [[Обучение с подкреплением]]&lt;br /&gt;
* [[Модель алгоритма и её выбор]]&lt;br /&gt;
* [[Эволюционные алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [https://arxiv.org/pdf/1908.00709.pdf AutoML: A Survey of the State-of-the-Art Xin He, Kaiyong Zhao, Xiaowen Chu] &lt;br /&gt;
* [https://arxiv.org/pdf/1910.11858.pdf  Bayesian Optimization with Neural Architectures for Neural Architecture Search, Colin White, Willie Neiswanger, Yash Savani]&lt;br /&gt;
* [https://towardsdatascience.com/neural-architecture-search-nas-the-future-of-deep-learning-c99356351136 Medium Towards Data Science - Neural Architecture Search (NAS) - The Future Of Deep Learning]&lt;br /&gt;
*[https://arxiv.org/pdf/1808.05377.pdf Neural Architecture Search: A Survey]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Автоматическое машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8&amp;diff=75074</id>
		<title>Поиск архитектуры нейронной сети</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8&amp;diff=75074"/>
				<updated>2020-10-02T20:56:43Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: Исправлены рисунок 4 и рисунок 5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Поиск архитектуры нейронной сети''' (англ. ''Neural Architecture Search, NAS'') — это процесс автоматизации проектирования архитектуры нейронной сети. Другими словами, это процесс поиска лучшей структуры модели машинного обучения. Система NAS получает на вход набор данных и тип задачи (классификация, регрессия и т.д.), и на выходе дает архитектуру модели. Полученная архитектура будет работать лучше остальных архитектур для данного типа задачи при обучении на предоставленном наборе данных. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
NAS можно рассматривать как часть [[Автоматическое машинное обучение|автоматического машинного обучения (англ. ''AutoML'')]]. NAS существенно пересекается с [[Настройка гиперпараметров|оптимизацией гиперпараметров]]. Чтобы из всех возможных архитектур найти нужную, NAS следует стратегии поиска, которая максимизирует производительность.&lt;br /&gt;
&lt;br /&gt;
== Принцип работы ==&lt;br /&gt;
Методы для NAS классифицируются по трем категориям: пространство поиска (англ. ''Search Space''), стратегия поиска (англ. ''Search Strategy'') и стратегия оценки эффективности (англ. ''Performance Estimation Strategy''). Схематичный принцип работы NAS отображен на рисунке 1.&lt;br /&gt;
[[Файл:NAS 1 rus.png|900px|thumb|center|Рисунок 1 — Обобщающая иллюстрация методов NAS. Стратегия поиска выбирает архитектуру &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; из предопределенного пространства поиска &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Архитектура передается в стратегию оценки производительности, которая возвращает оценку эффективности &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в стратегию поиска.]]&lt;br /&gt;
&lt;br /&gt;
=== Пространство поиска (англ. ''Search Space'') ===&lt;br /&gt;
Пространство поиска определяет, какую нейронную архитектуру в принципе может обнаружить система NAS. Это может быть цепочечная архитектура (рисунок 2, слева), в которой выход уровня &amp;lt;tex&amp;gt;(n-1)&amp;lt;/tex&amp;gt; подается как вход уровня &amp;lt;tex&amp;gt;(n)&amp;lt;/tex&amp;gt;. Или это может быть сложная ветвистая архитектура с пропусками соединений&amp;lt;ref&amp;gt;англ. ''Multi-branch neural networks with branch control'', пример: [https://ieeexplore.ieee.org/document/1323611, multi-branch network]&amp;lt;/ref&amp;gt; (рисунок 2, справа).&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях используют спроектированный вручную каркас архитектуры (макроархитектуру), состоящий из повторяющихся ячеек (англ. ''motifs/blocks/cells''). В таких случаях каркас является фиксированным, а задача NAS заключается в поиске архитектуры самих ячеек. Такой тип поиска известен как микро-поиск (англ. ''cell-search'') (рисунок 3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[Файл:Chain_like_NAS_rus.png|thumb|400px| Рисунок 2 — цепочечная архитектура (слева) и ветвистая архитектура (справа). Различные типы слоев визуализируются разными цветами. Ребро от слоя &amp;lt;tex&amp;gt;C_i&amp;lt;/tex&amp;gt; до слоя &amp;lt;tex&amp;gt;C_j&amp;lt;/tex&amp;gt; означает, что &amp;lt;tex&amp;gt;C_j&amp;lt;/tex&amp;gt; в качестве входных данных получает выходные данные &amp;lt;tex&amp;gt;C_i&amp;lt;/tex&amp;gt;.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[Файл:Cell_like_NAS_rus.png|thumb|450px| Рисунок 3 — Слева: архитектуры ячеек. Например, обычная (англ. ''normal cell'') вверху и редуцированная (англ. ''reduction cell'') внизу. Cправа: каркас архитектуры состоит из 3 ячеек, конкретные архитектуры ячеек помещены в каркас.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предварительные знания о типичных свойствах архитектур могут уменьшить размер пространства поиска и упростить поиск. Тем не менее, они также могут помешать человеку найти новые архитектурные ячейки, которые выходят за рамки современных человеческих знаний.&lt;br /&gt;
&lt;br /&gt;
Наиболее часто используемые типы архитектур для NAS&amp;lt;ref&amp;gt;Источник: [https://arxiv.org/pdf/1908.00709.pdf, &amp;quot;AutoML: A Survey of the State-of-the-Art&amp;quot;, стр.2]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
* полные архитектуры (англ.''entire structures'') &lt;br /&gt;
* прогрессивные архитектуры (англ. ''progressive structures'')&lt;br /&gt;
* архитектуры, основанные на ячейках (англ. ''cell-based structures'')&lt;br /&gt;
* архитектуры, основанные на [https://ru.wiktionary.org/wiki/%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC, морфизме] (англ. ''morphism-based structures'')&lt;br /&gt;
&lt;br /&gt;
=== Стратегия поиска (англ. ''Search Strategy'')===&lt;br /&gt;
Стратегия поиска подробно описывает, как исследовать пространство поиска, которое часто экспоненциально велико или даже неограниченно. Она включает в себя классический компромисс между разведкой и эксплуатацией, поскольку, с одной стороны, желательно найти быстро работающие архитектуры, с другой стороны, следует избегать преждевременного схождения.&lt;br /&gt;
&lt;br /&gt;
Для изучения пространства нейронных архитектур можно использовать множество различных стратегий поиска, включая случайный поиск, байесовскую оптимизацию, эволюционные методы, [[обучение с подкреплением]] и методы на основе градиента. &lt;br /&gt;
&lt;br /&gt;
==== Сравнение методов стратегий поиска ====&lt;br /&gt;
Лучшие результаты на сегодняшний день показывает NAS с использованием стратегии байесовской оптимизации&amp;lt;ref&amp;gt;[https://arxiv.org/pdf/1910.11858.pdf, Cоответствующее исследование.]&amp;lt;/ref&amp;gt; (рисунок 4).&lt;br /&gt;
[[Файл:NAS-method-comparison_rus.png|700px|thumb|center| Рисунок 4 — Слева: результат экспериментов, минимизирующих функцию потерь и количества параметров модели. Cправа: сравнение основных используемых в NAS алгоритмов. [https://arxiv.org/pdf/1910.11858.pdf, Источник, стр. 8] ]]&lt;br /&gt;
&lt;br /&gt;
Байесовская оптимизация (англ. ''Bayes Optimization, BO'') использует алгоритм для построения вероятностной модели целевой функции, а затем использует эту модель, чтобы выбрать наиболее перспективные гиперпараметры и оценивает выбранные гиперпараметры на истинной целевой функции. Таким образом, байесовская оптимизация может итеративно обновлять вероятностную модель, ведя учет оценок прошлых результатов.&lt;br /&gt;
&lt;br /&gt;
==== BANANAS (англ. ''Bayesian optimization with neural architectures for NAS'') ====&lt;br /&gt;
[[Файл:BANANAS alg_rus.png|400px|thumb|right| Рисунок 5 — Иллюстрация мета-нейронной сети в алгоритме BANANAS. [https://arxiv.org/pdf/1910.11858.pdf, Источник, стр. 2] ]]&lt;br /&gt;
Сложностью применения байесовской оптимизации в NAS является обязательное наличие функции расстояния между слоями нейросети. Чтобы обойти этот момент, был разработан [https://github.com/naszilla/bananas BANANAS] — алгоритм, использующий специальную кодировку (англ. ''path encoding'') для кодирования входных архитектур и получающий на выходе вероятностные распределения (рисунок 5). &lt;br /&gt;
&lt;br /&gt;
Алгоритм BANANAS:&lt;br /&gt;
#Выбираются &amp;lt;tex&amp;gt;t_0&amp;lt;/tex&amp;gt; случайных архитектур из пространства поиска.&lt;br /&gt;
#Итерационно проводится обучение ансамбля мета-нейронных сетей на выбранных архитектурах. Каждая сеть ансамбля является сетью прямой связи с полностью связанными слоями, каждому слою дается случайная инициализация весов и случайный порядок обучающего набора. Используемая функция ошибки - вариация [https://en.wikipedia.org/wiki/Mean_absolute_percentage_error, MAPE] (англ. ''Mean Absolute Percentage Error'').&lt;br /&gt;
##Далее формируется набор архитектур-кандидатов посредством случайных изменений лучших архитектур после обучения.&lt;br /&gt;
##Для каждой архитектуры-кандидата определяется значение переданной на вход функции сбора [https://en.wikipedia.org/wiki/Thompson_sampling, независимой выборки Томпсона] (англ. ''ITS acquisition function'').&lt;br /&gt;
##Для архитектуры-кандидата с минимальным значением функции сбора определяется значение целевой вероятностной функции.&lt;br /&gt;
&lt;br /&gt;
===Стратегия оценки эффективности (англ. ''Performance Estimation Strategy'')===&lt;br /&gt;
Целью NAS обычно является поиск архитектуры, обеспечивающей высокую точность прогнозов. Определением этой точности занимается процесс оценки эффективности. Самый простой вариант — выполнить стандартное обучение и проверку архитектуры данных, но это, к сожалению, вычислительно дорого и ограничивает количество архитектур, которые можно изучить. Поэтому многие недавние исследования направлены на разработку методов, способных снизить стоимость оценок эффективности.&lt;br /&gt;
&lt;br /&gt;
Способы снижения стоимости процесса оценки эффективности и увеличения скорости:&lt;br /&gt;
*Сокращение качества оценки — более высокая скорость достигается сокращением датасета&lt;br /&gt;
*Экстраполяция прямой обучения — функция оценки может быть экстраполирована после всего нескольких обучающих итераций&lt;br /&gt;
*Наследование / Сетевые морфизмы — параметры модели не ищутся каждый раз, они наследуются по каким-либо правилам&lt;br /&gt;
*Модели ''One-Shot'' / Распределение веса — обучается только одна модель, далее ее веса/параметры используются остальными моделями&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Настройка гиперпараметров]]&lt;br /&gt;
* [[Обучение с подкреплением]]&lt;br /&gt;
* [[Модель алгоритма и её выбор]]&lt;br /&gt;
* [[Эволюционные алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [https://arxiv.org/pdf/1908.00709.pdf AutoML: A Survey of the State-of-the-Art Xin He, Kaiyong Zhao, Xiaowen Chu] &lt;br /&gt;
* [https://arxiv.org/pdf/1910.11858.pdf  Bayesian Optimization with Neural Architectures for Neural Architecture Search, Colin White, Willie Neiswanger, Yash Savani]&lt;br /&gt;
* [https://towardsdatascience.com/neural-architecture-search-nas-the-future-of-deep-learning-c99356351136 Medium Towards Data Science - Neural Architecture Search (NAS) - The Future Of Deep Learning]&lt;br /&gt;
*[https://arxiv.org/pdf/1808.05377.pdf Neural Architecture Search: A Survey]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Автоматическое машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:BANANAS_alg_rus.png&amp;diff=75073</id>
		<title>Файл:BANANAS alg rus.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:BANANAS_alg_rus.png&amp;diff=75073"/>
				<updated>2020-10-02T20:55:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NAS-method-comparison_rus.png&amp;diff=75072</id>
		<title>Файл:NAS-method-comparison rus.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NAS-method-comparison_rus.png&amp;diff=75072"/>
				<updated>2020-10-02T20:54:39Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8&amp;diff=75071</id>
		<title>Поиск архитектуры нейронной сети</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B5%D1%82%D0%B8&amp;diff=75071"/>
				<updated>2020-10-02T19:10:52Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: Исправлены картинки. Добавлены разделы. Переписаны корявые предложения.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Поиск архитектуры нейронной сети''' (англ. ''Neural Architecture Search, NAS'') — это процесс автоматизации проектирования архитектуры нейронной сети. Другими словами, это процесс поиска лучшей структуры модели машинного обучения. Система NAS получает на вход набор данных и тип задачи (классификация, регрессия и т.д.), и на выходе дает архитектуру модели. Полученная архитектура будет работать лучше остальных архитектур для данного типа задачи при обучении на предоставленном наборе данных. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
NAS можно рассматривать как часть [[Автоматическое машинное обучение|автоматического машинного обучения (англ. ''AutoML'')]]. NAS существенно пересекается с [[Настройка гиперпараметров|оптимизацией гиперпараметров]]. Чтобы из всех возможных архитектур найти нужную, NAS следует стратегии поиска, которая максимизирует производительность.&lt;br /&gt;
&lt;br /&gt;
== Принцип работы ==&lt;br /&gt;
Методы для NAS классифицируются по трем категориям: пространство поиска (англ. ''Search Space''), стратегия поиска (англ. ''Search Strategy'') и стратегия оценки эффективности (англ. ''Performance Estimation Strategy''). Схематичный принцип работы NAS отображен на рисунке 1.&lt;br /&gt;
[[Файл:NAS 1 rus.png|900px|thumb|center|Рисунок 1 — Обобщающая иллюстрация методов NAS. Стратегия поиска выбирает архитектуру &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; из предопределенного пространства поиска &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Архитектура передается в стратегию оценки производительности, которая возвращает оценку эффективности &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; в стратегию поиска.]]&lt;br /&gt;
&lt;br /&gt;
=== Пространство поиска (англ. ''Search Space'') ===&lt;br /&gt;
Пространство поиска определяет, какую нейронную архитектуру в принципе может обнаружить система NAS. Это может быть цепочечная архитектура (рисунок 2, слева), в которой выход уровня &amp;lt;tex&amp;gt;(n-1)&amp;lt;/tex&amp;gt; подается как вход уровня &amp;lt;tex&amp;gt;(n)&amp;lt;/tex&amp;gt;. Или это может быть сложная ветвистая архитектура с пропусками соединений&amp;lt;ref&amp;gt;англ. ''Multi-branch neural networks with branch control'', пример: [https://ieeexplore.ieee.org/document/1323611, multi-branch network]&amp;lt;/ref&amp;gt; (рисунок 2, справа).&lt;br /&gt;
&lt;br /&gt;
В некоторых случаях используют спроектированный вручную каркас архитектуры (макроархитектуру), состоящий из повторяющихся ячеек (англ. ''motifs/blocks/cells''). В таких случаях каркас является фиксированным, а задача NAS заключается в поиске архитектуры самих ячеек. Такой тип поиска известен как микро-поиск (англ. ''cell-search'') (рисунок 3).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center&amp;quot;&amp;gt;&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[Файл:Chain_like_NAS_rus.png|thumb|400px| Рисунок 2 — цепочечная архитектура (слева) и ветвистая архитектура (справа). Различные типы слоев визуализируются разными цветами. Ребро от слоя &amp;lt;tex&amp;gt;C_i&amp;lt;/tex&amp;gt; до слоя &amp;lt;tex&amp;gt;C_j&amp;lt;/tex&amp;gt; означает, что &amp;lt;tex&amp;gt;C_j&amp;lt;/tex&amp;gt; в качестве входных данных получает выходные данные &amp;lt;tex&amp;gt;C_i&amp;lt;/tex&amp;gt;.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-block;&amp;quot;&amp;gt; [[Файл:Cell_like_NAS_rus.png|thumb|450px| Рисунок 3 — Слева: архитектуры ячеек. Например, обычная (англ. ''normal cell'') вверху и редуцированная (англ. ''reduction cell'') внизу. Cправа: каркас архитектуры состоит из 3 ячеек, конкретные архитектуры ячеек помещены в каркас.]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предварительные знания о типичных свойствах архитектур могут уменьшить размер пространства поиска и упростить поиск. Тем не менее, они также могут помешать человеку найти новые архитектурные ячейки, которые выходят за рамки современных человеческих знаний.&lt;br /&gt;
&lt;br /&gt;
Наиболее часто используемые типы архитектур для NAS&amp;lt;ref&amp;gt;Источник: [https://arxiv.org/pdf/1908.00709.pdf, &amp;quot;AutoML: A Survey of the State-of-the-Art&amp;quot;, стр.2]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
* полные архитектуры (англ.''entire structures'') &lt;br /&gt;
* прогрессивные архитектуры (англ. ''progressive structures'')&lt;br /&gt;
* архитектуры, основанные на ячейках (англ. ''cell-based structures'')&lt;br /&gt;
* архитектуры, основанные на [https://ru.wiktionary.org/wiki/%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC, морфизме] (англ. ''morphism-based structures'')&lt;br /&gt;
&lt;br /&gt;
=== Стратегия поиска (англ. ''Search Strategy'')===&lt;br /&gt;
Стратегия поиска подробно описывает, как исследовать пространство поиска, которое часто экспоненциально велико или даже неограниченно. Она включает в себя классический компромисс между разведкой и эксплуатацией, поскольку, с одной стороны, желательно найти быстро работающие архитектуры, с другой стороны, следует избегать преждевременного схождения.&lt;br /&gt;
&lt;br /&gt;
Для изучения пространства нейронных архитектур можно использовать множество различных стратегий поиска, включая случайный поиск, байесовскую оптимизацию, эволюционные методы, [[обучение с подкреплением]] и методы на основе градиента. &lt;br /&gt;
&lt;br /&gt;
==== Сравнение методов стратегий поиска ====&lt;br /&gt;
Лучшие результаты на сегодняшний день показывает NAS с использованием стратегии байесовской оптимизации&amp;lt;ref&amp;gt;[https://arxiv.org/pdf/1910.11858.pdf, Cоответствующее исследование.]&amp;lt;/ref&amp;gt; (рисунок 4).&lt;br /&gt;
[[Файл:NAS-method-comparison.PNG|700px|thumb|center| Рисунок 4 — Слева: результат экспериментов, минимизирующих функцию потерь и количества параметров модели. Cправа: сравнение основных используемых в NAS алгоритмов. [https://arxiv.org/pdf/1910.11858.pdf, Источник, стр. 8] ]]&lt;br /&gt;
&lt;br /&gt;
Байесовская оптимизация (англ. ''Bayes Optimization, BO'') использует алгоритм для построения вероятностной модели целевой функции, а затем использует эту модель, чтобы выбрать наиболее перспективные гиперпараметры и оценивает выбранные гиперпараметры на истинной целевой функции. Таким образом, байесовская оптимизация может итеративно обновлять вероятностную модель, ведя учет оценок прошлых результатов.&lt;br /&gt;
&lt;br /&gt;
==== BANANAS (англ. ''Bayesian optimization with neural architectures for NAS'') ====&lt;br /&gt;
[[Файл:BANANAS alg.PNG|400px|thumb|right| Рисунок 5 — Иллюстрация мета-нейронной сети в алгоритме BANANAS. [https://arxiv.org/pdf/1910.11858.pdf, Источник, стр. 2] ]]&lt;br /&gt;
Сложностью применения байесовской оптимизации в NAS является обязательное наличие функции расстояния между слоями нейросети. Чтобы обойти этот момент, был разработан [https://github.com/naszilla/bananas BANANAS] — алгоритм, использующий специальную кодировку (англ. ''path encoding'') для кодирования входных архитектур и получающий на выходе вероятностные распределения (рисунок 5). &lt;br /&gt;
&lt;br /&gt;
Алгоритм BANANAS:&lt;br /&gt;
#Выбираются &amp;lt;tex&amp;gt;t_0&amp;lt;/tex&amp;gt; случайных архитектур из пространства поиска.&lt;br /&gt;
#Итерационно проводится обучение ансамбля мета-нейронных сетей на выбранных архитектурах. Каждая сеть ансамбля является сетью прямой связи с полностью связанными слоями, каждому слою дается случайная инициализация весов и случайный порядок обучающего набора. Используемая функция ошибки - вариация [https://en.wikipedia.org/wiki/Mean_absolute_percentage_error, MAPE] (англ. ''Mean Absolute Percentage Error'').&lt;br /&gt;
##Далее формируется набор архитектур-кандидатов посредством случайных изменений лучших архитектур после обучения.&lt;br /&gt;
##Для каждой архитектуры-кандидата определяется значение переданной на вход функции сбора [https://en.wikipedia.org/wiki/Thompson_sampling, независимой выборки Томпсона] (англ. ''ITS acquisition function'').&lt;br /&gt;
##Для архитектуры-кандидата с минимальным значением функции сбора определяется значение целевой вероятностной функции.&lt;br /&gt;
&lt;br /&gt;
===Стратегия оценки эффективности (англ. ''Performance Estimation Strategy'')===&lt;br /&gt;
Целью NAS обычно является поиск архитектуры, обеспечивающей высокую точность прогнозов. Определением этой точности занимается процесс оценки эффективности. Самый простой вариант — выполнить стандартное обучение и проверку архитектуры данных, но это, к сожалению, вычислительно дорого и ограничивает количество архитектур, которые можно изучить. Поэтому многие недавние исследования направлены на разработку методов, способных снизить стоимость оценок эффективности.&lt;br /&gt;
&lt;br /&gt;
Способы снижения стоимости процесса оценки эффективности и увеличения скорости:&lt;br /&gt;
*Сокращение качества оценки — более высокая скорость достигается сокращением датасета&lt;br /&gt;
*Экстраполяция прямой обучения — функция оценки может быть экстраполирована после всего нескольких обучающих итераций&lt;br /&gt;
*Наследование / Сетевые морфизмы — параметры модели не ищутся каждый раз, они наследуются по каким-либо правилам&lt;br /&gt;
*Модели ''One-Shot'' / Распределение веса — обучается только одна модель, далее ее веса/параметры используются остальными моделями&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Настройка гиперпараметров]]&lt;br /&gt;
* [[Обучение с подкреплением]]&lt;br /&gt;
* [[Модель алгоритма и её выбор]]&lt;br /&gt;
* [[Эволюционные алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [https://arxiv.org/pdf/1908.00709.pdf AutoML: A Survey of the State-of-the-Art Xin He, Kaiyong Zhao, Xiaowen Chu] &lt;br /&gt;
* [https://arxiv.org/pdf/1910.11858.pdf  Bayesian Optimization with Neural Architectures for Neural Architecture Search, Colin White, Willie Neiswanger, Yash Savani]&lt;br /&gt;
* [https://towardsdatascience.com/neural-architecture-search-nas-the-future-of-deep-learning-c99356351136 Medium Towards Data Science - Neural Architecture Search (NAS) - The Future Of Deep Learning]&lt;br /&gt;
*[https://arxiv.org/pdf/1808.05377.pdf Neural Architecture Search: A Survey]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Автоматическое машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Cell_like_NAS_rus.png&amp;diff=75070</id>
		<title>Файл:Cell like NAS rus.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Cell_like_NAS_rus.png&amp;diff=75070"/>
				<updated>2020-10-02T18:21:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Chain_like_NAS_rus.png&amp;diff=75069</id>
		<title>Файл:Chain like NAS rus.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Chain_like_NAS_rus.png&amp;diff=75069"/>
				<updated>2020-10-02T18:21:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NAS_1_rus.png&amp;diff=75068</id>
		<title>Файл:NAS 1 rus.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NAS_1_rus.png&amp;diff=75068"/>
				<updated>2020-10-02T18:20:45Z</updated>
		
		<summary type="html">&lt;p&gt;Lindvv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lindvv</name></author>	</entry>

	</feed>