第一步:函数的创建
我们想找的是(C1|x):如果(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,叫做和。这个和就是使L(w,b)的概率最大化的参数。(下图)
现在做一个数学式子上的转换:
(因为这个转的式子很麻烦,现在再进行一次转换)(下图)
经过这个转换上面的复杂的式子就变成:
左右两是相等的。
所以原本的函数表达式就变成下面的样子:
cross entropy(逻辑回归):
假设现在有两个分布: 这两个分布有多么的接近就是cross entropy
这个式子就是cross entropy
如果这两个的分布是一样的那么算出来的cross entropy就是0.
两者第二步:
问题:为什么不能像linear regression使用平方误差?
第三步:找最好的function,最小化对象,用Gradient Descent
计算偏微分:
经过上面的这两个计算,最终得到的结果就是:
更新参数:
做上面的一系列计算的意义是什么呢?
黄色阴影部分的w的更新取决于三件事:有一个是Learing rate(参数更新当中的那个常数,这个常数是可以自己调整的),第二个是xi,这个来自于data。第三个是.
黄色阴影部分的意思是:目标与现在模型的输出之间的差,如果差距越大,那么更新的量就越大
两者的第三步:参数的更新方式
两者的参数更新方式都是一样的。
接上面的那个问题:为什么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使的输出是右边的图
重新组合之后得到下面的图:
上面的一系列过程就叫做:深度学习