机器学习课堂笔记
本文记录在本学期《机器学习及其应用课》上一些印象比较深刻的知识点;大部分在课堂PPT或者相关书籍(周志华《机器学习》,李航《统计学习方法》)上很容易理解的点就不在此赘述了;
笔者水平有限,如果有错误清多多指正;
模型的评估与选择
泛化误差的分解
泛化误差是模型对位置数据预测的误差: $$$$
首先要明确的一点是,泛化误差
但是笔者目前看到几乎所有的论文都是,在测试集甚至验证集上,有更好的性能,就SOTA了?
泛化误差是一个理论上的误差,如果能描述清楚其上下界,则对实验有一定的指导意义:泛化误差的下界决定了在一个任务上最理想能刷到多少点,是收到数据集的限制的;泛化误差的上界反映了模型本身是否容易学习,一般认为,泛化误差上界越小的模型越好,然而对于简单的线性模型,我们也许可以给出上界,但是对于现在的各种复杂的非线性的、深层的模型,给出泛化误差上界仍然是很难的问题。
下面是对泛化误差的分解:
记测试样本为
和 的区别,是数据标注时引入的误差,由标注员本身认知的偏置和偶然的错误组成; 和 的区别,即由于训练集变动等原因,导致模型对同一个样本的预测不总是相同; 下面的
直接使用均方误差:
上述推导用到的知识有:
,其中 是常数, 是随机变量;特殊地 ;
,当且仅当 是相互独立的随机变量; 需要的假设有:
噪声期望为0,即
,这是假设了数据集的标注没有系统误差而都是随机误差,比较合理;则可以推出 ; 偏差与噪声无关;
VC维
以下定义来自机器之心 - VC维度
VC维是衡量可以通过统计分类算法学习的函数空间的容量的度量。定义为算法可以破碎(shatter)的最大点集的基数。shatter的含义为,对于一个假设空间
e.g. 线性模型的VC维为3,因为3个点线性可分而4个点的xor情况线性不可分。
泛化误差上界
在推导特定问题的泛化误差上界之前,我们定性地描述泛化误差上界:
- 样本容量越大,泛化误差上界趋于0;
- 假设空间容量越大,泛化误差上界越大;
考虑二分类问题,样本容量为
经验风险最小化函数为
具体证明见: 李航《统计学习方法》。
向量、矩阵、张量的导数
理解矢量导数,最朴素的方式,就是把矢量计算拆成多个并行的标量计算;
以下内容来自cs231n的参考资料,用粗体字母表示向量,用大写字母表示矩阵,一般的小写字母表示标量;
向量对向量求导
设
如果
与 都是行向量且 ,同样有
向量对矩阵求导
与上一小节条件相同,直观地看,
推广后,我们发现,对于
当然,结果还可以继续“紧凑”成向量
,这里我们有意让 的形状与 相同,是利于理解反向传播过程中参数的更新,当然,利用numpy/pytorch的广播机制,只需要保存一个向量即可;
矩阵对矩阵求导
将先前定义的
使用先前的结论,有
将矩阵乘法展开成标量乘积之和形式,还可以得到
类似的,
这个结果,在形式上,又与标量求导相同,只不过我们需要清楚,这些都是“紧凑”后的形式;
线性模型
线性判别分析
核心思想:将高维空间的样本投影到一条直线上,使得同类样本尽可能近,异类样本尽可能远;
如何表示投影
如何表示投影?在线性代数要点总结的“正交投影”一节,给出了将
直观地看,在上图中,
回想投影公式的推导过程,
现在我们只需要知道在1维子空间的唯一基方向的长度
如何设计目标函数
首先定义一些接下来会用到的符号,总样本集合
有关协方差和投影后协方差矩阵的形式,可见线性代数要点总结的主成分分析一节;
希望类间距离越大,可以写成样本中心距离越大;希望类内距离越小,可以写成协方差越小,则目标函数(最大化)为:
类间散度矩阵为
抛去了归一化项会有什么影响吗?直观地,正负样本的数量不同时,会有差距,不做归一化会使得
偏向样本多得那一方。可是求平均同样会放大样本较少类别中离群点的影响。对于类别不均衡问题,LDA算法本身没有考虑,但是后续可以通过难样本挖掘等采样策略来训练等等;
如何优化
如何求解使
为了便于理解,在上图中原始空间为
的情况下,记 , 也就是这样的一个目标函数:
对应的拉格朗日函数为:
在Fisher判别分析中,没有协方差矩阵满秩的假设,因此
可以使用求伪逆的方法;
转化为求解
如何分类
对于二分类问题,在投影到1维直线上之后,我们需要确定一个阈值来在推理时区分正负类别,最简单的,可以使用投影后的样本中心的均值作为阈值;
如何扩展到多分类
观察上述过程,扩展到多分类,仍要满足类内距离小,那么
仍要满足类间距离大,那么
先定义一个全局散度矩阵
扩展到多分类的另一个问题在于,投影到1维直线上已经不太合适了,
协方差矩阵的迹是总方差
上述问题的解与之前有相同形式(笔者目前还不能给出推导过程):
在推理时,设
为什么
分类投影到 的超平面?还是别的维度也可以? 不存在什么限制要求必须投影到$K-1维超平面
扩展到降维
上面在多分类的扩展中,我们看到了LDA可以作为监督降维技术,并且这种投影过程使用了类别信息;
逻辑斯蒂回归/对数几率回归
一句话描述逻辑斯蒂回归,就是在线性回归层之后使用了sigmoid函数,并设置阈值完成二分类预测,相比于直接用线性模型+阈值做分类,能够一定程度减少离群点的影响;
如何优化逻辑斯蒂回归模型的参数?我想起来在吴恩达老师的机器学习入门课中,给了一个新手友好的解释:
线性回归模型 + MSE损失,和逻辑回归模型 + BCE损失,求导后损失函数对
的梯度形式均为Error * Feature
逻辑回归模型为什么引入CE?又为什么不用MSE?吴恩达老师只是简单提到了最大似然估计和非凸函数,没有给当时还是新手的我讲太多;下面笔者记录一下,是怎样得到BCE损失函数的?
从统计意义解释
决策边界:使得模型输出=分类阈值的所有输入的集合,设输入特征是
如果阈值为0.5,那么超平面即
,将偏置项"吸入",也就是
使用sigmoid激活之后,模型的输出可以视为一种后验概率:
设输入数据为
扩展到多分类
同样的,写出对数似然函数,仍然能够得到CE损失的形式:
这里有一份softmax+CE loss的求导过程;
Gitalk 加载中 ...