Обучите автоэнкодер
возвращает автоэнкодер autoenc
= trainAutoencoder(X
,hiddenSize
)autoenc
, со скрытым размером представления hiddenSize
.
возвращает автоэнкодер autoenc
= trainAutoencoder(___,Name,Value
)autoenc
, для любого из вышеупомянутых входных параметров с дополнительными опциями, заданными одним или несколькими Name,Value
парные аргументы.
Например, можно задать пропорцию разреженности или максимальное количество учебных итераций.
Загрузите выборочные данные.
X = abalone_dataset;
X
8 4177 матрица, задающая восемь атрибутов для 4 177 различных интерпретаторов морского ушка: пол (M, F, и я (для младенца)), длина, диаметр, высота, целый вес, сбросил вес, вес внутренних органов, вес интерпретатора. Для получения дополнительной информации о наборе данных введите help abalone_dataset
в командной строке.
Обучите разреженный автоэнкодер с настройками по умолчанию.
autoenc = trainAutoencoder(X);
Восстановите кольцевые данные об интерпретаторе морского ушка с помощью обученного автоэнкодера.
XReconstructed = predict(autoenc,X);
Вычислите среднеквадратическую ошибку реконструкции.
mseError = mse(X-XReconstructed)
mseError = 0.0167
Загрузите выборочные данные.
X = abalone_dataset;
X
8 4177 матрица, задающая восемь атрибутов для 4 177 различных интерпретаторов морского ушка: пол (M, F, и я (для младенца)), длина, диаметр, высота, целый вес, сбросил вес, вес внутренних органов, вес интерпретатора. Для получения дополнительной информации о наборе данных введите help abalone_dataset
в командной строке.
Обучите разреженный автоэнкодер со скрытым размером 4, 400 максимальных эпох и линейная передаточная функция для декодера.
autoenc = trainAutoencoder(X,4,'MaxEpochs',400,... 'DecoderTransferFunction','purelin');
Восстановите кольцевые данные об интерпретаторе морского ушка с помощью обученного автоэнкодера.
XReconstructed = predict(autoenc,X);
Вычислите среднеквадратическую ошибку реконструкции.
mseError = mse(X-XReconstructed)
mseError = 0.0045
Сгенерируйте обучающие данные.
rng(0,'twister'); % For reproducibility n = 1000; r = linspace(-10,10,n)'; x = 1 + r*5e-2 + sin(r)./r + 0.2*randn(n,1);
Обучите автоэнкодер с помощью обучающих данных.
hiddenSize = 25; autoenc = trainAutoencoder(x',hiddenSize,... 'EncoderTransferFunction','satlin',... 'DecoderTransferFunction','purelin',... 'L2WeightRegularization',0.01,... 'SparsityRegularization',4,... 'SparsityProportion',0.10);
Сгенерируйте тестовые данные.
n = 1000; r = sort(-10 + 20*rand(n,1)); xtest = 1 + r*5e-2 + sin(r)./r + 0.4*randn(n,1);
Предскажите тестовые данные с помощью обученного автоэнкодера, autoenc
.
xReconstructed = predict(autoenc,xtest');
Постройте фактические тестовые данные и предсказания.
figure; plot(xtest,'r.'); hold on plot(xReconstructed,'go');
Загрузите обучающие данные.
XTrain = digitTrainCellArrayData;
Обучающие данные являются 1 5000 массивом ячеек, где каждая ячейка, содержащая 28 28 матрица, представляющая синтетическое изображение рукописной цифры.
Обучите автоэнкодер со скрытым слоем, содержащим 25 нейронов.
hiddenSize = 25; autoenc = trainAutoencoder(XTrain,hiddenSize,... 'L2WeightRegularization',0.004,... 'SparsityRegularization',4,... 'SparsityProportion',0.15);
Загрузите тестовые данные.
XTest = digitTestCellArrayData;
Тестовые данные являются 1 5000 массивом ячеек с каждой ячейкой, содержащей 28 28 матрица, представляющая синтетическое изображение рукописной цифры.
Восстановите тестовые данные изображения с помощью обученного автоэнкодера, autoenc
.
xReconstructed = predict(autoenc,XTest);
Просмотрите фактические тестовые данные.
figure; for i = 1:20 subplot(4,5,i); imshow(XTest{i}); end
Просмотрите восстановленные тестовые данные.
figure; for i = 1:20 subplot(4,5,i); imshow(xReconstructed{i}); end
X
— Обучающие данныеОбучающие данные в виде матрицы обучающих выборок или массива ячеек данных изображения. Если X
матрица, затем каждый столбец содержит одну выборку. Если X
массив ячеек данных изображения, затем данные в каждой ячейке должны иметь то же количество размерностей. Данные изображения могут быть данными об интенсивности пикселей для серых изображений, в этом случае, каждая ячейка содержит m-by-n матрица. В качестве альтернативы данные изображения могут быть данными о RGB, в этом случае, каждая ячейка содержит m-by-n-3 матрица.
Типы данных: single
| double
| cell
hiddenSize
— Размер скрытого представления автоэнкодера Размер скрытого представления автоэнкодера в виде положительного целочисленного значения. Этот номер является количеством нейронов в скрытом слое.
Типы данных: single
| double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'EncoderTransferFunction','satlin','L2WeightRegularization',0.05
задает передаточную функцию для энкодера как положительная насыщающая линейная передаточная функция и регуляризация веса L2 как 0,05.EncoderTransferFunction
— Передаточная функция для энкодера'logsig'
(значение по умолчанию) | 'satlin'
Передаточная функция для энкодера в виде разделенной запятой пары, состоящей из 'EncoderTransferFunction'
и одно из следующих.
Опция передаточной функции | Определение |
---|---|
'logsig' | Логистическая сигмоидальная функция
|
'satlin' | Положительная насыщающая линейная передаточная функция
|
Пример: 'EncoderTransferFunction','satlin'
DecoderTransferFunction
— Передаточная функция для декодера'logsig'
(значение по умолчанию) | 'satlin'
| 'purelin'
Передаточная функция для декодера в виде разделенной запятой пары, состоящей из 'DecoderTransferFunction'
и одно из следующих.
Опция передаточной функции | Определение |
---|---|
'logsig' | Логистическая сигмоидальная функция
|
'satlin' | Положительная насыщающая линейная передаточная функция
|
'purelin' | Линейная передаточная функция
|
Пример: 'DecoderTransferFunction','purelin'
MaxEpochs
— Максимальное количество учебных эпохМаксимальное количество учебных эпох или итераций в виде разделенной запятой пары, состоящей из 'MaxEpochs'
и положительное целочисленное значение.
Пример: 'MaxEpochs',1200
L2WeightRegularization
— Коэффициент для веса L2 regularizerКоэффициент для веса L2 regularizer в функции стоимости (LossFunction
) в виде разделенной запятой пары, состоящей из 'L2WeightRegularization'
и значение положительной скалярной величины.
Пример: 'L2WeightRegularization',0.05
LossFunction
— Функция потерь, чтобы использовать для обучения'msesparse'
(значение по умолчанию)Функция потерь, чтобы использовать для обучения в виде разделенной запятой пары, состоящей из 'LossFunction'
и 'msesparse'
. Это соответствует функции среднеквадратической ошибки, настроенной для обучения разреженный автоэнкодер можно следующим образом:
где λ является коэффициентом для L, 2 термина регуляризации и β являются коэффициентом для термина регуляризации разреженности. Можно задать значения λ и β при помощи L2WeightRegularization
и SparsityRegularization
аргументы пары "имя-значение", соответственно, в то время как обучение автоэнкодер.
ShowProgressWindow
— Индикатор, чтобы показать учебное окноtrue
(значение по умолчанию) | false
Индикатор, чтобы показать учебное окно в виде разделенной запятой пары, состоящей из 'ShowProgressWindow'
и любой true
или false
.
Пример: 'ShowProgressWindow',false
SparsityProportion
— Желаемая пропорция учебных примеров нейрон реагирует наЖелаемая пропорция учебных примеров нейрон реагирует на в виде разделенной запятой пары, состоящей из 'SparsityProportion'
и значение положительной скалярной величины. Пропорция разреженности является параметром разреженности regularizer. Это управляет разреженностью выхода от скрытого слоя. Низкая стоимость для SparsityProportion обычно приводит к каждому нейрону в скрытом слое, "специализирующемся", только давая высокую производительность для небольшого количества учебных примеров. Следовательно, низкая пропорция разреженности поощряет более высокую степень разреженности. Смотрите Разреженные Автоэнкодеры.
Пример: 'SparsityProportion',0.01
эквивалентно высказыванию, что каждый нейрон в скрытом слое должен иметь средний выход 0,1 по учебным примерам.
SparsityRegularization
— Коэффициент, который управляет ударом разреженности regularizerКоэффициент, который управляет ударом разреженности regularizer в функции стоимости в виде разделенной запятой пары, состоящей из 'SparsityRegularization'
и значение положительной скалярной величины.
Пример: 'SparsityRegularization',1.6
TrainingAlgorithm
— Алгоритм, чтобы использовать для обучения автоэнкодер'trainscg'
(значение по умолчанию)Алгоритм, чтобы использовать для обучения автоэнкодер в виде разделенной запятой пары, состоящей из 'TrainingAlgorithm'
и 'trainscg'
. Это обозначает масштабированный спуск метода сопряженных градиентов [1].
ScaleData
— Индикатор, чтобы перемасштабировать входные данныеtrue
(значение по умолчанию) | false
Индикатор, чтобы перемасштабировать входные данные в виде разделенной запятой пары, состоящей из 'ScaleData'
и любой true
или false
.
Автоэнкодеры пытаются реплицировать свой вход при их выходе. Для него, чтобы быть возможной, область значений входных данных должна совпадать с областью значений передаточной функции для декодера. trainAutoencoder
автоматически масштабирует обучающие данные к этой области значений когда обучение автоэнкодер. Если данные масштабировались в то время как обучение автоэнкодер, predict
, encode
, и decode
методы также масштабируют данные.
Пример: 'ScaleData',false
UseGPU
— Индикатор, чтобы использовать графический процессор для обученияfalse
(значение по умолчанию) | true
Индикатор, чтобы использовать графический процессор для обучения в виде разделенной запятой пары, состоящей из 'UseGPU'
и любой true
или false
.
Пример: 'UseGPU',true
autoenc
— Обученный автоэнкодерAutoencoder
объектОбученный автоэнкодер, возвращенный как Autoencoder
объект. Для получения информации о свойствах и методах этого объекта, смотрите Autoencoder
страница класса.
Автоэнкодер является нейронной сетью, которая обучена, чтобы реплицировать ее вход при ее выходе. Автоэнкодеры могут использоваться в качестве инструментов, чтобы изучить глубокие нейронные сети. Обучение автоэнкодер является безнадзорным в том смысле, что никакие маркированные данные не необходимы. Учебный процесс все еще основан на оптимизации функции стоимости. Функция стоимости измеряет ошибку между входом x и его реконструкцией при выходе .
Автоэнкодер состоит из энкодера и декодера. Энкодер и декодер могут иметь несколько слоев, но для простоты полагают, что у каждого из них есть только один слой.
Если вход к автоэнкодеру является вектором , затем энкодер сопоставляет векторный x с другим вектором можно следующим образом:
где верхний индекс (1) указывает на первый слой. передаточная функция для энкодера, матрица веса, и вектор смещения. Затем декодер сопоставляет закодированное представление z назад в оценку исходного входного вектора, x, можно следующим образом:
где верхний индекс (2) представляет второй слой. передаточная функция для декодера, матрица веса, и вектор смещения.
Ободрительная разреженность автоэнкодера возможна путем добавления regularizer в функцию стоимости [2]. Этот regularizer является функцией среднего выходного значения активации нейрона. Средняя выходная мера по активации нейрона i задана как:
где n является общим количеством учебных примеров. xj является the jth учебным примером, i th строка матрицы веса , и i th запись вектора смещения, . Нейрон считается, 'стреляя', если его выходное значение активации высоко. Значение активации низкого выпуска продукции означает, что нейрон в скрытом слое стреляет в ответ на небольшое количество учебных примеров. Добавление термина к функции стоимости, которая ограничивает значения быть низким поощряет автоэнкодер изучать представление, где каждый нейрон в скрытом слое стреляет в небольшое количество учебных примеров. Таким образом, каждый нейрон специализируется путем ответа на некоторую функцию, которая только присутствует в небольшом подмножестве учебных примеров.
Разреженность regularizer пытается осуществить ограничение на разреженность выхода от скрытого слоя. Разреженность может быть поощрена путем добавления термина регуляризации, который принимает большое значение когда среднее значение активации, , из нейрона i и его требуемое значение, , не близки в значении [2]. Один такой термин регуляризации разреженности может быть расхождением Kullback-Leibler.
Расхождение Kullback-Leibler является функцией для измерения, как различные два распределения. В этом случае это берет нуль значения когда и равны друг другу, и становится больше, когда они отличаются друг от друга. Минимизация функции стоимости обеспечивает этот термин, чтобы быть малой, следовательно и быть друг близко к другу. Можно задать требуемое значение среднего значения активации с помощью SparsityProportion
аргумент пары "имя-значение", в то время как обучение автоэнкодер.
Когда обучение разреженный автоэнкодер, возможно сделать разреженность regulariser маленькой путем увеличения значений весов w(l) и уменьшение значений z(1) [2]. Добавление термина регуляризации на весах к функции стоимости предотвращает его. Этот термин называется термином регуляризации L2 и задан:
где L является количеством скрытых слоев, n является количеством наблюдений (примеры), и k является количеством переменных в обучающих данных.
Функция стоимости для обучения разреженный автоэнкодер является настроенной функцией среднеквадратической ошибки можно следующим образом:
где λ является коэффициентом для L, 2 термина регуляризации и β являются коэффициентом для термина регуляризации разреженности. Можно задать значения λ и β при помощи L2WeightRegularization
и SparsityRegularization
аргументы пары "имя-значение", соответственно, в то время как обучение автоэнкодер.
[1] Moller, M. F. “Масштабированный Алгоритм Метода сопряженных градиентов для Быстрого Контролируемого Изучения”, Нейронные сети, Издание 6, 1993, стр 525–533.
[2] Ольсхаузен, B. А. и Д. Дж. Филд. “Разреженное Кодирование со Сверхполным Базисным комплектом: Стратегия, Используемая V1”. Исследование видения, Vol.37, 1997, pp.3311–3325.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.