为什么我们在神经网络中使用双极数据表示。例如,-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所示
发布于 2015-08-03 01:14:09
我猜,你的问题是由你的推荐人的这句话引起的:
但是,在许多神经网络训练任务中,最好以所谓的“双极”方式表示训练模式,将输入向量"0.5“而不是"1”和"-0.5“而不是"0”放入
。
在使用“双极”缩放时,有两个考虑因素:
a)在输入的分布是高斯或类似的情况下,双极范围的一般选择通常由神经网络使用的传递函数确定。大多数值都集中在某个平均值周围,只有相对较少的异常值。例如,如果您对节点使用逻辑函数(output = 0,+1 ),那么您将在0,+1之间缩放输入。类似地,如果您使用tanh函数(output = -1,+1 ),那么您将以类似的方式缩放您的输入。所有这些都假设你的输入是连续的。
b)由于学习是如何发生的,范围进一步细化。神经网络学习通常使用传递函数的导数,最好的学习发生在输入变化的导数变化最大的地方。传递函数的最陡峭部分。在传递函数的任何一个极端,曲线变平,导数很小,因此学习是最小的/缓慢的。为了避免这些区域,如果您确定输入的值范围,您可以缩放它们,使其完全位于传递函数的陡峭部分的范围内,通常为tanh()的-0.8,+0.8,但在您的参考中,'BipolarSigmoidFunction‘为-0.5,+0.5。
双极的选择由传递函数决定(您的参考使用'BipolarSigmoidFunction'),双极值是任意的,但以传递函数曲线的最陡峭部分为中心。
https://stackoverflow.com/questions/31753172
复制相似问题