Machine learning 神经网络中不同类的不同权重及其学习后的使用

Machine learning 神经网络中不同类的不同权重及其学习后的使用,machine-learning,neural-network,Machine Learning,Neural Network,我用反向传播算法训练了一个神经网络。我手动运行网络30次,每次都更改输入和所需输出。结果是传统分类器的结果 我尝试了三种不同的分类。因为我用每个类别的10个输入运行了30次网络,我最终得到了3个不同的权重,但同一个分类的权重非常相似,误差非常小。因此,该网络证明自己已经成功地学习了 我的问题是,既然学习已经完成,我有3种不同类型的权重(每个分类1个),我如何在常规前馈网络中使用这些权重,以便它能够自动分类输入。我四处搜索,想看看你是否能算出重量的平均值,但看起来这是不可能的。有人提到: 在反向传

我用反向传播算法训练了一个神经网络。我手动运行网络30次,每次都更改输入和所需输出。结果是传统分类器的结果

我尝试了三种不同的分类。因为我用每个类别的10个输入运行了30次网络,我最终得到了3个不同的权重,但同一个分类的权重非常相似,误差非常小。因此,该网络证明自己已经成功地学习了

我的问题是,既然学习已经完成,我有3种不同类型的权重(每个分类1个),我如何在常规前馈网络中使用这些权重,以便它能够自动分类输入。我四处搜索,想看看你是否能算出重量的平均值,但看起来这是不可能的。有人提到:

在反向传播学习过程中,我是否做错了什么?或者,在学习过程结束后,是否需要为不同的班级使用不同的权重来完成额外的步骤

我想象这一点的一种方式是实现一个常规的前馈网络,它将具有所有这3种类型的权重。将有3个输出,对于任何给定的输入,其中一个输出神经元将触发,这将导致给定的输入映射到该特定类

网络架构如下所示:

3个输入,2个隐藏神经元,1个输出神经元


提前感谢

如果每次只在神经网络中训练一个类,这是没有意义的,因为隐藏层可以进行权重组合来“学习”输入数据可能属于哪个类。单独学习将使权重独立。如果给出新的测试输入,网络将不知道使用哪个学习权重

使用一个向量作为输出来表示三个不同的类,并一起训练数据

编辑
另外,我认为你提供的链接帖子与你的案例无关。这篇文章中的问题来自神经网络训练中不同的权重初始化(随机)。有时,人们会申请使权重学习可重复以避免此类问题。

如果每次只在神经网络中训练一个类,则没有意义,因为隐藏层可以进行权重组合,以“学习”输入数据可能属于哪个类。单独学习将使权重独立。如果给出新的测试输入,网络将不知道使用哪个学习权重

使用一个向量作为输出来表示三个不同的类,并一起训练数据

编辑
另外,我认为你提供的链接帖子与你的案例无关。这篇文章中的问题来自神经网络训练中不同的权重初始化(随机)。有时,人们会申请使权重学习重现,以避免出现此类问题。

除了nikie的响应外,另一种可能性是将输出表示为一个(唯一的)具有连续值的输出单元。例如,如果输出在[0,1)区间内,则ann分类为第一类,如果输出在[1,2)区间内,则分类为第二类,如果输出在[2,3]区间内,则分类为第三类。该体系结构以文字形式声明(并在我的经验中得到验证)为了降低3个神经元的离散表示的效率。

除了nikie的响应外,另一种可能性是将输出表示为一个(唯一的)具有连续值的输出单元。例如,如果输出在[0,1)区间内,则ann分类为第一类,如果输出在[1,2)区间内,则分类为第二类,如果输出在[1,2)区间内,则分类为第三类[2,3]。该体系结构以文字形式声明(并以我的经验验证)为了降低用3个神经元进行离散表示的效率。

AFAIK,这种分类问题的典型结构将有3个输出神经元,第一类的训练结果为
1,0,0
,第二类的训练结果为
0,1,0
,第三类的训练结果为
0,0,1
隐藏层。前馈分类可以选择结果最高的输出神经元。(你没有对你的网络结构说太多,所以这可能是你正在做的。如果是这样,请澄清你的问题。)你是说这应该在学习过程中完成吗?在我的例子中,反向传播网络只有一个输出单元,因为我想保持它的简单。这样我只提供了输入和所需的输出。然后我验证了不同类的权重实际上是不同的。AFAIKr这样的分类问题将有3个输出神经元,第一类的训练结果为
1,0,0
,第二类的训练结果为
0,1,0
,第三类的训练结果为
0,0,1
。这些类“共享”隐藏层。前馈分类可以只选择结果最高的输出神经元。(您对人际网络的结构没有说太多,所以这可能是您正在做的事情。如果是,请澄清您的问题。)你是说这应该在学习过程中完成吗?在我的例子中,反向传播网络只有1个输出单元,因为我想保持简单。这样我只提供了输入和所需的输出。然后我验证了不同类的权重实际上是不同的。正如@nikkie还提到的mentio如上所述,单独在不同的类上进行训练是没有意义的。您需要3个输出神经元,并将3个类的训练数据输入到输入节点。当然,您需要的输入节点数量与您的输入变量数量相同。如果您有足够多的隐藏节点,并且您正确地进行了训练,那么NN至少会取得一些成功在3个输出节点中单独输出不同的值