李宏毅深度学习笔记1-5Probabilistic Generative Model

1、如何分类Classification

用回归的方式解决分类问题有什么问题:

李宏毅深度学习笔记1-5Probabilistic Generative Model_第1张图片
左图:绿色是分界线。右图:紫色是分界线。训练集添加有很多的距离远大于1的数据后,分界线从绿色偏移到紫色这样用回归的方式硬训练可能会得到紫色的这条。直观上就是将绿色的线偏移一点到紫色的时候,就能让右下角的那部分的值不是那么大了。但实际是绿色的才是比较好的,
用回归硬训练并不会得到好结果。此时可以得出用回归的方式定义,对于分类问题来说是不适用的。还有另外一个问题:比如多分类,类别1当作target1,类别2当作target2,类别3当作target3…如果这样做的话,就会认为类别2和类别3是比较接近的,认为它们是有某种关系的;认为类别1和类别2也是有某种关系的,比较接近的。但是实际上这种关系不存在,它们之间并不存在某种特殊的关系。这样是没有办法得到好的结果。

理想的方法

先看二分类,将 function中内嵌一个函数 g(x),如果大于0,就认识是类别1,否则认为是类别2。损失函数的定义就是,如果选中某个 funciton f(x),在训练集上预测错误的次数。当然希望错误次数越小越好。但是这样的损失函数没办法解,这种定义没办法微分。但是有方法解的,比如Perceptron(感知机),SVM等。这里先引入一个概率模型。

概率模型

考虑一个二分类问题
李宏毅深度学习笔记1-5Probabilistic Generative Model_第2张图片
将上面的模型看作是两个盒子,而X的数值简单的取做蓝色和绿色,那么这个问题就变成了求在取出一个蓝球的情况下它来自第一个盒子的概率。可以用全概率公式计算
P ( B 1 ∣ B l u e ) = P ( B l u e ∣ B 1 ) P ( B 1 ) P ( B l u e ∣ B 1 ) P ( B 1 ) + P ( B l u e ∣ B 1 ) P ( B 1 ) P(B_1|Blue) = \frac{P(Blue|B_1)P(B_1)}{P(Blue|B_1)P(B_1)+P(Blue|B_1)P(B_1)} P(B1Blue)=P(BlueB1)P(B1)+P(BlueB1)P(B1)P(BlueB1)P(B1)
同样的给定一个x,其为Class1的几率为
P ( C 1 ∣ x ) = P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) P(C_1|x) = \frac{P(x|C_1)P(C_1)}{P(x|C_1)P(C_1)+P(x|C_2)P(C_2)} P(C1x)=P(xC1)P(C1)+P(xC2)P(C2)P(xC1)P(C1)
其中有四个几率需要计算(估测),叫做先验概率
而x出现的概率是
P ( x ) = P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) P(x) = P(x|C_1)P(C_1)+P(x|C_2)P(C_2) P(x)=P(xC1)P(C1)+P(xC2)P(C2)

计算先验概率和条件概率

对于 P ( C 1 ) 和 P ( C 2 ) P(C_1)和P(C_2) P(C1)P(C2)可以直接按训练数据统计
对于 P ( x ∣ C 1 ) 和 P ( x ∣ C 2 ) P(x|C_1)和P(x|C_2) P(xC1)P(xC2),利用正态分布计算,其中x用一个向量feartures表示
正态分布(高斯分布):简单点可以把正态分布当作一个function,输入就是一个向量x,输出就是选中x的概率(实际上正态分布不等于概率,只是和概率成正比,这里简单说成概率)。function由期望μ和协方差矩阵∑决定。
同样的∑,不同的μ,正态分布的最高点的位置不同
同样的μ,不同的∑,正态分布的最高点一样,但离散度不同。
假设通过79个点估测出了期望μ和协方差矩阵∑。现在给一个不在79个点之内的新点,用刚才估测出的期望和协方差矩阵写出正态分布的function f μ , Σ ( x ) f_{μ,Σ}(x) fμ,Σ(x),然后把x带进去,计算出被挑选出来的概率
最大似然估计:任意期望μ和协方差矩阵∑的正态分布都能挑选出上述的训练数据,只是概率的大小不同而已,但更靠近数据中心的高正态分布挑选出这样的训练数据的概率更大,因此可以通过最大似然估计估算出一个合理的正态分布,即估算一个能挑选出这样的训练数据的概率最大的正态分布。
因此可以将u和Σ作为参数写出似然函数,利用训练数据对其进行最大似然估计:
L ( μ , Σ ) = ∏ i = 1 n f μ , Σ ( x i ) L(\mu,\Sigma)=\prod_{i=1}^n f_{\mu,\Sigma}(x^i) L(μ,Σ)=i=1nfμ,Σ(xi)
推导可得,估算结果的计算公式如下
李宏毅深度学习笔记1-5Probabilistic Generative Model_第3张图片

计算条件概率并分类

将估算的μ和Σ和待预测的数据代入全概率公式即可
李宏毅深度学习笔记1-5Probabilistic Generative Model_第4张图片
如果结果大于0.5就将其归为第一类
问题:结果是测试集上两个属性的情况正确率只有 47% ,而在7维空间计算出最大释然估计值,此时μ是7维向量,Σ是7维矩阵。得到结果也只有54% 的正确率

2、模型优化

实际上协方差反应的是参数之间的关系,每一个高斯分布都是用不同的协方差矩阵,那么特别是参数过多的时候就会出现Overfitting的情况,因此可以把多个高斯分布分享同一个协方差,来解决过拟合的问题
其中 μ 1 , μ 2 \mu_1,\mu_2 μ1,μ2的计算方式不变,取样本的均值即可,Σ的计算方法略有不同
Σ = n 1 n Σ 1 + n 2 n Σ 2 \Sigma = \frac{n_1}{n}\Sigma_1+ \frac{n_2}{n}\Sigma_2 Σ=nn1Σ1+nn2Σ2
其中 n 1 , n 2 n_1,n_2 n1,n2分别是样本空间为n的训练数据中,类别一和类别二的样本空间大小
分类的boundary是线性的,所以也将这种分类叫做linear model
优化后新的结果,如果考虑所有的属性,发现正确率提高到了73%。

3、概率模型-建模三部曲

1)Function Set(Model):全概率公式,求条件概率
2)Goodness of a function:计算使产生数据的可能性最大的均值u和协方差Σ
3)Find the best function easy:找一个概率分布模型,可以最大化产生data的likelihood,一般是正态分布
简化模型:假设每一个维度用概率分布模型产生出来的几率是相互独立的,那么就可以将 P ( x ∣ C 1 ) P(x|C_1) P(xC1) 拆解。可以认为每个 P ( x k ∣ C 1 ) P(x_k|C_1) P(xkC1)产生的概率都符合一维的高斯分布,也就是此时 P ( x ∣ C 1 ) P(x|C_1) P(xC1) 的高斯分布的协方差是对角型的(不是对角线的地方值都是0),这样就可以减少参数的量。但是试一下这种做法会坏掉。
朴素贝叶斯分类器:对于二元分类来说,此时用通常不会用高斯分布,可以假设是符合Bernoulli distribution(伯努利分布)。假设所有的feature都是相互独立产生的,这种分类叫做Naive Bayes Classifier(朴素贝叶斯分类器)

4、后验概率

即在x的features的情况下判断其类别
李宏毅深度学习笔记1-5Probabilistic Generative Model_第5张图片
推导得:
李宏毅深度学习笔记1-5Probabilistic Generative Model_第6张图片
Σ 1 = Σ 2 = Σ \Sigma_1=\Sigma_2=\Sigma Σ1=Σ2=Σ化简得:
在这里插入图片描述
化简z,x的系数记做向量 w T w^T wT,后面3项结果都是标量,所以三个数字加起来记做b。最后
P ( C 1 ∣ x ) = σ ( w ⋅ x + b ) P(C_1|x)=σ(w⋅x+b) P(C1x)=σ(wx+b)
从这个式子也可以看出上述当共用协方差矩阵的时候,为什么分界线是线性的。既然这里已经化简为上述的式子,直接估测 N 1 , N 2 , μ 1 , μ 2 , Σ N_1,N_2,μ_1,μ_2,Σ N1,N2,μ1,μ2,Σ,不就可以直接得到结果了嘛。这种方法叫做逻辑回归Logistic Regression,因为sigmoid函数也叫Logistic函数,sigmoid函数就是上述的 σ ( z ) \sigma(z) σ(z)因此逻辑回归跟逻辑没啥关系

你可能感兴趣的:(李宏毅深度学习笔记,深度学习)