ML 的第一个步骤:
Step 1: Function Set for Posterior Probability
上一章我们已经设置了函数,就是寻找机率的问题,
如果机率大于0.5,我们就说该点在C1, 如果机率小于0.5, 该点就在C2。
如果机率函数是高斯分布的,我们就用sigmoid方程,如下图
其中 w是Vector,方程中每个xi 都有一个 wi,然后带入方程,就可以求出sigmoid方程的机率。
step1 .png
基本上整个模型就是下图形式,这个就是 Logistic Regression 方程的model
sigmoid.png
Logistic Regression 和 Linear Regression
接下来Step 2,评价函数好坏。对训练数据(x1,C1)(x2,C1)(x3,C2)……用y^=1 表示C1,用y^=0 表示C2。那么似然函数可以表示为
交叉熵.png
交叉熵代表两个机率函数p,q有多接近。若两个分布完全一样则交叉熵等于0。
Step3:找出最好的function,我们用 Gradient Descent,首先求偏导数,然后用Gradient Descent 来update。得出如下图中参数公式
step3.png
为什么Logistic Regression 不能用 Square Error?
如果用平方误差损失,在计算损失函数对参数的微分时会出现如下情况 20170408151302743.png说明,在结果 far from target 时,微分很小。 需要update很多很多次才可以到 target,或者直接卡住。
为了更形象的说明问题,将交叉熵损失/平方误差损失与参数之间的关系画出
20170408151625544.png
判别方法 v.s. 生成方法 Discriminative vs Generative
两个函数的表达形式是一样的,但是判别方法的直接找到 w 和 b 与生产方法的 先求 u 和 E 然后再求出 w 和 b, 两组的 w 和 b 会一样吗?是不一样的,而且判别方法比较好,因为生成方法对概率分布做了假设。
accuracy.png
20170408153606883.png
朴素贝叶斯的结果是Class 2。
生成模型在一些情况下相对判别模型是有优势的:
1、训练数据较少时。判别模型的表现受数据量影响较大,而生成模型受数据量影响较小。
2、label有噪声时。生成模型的假设(“脑补”)反而可以把数据中的问题忽视掉。
3、判别模型直接求后验概率,而生成模型将后验概率拆成先验和似然,而先验和似然可能来自不同来源。以语音识别(生成模型)为例,DNN只是其中一部分,还需要从大量文本(不需要语音)中计算一句话说出来的先验概率。
Multi-class Classification
在做Multi-class Classification时,需要softmax。原因可参考Bishop P209-210,或Google “maximum entropy”。
最小化交叉熵,等价于最大化似然函数
20170408155736195.png
Limitation of Logistic Regression 局限性
那我们怎么做呢?
但是这样做就不是机器学习了,所以我们还有其它的办法,就是我们可以多设置几个feature transformation model,然后得到另外的一组feature,然后在分类
add feature.png
一个Logistic Regression的input可以是其它Logistic Regression的output;一个Logistic Regression的output可以是其它Logistic Regression的input。这样,我们就得到了Neural Network,其中每个Logistic Regression叫做一个Neuron. Neural.png
网友评论