概念
假设有一个二分类问题,输出为y∈{0,1},而线性回归模型产生的预测值为z=wTx+b是实数值,我们想有一个理想的阶跃函数来帮我们实现z值到0,1的转化。
然而该函数不连续,我们希望有一个单调可微的函数来供我们使用,于是遍找到了sigmoid来替代。
两者的图像如下图所示:
有了Sigmoid之后,由于其取值在[0,1],我们就可以将其视为类1的后验概率p(y=1|x)。说白了,就是如果有了一个测试点x,那么就可以用Sigmoid算出来的结果来当做该点x属于类别1的概率大小。于是,非常自然地,我们把sigmoid计算得到的值大于等于0.5的归为类别1,小于0.5的归为类0.
逻辑回归与自适应线性网络
逻辑回归与自适应线性网络非常相似,两者的区别在于逻辑回归的激活函数为sigmoid,而自适应线性网络的激活函数为y=x,两者的网络结构如下:
1.逻辑回归:
2.自适应线性网路
逻辑回归的代价函数
1.首先模仿线性回归的做法,利用误差平方和来当代价函数。
其中i表示第i个样本点。
我们会发现这是一个非凸函数,这就意味着代价函数有着许多局部最小值,这不利于我们求解。(???)
(下图为凸函数与非凸函数)
2. 换一个思路,前面我们提到了ϕ(z)可以视为类1的后验估计,所以我们有
其中,p(y=1|x;w)表示给定w,那么x点y=1的概率大小。
上面两式可以写成一般式:
接下来我们就要用极大似然估计来根据给定的训练集估计出参数w:
为了简化运算,我们对上面这个等式的两边都取一个对数:
我们现在要求的是使得l(w)最大的w。在l(w)加个负号就变成最小的了。
为了理解这个代价函数,我们不妨拿一个例子的来看看:
也就是说:
如下图所示:
从图中不难看出,如果样本的值是1的话,估计值ϕ(z)越接近1付出的代价就越小,反之越大;
同理,如果样本的值是0的话,估计值ϕ(z)越接近0付出的代价就越小,反之越大。
利用梯度下降法求参数
在开始梯度下降之前,sigmoid有一个很好的性质,就是:
ϕ′(z)=ϕ(z)(1−ϕ(z))
还有我们需明确,梯度的负方向就是代价函数下降最快的方向。借助于泰勒展开,我们有:
f(x+δ)−f(x)≈f′(x)⋅δ
其中,f′(x)和δ为向量,那么这两者的内积就等于:
f′(x)⋅δ=||f′(x)||⋅||δ||⋅cosθ
当θ=π时,也就是δ在f′(x)的负方向上时,取得最小值,也就是下降的最快的方向。
下降过程:
其中,wj为第j个特征的权重;η为学习率,用来控制步长。
所以,在使用梯度下降法更新权重时,只要根据下式即可:
当然,在样本量极大的时候,每次更新权重会非常耗费时间,这是可以采用随机梯度下降法,这时每次迭代时需要将样本重新打乱,然后用下式不断更新权重。
也就是去掉了求和,而是针对每个样本点都进行更新。