神经网络中的双极数据表示

时间:2015-07-31 18:52:27

标签: c# neural-network

为什么我们在神经网络中使用双极数据表示。例如-0.5和0.5代替0和1或-1和1代替0和1.如本文http://www.codeproject.com/Articles/11285/Neural-Network-OCR?fid=206868&df=90&mpp=25&noise=3&prof=True&sort=Position&view=Normal&spc=Relaxed&fr=26#xx0xx

1 个答案:

答案 0 :(得分:0)

您的问题是有动力的,我猜测,来自您的参考声明:

  

但是,在许多神经网络训练任务中,它更受欢迎   代表所谓的"双极"中的训练模式。方式,放入   输入向量" 0.5"而不是" 1"和" -0.5"而不是" 0"。

使用'双极'有两个注意事项。缩放:

a)双极范围的一般选择通常由输入分布为guassian或相似的情况下神经网络使用的传递函数确定。大多数值都围绕某些均值,只有相对较少的异常值。例如,如果对节点使用逻辑函数(output = [0,+ 1]),则可以在[0,+ 1]之间缩放输入。同样,如果使用tanh函数(output = [-1,+ 1]),那么您将类似地缩放输入。假设您的输入是连续的。

b)由于学习的方式,范围进一步完善。 NN学习通常使用传递函数的导数,并且最佳学习发生在输入变化的导数的最大变化即。最陡峭的部分传递函数。在传递函数的任何一个极端处,曲线变平,导数很小,因此学习是最小/慢的。为了避免这些区域,如果您确定输入的值范围,则将它们缩放以使它们位于传递函数的陡峭部分的范围内,通常对tanh()说[-0.8,+ 0.8] ,但在你的参考文献[-0.5,+ 0.5]中为' BipolarSigmoidFunction'。

TL; DR - 双极的选择由传递函数确定(您的参考使用' BipolarSigmoidFunction'),双极值是任意的,但以传递函数曲线的最陡部分为中心。