2020李宏毅机器学习笔记-Logistic Regression

Logistic Regression (逻辑回归

Three Steps of machine learning

Step 1:function set

这里的w和x都是vector,两者的乘积是inner product,从上式中我们可以看出,现在这个model(function set)是受w和b控制的,

因此我们不必要再去像前面一样计算一大堆东西,而是用这个全新的由w和b决定的model——Logistic Regression(逻辑回归)

 

Step 2:Goodness of a function

现在我们有N笔Training data,每一笔data都要标注它是属于哪一个class。

我们就可以去计算某一组w和b去产生这N笔Training data的概率,利用极大似然估计的思想,

最好的那组参数就是有最大可能性产生当前N笔Training data分布的和w*和b*。

由于L(w,b)是乘积项的形式,为了方便计算,我们将上式做个变换,

由于class 1和class 2的概率表达式不统一,上面的式子无法写成统一的形式,为了统一格式,这里将Logistic Regression里的所有Training data都打上0和1的标签,

即output  y^ = 1代表class 1,output  y^ = 0代表class 2,于是上式进一步改写成:

最终这个summation的形式,里面其实是两个Bernouli distribution(两点分布)的cross entropy(交叉熵):

交叉熵实际上表达的是希望这个function的output和它的target越接近越好

如果p和q这两个distribution一模一样的话,那它们算出来的cross entropy就是0。

 

step 3:Find the best function

实际上就是去找到使loss function即交叉熵之和最小的那组参数w*,b*就行了,这里用gradient descent的方法进行运算就可以了。

这里sigmoid function的微分可以直接作为公式记下来:

sigmoid和它的微分的图像如下:

将得到的式子进行进一步化简,可得:

我们发现最终的结果竟然异常的简洁,gradient descent每次update只需要做:

那这个式子到底代表着什么意思呢?现在你的update取决于三件事:

1.learning rate

2.xi 这个是来自于data的

3.y^ - f(xn) 代表f 的output和理性的目标差距有多大 y^是目标值 f(xn)是model的输出值  表示离目标越远,差距越大

 

Logistic Regression V.S. Linear Regression

 

Logistic Regression损失函数的选取:交叉熵损失

之前提到了,为什么Logistic Regression的loss function不能用square error来描述呢?我们现在来试一下这件事情,重新做一下machine learning的三个step

假设中心点就是距离目标很近的地方,如果是cross entropy的话,距离目标越远,微分值就越大,

参数update的时候变化量就越大,迈出去的步伐也就越大,但当你选择square error的时候,过程就会很卡,因为距离目标远的时候,

微分也是非常小的,移动的速度是非常慢的,我们之前提到过,实际操作的时候,当gradient接近于0的时候,其实就很有可能会停下来,

因此使用square error很有可能在一开始的时候就卡住不动了,而且这里也不能随意地增大learning rate,因为在做gradient descent的时候,

你的gradient接近于0,有可能离target很近也有可能很远,因此不知道learning rate应该设大还是设小。

综上,尽管square error可以使用,但是会出现update十分缓慢的现象,而使用cross entropy可以让你的Training更顺利。

 

Discriminative V.S. Generative

 

Logistic Regression的方法,我们把它称之为discriminative的方法;而我们用Gaussian来描述posterior Probability这件事,我们称之为Generative的方法.

相同:模型相同,方法不同
不同:判别方法,通过梯度下降,直接找到w,b。
生成方法,通过假设估计N1,N2,μ1,μ2,∑ 来得到w,b 。
结论:同样的模型,同样的训练数据,采用两种方法所得结果(w,b)不同。因为生成方法对概率分布做了假设。
Discriminative model 常比Generative model表现更好
 

举一个例子来解释一下:

假设总共有两个class,有这样的Training data:每一笔data有两个feature,总共有1+4+4+4=13笔data

如果我们的testing data的两个feature都是1,凭直觉来说会认为它肯定是class 1,

但是如果用naive bayes的方法(朴素贝叶斯假设所有的feature相互独立,方便计算),得到的结果又是怎样的呢?

通过Naive bayes得到的结果竟然是这个测试点属于class 2的可能性更大.

Generative model的好处是,它对data的依赖并没有像discriminative model那么严重,在data数量少或者data本身就存在noise的情况下受到的影响会更小。

而Discriminative model的好处是,在data充足的情况下,它训练出来的model的准确率一般是比Generative model要来的高的。

 

Multi-class Classification

之前讲的都是二元分类的情况,这里讨论一下多元分类问题,其原理的推导过程与二元分类基本一致:

原来的output z可以是任何值,但是做完softmax之后,你的output yi 的值一定是介于0~1之间,并且它们的和一定是1

这个时候就可以计算一下output y 和 target  y^之间的交叉熵,同二元分类一样,多元分类问题也是通过极大似然估计法得到最终的交叉熵表达式的。

Limitation of Logistic Regression

Logistic Regression其实有很强的限制,给出下图的例子中的Training data,想要用Logistic Regression对它进行分类,其实是做不到的。

因为Logistic Regression在两个class之间的boundary就是一条直线,但是在这个平面上无论怎么画直线都不可能把图中的两个class分隔开来。

 

Feature Transformation

如果坚持要用Logistic Regression的话,有一招叫做Feature Transformation,原来的feature分布不好划分,那我们可以将之转化以后,

找一个比较好的feature space,让Logistic Regression能够处理。

假设这里定义x1'是原来的点到 [0,0] 之间的距离,x2'是原来的点到 [1,1] 之间的距离,重新映射之后如下图右侧(红色两个点重合),此时Logistic Regression就可以把它们划分开来

但麻烦的是,我们并不知道怎么做feature Transformation,如果在这上面花费太多的时间就得不偿失了,

于是我们会希望这个Transformation是机器自己产生的,怎么让机器自己产生呢?我们可以让很多Logistic Regression cascade(连接)起来。

因此着整个流程是,先用n个Logistic Regression做feature Transformation(n为每个样本点的feature数量),

生成n个新的feature,然后再用一个Logistic Regression作classifier。

 

通过上面的例子,我们发现,多个Logistic Regression连接起来会产生powerful的效果,我们把每一个Logistic Regression叫做一个neuron(神经元),

把这些Logistic Regression串起来所形成的network,就叫做Neural Network,就是类神经网路,这个东西就是Deep Learning!

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值