首先,老师对二类分类问题的基本概念进行了介绍。
分类问题的输入是事务的各种特征值,输出是是否做出一个决策,接受或拒绝的一个结果或者是某个种类中的一个。
具体要做的工作任务为:在已经有的数据的情况下,通过现有数据各个属性,对之后出现的数据分类进行预测。
例如把输出接近1当作第一类,接近2当作第二类。
如果用一个Regression的线性函数作为预测方法时,最后的结果会隐藏一条分割两种结果的线,这样就可能出现如图的情况。
右下方的点远大于1,方法会自动把这条分割线往下方调整来使得最终结果变好。但其实绿色的线才是最好的分割线,所以这样的方法对于Classfication来说并不好!
我们希望找到的function里面有一个方法 g ( x ) g(x) g(x),当输入x经过 g ( x ) g(x) g(x)后大于一,输出第一类,反之就是第二类。
l o s s loss loss函数是分类错误的次数,但这样的损失函数无法微分,无法使用之前的梯度下降法。
有一些方法可以解决这个问题,例如:Perceptron、SVM等,老师今天讲的传统方法是基于概率论中的最大似然函数以及分布函数相关知识来解决分类问题。
根据概率论的贝叶斯公式,可以得到这个公式,不懂可以研究这个图。
如果我们想要得到一个输出属于某个分类的概率,我们就需要知道图中红框中的四个值,代入这个公式就能算出概率。
这里我们的想法是,通过training data来把这些值估出来,这总方法就叫做Generative Model(生成模型),
之所以叫生成模型,是因为通过这个方法可以来生成数据(通过知道x的分布来生成x),你知道了产生某一类x的几率,就可以随机产生x了。
这里使用了高斯分布作为分类的分布情况,需要知道两个参数来确定这个分布的具体情况。
让高斯分布sample出训练集的数据的可能性的函数我们称为最大似然函数 L i k e l i h o o d Likelihood Likelihood。我们要找一个高斯分布,让这个几率函数最大。
这样我们就可以根据贝叶斯公式算出结果。
然而在做了实验后发现,预测结果并不好(二分问题正确率只有54%)
常用的方法是让不同的class分布公用同一个covariance matrix,来减少参数。因为当iput参数多的时候,covariance matrix会变得很大,这时候参数就特别多,进一步导致overfitting。
这时候boundary是一条直线,在高维上可能不是,准确率也大幅度提升。
至此,这种方法的步骤已经很清晰了。
具体选择使用什么分布,要根据实际情况选择,比如一个二分分布的情况就不适合使用高斯分布。这些方法都称为Naive Bayes Classifier。
我们对概率公式进行等价转变,可以它变成一个Sigmoid函数的形式。
经过一番运算后,Z长这个样子,根据公用参数的改进,可以对式子进行简化。
最后我们发现,其实Z也可以用一个线性函数的形式进行表示。
根据之前的推导我们可以用这样的网络结构来表示这个medel,我们称为Logic Regression。我们把它和Linear Regression进行对比。
可以看到在模型中Logistic Regression多了一步Sigmoid Function。
由于是只有两个类,所以我们可以把loss定为如图的形式。
我们进行等价转换,用 − l n -ln −ln的好处是可以把相乘变成相加。然后我们用1和0来表示属不属于某个类。就可以把每一项转化成右边蓝框中的形式。
这样我们最后整理出的loss函数,其实就是两个贝努利分布的交叉熵。代表的含义是两个分布有多接近,如果两个分布一模一样的话,交叉熵就是0。
在优化过程,使用的还是gradient decent的方法。经过公式的数学推导后,我们发现最后的形式,在更新中只用到了learning rate、data( x i x_i xi)、还有output和 y n y^n yn的差距,所以这个结果看起来是很合理的。
比较后发现,其实优化过程和linear regression是一样的。
如果选择Square Error后会发现参数的变化,在距离目标很远的地方微分值还是很小,变化慢,所以很难训练。
虽然用的同一个set,但是用了不同的假设,所以w和b是不一样的。
Generative的model是基于训练数据然后有一个类似**“脑补”**的功能。大多数用于语音辨识,可以用文字先进行“脑补”。
对于一个Logic Regression 来说如果遇到这种情况,是无法处理的,因为Logic Regression区分两类是用一条直线作为boundary。
这样我们就把基向量进行变形,让数据的坐标也随之变化。
问题是如何找这样的transformation很难,我们就让机器自己去找。
所以我们就可以用很多的Logic Regression串起来,我们把每一个Logic Regression都叫做Neuron。这就是Neural Network,大火就觉得这个过程在模拟人类的大脑的过程!
ohhhhh,这就是被神经网络取代传统方法的全过程了!!!
作业2是一个语音分类问题。
音位(phoneme),是人类某一种语言中能够区别意义的最小语音单位,是音位学分析的基础概念。每种语言都有一套自己的音位系统。
我们的数据是波序列,由于每帧仅包含 25 毫秒的语音,因此单个帧不太可能代表一个完整的音素。在这个 HW 中,我们串联了过去和未来的五个训练帧(共 11 帧),可以将输入 (1,429) 重新转化回 (11,39) 以获得分离11帧
标签对应于中心框架。
助教代码链接