李宏毅机器学习之logistic regression

一、逻辑回归

1.1 Step 1 逻辑回归的函数集

  • 在前面我们在分类问题的解决方法中,得到了函数集的形式

  • 将函数集可视化:

  • 上面这种函数集的分类问题叫做Logistic Regression(逻辑回归),将它和线性回归的函数集做一个对比:

1.2 定义损失函数

  • 下图中有一个训练集,每个对象分别对应属于哪个类型(例如:x^3属于C_2)。假设这些数据都是由后验概率f_{w, b}(x) = P_{w,b}(C_1|x)产生的,给定一组w和b,就可以计算这一组w,b下产生的下图个训练数据的概率,L(w,b) = f_{w, b}(x^1)f_{w, b}(x^2)(1-f_{w,b}(x^3))\cdots f_{w,b}(x^N),对于使得L(w, b)最大的w和b,记做w^*b^*,即:w^*, b^* = argmax_{w, b}L(w, b),将训练集数字化,并且将w^*, b^* = argmax_{w, b}L(w, b)求max通过取负自然对数转化为求min。

  • -lnL(w,b)改写为下图中带蓝色下划线式子的样子

  • 上图中蓝色下划线实际上代表的是两个伯努利分布(0-1分布,两点分布)的 cross entropy(交叉熵),假设有两个分布 p 和 q,如图中蓝色方框所示,这两个分布之间交叉熵的计算方式就是H(p,q)H(p,q);交叉熵代表的含义是这两个分布有多接近,如果两个分布是一模一样的,那计算出的交叉熵就是熵。
  • 下面比较逻辑回归和线性回归的损失函数,这时候我们可以直观把function的输出和target看作两个伯努利分布,所做的事情就是希望这两个分布越接近越好。

1.3 Step 3 寻找最好的函数

  • 使用梯度下降:

  • 要求-LnL(w,b)w_i的偏微分,只需要先算出lnf_{w,b}(x_n)w_i的偏微分以及ln(1-f_{w,b}(x_n))w_i的偏微分。计算lnf_{w,b}(x_n)w_i的偏微分,f_{w, b}(x)可以用\sigma (z)表示,而z可以用w_i和b表示,所以利用链式法则展开。

  • 计算ln(1-f_{w,b}(x_n))w_i的偏微分,同理求得结果

  • 将求得两个子项的偏微分带入,化简得到结果,下载的w_i的更新取决于学习率\etax_{i}^{n}以及下图的紫色划线部分;紫色下划线部分直观上看就是真正的目标y^n与我们的function差距有多大

  • 下面比较逻辑回归和线性回归,这次比较如果挑选最好的function:

  • 对于逻辑回归,target y^n是0或1,输出是介于0或1之间。而线性回归的target可以任何实数,输出也可以是任何值。

二、损失函数:为什么不学线性回归用平方误差

  • 考虑上图中的平方误差形式。在step 3中计算出了对w_i的偏微分。假设y^n = 1,如果f_{w, b}(x_n)=1,就是非常接近target,会导致偏微分中第一部分为0,从而偏微分为0;而f_w,_b(x_n)=0,会导致第二部分为0,从而偏微分也是0。
  • 对于两个参数的变化,对总的损失函数作图:

  • 如果是交叉熵,举例target越远,微分值就越大,就可以做到距离target越远,更新参数越快。而平方误差在距离target很远的时候,微分值非常小,会造成移动的速度非常慢,这就是很差的效果了。

三、判别模型和生成模型

  • 逻辑回归的方法称为Discriminative(判别)方法;上一篇中用高斯来描述后验概率,称为 Generative(生成) 方法。它们的函数集都是一样的:

  • 如果是逻辑回归,就可以直接用梯度下降法找出w和b;如果是概率生成模型,就要像之前一样求出\mu ^1,\mu ^2,协方差矩阵的逆,然后就能算出w和b,用逻辑回归模型和生成概率模型找出来的额w和b是不一样的

3.1 一个好玩的例子

  • 上图的训练集有13组数据,类别1里面两个特征都是1,剩下的(1, 0), (0, 1), (0, 0) 都认为是类别2;然后给一个测试数据(1, 1),它是哪个类别呢?人类来判断的话,不出意外基本都认为是类别1。下面看一下朴素贝叶斯分类器(Naive Bayes)会有什么样的结果。
  • 朴素贝叶斯分类器如图中公式:x属于C_1的概率等于每个特征属于C_1概率的乘积

  • 计算出P(C_1|x)的结果是小于0.5的,即对于朴素贝叶斯分类器来说,测试数据 (1, 1)是属于类别2的,这和直观上的判断是相反的。其实这是合理,实际上训练集的数据量太小,但是对于 (1, 1)可能属于类别2这件事情,朴素贝叶斯分类器是有假设这种情况存在的(机器脑补这种可能性==)。所以结果和人类直观判断的结果不太一样。

3.2 判别方法不一定比生成方法好

  • 生成方法的优势:训练集数据量很小的情况;因为判别方法没有做任何假设,就是看着训练集来计算,训练集数量越来越大的时候,error会越小。而生成方法会自己脑补,受到数据量的影响比较小。 对于噪声数据有更好的鲁棒性(robust)。 先验和类相关的概率可以从不同的来源估计。比如语音识别,可能直观会认为现在的语音识别大都使用神经网络来进行处理,是判别方法,但事实上整个语音识别是 Generative 的方法,DNN只是其中的一块而已;因为还是需要算一个先验概率,就是某句话被说出来的概率,而估计某句话被说出来的概率不需要声音数据,只需要爬很多的句子,就能计算某句话出现的几率。

四、多类别分类

4.1 softmax

  • 假设有3个类别,每个都有自己的weight和bias,把z_1,z_2,z_3放到一个叫做Softmax的方程中,Softmax做的事情就是它们进行exponential(指数化),将exponential 的结果相加,再分别用 exponential 的结果除以相加的结果。原本z_1,z_2,z_3可以是任何值,但做完Softmax之后输出会被限制住,都介于0到1之间,并且和是1。Softmax做事情就是对最大值进行强化。输入x,属于类别1的几率是0.88,属于类别2的几率是0.12,属于类别3的几率是0。

  • Softmax的输出就是用来估计后验概率(Posterior Probability)。为什么会这样?下面进行简单的说明:

4.2 为什么Softmax的输出可以用来估算后验概率?

  • 假设有3个类别,这3个类别都是高斯分布,它们也共用同一个协方差矩阵,进行类似上一篇讲述的推导,就可以得到Softmax。信息论学科中有一个 Maximum Entropy(最大熵)的概念,也可以推导出Softmax。简单说信息论中定义了一个最大熵。指数簇分布的最大熵等价于其指数形式的最大似然界。二项式的最大熵解等价于二项式指数形式(sigmoid)的最大似然,多项式分布的最大熵等价于多项式分布指数形式(softmax)的最大似然,因此为什么用sigmoid函数,那是因为指数簇分布最大熵的特性的必然性。假设分布求解最大熵,引入拉格朗日函数,求偏导数等于0,直接求出就是sigmoid函数形式。还有很多指数簇分布都有对应的最大似然界。而且,单个指数簇分布往往表达能力有限,就引入了多个指数簇分布的混合模型,比如高斯混合,引出了EM算法。想LDA就是多项式分布的混合模型。

4.3 定义target

  • 上一篇我们了解到定义类别1是y_1,\hat{y}_1,类别2是y_2,\hat{y}_2,类别3是y_3,\hat{y}_3,这样会人为的造成类型1和类型2有一定的关系这种问题。但可以将\hat{y}定义为矩阵,这样就避免了。而且为了计算交叉熵,\hat{y}也需要是个概率分布才可以。

五、逻辑回归的限制

  • 下面例子中无法单纯的用逻辑回归来分类:

5.1 特征转换

  • 特征转换的方式很多,举例类别1转化为某个点到 (0,0)点的距离,类别2转化为某个点到 (1,1)点的距离。然后问题就转化右图,此时就可以处理了。但是实际中并不是总能轻易的找到好的特征转换的方法。

5.2 级联逻辑回归模型


  • 可以将很多的逻辑回归接到一起,就可以进行特征转换。比如下图就用两个逻辑回归 对z_1,z_2来进行特征转换,然后对于{x_1}',{x_2}',再用一个逻辑回归方法z来进行分类

  • 将之前的例子用这种方法处理

  • 经过这样的转换之后,点就被处理为可以进行分类的结果。 

  • 一个逻辑回归的输入可以来源于其他逻辑回归的输出,这个逻辑回归的输出也可以是其他逻辑回归的输入。把每个逻辑回归称为一个 Neuron(神经元),把这些神经元连接起来的网络,就叫做 Neural Network(神经网络)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值