深度学习(2):logistic回归 梯度下降法

二分类问题

我们经常会遇到各种各样的二分类问题,例如判断一张照片是猫或不是猫,判断一个西瓜是好瓜还是坏瓜。解决这类问题的一个很好的方法就是logistic回归。

线性回归

利用简单的线性回归可以进行二分类,这里我们简要介绍以下线性回归的思想,不做具体实现的阐述。

假定拥有的数据集为 m组(x,y)
   x 为一组n维列向量,代表我们已知的n个属性
   y 为标记,取值为0或1,代表其所属的种类
这样一来,我们相当于得到了n维空间中的m个点,这些点分别具有0或1的属性。

构造n维列向量w以及常数b
得到y~=wTx+b     通过训练得到合适的w和b。
利用y~我们这样进行分类:对于给定的x,当y~>0时,我们认为该对象属于第“1”类,当y~<0时我们认为该对象属于第“0”类,y~=0时随意分。

形象化的理解用线性回归进行分类:相当于在n维空间中找到了wTx+b=0这样一个平面,将所给的点分成了两部分,平面上方的点为1,平面下方的点为0。

这个方法的问题在于:

  1. 线性回归往往利用均方误差进行训练,而均方误差往往是非凸的,不利于我们利用梯度下降法(下文会提到)进行优化。
  2. 均方误差很容易收到极端数据的影响。

logistic 回归

logistic回归本质上仍然是线性分类,但是它的效果更好。
虽然名为logistic“回归”,但是它是一种分类方法。

对于给定的x,我们希望模型计算出的y~表示该对象y=1的概率P(y=1|x)
举个例子,如果y~=0.8,表示该对象有0.8的概率为1,0.2的概率为0,所以我们判断这个对象属于“1”类
不同于线性回归,logistic回归的y~具有意义

我们在线性回归的基础上
令z=wTx+b
y~=sigmoid(z)=1/(1+exp(-z))

sigmoid函数拥有很好的性质

  1. 值域范围为(0,1),符合我们概率的定义
  2. 在z很大或很小时变化缓慢,而在接近0的区域变化迅速,这意味着相对于线性回归,logistic回归受极端数据影响较小。
  3. 导数=sigmoid(z)*(1-sigmoid(z))便于计算

所以,当y~>0.5时,我们认为该对象属于第“1”类,当y~<0.5时我们认为该对象属于第“0”类,y~=0.5时随意分。

了解了logistic回归的计算过程,下面我们说明如何得到合理的w和b

损失函数

在训练模型的过程中,我们希望对于m组(xi,yi),y~i≈yi,也就是每组数据都能被正确预测
我们建立一个数学量来表示我们模型出错的程度,叫做损失函数
对于每组数据(x,y),我们定义L(y~,y)=-(y log y~+ (1-y) log (1- y~))
定义损失函数cost function =在这里插入图片描述
(下文解释损失函数的最大似然估计原理)

损失函数越小,代表我们的模型拟合程度越好,预测结果越准确。所以需要优化w和b
以减少损失函数

梯度下降法

由于损失函数可以凸优化,我x们利用梯度下降法来寻找合适的w和b

梯度下降法的主要思想(1元函数举例):
对于函数f(x),我们希望不断地迭代x,使得每次迭代损失函数f(x)都减小,这样一来便可以收敛到最小值。由泰勒展开f(x+ ∆x)≈f(x)+ ∆xf ’ (x)。为了让迭代后f(x)更小 ∆xf ’ (x)应该小于0,所以选择∆x= -αf ’ (x) (α是一个小正数,表示学习率)
每次迭代: x= x-αf ’ (x)

所以每次迭代中,我们求出J(w,b)关于w每个元素和b的偏导数,即可逐步迭代求得最优的w,b

对于w中的每个wi    偏导数为xi(y~i-yi)
对于b    偏导数为(y~i-yi)
每次迭代计算偏导数更新参数

在神经网络中,我们往往利用计算图描述模型的计算过程,偏导数的计算往往利用链式法则通过计算图的反向传播进行计算深度学习(2):logistic回归 梯度下降法_第1张图片

最大似然估计

对于每组数据(x,y),我们预测正确的概率为:
   P(y|x)=y~ ^y * (1-y~)^(1-y)
我们可以验证,当y=1时P(y|x)=y~,当y=0时P(y|x)= (1-y~)
我们假设对于m个数据,它们独立同分布,m组数据都预测成功的概率为∏P(yi|xi)
对于最大似然估计,我们希望找到合适的参数w,b使得∏P(yi|xi)最大
也就是使得ln(∏P(yi|xi))最大
即∑ln(P(yi|xi))最大
经过化简,就是使得∑(y log y~+ (1-y) log (1- y~))最大,这个值时我们损失函数的相反数,所以就是使得损失函数最小。

你可能感兴趣的:(深度学习笔记,人工智能,深度学习,算法)