我正在尝试构建一个神经网络来研究一个具有连续输出变量的问题。下面描述了所使用的神经网络的示意图
神经网络的示意图:输入层大小 = 1;隐藏层大小 = 8;输出层大小 = 1。
在这种情况下,有没有理由让我使用tanh()激活函数而不是sigmoid()激活函数?我过去一直在使用sigmoid()激活函数来解决使用神经网络的逻辑回归问题,我不清楚当输出变量是连续时是否应该使用tanh()函数。
这是否取决于连续输出变量的值?例如:(i) 当输出变量从0到1归一化时使用sigmoid()(ii) 当输出变量有负值时使用tanh()。
提前感谢
回答:
除了0.5的偏置外,这两者在功能上几乎相同。重要的是
- 在接近0的“训练兴趣范围”内梯度大约为1;
- 在极端值时梯度大约为0。
一旦你考虑了这些,我怀疑你会更担心计算效率。tanh在大多数架构上计算成本高。如果这是你的担忧,可以考虑编写自己的函数,可能是一个查找表,包含范围[-4,4]内的2^10个预计算值,并在该范围之外使用“轨道”值(-1和1)。