【问题标题】:Neural Network Continuous tanh-Sigmoid Activation Function and Random Weights神经网络连续 tanh-Sigmoid 激活函数和随机权重
【发布时间】:2012-01-07 14:22:57
【问题描述】:

我真的需要帮助在一个非常基本的神经网络中实现一个连续的 tanh-sigmoid 激活函数。如果您能给出一个很棒的基本示例,但如果您可以在我的source code 中更改它,我将非常感激!另外,随机权重应该从什么范围开始(即什么范围)?

【问题讨论】:

    标签: javascript artificial-intelligence neural-network


    【解决方案1】:

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

    对于可能的 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 或更大的阈值。您需要对此进行试验。

    【讨论】:

    • 是的,我知道我需要使用哪个功能,但是您如何实际实现呢?你如何处理返回的值?你把它和什么比较?
    • 对于我的情况 tanh 和 javascript 是必须的,请耐心等待 :) 但我真正感兴趣的是它在代码中的样子。
    • 好吧,你离回答我的问题还有一步之遥:D 现在我们有了值,你将它与什么进行比较以确定是否“激活”神经元?
    • 这取决于你 - 你可以玩弄它......但由于 tanh(x) 介于 -1 .. +1 之间,你可能想将它与 |x| 进行比较> 0.7 或更大的值。
    • @Conner Ruhl:当你使用 tanh 作为激活函数时,神经元的输出是连续的。如果您只想要二进制输出,请使用简单的阈值在 0/1 之间“切换”输出!也就是说,一个以tanh为激活函数的神经元在某种意义上总是“活跃”的……
    【解决方案2】:
    this.output = 2 / (1 + Math.exp(-2 * input)) - 1;
    

    【讨论】:

    猜你喜欢
    • 2017-01-14
    • 2014-01-06
    • 2017-03-30
    • 2016-08-17
    • 2020-12-05
    • 2014-01-18
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多