NLP学习笔记21-逻辑回归2:决策边界,目标函数,凸函数,梯度下降

本文介绍了逻辑回归的决策边界概念,指出它是线性分类器,并通过数学推导展示如何确定线性决策边界。接着深入讨论目标函数——最大似然函数,以及如何利用梯度下降算法(包括GD、SGD、mini-batch GD)求解模型参数。适合非数学专业者理解机器学习中的数学背景。
摘要由CSDN通过智能技术生成

一 序

   本文属于贪心NLP学习笔记系列。本文从逻辑回顾问题提出决策边界,从决策边界引出目标函数,继而使用梯度下降算法求解。

数学公式很多,李文哲老师都是手书推导过程,我尽量去手动输入公式。我觉得收获很大,因为网上介绍公式很多,但是一步步串起来讲给小白听的太少了。

二 决策边界(Decision boundary

逻辑回归虽然带着回归两字却和线性回归有很大的区别,线性回归主要用于预测问题,其输出值为连续变量,而logistic回归主要用于分类问题,其输出值为离散值。logistic回归可以用于多元分类问题,也可以用于二元分类问题,但二元分类更为常用。老师再讲主题之前,先回顾上一节的逻辑回归函数:没看过可以先看上一篇NLP学习笔记20-逻辑回归

条件概率p(y|x,w)= w^{T}x+b  线性的。

而逻辑函数 y=\frac{1}{1+e^{-x}} 是非线性的。

逻辑回归公式在上面(有线性跟非线性组合而成),老师抛出一个问题,逻辑回归是不是线性的分类器?

逻辑回归是线性的分类器。

那么判断一个模型是不是线性分类器,引出了决策边界。

假设在一个二维平面上有这样一堆点,其实平面上的一个点是由横坐标、纵坐标两个自变量确定的。

如上图(左侧)所示,我们通过一条直线将上面的一堆点给分成了两类。这就是分类问题,而那条直线就是决策边界,分类器就是通过这个决策边界进行分类的。

这个就是线性的(linear decision boundaries)

那么如果如右侧所示,不能用一条直线来作为决策边界对它们进行分类,而是一条曲线(先不管曲线的具体表达函数公式),那么就是非线性的(non-linear decision boundaries)

那么,既然我们有了决策边界才能得到一个分类器。接下来就是如何确定决策边界?换句话就是求决策边界对应的方程。

根据前面的假设,逻辑回归是线性的,那么根据观察,落在边界线的点分为正样本和负样本的概率相等:

我们用数学表达式来写出来:

\frac{p(y=1|x,w) }{p(y=0|x,w)}=1

代入到上面的公式,并把分母消去:

1=e^{-(w^{T}x+b)}

两边加log,左侧log1 =0,右侧e消去

−(w^{T}x+b)=log1→w^{T}x+b=0

这是线性的,说明边界是一个直线。所以说逻辑回归是线性分类器。

接下来我们来求解w,b.

三目标函数Objective Function

要求解w,b 需要有一个依据,或者说就需要有一个优化目标。也就是我们想最大化或者最优化的函数。

模型的实例化 相当于\approx 定义明确的目标函数。

什么叫实例化,类似与面向对象编程的对象Object。我们通常说的神经网络模型,当我们具体使用它的时候,我定义了2层还是3层,每一层的hidden unit,就是实例化了模型。

然后我们再选择具体的优化算法(Stochastic Gradient Descent、AdaGrad等)来求解。

对于逻辑回归来说,就是最大似然函数。

假设我们拥有训练数据集D=\{(x_i,y_i)\}_{i=1}^n \space x\in R^d,y_i\in\{0,1\}

n是样本数,x_{i} 是属于R^{d}的,是d维的向量。y的取值为0,1,就是二分类。

我们需要最大化目标函数:

\widehat{w}_{MLE},\widehat{b}_{MLE}=argmax_{w,b}\coprod_{i=1}^{n}p(y_i|x_i,w,b)

怎么理解公式?就是给定模型情况下,我要呕最大化看到给定数据集的概率,这里面p(y_{i}|x_{i},w,b) 就是每个样本条件概率的。

在最大似然里面需要考虑所有样本,所有样本这里以乘积的方式\coprod_{i=1}^{n}的方式考虑进来。

相关数学符号含义:

\coprod_{i=1}^{n} x_{i}=x_{1}*x_{2}...x_{n}   这个是求积。

\sum_{i=1}^{n}x_{i}=x_{1} +x_{2} +...+x_{n}  这个是相加。

argmax_{w,b} 意思就是我们要寻找w,b 使得这个函数右边式子最大化。最终结果就是左侧的mle最大似然估计。

下面进行求导,先取log,(log是严格递增的函数,加log不会改变求最大w,b)

          log 连乘变连加,另外可以避免小于1的数字连乘造成的underflow:

取负号,使得求最大值变成求最小值:(这是经常做的一个转换,把从求最大值变成最小值)

\widehat{w}MLE,\widehat{b}MLE=argmin_{w,b}-\sum_{i=1}^{n}logp(y_i|x_i,w,b)

其中里面简化公式:log(a^{x}b^{y})=log(a^{x})+log(b^{y})=xloga+ylogb。

简化结果为:

w,b= argmin_{w,b}-\sum _{i=1}^{n}y_ilogp(y_i=1|x,w)^y^i+(1-y_i)log[1-p(y_i=1|x,w)]

四 梯度下降

再正式求解之前,老师先带我们回顾下数学知识求最优解。

我们在求最优解时,需要判断是否全局最优或者局部最优解。

全局极小值点处的函数值不大于任意一点处的函数值。局部极小值点处的函数值比一个局部返回内所有点的函数值都小。在这里,我们的目标是找到全局极小值。不幸的是,有些函数可能有多个局部极小值点,因此即使找到了导数等于0的所有点,还需要比较这些点处的函数值。

对于简单的一元函数或者你能直接求函数的导数=0的。对于复杂的(高维的)精确的求解不太可能,因此只能求近似解,这称为数值计算。

工程上实现时通常采用的是迭代法,它从一个初始点开始,反复使用某种规则从移动到下一个点,构造这样一个数列,直到收敛到梯度为0的点处。

具体的算法有梯度:GD、SGD、AdaGrad等

梯度下降的核心思想:就是从空间的一个点到最低点,有很多路径,那么梯度下降法就是指出了最短路径。走一步看一步,直到最低点。

  • 初始值: 随机值
  • \eta步长(学习率)learning rate.   步长小,时间成本大,步长大,有可能不收敛,找不到最优解。
  • 梯度:\bigtriangledown f(w^{t}) 数学来看是表示f(w^{t})的偏导数,从图来看是告诉我们沿哪个方向走。

w^{t+1}=w^{t}-\eta \bigtriangledown f(w^{t})

补充下数学背景:

从数学角度,比如在1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。可以看下图的老师画的曲线。也可是看上图,曲线是y=x^{2}+1

这里老师举的例子,w=-\frac{b}{2a} 直接求解ax^{2}+bx的解。

然年后再用梯度法去验证。初始值w^{1}=0,\eta =0.1

现在,回到前面的公式,

w,b=argmin_{w,b}-sum_{i=1}^{n}y_{i}.logp(y_{i}=1|x_{i},w)^{y^{i}}+(1-y_{i})log[1-p(y_{i}=1|x_{i},w)]

把sigmoid函数p(y=1|x,w)= \frac{1}{1+ e^{-(w^{T}x+b)}}=\sigma (w^{t}x+b )   带入上面:

把这个看成是w和b的函数,就是要分别对w和b求偏导数:

其中,涉及的数学公式:

**********************

对log 求导,{log}'x =\frac{1}{x}

对于\sigma=\frac{1}{1+e^{-x}} 求导,结论:\sigma '({x}) = \sigma (x)*(1-\sigma (x))

************************

对w求导:

就是预测值减去真实值。如果预测值等于真实值,那么这项等于0,如果预测与真实值不一样,才会产生cost。如果觉得上面看不清公式,可以看下面的图

就这个推导过程,如果使用CSDN自带的公式编辑器去写,得半小时。感谢oldmao的

对b求导:  {b}'=1

b跟w求导区别,就是少了x_{i}

这个图上面部分是讲的对b求导,下面部分是下面开始梯度下降的算法
1、初始化w^{1},b^{1},
2、开始迭代循环:

随机梯度下降Stochastic Gradient Descent

    可以看到,上面的梯度下降法中有一个求和项\sum_{i=1}^{n},这里面n是样本数量,也就是每次梯度更新都要计算所有了样本。

如果数据量很大,比如常见的数据量千万级或者更大,那么就会很慢。那么怎么来优化呢?

   随机梯度下降:在每次更新时用1个样本,也就是说我们用样本中的一个例子来近似所有的样本。虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的。(随机梯度下降每次都去更新,然后每批样本更新n次,不是之前全部样本N完再去更新,通常噪声会很大,所以需要步长比梯度下降要小来优化)更新公式是这样的,只写一下w.

for(i =1,N){

    w^{t+1}= w^{t}-\eta [\sigma (w^{T}x_{i} +b)-y_{i} ]x_{i}

}

这两种情况都比较极端,可以采取一种折中的方式。每次取一个mini-batch的样本(几十个)进行更新梯度。mini-batch Gradient Descent

用了一些小样本来近似全部的。

总结下:

李文哲老师认为batch GD, mini-batch GD, SGD都可以看成SGD的范畴。

能收敛到什么地方?

能到的地方:最小值,极小值,鞍点。这些都是能收敛到的地方,也就是梯度为0的点。

对于凸函数,梯度下降会收敛到最小值。

*************************************

博大精深啊,尤其是数学欠缺的厉害,我翻了下经典的周志华老师的西瓜书,第三章就是线性分析。

本节的内容也有,就是看不懂,李文哲老师这种从机器学习看数学,遇到数学就停下来补充下背景知识的,才是更加适合非数学专业的入门同学看。

加油。

参考:

https://blog.csdn.net/oldmao_2001/article/details/104570191

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值