gpt4 book ai didi

artificial-intelligence - 神经网络中的连续输出

转载 作者:行者123 更新时间:2023-12-03 10:25:51 28 4
gpt4 key购买 nike

如何设置神经网络,以便它们接受和输出连续范围的值而不是离散值?
根据我几年前做神经网络类(class)的记忆,激活函数将是一个 sigmoid,它产生一个介于 0 和 1 之间的值。如果我希望我的神经网络产生一个实值标量,我应该怎么做?我想也许如果我想要一个介于 0 和 10 之间的值,我可以将值乘以 10?如果我有负值怎么办?这是人们通常做的还是有其他方法?输入呢?

谢谢

最佳答案

neuroevolution 领域的大部分工作涉及使用具有连续输入和输出的神经网络。

有几种常见的方法:

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

  • regular sigmoid
    (来源: natekohl.net)
    steep sigmoid
    (来源: natekohl.net)
  • 每个值多个节点 - 在多个节点上传播单个连续值是表示连续输入的常用策略。它的好处是为网络提供更多“功能”,但以增加网络规模为代价。
  • 分箱 - 将单个输入分布在多个节点上(例如 RBF networks,其中每个节点都是具有不同中心的基函数,将被输入部分激活)。您可以在不丢失平滑表示的情况下获得离散输入的一些好处。
  • 二进制表示 - 将单个连续值分成 2N 个 block ,然后将该值作为二进制模式输入网络中的 N 个节点。这种方法紧凑,但有点脆弱,并导致输入以非连续方式变化。
  • 关于artificial-intelligence - 神经网络中的连续输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1823523/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com