如何设置神经网络,以便它们接受和输出连续范围的值而不是离散值?根据我几年前做神经网络课程的回忆,激活函数将是一个 sigmoid,它产生一个介于 0 和 1 之间的值。如果我希望我的神经网络产生一个实值标量,我应该怎么做? 我想也许如果我想要一个介于 0 和 10 之间的值,我可以将值乘以 10?如果我有负值怎么办?这是人们通常做的还是有其他方法?输入呢?
谢谢
如何设置神经网络,以便它们接受和输出连续范围的值而不是离散值?根据我几年前做神经网络课程的回忆,激活函数将是一个 sigmoid,它产生一个介于 0 和 1 之间的值。如果我希望我的神经网络产生一个实值标量,我应该怎么做? 我想也许如果我想要一个介于 0 和 10 之间的值,我可以将值乘以 10?如果我有负值怎么办?这是人们通常做的还是有其他方法?输入呢?
谢谢
神经进化领域的大部分工作涉及使用具有连续输入和输出的神经网络。
有几种常见的方法:
(来源:natekohl.net)(来源:natekohl.net)
没有规则要求输出 (*) 是任何特定函数。事实上,我们通常需要在给定节点中实现的函数本身的末尾添加一些算术运算,以便缩放或强制输出为特定形式。
使用全有或全无输出和/或 0.0 到 1.0 标准化输出的优点是它使事情更容易处理,并且还避免了溢出等问题。
( * ) “输出”在这里可以理解为网络中给定节点(神经元)的输出或整个网络的输出。
正如 Mark Bessey 所指出的,[整个网络的]输入和[网络的]输出通常会接受一些过滤/转换。正如此响应和 Mark 的评论中所暗示的,最好在网络的“隐藏”层中具有规范化/标准节点,并根据输入和/或输出的需要应用一些规范化/转换/离散化网络; 然而,这种做法只是实用性问题,而不是一般神经网络的必要要求。
您通常需要对输入和输出进行一些过滤(电平转换等)。显然,过滤输入会改变内部状态,因此需要考虑不要丢失您尝试训练的信号。