我在通过神经网络进行机器学习时遇到了一些问题。其中一个是backpropagation。在权重更新方程中,
delta_w = a*(t - y)*g'(h)*x
t
是“目标输出”,在监督学习的情况下,它将是您的类标签或其他内容。但是,对于无监督学习,“目标输出”会是什么?
有人可以提供一个例子,说明如何在无监督学习中使用BP,特别是对于分类的聚类?
提前致谢。
答案 0 :(得分:8)
最常见的事情是训练an autoencoder,其中所需的输出等于输入。这使得网络尝试学习最能“压缩”输入分布的表示。
Here's a patent描述了一种不同的方法,其中输出标签是随机分配的,有时根据收敛速度翻转。这对我来说似乎很奇怪,但还可以。
我不熟悉使用backpropogation进行聚类或其他无监督任务的其他方法。人工神经网络的聚类方法似乎使用其他算法(example 1,example 2)。
答案 1 :(得分:7)
我不确定哪种无监督机器学习算法具体使用反向传播;如果有的话我还没有听说过。你能指出一个例子吗?
反向传播用于计算误差函数的导数,用于训练关于网络中权重的人工神经网络。之所以这样命名,是因为“错误”通过网络“向后传播”。在这种情况下你需要它,因为相对于目标的最终误差取决于函数的函数(函数......取决于ANN中有多少层)。导数允许你随后调整值以改善误差功能,由学习率调节(这是gradient descent)。
在无监督算法中,您不需要这样做。例如,在k-Means中,您尝试最小化均方误差(MSE),您可以在给定分配的每个步骤中直接最小化误差;不需要渐变。在其他聚类模型中,例如mixture of Gaussians,expectation-maximization(EM)算法比任何基于梯度下降的方法都更加强大和准确。
答案 2 :(得分:2)
您可能会问的是无监督功能学习和深度学习。
特征学习是我能想到的关于NN或其最近变体的唯一无监督方法。(一种称为RBM混合的变体类似于高斯混合,但你可以基于这两种模型构建很多模型) 。但基本上我熟悉的两个模型是RBM(限制的boltzman机器)和Autoencoders。
自动编码器(可选地,稀疏激活可以在优化函数中编码)仅仅是前馈神经网络,其以使得输出是重建输入的方式调整其权重。可以使用多个隐藏层,但权重初始化使用贪婪的层次训练以获得更好的起点。因此,为了回答问题,目标函数将自己输入。
RBM是随机网络,通常被解释为对连接有限制的图形模型。在此设置中,没有输出层,输入和潜在层之间的连接是双向的,就像一个无向图形模型。它试图学习的是输入分布(观察到的和未观察到的变量)。在这里你的回答也是输入目标。
RBM的混合物(类似于高斯混合物)可用于软聚类,或KRBM(类似于K均值)可用于硬聚类。这实际上就像学习多个非线性子空间一样。
答案 3 :(得分:2)
另一种方法是使用生成反向传播之类的东西。在此方案中,您将训练神经网络更新权重和输入值。给定值用作输出值,因为您可以直接计算错误值。这种方法已用于降维,矩阵完成(缺失值插补)等应用。有关更多信息,请参阅使用生成反向传播理念的non-linear principal component analysis (NLPCA)和unsupervised backpropagation (UBP)。 UBP通过引入预训练阶段扩展了NLPCA。可以在华夫饼机器学习工具包中找到UBP和NLPCA的实现以及无监督的反向传播。可以使用nlpca命令找到UBP和NLPCA的文档。
答案 4 :(得分:1)
为了使用反向传播进行无监督学习,仅需要在算法的每个阶段将目标输出t设置为在更新之前到该类的每个元素的平均距离最小的类。简而言之,我们总是试图训练ANN将其输入放入其成员在我们的输入方面最相似的类中。因为该过程对输入标度敏感,所以必须首先通过减去平均值并除以每个分量的标准偏差来标准化每个维度中的输入数据,以便以标度不变的方式计算距离。
使用反向支撑神经网络而不是距群集中心定义的简单距离的优点是神经网络可以允许群集之间更复杂和不规则的边界。
答案 5 :(得分:1)
反向传播的核心只是在我们的神经网络中通过所有可能的路径重复应用链规则。 反向传播仅在给出输出标签时有效。如果没有标签,反向传播就不会有效。