(7)逻辑回归(Logistic Regression)

第一步:函数的创建

我们想找的是P_{w,b}(C1|x):如果P_{w,b}(C1|x)≥0.5,输出的就是C1,反之,输出的就是C2,如果用高斯函数的话,得到的结果就是

 (上一节讲到的)

所以最终得到的function set:

(包含所有的w,b)

用图像来表示的话:

(输出的值介于0到1之间)

上面的这一系列的操作叫做Logistic Regression的函数

 现在将Logistic Regression和linear Regression做一下比较:

两者的第一步:函数的创建

 

 第二步:决定一个函数的好坏,因为我们现在做的是分类,假设现在有N 个training data,其中的每一个training data都标注有属于哪一个class。接下来假设这些training data是从中产生的。那给我们一个w,b,我们就决定了前面的这个函数,就可以计算某一组w,b.产生N个training data的概率。

某一组w和b产生N个training data的概率是怎样算的呢?(下图)

 最好的参数w和b就是那个最大可能性,最大的概率产生training data 的w和b,叫做w^{*}b^{*}。这个w^{*}b^{*}就是使L(w,b)的概率最大化的参数。(下图)

现在做一个数学式子上的转换:

(因为这个转的式子很麻烦,现在再进行一次转换)(下图)

经过这个转换上面的复杂的式子就变成:

 左右两是相等的。

所以原本的函数表达式就变成下面的样子:

 cross entropy(逻辑回归):

假设现在有两个分布: 这两个分布有多么的接近就是cross entropy

 这个式子就是cross entropy

 如果这两个的分布是一样的那么算出来的cross entropy就是0.

 两者第二步:

 问题:为什么不能像linear regression使用平方误差?

第三步:找最好的function,最小化对象,用Gradient  Descent

计算偏微分: 

 

经过上面的这两个计算,最终得到的结果就是:

 更新参数:

 做上面的一系列计算的意义是什么呢?

黄色阴影部分的w的更新取决于三件事:有一个是Learing rate(参数更新当中的那个常数\eta,这个常数是可以自己调整的),第二个是xi,这个来自于data。第三个是\widehat{y}^{n}.

黄色阴影部分的意思是:目标与现在模型的输出之间的差,如果差距越大,那么更新的量就越大

 

 两者的第三步:参数的更新方式

 两者的参数更新方式都是一样的。

接上面的那个问题:为什么Logistic Regression不能用平方误差

 如果要用平方误差会是什么样的?

 

 现在用Gradient Descent去更新参数:但是现在出现一个问题

 

 这会造成什么问题呢?

如果去我们把参数的变化对对Total loss作图的话,选择cross entropy和square error

 

离目标中心点很近的地方,微分值是很小的,但是离目标中心点很远的地方,微分值也是很小的

 ,所以在离目标很远的地方,会非常的平坦。这会造成什么样的问题呢?

如果是cross entropy的话,距离目标越远,微分值就越大,参数更新的时候就越快(这种方法在实际的操作上会快很多)

 如果选square error的话,距离目标远的时候,微分是非常小的,参数更新的就越慢。

Discriminative(Logistic Regression)和Generative(前面用高斯算概率)

两者的函数表达式子是一样的。

两者相互比较,得到的w和b是一样的吗?(不一样)

 

是因为前者是没有做假设的,直接算出来的,但是后者是做了假设。假设是在高斯分布的情况下找到另外一组w和b 。

那这两者哪一组的假设是比较好的呢?

   

为什么会是这样的情况呢?举例说明

下面有13个training data

 

 

 通过上面的计算之后,现在给出一组testing data就可以知道他的概率是多少

 所以通过上面的计算知道,给出一个testing data最后算的结果是小于0.5的,这个testing data是属于class2的。

 有时候Generative model也是有好处的:

 在training data很少的时候

现在讲两个class以上的:三个class的

softmax function

上面的这个过程总结一下就是:

 

现在假设

 

 Logistic Regression的限制

 

但是这件事是Logistic Regression做不到的,因为两个class的界限是两条直线,不过怎么花都没办法很好的区分大于0.5的和小于0.5 的点。

怎么解决上面的问题呢?一种方法叫做feature transformation

 

 但是我们不知道怎么找一个好的transformation。这个transformation是机器自己产生的

 

 调整w使的输出是右边的图

 

 

 重新组合之后得到下面的图:

上面的一系列过程就叫做:深度学习

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值