神经网络连续tanh-Sigmoid激活函数和随机权重

时间:2011-11-28 01:17:53

标签: javascript artificial-intelligence neural-network

我真的需要帮助在非常基本的神经网络中实现连续的tanh-sigmoid激活功能。如果你能给出一个很棒的基本例子,但如果你能在source code中改变它,我将非常感激!此外,随机权重应该在什么范围内启动(即什么范围)?

2 个答案:

答案 0 :(得分:3)

重量范围取决于您拥有的输入数据范围。在一些实现中,权重也可以是负的。

对于可能的Sigmoid函数,请在此处查看(tanh不是唯一的可能性):

http://en.wikipedia.org/wiki/Sigmoid_function

提示:您通常可以使用矩阵乘法计算NN。

http://www.dtreg.com/mlfn.htm

http://en.wikipedia.org/wiki/Neural_network

P.S。:在JavaScript中执行此操作可能不是一个好主意。


您可以通过exp(x)实现它,请参阅:http://www.javascripter.net/faq/mathfunc.htm

          sinh(x)    exp(x) - exp(-x)     exp(2x) - 1
tanh(x) = ------- = ------------------ = -------------
          cosh(x)    exp(x) + exp(-x)     exp(2x) + 1

给你:

function tanh(x) {
   e = Math.exp(2*x);
   return (e - 1) / (e + 1) ;
};

另一种解决方案是将具有tanh函数值的表存储在数组中,并定义一个JavaScript函数,该函数根据存储在数组中的tanh值插入x的tanh值


通常人们不希望[-inf ... + inf]作为输入值的范围,并且不希望[-1 ... + 1]作为输出值的范围 - 因此你可能需要一个不同的sigmoid函数!

您需要获取预期的输入值范围和输出值的预期范围,并使用它们来移动实际的sigmoid函数,权重范围和阈值的值。

通常使用0.7或更大的阈值。你需要试验一下。

答案 1 :(得分:0)

this.output = 2 / (1 + Math.exp(-2 * input)) - 1;