Q1. 交叉熵公式
交叉熵主要用于度量两个概率分布间的差异性信息。
在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布。在相同的一组事件中,用非真实分布q来表示某个事件发生所需要的平均比特数。从这个定义中,我们很难理解交叉熵的定义。下面举个例子来描述一下:
假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:
但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:
此时就将 称之为交叉熵
交叉熵的计算方式如下:
(离散)
(连续)
应用
交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。
在特征工程中,可以用来衡量两个随机变量之间的相似度。
将交叉熵引入计算语言学消岐领域,采用语句的真实语义作为交叉熵的训练集的先验信息,将机器翻译的语义作为测试集后验信息。计算两者的交叉熵,并以交叉熵指导对歧义的辨识和消除。
相对熵与交叉熵
相对熵也成为KL散度,定义为
在机器学习中,训练数据的分布已经固定下来,那么真实分布的熵 是一个定值,最小化相对熵等价于最小化交叉熵
Q2. 神经网络为啥不用拟牛顿法而是用梯度下降?(为什么深度学习不用二阶的优化算法?)
(1) 计算量的问题
如果优化问题是 n 维的,那么单轮梯度下降的复杂度为
,Quasi-Newton 是
,Newton method 是
。在神经网络中, n 通常是个不小的数字,虽然 Newton method迭代次数远少于梯度下降,但是也无法弥补单轮复杂度上的巨大劣势
(2) 解的精度的问题
首先指出,机器学习问题不需要高精度解
忽略常数系数以及与这儿无关的项,泛化误差可以理解为
而第一项只与模型的选择、数据的分布、数据量的大小等相关,完全独立于优化算法。因此,当优化误差已经远低于统计误差时,继续优化带来的实际收益非常小,对整个泛化误差的影响很可能微乎其微
(3)稳定性的问题
越简单的东西往往越鲁棒,对于优化算法也是这样。
神经网络优化有三个问题:大数据(样本多), 高参数,非凸。而 Newton 和 Quasi-Newton 在凸优化情形下,如果迭代点离全局最优很近时,收敛速度快于梯度下降。非凸情形下,Newton 和 Quasi-Newton 会被鞍点吸引,故而每一步迭代可能不降反升。
Q3.为什么决策树之前用PCA会好一点
考虑下图中的大量数据点。如果要求我们画出一条直线,这条线要尽可能覆盖这些点, 那么最长的线可能是哪条?在上图中 , 3条直线中B 最长 。在PCA中,我们对数据的坐标进行了旋转,该旋转的过程取决于数据的本身。第一条坐标轴旋转到覆盖数据的最大方差位置,即图中的直线B 。数据的最大方差给出了数据的最重要的信息。
在选择了覆盖数据最大差异性的坐标轴之后,我们选择了第二条坐标轴。假如该坐标轴与第一条坐标轴垂直, 它就是覆盖数据次大差异性的坐标轴。这里更严谨的说法就是正交(orthogonal)。在上图中, 直线 C 就是第二条坐标轴。利用PCA,我们将数据坐标轴旋转至数据角度上的那些最重要的方向。
我们已经实现了坐标轴的旋转,接下来开始讨论降维。 坐标轴的旋转并没有减少数据的维度。
考虑上图中的3个不同的类别,如果使用决策树区分这3个类别。决策树每次都是基于一个特征来做决策的。我们会发现,在 x 轴上可以找到一些值,这些值能够很好地将这3个类别分开。这 样 ,我们就可能得到一些规则,比 如 当 x < -6 时 ,数据属于类别0