我怎样设置神经网络,使其接受和输出连续值而非离散值?
我回忆起几年前学习神经网络课程时,激活函数应该是sigmoid函数,它产生介于0和1之间的值。如果我想要神经网络产生实数标量,我该怎么做?我在想,如果我想要一个介于0和10之间的值,我可以将该值乘以10?如果有负值呢?人们通常这样做吗?还是有其他方法?对于输入呢?
谢谢
谢谢
(来源: natekohl.net)
(来源: natekohl.net)
没有规定输出(*)必须是任何特定的函数。实际上,我们通常需要在给定节点实现的函数本身末尾添加一些算术运算,以便将输出按比例缩放并强制转换为特定形式。
使用全有或全无的输出和/或0.0到1.0的归一化输出的优点在于,它使事情更易于跟踪,并避免了溢出等问题。
(*)“输出”可以被理解为网络中给定节点(神经元)的输出或整个网络的输出。
正如马克·贝西(Mark Bessey)所指出的那样,网络的输入和输出通常接受一些过滤/转换。正如这个回答和马克的评论所暗示的那样,在网络的“隐藏”层中使用标准化节点可能更可取,并根据需要对网络的输入和/或输出进行一些标准化/转换/离散化;然而,这种做法只是实用性的问题,而不是神经网络的普遍要求。
通常情况下,您需要对输入和输出进行一些过滤(级别转换等)。显然,过滤输入将改变内部状态,因此需要考虑如何不丢失您正在训练的信号。