Artificial intelligence 神经网络的连续输出

Artificial intelligence 神经网络的连续输出,artificial-intelligence,neural-network,Artificial Intelligence,Neural Network,如何设置神经网络,使其接受并输出连续的值范围而不是离散的值范围? 从我几年前做的一个神经网络类的记忆中,激活函数是一个S形函数,它产生一个介于0和1之间的值。如果我想让我的神经网络产生一个实值标量,我应该怎么做?我想如果我想要一个介于0和10之间的值,我可以把这个值乘以10?如果我有负值呢?这是人们通常做的事还是有其他方法?输入呢 谢谢没有规则要求输出(*)是任何特定函数。事实上,我们通常需要在给定节点中实现的函数本身的末尾添加一些算术运算,以便扩展并强制输出为特定形式 使用全有或全无输出和/或

如何设置神经网络,使其接受并输出连续的值范围而不是离散的值范围? 从我几年前做的一个神经网络类的记忆中,激活函数是一个S形函数,它产生一个介于0和1之间的值。如果我想让我的神经网络产生一个实值标量,我应该怎么做?我想如果我想要一个介于0和10之间的值,我可以把这个值乘以10?如果我有负值呢?这是人们通常做的事还是有其他方法?输入呢


谢谢

没有规则要求输出(*)是任何特定函数。事实上,我们通常需要在给定节点中实现的函数本身的末尾添加一些算术运算,以便扩展并强制输出为特定形式

使用全有或全无输出和/或0.0到1.0标准化输出的优点是,它使事情更容易处理,并且还避免了溢出等问题

(*)“输出”在这里可以理解为网络中给定节点(神经元)的输出或整个网络的输出。

如Mark Bessey所示,[整个网络的]输入和[网络的]输出通常会接收一些过滤/转换。正如在该响应和Mark的评论中所暗示的,最好在网络的“隐藏”层中具有标准化/标准化节点,并根据需要对网络的输入和/或输出应用一些标准化/转换/离散化;然而,这种做法只是一个实用性问题,而不是神经网络一般的必要要求。

您通常需要对输入和输出进行一些过滤(电平转换等)。显然,过滤输入会改变内部状态,因此需要考虑不要丢失您试图训练的信号。

在神经网络领域的许多工作涉及使用具有连续输入和输出的神经网络

有几种常见的方法:

  • 每个值一个节点
    • 线性激活函数-如其他人所述,如果您担心sigmoid函数的范围有限,可以在输出节点上使用非sigmoid激活函数。但是,这可能会导致输出变得任意大,从而在培训期间产生问题
    • 乙状结肠激活功能-简单地缩放乙状结肠输出(或移位和缩放,如果你想要负值)是神经进化中的一种常见方法。但是,值得确保您的sigmoid函数不太陡峭:陡峭的激活函数意味着“有用”的值范围很小,这迫使网络权重变小。(这主要是遗传算法的一个问题,它使用固定权重的修改策略,在需要较小权重时效果不佳。)

(来源:)

(来源:)

  • 每个值有多个节点-将单个连续值分散到多个节点上是表示连续输入的常用策略。它的好处是以增加网络规模为代价,为网络提供更多的“功能”。
    • Binning将单个输入分散到多个节点上(例如,每个节点都是具有不同中心的基函数,该中心将被输入部分激活)。您可以在不丢失平滑表示的情况下获得离散输入的一些好处
    • 二进制表示法-将单个连续值分成2N个块,然后将该值作为二进制模式输入网络,并发送到N个节点。这种方法很紧凑,但有点脆弱,导致输入以非连续方式变化

由于我相信有人会提到它,您可以定义网络,这样您就不必对输入或输出进行任何转换。但是,拥有通用节点和执行一些显式过滤通常更容易。您确定RBF网络只有一个输入节点吗?据我所知,它们可能有任意多个输入节点,但只有一个输出。