我实现了一个二元逻辑回归分类器。出于试验,我用tanh函数(双曲正切函数)替换了Sigmoid函数(1 / (1 + exp(-z)))。结果完全相同,分类阈值仍然是0.5,尽管tanh的取值范围是{-1,1},而Sigmoid的取值范围是{0,1}。
我们使用Sigmoid函数真的重要吗?还是说像tanh这样的任何可微的非线性函数都可以使用?
谢谢。
回答:
你在训练过程中也更改了函数,还是只是使用了相同的训练方法,然后将Sigmoid改成了tanh?
我认为很可能发生的情况如下。请看一下Sigmoid和tanh的图表:
Sigmoid: http://www.wolframalpha.com/input/?i=plot+sigmoid%28x%29+for+x%3D%28-1%2C+1%29tanh: http://www.wolframalpha.com/input/?i=plot+tanh%28x%29+for+x%3D%28-1%2C+1%29
我们可以看到,在tanh的情况下,y = 0.5的值大约在x = 0的情况下出现。而在Sigmoid中,x = 0.5大约对应y = 0.62。因此,我认为现在可能发生的情况是你的数据中没有任何点落在这一范围内,因此你得到了完全相同的结果。尝试打印你的数据的Sigmoid值,看看是否有任何值在0.5和0.62之间。
使用Sigmoid函数的原因是它源自概率和最大似然估计。虽然其他函数可能工作得非常相似,但它们缺乏这种概率理论背景。有关详细信息,请参见例如http://luna.cas.usf.edu/~mbrannic/files/regression/Logistic.html或http://www.cs.cmu.edu/~tom/mlbook/NBayesLogReg.pdf