如何设置神经网络以使它们接受并输出连续的值范围而不是离散值? 从几年前做神经网络课程的记忆中,激活函数将是一个sigmoid,它会产生一个介于0和1之间的值。如果我想让我的神经网络产生一个实值的标量,我应该怎么做做?我想也许如果我想要一个介于0和10之间的值,我可以将值乘以10?如果我有负面价值呢?这是人们通常做的还是有其他方式?怎么样的输入?神经网络中的连续输出
由于
如何设置神经网络以使它们接受并输出连续的值范围而不是离散值? 从几年前做神经网络课程的记忆中,激活函数将是一个sigmoid,它会产生一个介于0和1之间的值。如果我想让我的神经网络产生一个实值的标量,我应该怎么做做?我想也许如果我想要一个介于0和10之间的值,我可以将值乘以10?如果我有负面价值呢?这是人们通常做的还是有其他方式?怎么样的输入?神经网络中的连续输出
由于
neuroevolution的大部分工作都涉及使用具有连续输入和输出的神经网络。
有几种常用的方法:
每值regular sigmoid http://natekohl.net/media/sigmoid-reg.gif steep sigmoid http://natekohl.net/media/sigmoid-steep.gif
每值没有规则需要的输出(*)为任何特定功能。事实上,我们通常需要添加一些算术运算在每本身在给定节点实现的功能结束后,以规模和否则输出强制到特定的形式。
使用全有或全无输出和/或0.0到1.0归一化输出的优点是它使事情更容易处理,并且还避免了溢出等问题。 (*)“输出”在这里可以理解为网络内给定节点(神经元)或整个网络的给定节点(神经元)的输出。
正如马克贝西所指出的,[整个网络]和[网络]的输出通常都会接收一些过滤/转换。正如在这个回应中以及Mark的评论中所暗示的那样,可能最好在网络的“隐藏”层中具有标准化/标准节点,并根据输入和/或输出的要求应用一些标准化/转换/离散化网络;然而,这种做法只是一个实用性的问题,而不是神经网络的一般要求。
您通常需要对输入和输出进行一些过滤(电平转换等)。显然,过滤输入会改变内部状态,所以需要考虑一些问题,以避免丢失你正在训练的信号。
既然我敢肯定有人会提到它 - 你可以定义网络,这样你不*有*做当然的输入或输出,任何转换。但是,通用节点通常会更容易,并且会进行一些明确的过滤。 – 2009-12-01 02:14:55