Обучите автоэнкодер
autoenc = trainAutoencoder(X)
autoenc = trainAutoencoder(X,hiddenSize)
autoenc = trainAutoencoder(___,Name,Value)
возвращает автоэнкодер 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
является матрицей, то каждый столбец содержит одну выборку. Если X
является массивом ячеек данных изображения, то данные в каждой ячейке должны иметь то же количество размерностей. Данные изображения могут быть данными об интенсивности пикселей для серых изображений, в этом случае, каждая ячейка содержит m-by-n матрица. Также данные изображения могут быть данными о RGB, в этом случае, каждая ячейка содержит m-by-n-3 матрица.
Типы данных: single
| double
| cell
hiddenSize
— Размер скрытого представления автоэнкодера Размер скрытого представления автоэнкодера, заданного как положительное целочисленное значение. Этот номер является количеством нейронов в скрытом слое.
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (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].
Масштабирование данных
Индикатор, чтобы повторно масштабировать входные данные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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.