sigmoid函数是一个有着优美S形曲线的双弯曲数学函数,其在逻辑回归、人工神经网络中有着广泛的应用(sigmoid:adj. 乙状结肠的;C形的;S形的 n. S状弯曲)。在生物统计中,该函数也可以模仿一些情况下生物数量的 S 形曲线,起初阶段资源丰富大致是指数增长,然后随着资源受限开始变得饱和增加变慢,最后达到成熟时增加停止保持平衡。
Sigmoid函数及导数
结合图像分析,其优点:
- 定义域(−∞, +∞) 值域(0, 1),可将任意范围的输入映射到(0, 1)之间,单调连续,以(0, 0.5)中心对称,是一个非常良好的阈值函数;
- z为0时f(z)为0.5,当z超过6时f(x)越来越接近于1但永不会越过,同样z小于-6时f(z)向左越来越接近于0,在z超出[-6,6]的范围后,函数值非常接近基本没有变化,在应用中一般不考虑;
- 函数值域限制在(0,1)之间,[0,1]与概率值的范围相对应,这样sigmoid函数就能与一个概率分布联系起来;
- 处处可导求导容易,导数是其本身的函数,即f′(z)=f(z)(1−f(z)),计算方便节省时间。
同时缺点:
- 由于其软饱和性,在饱和的时候梯度太小太平滑,容易产生梯度消失,导致模型训练出现问题;
- 其输出并不是以0为中心的;
- sigmoid函数可以很容易地应用在训练过程中,但只能处理两个类(只有0和1两种状态),不适用于多分类的问题。
python代码实现
# -*- coding: UTF-8 -*-
#导入科学计算库和绘图库
import numpy as np
import matplotlib.pyplot as plt
#定义函数计算s(x) = 1/(1+e^(-x))
def sigmoid(x):
return 1./(1. + np.exp(-x))
#确定x值和y值范围
x = np.arange(-50, 50)
y = sigmoid(x)
#以x,y为轴,绘制Sigmoid及其导数
plt.plot(x, y)
plt.plot(x, y*(1-y))
plt.show()
Logistic回归模型
在搜索引擎广告排名决策中,为了预估每个广告的点击率,需要考虑广告位置、点击量、展示时间、受众人群等多个影响因素,这么多因素最好能用一个统一的数学模型来描述,而且这个模型能够随着数据量的增加越来越准确,这并非易事。早期很多经验值修正和近似的做法在整合各个特征时效果都不很好,后来工业界普遍采用逻辑回归模型(Logistic Regression / Logistic Model)。
逻辑回归模型指将一个事件出现的概率逐渐适应(回归)到一条S型逻辑曲线上,该曲线一开始变化快逐渐减慢最后饱和,上述sigmoid函数就是其中曲线之一(图形及特点详见上文)。
有了逻辑回归模型(sigmoid函数),就可以把各种信号(因素值)组合起来,不论组合成多大或多小的值最后都能得到一个概率分布。也可认为逻辑回归模型就是一种将影响概率的不同因素结合在一起的指数模型,例如中,每个称为变量,表示影响概率的各种因子,称为回归参数,表示每个因子的权重值,是一个特殊参数与任何因子无关,可以保证在没有任何信息时,有一个稳定的概率分布,是sigmoid函数的参数值,得出后带入函数可得到位于(0,1)之间的概率值。
逻辑回归模型中的各参数的确定需要进行大量训练才能得出,和很多指数模型(如最大熵模型)一样,训练方法相似,可以采用通用的迭代算法GIS和改进的迭代算法IIS来实现,这两个算法知道就好,至今没多少人能搞懂和实现,希望以后有机会能学习一下。
参考:
《数学之美》吴军博士著
网友评论