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



为什么我们在神经网络中使用双极数据表示。例如-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

我猜你的问题是由你的ref:

的这句话引起的。

但是,在许多神经网络训练任务中,更倾向于以所谓的"双极"方式表示训练模式,放入输入向量"0.5"代替"1","-0.5"代替"0"。

使用"双极"刻度有两个考虑因素:

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

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

TL;DR -双极的选择是由传递函数决定的(你的拒绝'BipolarSigmoidFunction'),双极值是任意的,但集中在传递函数曲线的最陡部分。

最新更新