<?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=SuperStrongDinosaur</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=SuperStrongDinosaur"/>
		<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/SuperStrongDinosaur"/>
		<updated>2026-08-03T23:04:28Z</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%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70749</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%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70749"/>
				<updated>2019-04-04T21:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Autoencoder1RUS1998ALEX.png|300px|thumb|Автокодировщик]]&lt;br /&gt;
Автокодировщик (англ. autoencoder) — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя при использовании метода [[ Обратное распространение ошибки | с обратного распространения ошибки]]. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от [[ Нейронные сети, перцептрон | перцептрона ]], выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик состоит из двух частей: энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. Энкодер переводит входной сигнал в его представление (код): &amp;lt;tex&amp;gt;h = g(x)&amp;lt;/tex&amp;gt;, а декодер восстанавливает сигнал по его коду: &amp;lt;tex&amp;gt;x = f(h)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик, изменяя &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;, стремится выучить тождественную функцию &amp;lt;tex&amp;gt;x = f(g(x))&amp;lt;/tex&amp;gt;, минимизируя какой-то функционал ошибки. &amp;lt;tex&amp;gt;L(x, f(g(x)))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом семейства функций энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; как-то ограничены, чтобы автоэнкодер был вынужден отбирать наиболее важные свойства сигнала.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик можно использовать для предобучения, например, когда стоит задача классификации, а размеченных пар слишком мало. Или для понижения размерности в данных для последующей визуализации. Либо когда просто надо научиться различать полезные свойства входного сигнала.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
[[File:AutoencoderExampel.png|700px|thumb|]]&lt;br /&gt;
Для примера возьмем набор данных для продуктов, купленных клиентами&lt;br /&gt;
&lt;br /&gt;
*Шаг 1: Возьмем первую строку из данных по клиенту для всех продуктов в качестве входа. &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; означает, что клиент купил продукт. &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; означает, что клиент не купил.&lt;br /&gt;
*Шаг 2: Закодируем ввод в другой вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; меньшего размера, чем входной. Можно использовать функцию активации сигмоида для &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, так как она ее область значения от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; - вес, примененный к входу,  &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; {{---}} член смещения.&lt;br /&gt;
&amp;lt;tex&amp;gt;h = f(Wx+b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Шаг 3: Декодируем вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, чтобы воссоздать ввод. Выход будет того же размера, что и вход&lt;br /&gt;
*Шаг 4: Рассчитать ошибку &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Ошибка {{---}} это разница между входным и выходным вектором. Наша цель {{---}} минимизировать ошибку, чтобы выходной вектор был похож на входной вектор. &lt;br /&gt;
*Шаг 5: С помощью алгоритма обратного распространения ошибки нужно обновить веса. Скорость обучения определяется тем, насколько обновляются веса. &lt;br /&gt;
*Шаг 6: Повторите шаги с &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; для каждого клиента в наборе данных. Веса обновляются каждый раз (стохастический градиентный спуск)&lt;br /&gt;
*Шаг 7: Повторите для большего количества эпох. Эпоха - это когда все строки в наборе данных прошли через нейронную сеть.&lt;br /&gt;
&lt;br /&gt;
==Использование==&lt;br /&gt;
&lt;br /&gt;
*Нелинейное уменьшения размерности. Кодирует ввод в скрытом слое с меньшей размерностью по сравнению с входным измерением. Скрытый слой позже декодируется как выходной. Автоэнкодер уменьшает размерность линейных и нелинейных данных, следовательно, он более мощный, чем [[метод главных компонент]]&amp;lt;sup&amp;gt;[на 3.04.19 не создан]&amp;lt;/sup&amp;gt;. &lt;br /&gt;
*Рекомендации пользователям. При этом используются глубокие кодеры, чтобы понять пользовательские предпочтения, порекомендовать фильмы, книги или предметы &lt;br /&gt;
*Извлечения зависимостей в данных: автоэнкодеры пытаются минимизировать ошибку восстановления. В процессе уменьшения ошибки он изучает некоторые важные зависимости, присутствующие во входных данных. Он восстанавливает входные данные из кодированного состояния. Кодирование генерирует новый набор функций, который представляет собой комбинацию оригинальных зависимостей. Кодирование в автоэнкодерах помогает идентифицировать скрытые зависимости, присутствующие во входных данных. &lt;br /&gt;
*Распознавание изображений: для распознавания изображений используется сложный автоэнкодер. Можно использовать несколько совмещенных кодировщиков, что помогает изучить различные функции изображения.&lt;br /&gt;
&lt;br /&gt;
==Виды автокодировщиков==&lt;br /&gt;
&lt;br /&gt;
===Undercomplete Autoencoders===&lt;br /&gt;
Имеют меньший размер скрытого слоя по сравнению с входным слоем. Это помогает выделить зависимости из данных. Undercomplete Autoencoders минимизируют функцию потерь, штрафуя &amp;lt;tex&amp;gt;g(f(x))&amp;lt;/tex&amp;gt; за отличия от входных данных x. Так же не нуждаются в регуляризации, поскольку максимизируют вероятность данных, а не копируют входные данные в выходные. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x - f(g(x))|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sparse Autoencoders&amp;lt;ref&amp;gt;[https://web.stanford.edu/class/cs294a/sparseAutoencoder.pdf Sparse Autoencoders]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Размерность скрытого слоя больше, чем входного. Они все еще могут обнаружить важные особенности из данных. На скрытый слой накладывается штраф за разреженность, &amp;lt;tex&amp;gt;Ω(h)&amp;lt;/tex&amp;gt;, значение, близкое к нулю, в дополнение к ошибке восстановления. Это предотвращает переобучение.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x - f(g(x))| + Ω(h)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Denoising Autoencoders(DAE)&amp;lt;ref&amp;gt;[https://towardsdatascience.com/denoising-autoencoders-explained-dbb82467fc2 Denoising Autoencoders]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Создаем поврежденную копию ввода, внося некоторый шум. Это помогает обучить убирать шум из данных. DAE минимизирует функцию потерь между выходным узлом и поврежденным вводом.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x' - f(g(x))|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Contractive Autoencoders(CAE)&amp;lt;ref&amp;gt;[http://www.icml-2011.org/papers/455_icmlpaper.pdf Contractive Autoencoders]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Целью CAE является получение надежного представления данных, которое менее чувствительно к небольшим изменениям. Надежность представления данных достигается путем регуляризации. Наказание в CAE это норма Фробениуса матрицы Якоби, которая вычисляется  для скрытого слоя относительно входных данных. Фробениусовой нормой матрицы Якоби является сумма квадратов всех элементов. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x - f(g(x))| + \lambda*||J_f(x)||_F^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;||J_f(x)||_F^2 = sum_{i, j}(\partial h_j(x) / \partial x_i)^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stacked Denoising Autoencoders&amp;lt;ref&amp;gt;[http://www.jmlr.org/papers/volume11/vincent10a/vincent10a.pdf Stacked Denoising Autoencoders]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Stacked Autoencoders {{---}} это нейронная сеть с несколькими слоями Sparse Autoencoders. Когда мы добавляем в автоэнкодер больше скрытых слоев, это помогает уменьшить объемные код, получаемый кодировщиком. Restricted Boltzmann Machine (RBM) является основной частью сети глубокого убеждения.&lt;br /&gt;
&lt;br /&gt;
===Deep Autoencoders&amp;lt;ref&amp;gt;https://skymind.ai/wiki/deep-autoencoder Deep Autoencoders]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Состоит из двух идентичных глубоких сетей. Одна сеть для кодирования и другая для декодирования. Обычно имеют от 4 до 5 уровней для кодирования и следующие от 4 до 5 уровней для декодирования.&lt;br /&gt;
&lt;br /&gt;
===[[Вариационный автокодировщик | Вариационный автокодировщик]]===&lt;br /&gt;
Автокодировщик, основанный на вариационном выводе.&lt;br /&gt;
&lt;br /&gt;
==Пример реализации==&lt;br /&gt;
&lt;br /&gt;
Ниже приведена реализация частного случая автокодировщика на языке Python с использованием библиотеки Keras.&lt;br /&gt;
Эта реализация работает с датасетом рукописных цифр MNIST.&lt;br /&gt;
&lt;br /&gt;
 def create_dense_ae(): &lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Размерность кодированного представления&amp;lt;/font&amp;gt;&lt;br /&gt;
     encoding_dim = 49&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Энкодер&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Входной плейсхолдер&amp;lt;/font&amp;gt;&lt;br /&gt;
     input_img = Input(shape=(28, 28, 1)) &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# 28, 28, 1 {{---}} размерности строк, столбцов, фильтров одной картинки, без батч-размерности&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Вспомогательный слой решейпинга&amp;lt;/font&amp;gt;&lt;br /&gt;
     flat_img = Flatten()(input_img)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Кодированное полносвязным слоем представление&amp;lt;/font&amp;gt;&lt;br /&gt;
     encoded = Dense(encoding_dim, activation=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'relu'&amp;lt;/font&amp;gt;)(flat_img)&lt;br /&gt;
    &lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Декодер&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Раскодированное другим полносвязным слоем изображение&amp;lt;/font&amp;gt;&lt;br /&gt;
     input_encoded = Input(shape=(encoding_dim,))&lt;br /&gt;
     flat_decoded = Dense(28*28, activation=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'sigmoid'&amp;lt;/font&amp;gt;)(input_encoded)&lt;br /&gt;
     decoded = Reshape((28, 28, 1))(flat_decoded)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Модели, в конструктор первым аргументом передаются входные слои, а вторым выходные слои&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Другие модели можно так же использовать как и слои&amp;lt;/font&amp;gt;&lt;br /&gt;
     encoder = Model(input_img, encoded, name=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;encoder&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     decoder = Model(input_encoded, decoded, name=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;decoder&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     autoencoder = Model(input_img, decoder(encoder(input_img)), name=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;autoencoder&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     return encoder, decoder, autoencoder&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Создание модели&amp;lt;/font&amp;gt;&lt;br /&gt;
 encoder, decoder, autoencoder = create_dense_ae()&lt;br /&gt;
 autoencoder.compile(optimizer='adam', loss='binary_crossentropy')&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[Вариационный автокодировщик | Вариационный автокодировщик]]&lt;br /&gt;
*[[:Generative Adversarial Nets (GAN)|Generative Adversarial Nets (GAN)]]&lt;br /&gt;
&lt;br /&gt;
==Примечания==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-different-types-of-autoencoders-41d4fa5f7570 Deep Learning — Different Types of Autoencoders]&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-autoencoders-db265359943e Deep Learning Autoencoders]&lt;br /&gt;
*[https://habr.com/ru/post/331382/ Автоэнкодеры в Keras]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Порождающие модели]]&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70744</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%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70744"/>
				<updated>2019-04-04T13:24:22Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Autoencoder1RUS1998ALEX.png|300px|thumb|Автокодировщик]]&lt;br /&gt;
Автокодировщик (англ. autoencoder) — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя при использовании метода [[ Обратное распространение ошибки | собратного распространения ошибки ]]. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от [[ Нейронные сети, перцептрон | перцептрона ]], выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик состоит из двух частей: энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. Энкодер переводит входной сигнал в его представление (код): &amp;lt;tex&amp;gt;h = g(x)&amp;lt;/tex&amp;gt;, а декодер восстанавливает сигнал по его коду: &amp;lt;tex&amp;gt;x = f(h)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик, изменяя &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;, стремится выучить тождественную функцию &amp;lt;tex&amp;gt;x = f(g(x))&amp;lt;/tex&amp;gt;, минимизируя какой-то функционал ошибки. &amp;lt;tex&amp;gt;L(x, f(g(x)))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом семейства функций энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; как-то ограничены, чтобы автоэнкодер был вынужден отбирать наиболее важные свойства сигнала.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик можно использовать для предобучения, например, когда стоит задача классификации, а размеченных пар слишком мало. Или для понижения размерности в данных для последующей визуализации. Либо когда просто надо научиться различать полезные свойства входного сигнала.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
[[File:AutoencoderExampel.png|700px|thumb|]]&lt;br /&gt;
Для примера возьмем набор данных для продуктов, купленных клиентами&lt;br /&gt;
&lt;br /&gt;
*Шаг 1: Возьмем первую строку из данных по клиенту для всех продуктов в качестве входа. &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; означает, что клиент купил продукт. &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; означает, что клиент не купил.&lt;br /&gt;
*Шаг 2: Закодируем ввод в другой вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; меньшего размера, чем входной. Можно использовать функцию активации сигмоида для &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, так как она ее область значения от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; - вес, примененный к входу,  &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; {{---}} член смещения.&lt;br /&gt;
&amp;lt;tex&amp;gt;h = f(Wx+b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Шаг 3: Декодируем вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, чтобы воссоздать ввод. Выход будет того же размера, что и вход&lt;br /&gt;
*Шаг 4: Рассчитать ошибку &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Ошибка {{---}} это разница между входным и выходным вектором. Наша цель {{---}} минимизировать ошибку, чтобы выходной вектор был похож на входной вектор. &lt;br /&gt;
*Шаг 5: С помощью алгоритма обратного распространения ошибки нужно обновить веса. Скорость обучения определяется тем, насколько обновляются веса. &lt;br /&gt;
*Шаг 6: Повторите шаги с &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; для каждого клиента в наборе данных. Веса обновляются каждый раз (стохастический градиентный спуск)&lt;br /&gt;
*Шаг 7: Повторите для большего количества эпох. Эпоха - это когда все строки в наборе данных прошли через нейронную сеть.&lt;br /&gt;
&lt;br /&gt;
==Использование==&lt;br /&gt;
&lt;br /&gt;
*Нелинейное уменьшения размерности. Кодирует ввод в скрытом слое с меньшей размерностью по сравнению с входным измерением. Скрытый слой позже декодируется как выходной. Автоэнкодер уменьшает размерность линейных и нелинейных данных, следовательно, он более мощный, чем [[метод главных компонент]]&amp;lt;sup&amp;gt;[на 3.04.19 не создан]&amp;lt;/sup&amp;gt;. &lt;br /&gt;
*Рекомендации пользователям. При этом используются глубокие кодеры, чтобы понять пользовательские предпочтения, порекомендовать фильмы, книги или предметы &lt;br /&gt;
*Извлечения зависимостей в данных: автоэнкодеры пытаются минимизировать ошибку восстановления. В процессе уменьшения ошибки он изучает некоторые важные зависимости, присутствующие во входных данных. Он восстанавливает входные данные из кодированного состояния. Кодирование генерирует новый набор функций, который представляет собой комбинацию оригинальных зависимостей. Кодирование в автоэнкодерах помогает идентифицировать скрытые зависимости, присутствующие во входных данных. &lt;br /&gt;
*Распознавание изображений: для распознавания изображений используется сложный автоэнкодер. Можно использовать несколько совмещенных кодировщиков, что помогает изучить различные функции изображения.&lt;br /&gt;
&lt;br /&gt;
==Виды автокодировщиков==&lt;br /&gt;
&lt;br /&gt;
===Undercomplete Autoencoders===&lt;br /&gt;
Имеют меньший размер скрытого слоя по сравнению с входным слоем. Это помогает выделить зависимости из данных. Undercomplete Autoencoders минимизируют функцию потерь, штрафуя &amp;lt;tex&amp;gt;g(f(x))&amp;lt;/tex&amp;gt; за отличия от входных данных x. Так же не нуждаются в регуляризации, поскольку максимизируют вероятность данных, а не копируют входные данные в выходные. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x - f(g(x))|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sparse Autoencoders===&lt;br /&gt;
Размерность скрытого слоя больше, чем входного. Они все еще могут обнаружить важные особенности из данных. Sparse Autoencoders имеют штраф за разреженность, &amp;lt;tex&amp;gt;Ω(h)&amp;lt;/tex&amp;gt;, значение, близкое к нулю. На скрытый слой накладывается штраф за разреженность в дополнение к ошибке восстановления. Это предотвращает переобучение.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x - f(g(x))| + Ω(h)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Denoising Autoencoders(DAE)===&lt;br /&gt;
Создаем поврежденную копию ввода, внося некоторый шум. Это помогает избежать автоматического копировать входных данные в выходные, не изучая их особенности. DAE минимизирует функцию потерь между выходным узлом и поврежденным вводом.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x' - f(g(x))|&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Contractive Autoencoders(CAE)===&lt;br /&gt;
Целью CAE является получение надежного представления данных, которое менее чувствительно к небольшим изменениям. Надежность представления данных достигается путем регуляризации. Наказание в CAE это норма Фробениуса матрицы Якоби, которая вычисляется  для скрытого слоя относительно входных данных. Фробениусовой нормой матрицы Якоби является сумма квадратов всех элементов. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;L = |x - f(g(x))| + \lambda*||J_f(x)||_F^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;||J_f(x)||_F^2 = sum_{i, j}(\partial h_j(x) / \partial x_i)^2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Stacked Denoising Autoencoders===&lt;br /&gt;
Stacked Autoencoders {{---}} это нейронная сеть с несколькими слоями Sparse Autoencoders. Когда мы добавляем в автоэнкодер больше скрытых слоев, это помогает уменьшить объемные код, получаемый кодировщиком. Restricted Boltzmann Machine (RBM) является основной частью сети глубокого убеждения.&lt;br /&gt;
&lt;br /&gt;
===Deep Autoencoders===&lt;br /&gt;
Состоит из двух идентичных глубоких сетей. Одна сеть для кодирования и другая для декодирования. Обычно имеют от 4 до 5 уровней для кодирования и следующие от 4 до 5 уровней для декодирования.&lt;br /&gt;
&lt;br /&gt;
==Пример реализации==&lt;br /&gt;
&lt;br /&gt;
Ниже приведена реализация частного случая автокодировщика на языке Python с использованием библиотеки Keras.&lt;br /&gt;
Эта реализация работает с датасетом рукописных цифр MNIST.&lt;br /&gt;
&lt;br /&gt;
 def create_dense_ae(): &lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Размерность кодированного представления&amp;lt;/font&amp;gt;&lt;br /&gt;
     encoding_dim = 49&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Энкодер&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Входной плейсхолдер&amp;lt;/font&amp;gt;&lt;br /&gt;
     input_img = Input(shape=(28, 28, 1)) &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# 28, 28, 1 {{---}} размерности строк, столбцов, фильтров одной картинки, без батч-размерности&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Вспомогательный слой решейпинга&amp;lt;/font&amp;gt;&lt;br /&gt;
     flat_img = Flatten()(input_img)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Кодированное полносвязным слоем представление&amp;lt;/font&amp;gt;&lt;br /&gt;
     encoded = Dense(encoding_dim, activation=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'relu'&amp;lt;/font&amp;gt;)(flat_img)&lt;br /&gt;
    &lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Декодер&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Раскодированное другим полносвязным слоем изображение&amp;lt;/font&amp;gt;&lt;br /&gt;
     input_encoded = Input(shape=(encoding_dim,))&lt;br /&gt;
     flat_decoded = Dense(28*28, activation=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'sigmoid'&amp;lt;/font&amp;gt;)(input_encoded)&lt;br /&gt;
     decoded = Reshape((28, 28, 1))(flat_decoded)&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Модели, в конструктор первым аргументом передаются входные слои, а вторым выходные слои&amp;lt;/font&amp;gt;&lt;br /&gt;
     &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;# Другие модели можно так же использовать как и слои&amp;lt;/font&amp;gt;&lt;br /&gt;
     encoder = Model(input_img, encoded, name=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;encoder&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     decoder = Model(input_encoded, decoded, name=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;decoder&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     autoencoder = Model(input_img, decoder(encoder(input_img)), name=&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&amp;quot;autoencoder&amp;quot;&amp;lt;/font&amp;gt;)&lt;br /&gt;
     return encoder, decoder, autoencoder&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[:Variational autoencoder (VAE)|Variational autoencoder (VAE)]]&lt;br /&gt;
*[[:Generative Adversarial Nets (GAN)|Generative Adversarial Nets (GAN)]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-different-types-of-autoencoders-41d4fa5f7570 Deep Learning — Different Types of Autoencoders]&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-autoencoders-db265359943e Deep Learning Autoencoders]&lt;br /&gt;
*[https://habr.com/ru/post/331382/ Автоэнкодеры в Keras]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Порождающие модели]]&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Autoencoder1RUS1998ALEX.png&amp;diff=70743</id>
		<title>Файл:Autoencoder1RUS1998ALEX.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:Autoencoder1RUS1998ALEX.png&amp;diff=70743"/>
				<updated>2019-04-04T13:22:48Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70454</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%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70454"/>
				<updated>2019-03-17T14:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Autoencoder1.png|450px|thumb|Автокодировщик]]&lt;br /&gt;
Автокодировщик (англ. autoencoder) — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя при использовании метода обратного распространения ошибки. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от перцептрона, выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик состоит из двух частей: энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. Энкодер переводит входной сигнал в его представление (код): &amp;lt;tex&amp;gt;h = g(x)&amp;lt;/tex&amp;gt;, а декодер восстанавливает сигнал по его коду: &amp;lt;tex&amp;gt;x = f(h)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик, изменяя &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;, стремится выучить тождественную функцию &amp;lt;tex&amp;gt;x = f(g(x))&amp;lt;/tex&amp;gt;, минимизируя какой-то функционал ошибки. &amp;lt;tex&amp;gt;L(x, f(g(x)))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом семейства функций энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; как-то ограничены, чтобы автоэнкодер был вынужден отбирать наиболее важные свойства сигнала.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик можно использовать для предобучения, например, когда стоит задача классификации, а размеченных пар слишком мало. Или для понижения размерности в данных для последующей визуализации. Либо когда просто надо научиться различать полезные свойства входного сигнала.&lt;br /&gt;
&lt;br /&gt;
==Описание==&lt;br /&gt;
&lt;br /&gt;
[[File:AutoencoderExampel.png|450px|thumb|]]&lt;br /&gt;
Для примера возьмем набор данных для продуктов, купленных клиентами&lt;br /&gt;
&lt;br /&gt;
*Шаг 1: Возьмем первую строку из данных по клиенту для всех продуктов в качестве входа. &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; означает, что клиент купил продукт. &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; означает, что клиент не купил.&lt;br /&gt;
*Шаг 2: Закодируем ввод в другой вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; меньшего размера, чем входной. Можно использовать функцию активации сигмоида для &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, так как она ее область значения от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; - вес, примененный к входу,  &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; - член смещения.&lt;br /&gt;
&amp;lt;tex&amp;gt;h = f(Wx+b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Шаг 3: Декодируем вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, чтобы воссоздать ввод. Выход будет того же размера, что и вход&lt;br /&gt;
*Шаг 4: Рассчитать ошибку &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Ошибка - это разница между входным и выходным вектором. Наша цель - минимизировать ошибку, чтобы выходной вектор был похож на входной вектор. &lt;br /&gt;
*Шаг 5: С помощью алгоритма обратного распространения ошибки нужно обновить веса. Скорость обучения определяется тем, насколько обновляются веса. &lt;br /&gt;
*Шаг 6: Повторите шаги с &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; для каждого клиента в наборе данных. Веса обновляются каждый раз (стохастический градиентный спуск)&lt;br /&gt;
*Шаг 7: Повторите для большего количества эпох. Эпоха - это когда все строки в наборе данных прошли через нейронную сеть.&lt;br /&gt;
&lt;br /&gt;
==Использование==&lt;br /&gt;
&lt;br /&gt;
*Нелинейное уменьшения размерности. Кодирует ввод в скрытом слое с меньшей размерностью по сравнению с входным измерением. Скрытый слой позже декодируется как выходной. Автоэнкодер уменьшает размерность линейных и нелинейных данных, следовательно, он более мощный, чем PCA. &lt;br /&gt;
*Рекомендации пользователям. При этом используются глубокие кодеры, чтобы понять пользовательские предпочтения, чтобы рекомендовать фильмы, книги или предметы &lt;br /&gt;
*Извлечения зависимостей в данных: автоэнкодеры пытаются минимизировать ошибку восстановления. В процессе уменьшения ошибки он изучает некоторые важные зависимости, присутствующие во входных данных. Он восстанавливает входные данные из кодированного состояния. Кодирование генерирует новый набор функций, который представляет собой комбинацию оригинальных зависимостей. Кодирование в автоэнкодерах помогает идентифицировать скрытые зависимости, присутствующие во входных данных. &lt;br /&gt;
*Распознавание изображений: для распознавания изображений используется сложный автоэнкодер. Можно использовать несколько совмещенных кодировщиков, что помогает изучить различные функции изображения.&lt;br /&gt;
&lt;br /&gt;
==Пример реализации==&lt;br /&gt;
&lt;br /&gt;
Ниже приведена реализация частного случая автокодировщика на языке Python с использованием библиотеки Keras.&lt;br /&gt;
Эта реализация работает с датасетом рукописных цифр MNIST.&lt;br /&gt;
&lt;br /&gt;
 def create_dense_ae(): &lt;br /&gt;
     # Размерность кодированного представления&lt;br /&gt;
     encoding_dim = 49&lt;br /&gt;
 &lt;br /&gt;
     # Энкодер&lt;br /&gt;
     # Входной плейсхолдер&lt;br /&gt;
     input_img = Input(shape=(28, 28, 1)) # 28, 28, 1 - размерности строк, столбцов, фильтров одной картинки, без батч-размерности&lt;br /&gt;
     # Вспомогательный слой решейпинга&lt;br /&gt;
     flat_img = Flatten()(input_img)&lt;br /&gt;
     # Кодированное полносвязным слоем представление&lt;br /&gt;
     encoded = Dense(encoding_dim, activation='relu')(flat_img)&lt;br /&gt;
    &lt;br /&gt;
     # Декодер&lt;br /&gt;
     # Раскодированное другим полносвязным слоем изображение&lt;br /&gt;
     input_encoded = Input(shape=(encoding_dim,))&lt;br /&gt;
     flat_decoded = Dense(28*28, activation='sigmoid')(input_encoded)&lt;br /&gt;
     decoded = Reshape((28, 28, 1))(flat_decoded)&lt;br /&gt;
     # Модели, в конструктор первым аргументом передаются входные слои, а вторым выходные слои&lt;br /&gt;
     # Другие модели можно так же использовать как и слои&lt;br /&gt;
     encoder = Model(input_img, encoded, name=&amp;quot;encoder&amp;quot;)&lt;br /&gt;
     decoder = Model(input_encoded, decoded, name=&amp;quot;decoder&amp;quot;)&lt;br /&gt;
     autoencoder = Model(input_img, decoder(encoder(input_img)), name=&amp;quot;autoencoder&amp;quot;)&lt;br /&gt;
     return encoder, decoder, autoencoder&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[:Variational autoencoder (VAE)|Variational autoencoder (VAE)]]&lt;br /&gt;
*[[:Generative Adversarial Nets (GAN)|Generative Adversarial Nets (GAN)]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-autoencoders-db265359943e Deep Learning Autoencoders]&lt;br /&gt;
*[https://habr.com/ru/post/331382/ Автоэнкодеры в Keras]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Порождающие модели]]&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70453</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%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70453"/>
				<updated>2019-03-17T14:23:39Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Autoencoder1.png|450px|thumb|Автокодировщик]]&lt;br /&gt;
Автокодировщик (англ. autoencoder) — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя при использовании метода обратного распространения ошибки. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от перцептрона, выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик состоит из двух частей: энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. Энкодер переводит входной сигнал в его представление (код): &amp;lt;tex&amp;gt;h = g(x)&amp;lt;/tex&amp;gt;, а декодер восстанавливает сигнал по его коду: &amp;lt;tex&amp;gt;x = f(h)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик, изменяя &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;, стремится выучить тождественную функцию &amp;lt;tex&amp;gt;x = f(g(x))&amp;lt;/tex&amp;gt;, минимизируя какой-то функционал ошибки. &amp;lt;tex&amp;gt;L(x, f(g(x)))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом семейства функций энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; как-то ограничены, чтобы автоэнкодер был вынужден отбирать наиболее важные свойства сигнала.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик можно использовать для предобучения, например, когда стоит задача классификации, а размеченных пар слишком мало. Или для понижения размерности в данных для последующей визуализации. Либо когда просто надо научиться различать полезные свойства входного сигнала.&lt;br /&gt;
&lt;br /&gt;
==Описание==&lt;br /&gt;
&lt;br /&gt;
Для примера возьмем набор данных для продуктов, купленных клиентами&lt;br /&gt;
[[File:AutoencoderExampel.png|450px|thumb|]]&lt;br /&gt;
&lt;br /&gt;
*Шаг 1: Возьмем первую строку из данных по клиенту для всех продуктов в качестве входных данных. &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; означает, что клиент купил продукт. &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; означает, что клиент не купил продукт.&lt;br /&gt;
*Шаг 2: Закодируем ввод в другой вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; меньшего размера, чем входной. Можно использовать функцию активации сигмоида для &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, так как она ее область значения от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; - вес, примененный к входу,  &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; - член смещения.&lt;br /&gt;
&amp;lt;tex&amp;gt;h = f(Wx+b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Шаг 3: Декодируем вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, чтобы воссоздать ввод. Выход будет того же размера, что и вход&lt;br /&gt;
*Шаг 4: Рассчитать ошибку &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Ошибка - это разница между входным и выходным вектором. Наша цель - минимизировать ошибку, чтобы выходной вектор был похож на входной вектор. &lt;br /&gt;
*Шаг 5: С помощью алгоритма обратного распространения ошибки нужно обновить веса. Скорость обучения определяется тем, насколько обновляются веса. &lt;br /&gt;
*Шаг 6: Повторите шаги с &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; для каждого клиента в наборе данных. Веса обновляются каждый раз (стохастический градиентный спуск)&lt;br /&gt;
*Шаг 7: Повторите для большего количества эпох. Эпоха - это когда все строки в наборе данных прошли через нейронную сеть.&lt;br /&gt;
&lt;br /&gt;
==Использование==&lt;br /&gt;
&lt;br /&gt;
*Нелинейное уменьшения размерности. Кодирует ввод в скрытом слое с меньшей размерностью по сравнению с входным измерением. Скрытый слой позже декодируется как выходной. Автоэнкодер уменьшает размерность линейных и нелинейных данных, следовательно, он более мощный, чем PCA. &lt;br /&gt;
*Рекомендации пользователям. При этом используются глубокие кодеры, чтобы понять пользовательские предпочтения, чтобы рекомендовать фильмы, книги или предметы &lt;br /&gt;
*Извлечения зависимостей в данных: автоэнкодеры пытаются минимизировать ошибку восстановления. В процессе уменьшения ошибки он изучает некоторые важные зависимости, присутствующие во входных данных. Он восстанавливает входные данные из кодированного состояния. Кодирование генерирует новый набор функций, который представляет собой комбинацию оригинальных зависимостей. Кодирование в автоэнкодерах помогает идентифицировать скрытые зависимости, присутствующие во входных данных. &lt;br /&gt;
*Распознавание изображений: для распознавания изображений используется сложный автоэнкодер. Можно использовать несколько совмещенных кодировщиков, что помогает изучить различные функции изображения.&lt;br /&gt;
&lt;br /&gt;
==Пример реализации==&lt;br /&gt;
&lt;br /&gt;
Ниже приведена реализация частного случая автокодировщика на языке Python с использованием библиотеки Keras.&lt;br /&gt;
Эта реализация работает с датасетом рукописных цифр MNIST.&lt;br /&gt;
&lt;br /&gt;
 def create_dense_ae(): &lt;br /&gt;
     # Размерность кодированного представления&lt;br /&gt;
     encoding_dim = 49&lt;br /&gt;
 &lt;br /&gt;
     # Энкодер&lt;br /&gt;
     # Входной плейсхолдер&lt;br /&gt;
     input_img = Input(shape=(28, 28, 1)) # 28, 28, 1 - размерности строк, столбцов, фильтров одной картинки, без батч-размерности&lt;br /&gt;
     # Вспомогательный слой решейпинга&lt;br /&gt;
     flat_img = Flatten()(input_img)&lt;br /&gt;
     # Кодированное полносвязным слоем представление&lt;br /&gt;
     encoded = Dense(encoding_dim, activation='relu')(flat_img)&lt;br /&gt;
    &lt;br /&gt;
     # Декодер&lt;br /&gt;
     # Раскодированное другим полносвязным слоем изображение&lt;br /&gt;
     input_encoded = Input(shape=(encoding_dim,))&lt;br /&gt;
     flat_decoded = Dense(28*28, activation='sigmoid')(input_encoded)&lt;br /&gt;
     decoded = Reshape((28, 28, 1))(flat_decoded)&lt;br /&gt;
     # Модели, в конструктор первым аргументом передаются входные слои, а вторым выходные слои&lt;br /&gt;
     # Другие модели можно так же использовать как и слои&lt;br /&gt;
     encoder = Model(input_img, encoded, name=&amp;quot;encoder&amp;quot;)&lt;br /&gt;
     decoder = Model(input_encoded, decoded, name=&amp;quot;decoder&amp;quot;)&lt;br /&gt;
     autoencoder = Model(input_img, decoder(encoder(input_img)), name=&amp;quot;autoencoder&amp;quot;)&lt;br /&gt;
     return encoder, decoder, autoencoder&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[:Variational autoencoder (VAE)|Variational autoencoder (VAE)]]&lt;br /&gt;
*[[:Generative Adversarial Nets (GAN)|Generative Adversarial Nets (GAN)]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-autoencoders-db265359943e Deep Learning Autoencoders]&lt;br /&gt;
*[https://habr.com/ru/post/331382/ Автоэнкодеры в Keras]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Порождающие модели]]&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%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=70451</id>
		<title>Машинное обучение</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%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=70451"/>
				<updated>2019-03-17T12:48:51Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: /* Порождающие модели */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
*[[Стохастический градиентный спуск]]&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;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Кластеризация=&lt;br /&gt;
*[[Кластеризация]]&lt;br /&gt;
*[[Иерархическая кластеризация]]&lt;br /&gt;
*[[Оценка качества в задаче кластеризации]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ансамбли=&lt;br /&gt;
*[[Виды ансамблей]]&lt;br /&gt;
*[[Бустинг, AdaBoost]]&lt;br /&gt;
*[[XGBoost]]&lt;br /&gt;
*[[CatBoost]]&lt;br /&gt;
&lt;br /&gt;
=Глубокое обучение=&lt;br /&gt;
*[[Глубокое обучение]]&lt;br /&gt;
*[[Настройка глубокой сети]]&lt;br /&gt;
*[[Batch-normalization]]&lt;br /&gt;
*[[Практики реализации нейронных сетей]]&lt;br /&gt;
*[[Рекуррентные нейронные сети]]&lt;br /&gt;
*[[Сегментация изображений]]&lt;br /&gt;
==Сверточные сети==&lt;br /&gt;
*[[Сверточные нейронные сети]]&lt;br /&gt;
==Порождающие модели==&lt;br /&gt;
*[[Generative Adversarial Nets (GAN)]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;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;
=Уменьшение размерности=&lt;br /&gt;
*[[Уменьшение размерности]]&lt;br /&gt;
&lt;br /&gt;
=Обучение с подкреплением=&lt;br /&gt;
*[[Обучение с подкреплением]]&lt;br /&gt;
*[[Методы policy gradient и алгоритм асинхронного актора-критика]]&lt;br /&gt;
&lt;br /&gt;
=Примеры кода=&lt;br /&gt;
*[[Обзор библиотек для машинного обучения на Python]]&lt;br /&gt;
*[[Примеры кода на Scala]]&lt;br /&gt;
&lt;br /&gt;
=В разработке=&lt;br /&gt;
*[[Мета-обучение]]&lt;br /&gt;
*[[Оценка качества в задачах классификации и регрессии]]&lt;br /&gt;
*[[Задача нахождения объектов на изображении]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Neural Style Transfer]]&amp;lt;tex&amp;gt;^\star&amp;lt;/tex&amp;gt;&lt;br /&gt;
*[[Долгая краткосрочная память]]&lt;br /&gt;
*[[Метод опорных векторов (SVM)]]&lt;br /&gt;
*[[Байесовская классификация]]&lt;br /&gt;
*[[EM-алгоритм]]&lt;br /&gt;
*[[Рекомендательные системы]]&lt;br /&gt;
*[[Настройка гиперпараметров]]&lt;br /&gt;
*[[Активное обучение]]&lt;br /&gt;
*[[Примеры кода на R]]&lt;br /&gt;
*[[Примеры кода на Java]]&lt;br /&gt;
*[[Регуляризация]]&lt;br /&gt;
*[[Обратное распространение ошибки]]&lt;br /&gt;
*[[Порождающие модели]]&lt;br /&gt;
*[[Ядра]]&lt;br /&gt;
*[[Известные наборы данных]]&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70450</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%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA&amp;diff=70450"/>
				<updated>2019-03-17T12:46:15Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: v1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Autoencoder1.png|450px|thumb|Автокодировщик]]&lt;br /&gt;
Автокодировщик (англ. autoencoder) — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя при использовании метода обратного распространения ошибки. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от перцептрона, выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик состоит из двух частей: энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. Энкодер переводит входной сигнал в его представление (код): &amp;lt;tex&amp;gt;h = g(x)&amp;lt;/tex&amp;gt;, а декодер восстанавливает сигнал по его коду: &amp;lt;tex&amp;gt;x = f(h)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Автокодировщик, изменяя &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;, стремится выучить тождественную функцию &amp;lt;tex&amp;gt;x = f(g(x))&amp;lt;/tex&amp;gt;, минимизируя какой-то функционал ошибки. &amp;lt;tex&amp;gt;L(x, f(g(x)))&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом семейства функций энкодера &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; и декодера &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;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;
[[File:AutoencoderExampel.png|450px|thumb|]]&lt;br /&gt;
&lt;br /&gt;
*Шаг 1: Возьмем первую строку из данных по клиенту для всех продуктов в качестве входных данных. &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; означает, что клиент купил продукт. &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; означает, что клиент не купил продукт.&lt;br /&gt;
*Шаг 2: Закодируем ввод в другой вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; меньшего размера, чем входной. Можно использовать функцию активации сигмоида для &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, так как она ее область значения от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;W&amp;lt;/tex&amp;gt; - вес, примененный к входу,  &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; - член смещения.&lt;br /&gt;
&amp;lt;tex&amp;gt;h = f(Wx+b)&amp;lt;/tex&amp;gt;&lt;br /&gt;
*Шаг 3: Декодируем вектор &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt;, чтобы воссоздать ввод. Выход будет того же размера, что и вход&lt;br /&gt;
*Шаг 4: Рассчитать ошибку &amp;lt;tex&amp;gt;L&amp;lt;/tex&amp;gt;. Ошибка - это разница между входным и выходным вектором. Наша цель - минимизировать ошибку, чтобы выходной вектор был похож на входной вектор. &lt;br /&gt;
*Шаг 5: С помощью алгоритма обратного распространения ошибки нужно обновить веса. Скорость обучения определяется тем, насколько обновляются веса. &lt;br /&gt;
*Шаг 6: Повторите шаги с &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; для каждого клиента в наборе данных. Веса обновляются каждый раз (стохастический градиентный спуск)&lt;br /&gt;
*Шаг 7: Повторите для большего количества эпох. Эпоха - это когда все строки в наборе данных прошли через нейронную сеть.&lt;br /&gt;
&lt;br /&gt;
==Использование==&lt;br /&gt;
&lt;br /&gt;
*Нелинейное уменьшения размерности. Кодирует ввод в скрытом слое с меньшей размерностью по сравнению с входным измерением. Скрытый слой позже декодируется как выходной. Автоэнкодер уменьшает размерность линейных и нелинейных данных, следовательно, он более мощный, чем PCA. &lt;br /&gt;
*Рекомендации пользователям. При этом используются глубокие кодеры, чтобы понять пользовательские предпочтения, чтобы рекомендовать фильмы, книги или предметы &lt;br /&gt;
*Извлечения зависимостей в данных: автоэнкодеры пытаются минимизировать ошибку восстановления. В процессе уменьшения ошибки он изучает некоторые важные зависимости, присутствующие во входных данных. Он восстанавливает входные данные из кодированного состояния. Кодирование генерирует новый набор функций, который представляет собой комбинацию оригинальных зависимостей. Кодирование в автоэнкодерах помогает идентифицировать скрытые зависимости, присутствующие во входных данных. &lt;br /&gt;
*Распознавание изображений: для распознавания изображений используется сложный автоэнкодер. Можно использовать несколько совмещенных кодировщиков, что помогает изучить различные функции изображения.&lt;br /&gt;
&lt;br /&gt;
==Пример реализации==&lt;br /&gt;
&lt;br /&gt;
Ниже приведена реализация частного случая автокодировщика на языке Python с использованием библиотеки Keras.&lt;br /&gt;
Эта реализация работает с датасетом рукописных цифр MNIST.&lt;br /&gt;
&lt;br /&gt;
 def create_dense_ae(): &lt;br /&gt;
     # Размерность кодированного представления&lt;br /&gt;
     encoding_dim = 49&lt;br /&gt;
 &lt;br /&gt;
     # Энкодер&lt;br /&gt;
     # Входной плейсхолдер&lt;br /&gt;
     input_img = Input(shape=(28, 28, 1)) # 28, 28, 1 - размерности строк, столбцов, фильтров одной картинки, без батч-размерности&lt;br /&gt;
     # Вспомогательный слой решейпинга&lt;br /&gt;
     flat_img = Flatten()(input_img)&lt;br /&gt;
     # Кодированное полносвязным слоем представление&lt;br /&gt;
     encoded = Dense(encoding_dim, activation='relu')(flat_img)&lt;br /&gt;
    &lt;br /&gt;
     # Декодер&lt;br /&gt;
     # Раскодированное другим полносвязным слоем изображение&lt;br /&gt;
     input_encoded = Input(shape=(encoding_dim,))&lt;br /&gt;
     flat_decoded = Dense(28*28, activation='sigmoid')(input_encoded)&lt;br /&gt;
     decoded = Reshape((28, 28, 1))(flat_decoded)&lt;br /&gt;
     # Модели, в конструктор первым аргументом передаются входные слои, а вторым выходные слои&lt;br /&gt;
     # Другие модели можно так же использовать как и слои&lt;br /&gt;
     encoder = Model(input_img, encoded, name=&amp;quot;encoder&amp;quot;)&lt;br /&gt;
     decoder = Model(input_encoded, decoded, name=&amp;quot;decoder&amp;quot;)&lt;br /&gt;
     autoencoder = Model(input_img, decoder(encoder(input_img)), name=&amp;quot;autoencoder&amp;quot;)&lt;br /&gt;
     return encoder, decoder, autoencoder&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
*[[:Variational autoencoder (VAE)|Variational autoencoder (VAE)]]&lt;br /&gt;
*[[:Generative Adversarial Nets (GAN)|Generative Adversarial Nets (GAN)]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
*[https://medium.com/datadriveninvestor/deep-learning-autoencoders-db265359943e Deep Learning Autoencoders]&lt;br /&gt;
*[https://habr.com/ru/post/331382/ Автоэнкодеры в Keras]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Порождающие модели]]&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:AutoencoderExampel.png&amp;diff=70449</id>
		<title>Файл:AutoencoderExampel.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:AutoencoderExampel.png&amp;diff=70449"/>
				<updated>2019-03-17T12:27:17Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Autoencoder1.png&amp;diff=68485</id>
		<title>Файл:Autoencoder1.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:Autoencoder1.png&amp;diff=68485"/>
				<updated>2019-01-18T14:17:45Z</updated>
		
		<summary type="html">&lt;p&gt;SuperStrongDinosaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SuperStrongDinosaur</name></author>	</entry>

	</feed>