【CS229 Deep Learning笔记】二. 介绍:分类问题

目录

四. logistic函数

五. logistic回归

六. 感知机算法

七. 牛顿法  


  在预测问题中,形如h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}的问题称为logistic回归。其中,g(z)=\frac{1}{1+e^{-z}}称为logistic函数,或sigmoid函数。

    logistic回归与线性回归的区别在于,线性回归中,输入x、输出y都是连续值,但在logistic回归中,y为离散的0、1值。

四. logistic函数

    g(z)=\frac{1}{1+e^{-z}}称为logistic函数,或sigmoid函数,它的图像如下:

【CS229 Deep Learning笔记】二. 介绍:分类问题_第1张图片

(图源自CS229)

    由图像可以看到,它的定义域为(-\infty,+\infty),值域为(0,1),通过使用该函数,可将定义域内的输入压缩到(0,1)之间。Logistic函数还有一个特征,就是它的导数也非常简洁,证明如下:

【CS229 Deep Learning笔记】二. 介绍:分类问题_第2张图片

(图源自CS229)

五. logistic回归

    在logistic回归问题中,我们也使用梯度下降算法。但与之前不同的是,此处使用的模型假说h_\theta(x)与误差函数J(\theta)不同。h_\theta(x)上文已给出,接下来讨论J(\theta)

    假设已知训练例T((x_1,y_1),(x_2,y_2),...,(x_m,y_m)),且设在x固定的情况下,y=1的概率为:

P(y=1|x;\theta)=h_\theta(x)

P(y=0|x;\theta)=1-h_\theta(x)

    我们可以通过概率论里似然函数求参数的方法来求出θ的值。这一步的思想是,求使y满足训练例的可能性最大的θ。

    令L(\theta)=p(\overrightarrow{y}|X;\theta)=\sum_{i=1}^mp(y^{(i)}|x^{(i)};\theta)。为方便求解,取对数

【CS229 Deep Learning笔记】二. 介绍:分类问题_第3张图片

我们要求似然函数最大,将-l(\theta)视为损失函数J(\theta),得到:

J(\theta)=-l(\theta)=\sum_{i=1}^my^{(i)}log h(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))

    在梯度下降中,我们要用到J(\theta)对θ的偏导数,得到:

【CS229 Deep Learning笔记】二. 介绍:分类问题_第4张图片

    将上面所得的h_\theta(x)J(\theta)代入梯度下降中去,得到完整算法:


输入:训练集

输出:参数θ

    1.令θ=0;

    2.计算J(\theta)=-l(\theta)=\sum_{i=1}^my^{(i)}log h(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))

    3.令\theta_j:=\theta_j-\alpha(y-h_\theta(x))x_j,若达到迭代次数,或J(\theta)收敛,转到4.。若不满足,则返回2.。

    4.输出θ


六. 感知机算法

    感知机算法与Logistic回归的区别在于g(z)不同。在该算法中,有

    令,且。感知机算法中的g(z)不可导,讲义中也并未给出算法的推导。


输入:训练集

输出:参数θ

    1.令θ=0;

    2.计算J(\theta)=-l(\theta)=\sum_{i=1}^my^{(i)}log h(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))

    3.令\theta_j:=\theta_j-\alpha(y^{(i)}-h_\theta(x^{(i)}))x^{(i)}_j,若达到迭代次数,或J(\theta)收敛,转到4.。若不满足,则返回2.。

    4.输出θ


七. 牛顿法  

  我们考虑牛顿法求零点的算法。在该方法中,先任意选定一个参数θ,利用公式\theta:=\theta-\frac{f(\theta)}{f'(\theta)}不断迭代,最终无限接近使f(θ)为零的点θ。在回归算法中,我们需要使似然函数最大(也即损失函数最小),由微积分知识可知,导数为零的点是函数的极值点。回归算法假设该函数是一个凸函数,所以其极值点就是最指点。我们的问题变成,求似然函数导数的零点。可采用如下方式更新参数:\theta:=\theta-\frac{l'(\theta)}{l''(\theta)}

        在θ为n维向量的情况下,

\theta:=\theta-H^{-1}\nabla_\theta l(\theta),其中,H_{ij}=\frac{\partial^2l(\theta)}{\partial\theta_i\partial\theta_j}

        该方法也叫Fisher scoring。


输入:训练集

输出:参数θ

    1.令θ=0;

    2.计算J(\theta)=-l(\theta)=\sum_{i=1}^my^{(i)}log h(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))

    3.令\theta:=\theta-H^{-1}\nabla_\theta l(\theta),若达到迭代次数,或J(\theta)收敛,转到4.。若不满足,则返回2.。

    4.输出θ


 

你可能感兴趣的:(深度学习理论基础)