trainAutoencoder
训练一个自动编码器
语法
描述
例子
训练稀疏自编码器
加载示例数据。
X = abalone_dataset;
X是一个8 × 4177矩阵,定义了4177种不同鲍鱼壳的8个属性:性别(M、F和I(婴儿))、长度、直径、高度、全重、去壳重、内脏重、壳重。有关数据集的更多信息,请键入帮助abalone_dataset在命令行中。
用默认设置训练稀疏自动编码器。
autoenc = trainAutoencoder(X);
利用训练好的自编码器重构鲍鱼壳环数据。
xrebuild = predict(autoenc,X);
计算重构误差的均方。
mseError = mse(x - xrestructured)
mseError = 0.0167
训练自动编码器与指定的选项
加载示例数据。
X = abalone_dataset;
X是一个8 × 4177矩阵,定义了4177种不同鲍鱼壳的8个属性:性别(M、F和I(婴儿))、长度、直径、高度、全重、去壳重、内脏重、壳重。有关数据集的更多信息,请键入帮助abalone_dataset在命令行中。
训练一个隐藏大小为4400个最大epoch的稀疏自编码器,以及解码器的线性传递函数。
autoenc = trainAutoencoder(X,4,<年代p一个n年代tyle="color:#A020F0">“MaxEpochs”, 400,<年代p一个n年代tyle="color:#0000FF">…“DecoderTransferFunction”,<年代p一个n年代tyle="color:#A020F0">“purelin”);
利用训练好的自编码器重构鲍鱼壳环数据。
xrebuild = predict(autoenc,X);
计算重构误差的均方。
mseError = mse(x - xrestructured)
mseError = 0.0044
使用稀疏自编码器重建观测值
生成训练数据。
rng (0,<年代p一个n年代tyle="color:#A020F0">“旋风”);<年代p一个n年代tyle="color:#228B22">%为了重现性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,<年代p一个n年代tyle="color:#0000FF">…“EncoderTransferFunction”,<年代p一个n年代tyle="color:#A020F0">“satlin”,<年代p一个n年代tyle="color:#0000FF">…“DecoderTransferFunction”,<年代p一个n年代tyle="color:#A020F0">“purelin”,<年代p一个n年代tyle="color:#0000FF">…“L2WeightRegularization”, 0.01,<年代p一个n年代tyle="color:#0000FF">…“SparsityRegularization”4<年代p一个n年代tyle="color:#0000FF">…“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。
xconstruct = predict(autoenc,xtest');
绘制实际测试数据和预测。
图;情节(xtest<年代p一个n年代tyle="color:#A020F0">“r”。);持有<年代p一个n年代tyle="color:#A020F0">在情节(xReconstructed<年代p一个n年代tyle="color:#A020F0">“去”);
使用稀疏自编码器重建手写数字图像
加载训练数据。
XTrain = digitTrainCellArrayData;
训练数据是一个1 × 5000的单元数组,其中每个单元包含一个28 × 28的矩阵,表示一个手写数字的合成图像。
训练一个包含25个神经元的隐藏层的自编码器。
hiddenSize = 25;autoenc = trainAutoencoder(XTrain,hiddenSize,<年代p一个n年代tyle="color:#0000FF">…“L2WeightRegularization”, 0.004,<年代p一个n年代tyle="color:#0000FF">…“SparsityRegularization”4<年代p一个n年代tyle="color:#0000FF">…“SparsityProportion”, 0.15);
加载测试数据。
XTest = digitTestCellArrayData;
测试数据是一个1 × 5000单元数组,每个单元包含一个28 × 28的矩阵,表示一个手写数字的合成图像。
使用训练好的自编码器重构测试图像数据,autoenc。
xconstruct = predict(autoenc,XTest);
查看实际测试数据。
图;<年代p一个n年代tyle="color:#0000FF">为I = 1:20 subplot(4,5, I);imshow (XTest{我});<年代p一个n年代tyle="color:#0000FF">结束
查看重构后的测试数据。
图;<年代p一个n年代tyle="color:#0000FF">为I = 1:20 subplot(4,5, I);imshow (xReconstructed{我});<年代p一个n年代tyle="color:#0000FF">结束
输入参数
X- - - - - -<年代p一个n我te米prop="purpose">训练数据
矩阵|<年代p一个n我te米prop="inputvalue">图像数据的单元阵列
训练数据,指定为训练样本的矩阵或图像数据的单元数组。如果X是一个矩阵,那么每一列包含一个样本。如果X是图像数据的单元数组,则每个单元中的数据必须具有相同的维数。图像数据可以是灰度图像的像素强度数据,在这种情况下,每个单元格包含一个米——- - - - - -n矩阵。或者,图像数据可以是RGB数据,在这种情况下,每个单元格包含一个米——- - - - - -n3矩阵。
数据类型:单|双|细胞
hiddenSize- - - - - -<年代p一个n我te米prop="purpose">自动编码器的隐藏表示的大小
10(默认)|<年代p一个n我te米prop="inputvalue">正整数值
自动编码器的隐藏表示的大小,指定为正整数值。这个数字是隐藏层中神经元的数量。
数据类型:单|双
名称-值参数
指定可选的参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。
例子:“EncoderTransferFunction”、“satlin’,‘L2WeightRegularization’,0.05指定编码器的传递函数为正饱和线性传递函数,L2权正则化为0.05。
EncoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">编码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
编码器的传递函数,指定为由逗号分隔的对组成“EncoderTransferFunction”还有下面的一个。
传递函数选项
定义
“logsig”
Logistic s型函数
“satlin”
正饱和线性传递函数
例子:“EncoderTransferFunction”、“satlin”
DecoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">解码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
|<年代p一个n我te米prop="inputvalue">“purelin”
解码器的传递函数,指定为由逗号分隔的对组成“DecoderTransferFunction”还有下面的一个。
传递函数选项
定义
“logsig”
Logistic s型函数
“satlin”
正饱和线性传递函数
“purelin”
线性传递函数
例子:“DecoderTransferFunction”、“purelin”
MaxEpochs- - - - - -<年代p一个n我te米prop="purpose">最大训练次数
1000(默认)|<年代p一个n我te米prop="inputvalue">正整数值
训练epoch或迭代的最大次数,指定为由逗号分隔的对“MaxEpochs”一个正整数。
例子:“MaxEpochs”,1200年
L2WeightRegularization- - - - - -<年代p一个n我te米prop="purpose">L的系数<年代ub>2体重调整
0.001(默认)|<年代p一个n我te米prop="inputvalue">正标量值
的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l<年代ub>2体重调整在成本函数(<一个href="#buxdjrt-LossFunction" class="intrnllnk">LossFunction),指定为由逗号分隔的对“L2WeightRegularization”一个正的标量值。
例子:“L2WeightRegularization”,0.05
LossFunction- - - - - -<年代p一个n我te米prop="purpose">损失函数用于训练
“msesparse”
(默认)
用于训练的损失函数,指定为由逗号分隔的对组成“LossFunction”和“msesparse”。它对应于训练a调整后的均方误差函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder如下:
在哪里λ的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l2正则化项和β的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏正则化项。的值λ和β通过使用<一个href="#buxdjrt-L2WeightRegularization" class="intrnllnk">L2WeightRegularization和<一个href="#buxdjrt-SparsityRegularization" class="intrnllnk">SparsityRegularization在训练自动编码器时分别使用名称-值对参数。
ShowProgressWindow- - - - - -<年代p一个n我te米prop="purpose">显示培训窗口的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示器显示训练窗口,指定为逗号分隔对组成“ShowProgressWindow”,要么真正的或假。
例子:“ShowProgressWindow”,假的
SparsityProportion- - - - - -<年代p一个n我te米prop="purpose">神经元反应的训练样本的期望比例
0.05(默认)|<年代p一个n我te米prop="inputvalue">0到1范围内的正标量值
一个神经元反应的训练样本的期望比例,指定为由逗号分隔的对组成“SparsityProportion”一个正的标量值。稀疏比例是稀疏正则化器的一个参数。它控制隐藏层输出的稀疏性。SparsityProportion的低值通常会导致隐藏层中的每个神经元只对少量训练示例给出高输出,从而“专一化”。因此,低稀疏度比例鼓励更高的稀疏度。看到<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏Autoencoders。
例子:“SparsityProportion”,0.01相当于说隐藏层中的每个神经元在训练样本上的平均输出应该是0.1。
SparsityRegularization- - - - - -<年代p一个n我te米prop="purpose">控制稀疏性正则化器影响的系数
1(默认)|<年代p一个n我te米prop="inputvalue">正标量值
控制影响的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏调整在代价函数中,指定为由逗号分隔的对组成“SparsityRegularization”一个正的标量值。
例子:“SparsityRegularization”,1.6
TrainingAlgorithm- - - - - -<年代p一个n我te米prop="purpose">用于训练自动编码器的算法
“trainscg”
(默认)
用于训练自动编码器的算法,指定为由逗号分隔的对“TrainingAlgorithm”和“trainscg”。它代表缩放共轭梯度下降<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[1]。
ScaleData- - - - - -<年代p一个n我te米prop="purpose">用于重新调整输入数据的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示符用于重新调整输入数据,指定为由逗号分隔的对组成“ScaleData”,要么真正的或假。
自动编码器试图在其输出中复制其输入。为了使其成为可能,输入数据的范围必须与解码器的传递函数的范围相匹配。trainAutoencoder在训练自动编码器时自动缩放训练数据到此范围。如果在训练自动编码器时对数据进行缩放,则预测,编码,解码方法还对数据进行缩放。
例子:“ScaleData”,假的
UseGPU- - - - - -<年代p一个n我te米prop="purpose">指示器使用GPU进行训练
假
(默认)|<年代p一个n我te米prop="inputvalue">真正的
指示器使用GPU进行训练,指定为逗号分隔对组成“UseGPU”,要么真正的或假。
例子:“UseGPU”,真的
输出参数
autoenc-训练有素的自动编码器Autoencoder对象
经过训练的自动编码器,返回为Autoencoder对象。有关此对象的属性和方法的信息,请参见Autoencoder类页面。
更多关于
Autoencoders
自动编码器是一种神经网络,它被训练成在输出时复制其输入。自动编码器可以作为学习深度神经网络的工具。训练自动编码器是无监督的,因为不需要标记数据。训练过程仍然是基于成本函数的优化。代价函数测量输入之间的误差x以及它在输出处的重构<年代p一个nclass="inlineequation">
。
自动编码器由编码器和解码器组成。编码器和解码器可以有多个层,但为了简单起见,假设它们每个都只有一个层。
如果自动编码器的输入是矢量<年代p一个nclass="inlineequation">
,然后编码器映射向量x到另一个向量<年代p一个nclass="inlineequation">
如下:
其中上标(1)表示第一层。<年代p一个nclass="inlineequation">
是编码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。然后,解码器映射编码表示z回到对原始输入向量的估计,x,详情如下:
其中上标(2)表示第二层。<年代p一个nclass="inlineequation">
为解码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。
稀疏Autoencoders
通过向代价函数中添加正则化器,可以提高自编码器的稀疏性<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]。这个正则器是一个神经元平均输出激活值的函数。神经元的平均输出激活量我定义为:
在哪里n是训练样例的总数。x<年代ub>j是j训练的例子,<年代p一个nclass="inlineequation">
是我权矩阵的第一行<年代p一个nclass="inlineequation">
,<年代p一个nclass="inlineequation">
是我偏置向量的这一项,<年代p一个nclass="inlineequation">
。如果一个神经元的输出激活值很高,就被认为是“放电”。低的输出激活值意味着隐藏层中的神经元会对少量的训练样本做出响应。向成本函数中添加约束值的项<年代p一个nclass="inlineequation">
低会鼓励自编码器学习一种表示,其中隐藏层中的每个神经元都发射到少量的训练样本。也就是说,每个神经元通过响应只存在于一小部分训练样本中的某些特征来进行专业化。
稀疏正则化
稀疏性正则化器试图对隐藏层输出的稀疏性施加约束。可以通过添加一个正则化项来鼓励稀疏性,该正则化项在平均激活值时取较大的值,<年代p一个nclass="inlineequation">
神经元的我它的期望值,<年代p一个nclass="inlineequation">
的价值并不接近<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]。一个这样的稀疏正则化项可以是Kullback-Leibler散度。
Kullback-Leibler散度是衡量两个分布差异程度的函数。在本例中,当<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
是相等的,当它们彼此分开时变得更大。最小化成本函数会使这一项变小,因此<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
彼此靠近。方法定义平均激活值的期望值<一个href="#buxdjrt-SparsityProportion" class="intrnllnk">SparsityProportion在训练自动编码器时使用名称-值对参数。
l<年代ub>2正则化
当训练稀疏自编码器时,可以通过增加权值来使稀疏正则化器变小w(左)的值递减z(1)[2]。在代价函数的权重上添加正则化项可以防止这种情况发生。这一项叫做L<年代ub>2正则化项,定义为:
在哪里l为隐藏层数,n<年代ub>l层的输出大小是多少l,k<年代ub>l层的输入大小是多少l。L<年代ub>2正则化项是每层权重矩阵的平方元素之和。
成本函数
训练a的代价函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder为调整后均方误差函数,如下:
在哪里λ的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l2正则化项和β的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏正则化项。的值λ和β通过使用<一个href="#buxdjrt-L2WeightRegularization" class="intrnllnk">L2WeightRegularization和<一个href="#buxdjrt-SparsityRegularization" class="intrnllnk">SparsityRegularization在训练自动编码器时分别使用名称-值对参数。
参考文献
[10] M. F. Moller,“一种用于快速监督学习的缩放共轭梯度算法”,神经网络, 1993年第6卷,第525-533页。
B. A.奥尔斯豪森和D. J.菲尔德。具有过完备基集的稀疏编码:一种V1采用的策略。视觉研究, Vol.37, 1997, pp.3311-3325。
版本历史
在R2015b中引入
另请参阅
trainSoftmaxLayer
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">Autoencoder
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">编码
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">堆栈
例子
训练稀疏自编码器
加载示例数据。
X = abalone_dataset;
X是一个8 × 4177矩阵,定义了4177种不同鲍鱼壳的8个属性:性别(M、F和I(婴儿))、长度、直径、高度、全重、去壳重、内脏重、壳重。有关数据集的更多信息,请键入帮助abalone_dataset在命令行中。
用默认设置训练稀疏自动编码器。
autoenc = trainAutoencoder(X);
利用训练好的自编码器重构鲍鱼壳环数据。
xrebuild = predict(autoenc,X);
计算重构误差的均方。
mseError = mse(x - xrestructured)
mseError = 0.0167
训练自动编码器与指定的选项
加载示例数据。
X = abalone_dataset;
X是一个8 × 4177矩阵,定义了4177种不同鲍鱼壳的8个属性:性别(M、F和I(婴儿))、长度、直径、高度、全重、去壳重、内脏重、壳重。有关数据集的更多信息,请键入帮助abalone_dataset在命令行中。
训练一个隐藏大小为4400个最大epoch的稀疏自编码器,以及解码器的线性传递函数。
autoenc = trainAutoencoder(X,4,<年代p一个n年代tyle="color:#A020F0">“MaxEpochs”, 400,<年代p一个n年代tyle="color:#0000FF">…“DecoderTransferFunction”,<年代p一个n年代tyle="color:#A020F0">“purelin”);
利用训练好的自编码器重构鲍鱼壳环数据。
xrebuild = predict(autoenc,X);
计算重构误差的均方。
mseError = mse(x - xrestructured)
mseError = 0.0044
使用稀疏自编码器重建观测值
生成训练数据。
rng (0,<年代p一个n年代tyle="color:#A020F0">“旋风”);<年代p一个n年代tyle="color:#228B22">%为了重现性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,<年代p一个n年代tyle="color:#0000FF">…“EncoderTransferFunction”,<年代p一个n年代tyle="color:#A020F0">“satlin”,<年代p一个n年代tyle="color:#0000FF">…“DecoderTransferFunction”,<年代p一个n年代tyle="color:#A020F0">“purelin”,<年代p一个n年代tyle="color:#0000FF">…“L2WeightRegularization”, 0.01,<年代p一个n年代tyle="color:#0000FF">…“SparsityRegularization”4<年代p一个n年代tyle="color:#0000FF">…“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。
xconstruct = predict(autoenc,xtest');
绘制实际测试数据和预测。
图;情节(xtest<年代p一个n年代tyle="color:#A020F0">“r”。);持有<年代p一个n年代tyle="color:#A020F0">在情节(xReconstructed<年代p一个n年代tyle="color:#A020F0">“去”);
使用稀疏自编码器重建手写数字图像
加载训练数据。
XTrain = digitTrainCellArrayData;
训练数据是一个1 × 5000的单元数组,其中每个单元包含一个28 × 28的矩阵,表示一个手写数字的合成图像。
训练一个包含25个神经元的隐藏层的自编码器。
hiddenSize = 25;autoenc = trainAutoencoder(XTrain,hiddenSize,<年代p一个n年代tyle="color:#0000FF">…“L2WeightRegularization”, 0.004,<年代p一个n年代tyle="color:#0000FF">…“SparsityRegularization”4<年代p一个n年代tyle="color:#0000FF">…“SparsityProportion”, 0.15);
加载测试数据。
XTest = digitTestCellArrayData;
测试数据是一个1 × 5000单元数组,每个单元包含一个28 × 28的矩阵,表示一个手写数字的合成图像。
使用训练好的自编码器重构测试图像数据,autoenc。
xconstruct = predict(autoenc,XTest);
查看实际测试数据。
图;<年代p一个n年代tyle="color:#0000FF">为I = 1:20 subplot(4,5, I);imshow (XTest{我});<年代p一个n年代tyle="color:#0000FF">结束
查看重构后的测试数据。
图;<年代p一个n年代tyle="color:#0000FF">为I = 1:20 subplot(4,5, I);imshow (xReconstructed{我});<年代p一个n年代tyle="color:#0000FF">结束
训练稀疏自编码器
加载示例数据。 用默认设置训练稀疏自动编码器。 利用训练好的自编码器重构鲍鱼壳环数据。 计算重构误差的均方。X = abalone_dataset;
X
autoenc = trainAutoencoder(X);
xrebuild = predict(autoenc,X);
mseError = mse(x - xrestructured)
mseError = 0.0167
训练自动编码器与指定的选项
加载示例数据。 训练一个隐藏大小为4400个最大epoch的稀疏自编码器,以及解码器的线性传递函数。 利用训练好的自编码器重构鲍鱼壳环数据。 计算重构误差的均方。X = abalone_dataset;
X
autoenc = trainAutoencoder(X,4,<年代p一个n年代tyle="color:#A020F0">“MaxEpochs”
xrebuild = predict(autoenc,X);
mseError = mse(x - xrestructured)
mseError = 0.0044
使用稀疏自编码器重建观测值
生成训练数据。 使用训练数据训练自动编码器。 生成测试数据。 使用经过训练的自动编码器预测测试数据, 绘制实际测试数据和预测。rng (0,<年代p一个n年代tyle="color:#A020F0">“旋风”
hiddenSize = 25;autoenc = trainAutoencoder(x',hiddenSize,<年代p一个n年代tyle="color:#0000FF">…
N = 1000;R = sort(-10 + 20*rand(n,1));Xtest = 1 + r*5e-2 + sin(r)/r + 0.4*randn(n,1);
xconstruct = predict(autoenc,xtest');
图;情节(xtest<年代p一个n年代tyle="color:#A020F0">“r”。
使用稀疏自编码器重建手写数字图像
加载训练数据。 训练数据是一个1 × 5000的单元数组,其中每个单元包含一个28 × 28的矩阵,表示一个手写数字的合成图像。 训练一个包含25个神经元的隐藏层的自编码器。 加载测试数据。 测试数据是一个1 × 5000单元数组,每个单元包含一个28 × 28的矩阵,表示一个手写数字的合成图像。 使用训练好的自编码器重构测试图像数据, 查看实际测试数据。 查看重构后的测试数据。XTrain = digitTrainCellArrayData;
hiddenSize = 25;autoenc = trainAutoencoder(XTrain,hiddenSize,<年代p一个n年代tyle="color:#0000FF">…
XTest = digitTestCellArrayData;
xconstruct = predict(autoenc,XTest);
图;<年代p一个n年代tyle="color:#0000FF">为
图;<年代p一个n年代tyle="color:#0000FF">为
输入参数
X- - - - - -<年代p一个n我te米prop="purpose">训练数据
矩阵|<年代p一个n我te米prop="inputvalue">图像数据的单元阵列
训练数据,指定为训练样本的矩阵或图像数据的单元数组。如果X是一个矩阵,那么每一列包含一个样本。如果X是图像数据的单元数组,则每个单元中的数据必须具有相同的维数。图像数据可以是灰度图像的像素强度数据,在这种情况下,每个单元格包含一个米——- - - - - -n矩阵。或者,图像数据可以是RGB数据,在这种情况下,每个单元格包含一个米——- - - - - -n3矩阵。
数据类型:单|双|细胞
hiddenSize- - - - - -<年代p一个n我te米prop="purpose">自动编码器的隐藏表示的大小
10(默认)|<年代p一个n我te米prop="inputvalue">正整数值
自动编码器的隐藏表示的大小,指定为正整数值。这个数字是隐藏层中神经元的数量。
数据类型:单|双
名称-值参数
指定可选的参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。
例子:“EncoderTransferFunction”、“satlin’,‘L2WeightRegularization’,0.05指定编码器的传递函数为正饱和线性传递函数,L2权正则化为0.05。
EncoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">编码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
编码器的传递函数,指定为由逗号分隔的对组成“EncoderTransferFunction”还有下面的一个。
传递函数选项
定义
“logsig”
Logistic s型函数
“satlin”
正饱和线性传递函数
例子:“EncoderTransferFunction”、“satlin”
DecoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">解码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
|<年代p一个n我te米prop="inputvalue">“purelin”
解码器的传递函数,指定为由逗号分隔的对组成“DecoderTransferFunction”还有下面的一个。
传递函数选项
定义
“logsig”
Logistic s型函数
“satlin”
正饱和线性传递函数
“purelin”
线性传递函数
例子:“DecoderTransferFunction”、“purelin”
MaxEpochs- - - - - -<年代p一个n我te米prop="purpose">最大训练次数
1000(默认)|<年代p一个n我te米prop="inputvalue">正整数值
训练epoch或迭代的最大次数,指定为由逗号分隔的对“MaxEpochs”一个正整数。
例子:“MaxEpochs”,1200年
L2WeightRegularization- - - - - -<年代p一个n我te米prop="purpose">L的系数<年代ub>2体重调整
0.001(默认)|<年代p一个n我te米prop="inputvalue">正标量值
的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l<年代ub>2体重调整在成本函数(<一个href="#buxdjrt-LossFunction" class="intrnllnk">LossFunction),指定为由逗号分隔的对“L2WeightRegularization”一个正的标量值。
例子:“L2WeightRegularization”,0.05
LossFunction- - - - - -<年代p一个n我te米prop="purpose">损失函数用于训练
“msesparse”
(默认)
用于训练的损失函数,指定为由逗号分隔的对组成“LossFunction”和“msesparse”。它对应于训练a调整后的均方误差函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder如下:
在哪里λ的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l2正则化项和β的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏正则化项。的值λ和β通过使用<一个href="#buxdjrt-L2WeightRegularization" class="intrnllnk">L2WeightRegularization和<一个href="#buxdjrt-SparsityRegularization" class="intrnllnk">SparsityRegularization在训练自动编码器时分别使用名称-值对参数。
ShowProgressWindow- - - - - -<年代p一个n我te米prop="purpose">显示培训窗口的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示器显示训练窗口,指定为逗号分隔对组成“ShowProgressWindow”,要么真正的或假。
例子:“ShowProgressWindow”,假的
SparsityProportion- - - - - -<年代p一个n我te米prop="purpose">神经元反应的训练样本的期望比例
0.05(默认)|<年代p一个n我te米prop="inputvalue">0到1范围内的正标量值
一个神经元反应的训练样本的期望比例,指定为由逗号分隔的对组成“SparsityProportion”一个正的标量值。稀疏比例是稀疏正则化器的一个参数。它控制隐藏层输出的稀疏性。SparsityProportion的低值通常会导致隐藏层中的每个神经元只对少量训练示例给出高输出,从而“专一化”。因此,低稀疏度比例鼓励更高的稀疏度。看到<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏Autoencoders。
例子:“SparsityProportion”,0.01相当于说隐藏层中的每个神经元在训练样本上的平均输出应该是0.1。
SparsityRegularization- - - - - -<年代p一个n我te米prop="purpose">控制稀疏性正则化器影响的系数
1(默认)|<年代p一个n我te米prop="inputvalue">正标量值
控制影响的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏调整在代价函数中,指定为由逗号分隔的对组成“SparsityRegularization”一个正的标量值。
例子:“SparsityRegularization”,1.6
TrainingAlgorithm- - - - - -<年代p一个n我te米prop="purpose">用于训练自动编码器的算法
“trainscg”
(默认)
用于训练自动编码器的算法,指定为由逗号分隔的对“TrainingAlgorithm”和“trainscg”。它代表缩放共轭梯度下降<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[1]。
ScaleData- - - - - -<年代p一个n我te米prop="purpose">用于重新调整输入数据的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示符用于重新调整输入数据,指定为由逗号分隔的对组成“ScaleData”,要么真正的或假。
自动编码器试图在其输出中复制其输入。为了使其成为可能,输入数据的范围必须与解码器的传递函数的范围相匹配。trainAutoencoder在训练自动编码器时自动缩放训练数据到此范围。如果在训练自动编码器时对数据进行缩放,则预测,编码,解码方法还对数据进行缩放。
例子:“ScaleData”,假的
UseGPU- - - - - -<年代p一个n我te米prop="purpose">指示器使用GPU进行训练
假
(默认)|<年代p一个n我te米prop="inputvalue">真正的
指示器使用GPU进行训练,指定为逗号分隔对组成“UseGPU”,要么真正的或假。
例子:“UseGPU”,真的
X- - - - - -<年代p一个n我te米prop="purpose">训练数据
矩阵|<年代p一个n我te米prop="inputvalue">图像数据的单元阵列
矩阵
训练数据,指定为训练样本的矩阵或图像数据的单元数组。如果 数据类型:单
hiddenSize- - - - - -<年代p一个n我te米prop="purpose">自动编码器的隐藏表示的大小
10(默认)|<年代p一个n我te米prop="inputvalue">正整数值
10
自动编码器的隐藏表示的大小,指定为正整数值。这个数字是隐藏层中神经元的数量。 数据类型:单
名称-值参数
指定可选的参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。
例子:“EncoderTransferFunction”、“satlin’,‘L2WeightRegularization’,0.05指定编码器的传递函数为正饱和线性传递函数,L2权正则化为0.05。
EncoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">编码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
编码器的传递函数,指定为由逗号分隔的对组成“EncoderTransferFunction”还有下面的一个。
传递函数选项
定义
“logsig”
Logistic s型函数
“satlin”
正饱和线性传递函数
例子:“EncoderTransferFunction”、“satlin”
DecoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">解码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
|<年代p一个n我te米prop="inputvalue">“purelin”
解码器的传递函数,指定为由逗号分隔的对组成“DecoderTransferFunction”还有下面的一个。
传递函数选项
定义
“logsig”
Logistic s型函数
“satlin”
正饱和线性传递函数
“purelin”
线性传递函数
例子:“DecoderTransferFunction”、“purelin”
MaxEpochs- - - - - -<年代p一个n我te米prop="purpose">最大训练次数
1000(默认)|<年代p一个n我te米prop="inputvalue">正整数值
训练epoch或迭代的最大次数,指定为由逗号分隔的对“MaxEpochs”一个正整数。
例子:“MaxEpochs”,1200年
L2WeightRegularization- - - - - -<年代p一个n我te米prop="purpose">L的系数<年代ub>2体重调整
0.001(默认)|<年代p一个n我te米prop="inputvalue">正标量值
的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l<年代ub>2体重调整在成本函数(<一个href="#buxdjrt-LossFunction" class="intrnllnk">LossFunction),指定为由逗号分隔的对“L2WeightRegularization”一个正的标量值。
例子:“L2WeightRegularization”,0.05
LossFunction- - - - - -<年代p一个n我te米prop="purpose">损失函数用于训练
“msesparse”
(默认)
用于训练的损失函数,指定为由逗号分隔的对组成“LossFunction”和“msesparse”。它对应于训练a调整后的均方误差函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder如下:
在哪里λ的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l2正则化项和β的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏正则化项。的值λ和β通过使用<一个href="#buxdjrt-L2WeightRegularization" class="intrnllnk">L2WeightRegularization和<一个href="#buxdjrt-SparsityRegularization" class="intrnllnk">SparsityRegularization在训练自动编码器时分别使用名称-值对参数。
ShowProgressWindow- - - - - -<年代p一个n我te米prop="purpose">显示培训窗口的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示器显示训练窗口,指定为逗号分隔对组成“ShowProgressWindow”,要么真正的或假。
例子:“ShowProgressWindow”,假的
SparsityProportion- - - - - -<年代p一个n我te米prop="purpose">神经元反应的训练样本的期望比例
0.05(默认)|<年代p一个n我te米prop="inputvalue">0到1范围内的正标量值
一个神经元反应的训练样本的期望比例,指定为由逗号分隔的对组成“SparsityProportion”一个正的标量值。稀疏比例是稀疏正则化器的一个参数。它控制隐藏层输出的稀疏性。SparsityProportion的低值通常会导致隐藏层中的每个神经元只对少量训练示例给出高输出,从而“专一化”。因此,低稀疏度比例鼓励更高的稀疏度。看到<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏Autoencoders。
例子:“SparsityProportion”,0.01相当于说隐藏层中的每个神经元在训练样本上的平均输出应该是0.1。
SparsityRegularization- - - - - -<年代p一个n我te米prop="purpose">控制稀疏性正则化器影响的系数
1(默认)|<年代p一个n我te米prop="inputvalue">正标量值
控制影响的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏调整在代价函数中,指定为由逗号分隔的对组成“SparsityRegularization”一个正的标量值。
例子:“SparsityRegularization”,1.6
TrainingAlgorithm- - - - - -<年代p一个n我te米prop="purpose">用于训练自动编码器的算法
“trainscg”
(默认)
用于训练自动编码器的算法,指定为由逗号分隔的对“TrainingAlgorithm”和“trainscg”。它代表缩放共轭梯度下降<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[1]。
ScaleData- - - - - -<年代p一个n我te米prop="purpose">用于重新调整输入数据的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示符用于重新调整输入数据,指定为由逗号分隔的对组成“ScaleData”,要么真正的或假。
自动编码器试图在其输出中复制其输入。为了使其成为可能,输入数据的范围必须与解码器的传递函数的范围相匹配。trainAutoencoder在训练自动编码器时自动缩放训练数据到此范围。如果在训练自动编码器时对数据进行缩放,则预测,编码,解码方法还对数据进行缩放。
例子:“ScaleData”,假的
UseGPU- - - - - -<年代p一个n我te米prop="purpose">指示器使用GPU进行训练
假
(默认)|<年代p一个n我te米prop="inputvalue">真正的
指示器使用GPU进行训练,指定为逗号分隔对组成“UseGPU”,要么真正的或假。
例子:“UseGPU”,真的
指定可选的参数对为 在R2021a之前,使用逗号分隔每个名称和值,并将其括起来 例子:名字
“EncoderTransferFunction”、“satlin’,‘L2WeightRegularization’,0.05
EncoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">编码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
编码器的传递函数,指定为由逗号分隔的对组成 Logistic s型函数
正饱和线性传递函数
例子:
传递函数选项 定义
“logsig”
“satlin”
“EncoderTransferFunction”、“satlin”
DecoderTransferFunction- - - - - -<年代p一个n我te米prop="purpose">解码器的传递函数
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
|<年代p一个n我te米prop="inputvalue">“purelin”
“logsig”
(默认)|<年代p一个n我te米prop="inputvalue">“satlin”
|<年代p一个n我te米prop="inputvalue">“purelin”
解码器的传递函数,指定为由逗号分隔的对组成 Logistic s型函数
正饱和线性传递函数
线性传递函数
例子:
传递函数选项 定义
“logsig”
“satlin”
“purelin”
“DecoderTransferFunction”、“purelin”
MaxEpochs- - - - - -<年代p一个n我te米prop="purpose">最大训练次数
1000(默认)|<年代p一个n我te米prop="inputvalue">正整数值
1000
训练epoch或迭代的最大次数,指定为由逗号分隔的对 例子:“MaxEpochs”,1200年
L2WeightRegularization- - - - - -<年代p一个n我te米prop="purpose">L的系数<年代ub>2体重调整
0.001(默认)|<年代p一个n我te米prop="inputvalue">正标量值
0.001
的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l<年代ub>2 例子:LossFunction
“L2WeightRegularization”,0.05
LossFunction- - - - - -<年代p一个n我te米prop="purpose">损失函数用于训练
“msesparse”
(默认)
“msesparse”
(默认)用于训练的损失函数,指定为由逗号分隔的对组成
在哪里L2WeightRegularization
SparsityRegularization
ShowProgressWindow- - - - - -<年代p一个n我te米prop="purpose">显示培训窗口的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示器显示训练窗口,指定为逗号分隔对组成 例子:“ShowProgressWindow”,假的
SparsityProportion- - - - - -<年代p一个n我te米prop="purpose">神经元反应的训练样本的期望比例
0.05(默认)|<年代p一个n我te米prop="inputvalue">0到1范围内的正标量值
0.05
一个神经元反应的训练样本的期望比例,指定为由逗号分隔的对组成 例子:“SparsityProportion”,0.01
SparsityRegularization- - - - - -<年代p一个n我te米prop="purpose">控制稀疏性正则化器影响的系数
1(默认)|<年代p一个n我te米prop="inputvalue">正标量值
1
控制影响的系数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏调整 例子:“SparsityRegularization”,1.6
TrainingAlgorithm- - - - - -<年代p一个n我te米prop="purpose">用于训练自动编码器的算法
“trainscg”
(默认)
“trainscg”
(默认)用于训练自动编码器的算法,指定为由逗号分隔的对
ScaleData- - - - - -<年代p一个n我te米prop="purpose">用于重新调整输入数据的指示器
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
真正的
(默认)|<年代p一个n我te米prop="inputvalue">假
指示符用于重新调整输入数据,指定为由逗号分隔的对组成 自动编码器试图在其输出中复制其输入。为了使其成为可能,输入数据的范围必须与解码器的传递函数的范围相匹配。 例子:“ScaleData”,假的
UseGPU- - - - - -<年代p一个n我te米prop="purpose">指示器使用GPU进行训练
假
(默认)|<年代p一个n我te米prop="inputvalue">真正的
假
(默认)|<年代p一个n我te米prop="inputvalue">真正的
指示器使用GPU进行训练,指定为逗号分隔对组成 例子:“UseGPU”,真的
输出参数
autoenc-训练有素的自动编码器Autoencoder对象
经过训练的自动编码器,返回为Autoencoder对象。有关此对象的属性和方法的信息,请参见Autoencoder类页面。
autoenc-训练有素的自动编码器Autoencoder对象
Autoencoder对象
经过训练的自动编码器,返回为
更多关于
Autoencoders
自动编码器是一种神经网络,它被训练成在输出时复制其输入。自动编码器可以作为学习深度神经网络的工具。训练自动编码器是无监督的,因为不需要标记数据。训练过程仍然是基于成本函数的优化。代价函数测量输入之间的误差x以及它在输出处的重构<年代p一个nclass="inlineequation">
。
自动编码器由编码器和解码器组成。编码器和解码器可以有多个层,但为了简单起见,假设它们每个都只有一个层。
如果自动编码器的输入是矢量<年代p一个nclass="inlineequation">
,然后编码器映射向量x到另一个向量<年代p一个nclass="inlineequation">
如下:
其中上标(1)表示第一层。<年代p一个nclass="inlineequation">
是编码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。然后,解码器映射编码表示z回到对原始输入向量的估计,x,详情如下:
其中上标(2)表示第二层。<年代p一个nclass="inlineequation">
为解码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。
稀疏Autoencoders
通过向代价函数中添加正则化器,可以提高自编码器的稀疏性<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]。这个正则器是一个神经元平均输出激活值的函数。神经元的平均输出激活量我定义为:
在哪里n是训练样例的总数。x<年代ub>j是j训练的例子,<年代p一个nclass="inlineequation">
是我权矩阵的第一行<年代p一个nclass="inlineequation">
,<年代p一个nclass="inlineequation">
是我偏置向量的这一项,<年代p一个nclass="inlineequation">
。如果一个神经元的输出激活值很高,就被认为是“放电”。低的输出激活值意味着隐藏层中的神经元会对少量的训练样本做出响应。向成本函数中添加约束值的项<年代p一个nclass="inlineequation">
低会鼓励自编码器学习一种表示,其中隐藏层中的每个神经元都发射到少量的训练样本。也就是说,每个神经元通过响应只存在于一小部分训练样本中的某些特征来进行专业化。
稀疏正则化
稀疏性正则化器试图对隐藏层输出的稀疏性施加约束。可以通过添加一个正则化项来鼓励稀疏性,该正则化项在平均激活值时取较大的值,<年代p一个nclass="inlineequation">
神经元的我它的期望值,<年代p一个nclass="inlineequation">
的价值并不接近<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]。一个这样的稀疏正则化项可以是Kullback-Leibler散度。
Kullback-Leibler散度是衡量两个分布差异程度的函数。在本例中,当<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
是相等的,当它们彼此分开时变得更大。最小化成本函数会使这一项变小,因此<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
彼此靠近。方法定义平均激活值的期望值<一个href="#buxdjrt-SparsityProportion" class="intrnllnk">SparsityProportion在训练自动编码器时使用名称-值对参数。
l<年代ub>2正则化
当训练稀疏自编码器时,可以通过增加权值来使稀疏正则化器变小w(左)的值递减z(1)[2]。在代价函数的权重上添加正则化项可以防止这种情况发生。这一项叫做L<年代ub>2正则化项,定义为:
在哪里l为隐藏层数,n<年代ub>l层的输出大小是多少l,k<年代ub>l层的输入大小是多少l。L<年代ub>2正则化项是每层权重矩阵的平方元素之和。
成本函数
训练a的代价函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder为调整后均方误差函数,如下:
在哪里λ的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l2正则化项和β的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏正则化项。的值λ和β通过使用<一个href="#buxdjrt-L2WeightRegularization" class="intrnllnk">L2WeightRegularization和<一个href="#buxdjrt-SparsityRegularization" class="intrnllnk">SparsityRegularization在训练自动编码器时分别使用名称-值对参数。
Autoencoders
自动编码器是一种神经网络,它被训练成在输出时复制其输入。自动编码器可以作为学习深度神经网络的工具。训练自动编码器是无监督的,因为不需要标记数据。训练过程仍然是基于成本函数的优化。代价函数测量输入之间的误差x以及它在输出处的重构<年代p一个nclass="inlineequation">
。
自动编码器由编码器和解码器组成。编码器和解码器可以有多个层,但为了简单起见,假设它们每个都只有一个层。
如果自动编码器的输入是矢量<年代p一个nclass="inlineequation">
,然后编码器映射向量x到另一个向量<年代p一个nclass="inlineequation">
如下:
其中上标(1)表示第一层。<年代p一个nclass="inlineequation">
是编码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。然后,解码器映射编码表示z回到对原始输入向量的估计,x,详情如下:
其中上标(2)表示第二层。<年代p一个nclass="inlineequation">
为解码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。
自动编码器是一种神经网络,它被训练成在输出时复制其输入。自动编码器可以作为学习深度神经网络的工具。训练自动编码器是无监督的,因为不需要标记数据。训练过程仍然是基于成本函数的优化。代价函数测量输入之间的误差 自动编码器由编码器和解码器组成。编码器和解码器可以有多个层,但为了简单起见,假设它们每个都只有一个层。 如果自动编码器的输入是矢量<年代p一个nclass="inlineequation">
,然后编码器映射向量
其中上标(1)表示第一层。<年代p一个nclass="inlineequation">
是编码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。然后,解码器映射编码表示
其中上标(2)表示第二层。<年代p一个nclass="inlineequation">
为解码器的传递函数,<年代p一个nclass="inlineequation">
是一个权矩阵,然后呢<年代p一个nclass="inlineequation">
是一个偏置向量。
稀疏Autoencoders
通过向代价函数中添加正则化器,可以提高自编码器的稀疏性<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]。这个正则器是一个神经元平均输出激活值的函数。神经元的平均输出激活量我定义为:
在哪里n是训练样例的总数。x<年代ub>j是j训练的例子,<年代p一个nclass="inlineequation">
是我权矩阵的第一行<年代p一个nclass="inlineequation">
,<年代p一个nclass="inlineequation">
是我偏置向量的这一项,<年代p一个nclass="inlineequation">
。如果一个神经元的输出激活值很高,就被认为是“放电”。低的输出激活值意味着隐藏层中的神经元会对少量的训练样本做出响应。向成本函数中添加约束值的项<年代p一个nclass="inlineequation">
低会鼓励自编码器学习一种表示,其中隐藏层中的每个神经元都发射到少量的训练样本。也就是说,每个神经元通过响应只存在于一小部分训练样本中的某些特征来进行专业化。
通过向代价函数中添加正则化器,可以提高自编码器的稀疏性<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]
在哪里
稀疏正则化
稀疏性正则化器试图对隐藏层输出的稀疏性施加约束。可以通过添加一个正则化项来鼓励稀疏性,该正则化项在平均激活值时取较大的值,<年代p一个nclass="inlineequation">
神经元的我它的期望值,<年代p一个nclass="inlineequation">
的价值并不接近<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">[2]。一个这样的稀疏正则化项可以是Kullback-Leibler散度。
Kullback-Leibler散度是衡量两个分布差异程度的函数。在本例中,当<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
是相等的,当它们彼此分开时变得更大。最小化成本函数会使这一项变小,因此<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
彼此靠近。方法定义平均激活值的期望值<一个href="#buxdjrt-SparsityProportion" class="intrnllnk">SparsityProportion在训练自动编码器时使用名称-值对参数。
稀疏性正则化器试图对隐藏层输出的稀疏性施加约束。可以通过添加一个正则化项来鼓励稀疏性,该正则化项在平均激活值时取较大的值,<年代p一个nclass="inlineequation">
神经元的
Kullback-Leibler散度是衡量两个分布差异程度的函数。在本例中,当<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
是相等的,当它们彼此分开时变得更大。最小化成本函数会使这一项变小,因此<年代p一个nclass="inlineequation">
和<年代p一个nclass="inlineequation">
彼此靠近。方法定义平均激活值的期望值<一个href="#buxdjrt-SparsityProportion" class="intrnllnk">SparsityProportion
l<年代ub>2正则化
当训练稀疏自编码器时,可以通过增加权值来使稀疏正则化器变小w(左)的值递减z(1)[2]。在代价函数的权重上添加正则化项可以防止这种情况发生。这一项叫做L<年代ub>2正则化项,定义为:
在哪里l为隐藏层数,n<年代ub>l层的输出大小是多少l,k<年代ub>l层的输入大小是多少l。L<年代ub>2正则化项是每层权重矩阵的平方元素之和。
当训练稀疏自编码器时,可以通过增加权值来使稀疏正则化器变小
在哪里
成本函数
训练a的代价函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder为调整后均方误差函数,如下:
在哪里λ的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">l2正则化项和β的系数是<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏正则化项。的值λ和β通过使用<一个href="#buxdjrt-L2WeightRegularization" class="intrnllnk">L2WeightRegularization和<一个href="#buxdjrt-SparsityRegularization" class="intrnllnk">SparsityRegularization在训练自动编码器时分别使用名称-值对参数。
训练a的代价函数<一个href="//www.tianjin-qmedu.com/help/deeplearning/ref/trainautoencoder.html" class="intrnllnk">稀疏autoencoder
在哪里L2WeightRegularization
SparsityRegularization
参考文献
[10] M. F. Moller,“一种用于快速监督学习的缩放共轭梯度算法”,神经网络, 1993年第6卷,第525-533页。
B. A.奥尔斯豪森和D. J.菲尔德。具有过完备基集的稀疏编码:一种V1采用的策略。视觉研究, Vol.37, 1997, pp.3311-3325。
[10] M. F. Moller,“一种用于快速监督学习的缩放共轭梯度算法”,
B. A.奥尔斯豪森和D. J.菲尔德。具有过完备基集的稀疏编码:一种V1采用的策略。
版本历史
在R2015b中引入
在R2015b中引入
另请参阅
trainSoftmaxLayer
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">Autoencoder
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">编码
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">堆栈
trainSoftmaxLayer
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">Autoencoder
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">编码
|<年代p一个n我te米年代cope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">堆栈
MATLAB命令
您点击了与此MATLAB命令对应的链接: 通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
你亦可选择下列网址: 选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。如何获得最佳的网站性能
欧洲