这个现象可能是由于sigmoid函数的特性所导致的。sigmoid函数具有S形状,其输出值在接近两端的位置会趋近于0或1,而在中间位置则会比较平坦,输出值接近0.5。
在神经网络的训练中,通常会对权重进行随机初始化,如果这些权重服从标准正态分布,那么初始值中有一些非常大或非常小的值可能会导致一些神经元的输出在初始阶段就趋近于0或1,这会产生梯度消失的问题。梯度消失会使得神经元的更新变得非常缓慢,导致网络无法有效地学习。
另一方面来看,如果权重的初始值都比较接近0,那么每个神经元的输出值都会比较接近0.5,因为sigmoid函数在接近0的位置和接近1的位置都会趋近于0.5。这会使得网络的输出变得比较平坦,可能会导致欠拟合的问题。
所以,权重的初始值需要在保持随机性的同时避免过大或过小,以使得每个神经元的输出值能够在中间位置附近,避免梯度消失和欠拟合问题。此外,还可以采用其他的激活函数,如ReLU等,来避免这个问题。
我感觉你搞混了一件事情,那就是sigmoid函数在0附近的曲线很陡峭,并不是均匀的。也就是说,在0附近一点小的变化,就会导致y值变化的更大,也就是在0附近的时候更倾向拉升y值靠0或者1,而远离0的时候,y的变化又很小,拉升向0或者1的幅度也小。
这也就是为什么明明正太分布按理来说更接近于0,其对应的sigmoid更靠近0.5才对,但是实际上却是更靠近两端。这也是sigmoid的优点之一,那就是特征相差不大的情况下,他的二分类效果比较好。