trainAutoencoder

Обучите автоэнкодер

Синтаксис

autoenc = trainAutoencoder(X)
autoenc = trainAutoencoder(X,hiddenSize)
autoenc = trainAutoencoder(___,Name,Value)

Описание

пример

autoenc = trainAutoencoder(X) возвращает автоэнкодер, autoenc, обучил использование данных тренировки в X.

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.0055

Сгенерируйте данные тренировки.

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 является массивом ячеек данных изображения, то данные в каждой ячейке должны иметь то же количество размерностей. Данные изображения могут быть данными об интенсивности пикселей для серых изображений, в этом случае, каждая ячейка содержит m-by-n матрица. Также данные изображения могут быть данными о RGB, в этом случае, каждая ячейка содержит m-by-n-3 матрица.

Типы данных: single | double | cell

Размер скрытого представления автоэнкодера, заданного как положительное целочисленное значение. Этот номер является количеством нейронов в скрытом слое.

Типы данных: single | double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'EncoderTransferFunction','satlin','L2WeightRegularization',0.05 задает передаточную функцию для энкодера как положительная насыщающая линейная передаточная функция и регуляризация веса L2 как 0,05.

Передаточная функция для энкодера, заданного как пара, разделенная запятой, состоящая из 'EncoderTransferFunction' и одно из следующих.

Опция передаточной функцииОпределение
'logsig'Логистическая сигмоидальная функция

f(z)=11+ez

'satlin'Положительная насыщающая линейная передаточная функция

f(z)={0,если z0z,если  0<z<11,если  z1

Пример: 'EncoderTransferFunction','satlin'

Передаточная функция для декодера, заданного как пара, разделенная запятой, состоящая из 'DecoderTransferFunction' и одно из следующих.

Опция передаточной функцииОпределение
'logsig'Логистическая сигмоидальная функция

f(z)=11+ez

'satlin'Положительная насыщающая линейная передаточная функция

f(z)={0,если z0z,если  0<z<11,если  z1

'purelin'Линейная передаточная функция

f(z)=z

Пример: 'DecoderTransferFunction','purelin'

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

Пример: 'MaxEpochs',1200

Коэффициент для веса L2 regularizer в функции стоимости (LossFunction), заданный как пара, разделенная запятой, состоящая из 'L2WeightRegularization' и значения положительной скалярной величины.

Пример: 'L2WeightRegularization',0.05

Функция потерь, чтобы использовать для обучения, заданного как пара, разделенная запятой, состоящая из 'LossFunction' и 'msesparse'. Это соответствует функции среднеквадратической ошибки, настроенной для обучения разреженный автоэнкодер можно следующим образом:

E=1Nn=1Nk=1K(xknx^kn)2  среднеквадратическая ошибка+λ*ΩweightsL2регуляризация+β*Ωsparsityразреженностьрегуляризация,

где λ является коэффициентом для L, 2 срока регуляризации и β являются коэффициентом для срока регуляризации разреженности. Можно задать значения λ и β при помощи аргументов пары "имя-значение" L2WeightRegularization и SparsityRegularization, соответственно, в то время как обучение автоэнкодер.

Индикатор, чтобы показать учебное окно, заданное как пара, разделенная запятой, состоящая из 'ShowProgressWindow' и или true или false.

Пример: 'ShowProgressWindow',false

Желаемая пропорция учебных примеров нейрон реагирует на, заданный как пара, разделенная запятой, состоящая из 'SparsityProportion' и значения положительной скалярной величины. Пропорция разреженности является параметром разреженности regularizer. Это управляет разреженностью вывода от скрытого слоя. Низкая стоимость для SparsityProportion обычно приводит к каждому нейрону в скрытом слое, "специализирующемся", только давая высокую производительность для небольшого количества учебных примеров. Следовательно, низкая пропорция разреженности поощряет более высокую степень разреженности. Смотрите Разреженные Автоэнкодеры.

Пример: 'SparsityProportion',0.01 эквивалентен высказыванию, что каждый нейрон в скрытом слое должен иметь средний вывод 0,1 по учебным примерам.

Коэффициент, который управляет влиянием разреженности regularizer в функции стоимости, заданной как пара, разделенная запятой, состоящая из 'SparsityRegularization' и значения положительной скалярной величины.

Пример: 'SparsityRegularization',1.6

Алгоритм, чтобы использовать для обучения автоэнкодер, заданный как пара, разделенная запятой, состоящая из 'TrainingAlgorithm' и 'trainscg'. Это обозначает масштабированный спуск метода сопряженных градиентов [1].

Индикатор, чтобы повторно масштабировать входные данные, заданные как пара, разделенная запятой, состоящая из 'ScaleData' и или true или false.

Автоэнкодеры пытаются реплицировать свой вход при их выводе. Для него, чтобы быть возможной, область значений входных данных должна совпадать с областью значений передаточной функции для декодера. trainAutoencoder автоматически масштабирует данные тренировки к этой области значений когда обучение автоэнкодер. Если данные масштабировались, в то время как обучение автоэнкодер, predict, encode и методы decode также масштабирует данные.

Пример: 'ScaleData',false

Индикатор, чтобы использовать графический процессор для обучения, заданного как пара, разделенная запятой, состоящая из 'UseGPU' и или true или false.

Пример: 'UseGPU',true

Выходные аргументы

свернуть все

Обученный автоэнкодер, возвращенный как объект Autoencoder. Для получения информации о свойствах и методах этого объекта, смотрите страницу класса Autoencoder.

Больше о

свернуть все

Автоэнкодеры

Автоэнкодер является нейронной сетью, которая обучена, чтобы реплицировать ее вход при ее выводе. Автоэнкодеры могут использоваться в качестве инструментов, чтобы изучить глубокие нейронные сети. Обучение автоэнкодер является безнадзорным в том смысле, что никакие маркированные данные не необходимы. Учебный процесс все еще основан на оптимизации функции стоимости. Функция стоимости измеряет ошибку между входом x и его реконструкцией при выводе x^.

Автоэнкодер состоит из энкодера и декодера. Энкодер и декодер могут иметь несколько слоев, но для простоты полагают, что у каждого из них есть только один слой.

Если вход к автоэнкодеру является вектором xDx, затем энкодер сопоставляет векторный x с другим вектором zD(1) можно следующим образом:

z=h(1)(W(1)x+b(1)),

где верхний индекс (1) указывает на первый слой. h(1):D(1)D(1) передаточная функция для энкодера, W(1)D(1)×Dx матрица веса, и b(1)D(1) вектор смещения. Затем декодер сопоставляет закодированное представление z назад в оценку исходного входного вектора, x, можно следующим образом:

x^=h(2)(W(2)z+b(2)),

где верхний индекс (2) представляет второй слой. h(2):DxDx передаточная функция для декодера,W(1)Dx×D(1) матрица веса, и b(2)Dx вектор смещения.

Разреженные автоэнкодеры

Ободрительная разреженность автоэнкодера возможна путем добавления regularizer в функцию стоимости [2]. Этот regularizer является функцией среднего выходного значения активации нейрона. Средняя выходная мера по активации нейрона i задана как:

ρ^i=1nj=1nzi(1)(xj)=1nj=1nh(wi(1)Txj+bi(1)),

где n является общим количеством учебных примеров. xj является the jth учебным примером, wi(1)T i th строка матрицы веса W(1), и bi(1) i th запись вектора смещения, b(1). Нейрон считается, 'стреляя', если его выходное значение активации высоко. Значение активации низкого выпуска продукции означает, что нейрон в скрытом слое стреляет в ответ на небольшое количество учебных примеров. Добавление термина к функции стоимости, которая ограничивает значения ρ^i быть низким поощряет автоэнкодер изучать представление, где каждый нейрон в скрытом слое стреляет в небольшое количество учебных примеров. Таким образом, каждый нейрон специализируется путем ответа на некоторую функцию, которая только присутствует в небольшом подмножестве учебных примеров.

Регуляризация разреженности

Разреженность regularizer пытается осуществить ограничение на разреженность вывода от скрытого слоя. Разреженность может быть поощрена путем добавления срока регуляризации, который принимает большое значение когда среднее значение активации, ρ^i, из нейрона i и его требуемое значение, ρ, не близки в значении [2]. Один такой срок регуляризации разреженности может быть расхождением Kullback-Leibler.

Ωsparsity=i=1D(1)KL(ρρ^i)=i=1D(1)ρжурнал(ρρ^i)+(1ρ)журнал(1ρ1ρ^i)

Расхождение Kullback-Leibler является функцией для измерения, как различные два дистрибутива. В этом случае это берет нуль значения когда ρ и ρ^i равны друг другу, и становится больше, когда они отличаются друг от друга. Минимизация функции стоимости обеспечивает этот термин, чтобы быть маленькой, следовательно ρ и ρ^i быть друг близко к другу. Можно задать требуемое значение среднего значения активации с помощью аргумента пары "имя-значение" SparsityProportion в то время как обучение автоэнкодер.

Регуляризация L2

Когда обучение разреженный автоэнкодер, возможно сделать разреженность regulariser маленькой путем увеличения значений весов w (l) и уменьшения значений z (1) [2]. Добавление срока регуляризации на весах к функции стоимости предотвращает его. Этот термин называется сроком регуляризации L2 и задан:

Ωweights=12lLjnik(wji(l))2,

где L является количеством скрытых слоев, n является количеством наблюдений (примеры), и k является количеством переменных в данных тренировки.

Функция стоимости

Функция стоимости для обучения разреженный автоэнкодер является настроенной функцией среднеквадратической ошибки можно следующим образом:

E=1Nn=1Nk=1K(xknx^kn)2  среднеквадратическая ошибка+λ*ΩweightsL2регуляризация+β*Ωsparsityразреженностьрегуляризация,

где λ является коэффициентом для L, 2 срока регуляризации и β являются коэффициентом для срока регуляризации разреженности. Можно задать значения λ и β при помощи аргументов пары "имя-значение" L2WeightRegularization и SparsityRegularization, соответственно, в то время как обучение автоэнкодер.

Ссылки

[1] Moller, M. F. “Масштабированный Алгоритм Метода сопряженных градиентов для Быстрого Контролируемого Изучения”, Нейронные сети, Издание 6, 1993, стр 525–533.

[2] Ольсхаузен, B. А. и Д. Дж. Филд. “Разреженное Кодирование со Сверхполным Базисным комплектом: Стратегия, Используемая V1”. Исследование видения, Vol.37, 1997, pp.3311–3325.

Введенный в R2015b