留出法的含义是:直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另外一个作为测试集T,即D=S∪T,S∩T=0。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的评估。其中T也叫held-out data。
需要注意的问题:
来源于周志华的西瓜书。
In natural science and signal processing, an artifact is any error in the perception or representation of any information introduced by the involved equipment or technique(s).
在自然科学和信号处理中,“artifact”是指相关设备或技术引入的任何信息的感知或表示中的任何错误。
In computer science, digital artifacts are anomalies introduced into digital signals as a result of digital signal processing.
在计算机科学中,数字伪影是由于数字信号处理而引入数字信号中的异常现象。
深度学习代码中经常看见“交叉熵损失函数”,它是“分类问题”中常用的一种损失函数,而且在使用交叉熵作为损失函数时,模型的输出层总会接一个softmax函数。交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性,要理解交叉熵,先解释以下几个名词。
5. 对抗学习的科研前沿
目前,对抗攻击中攻击与防御的方式也是“道高一尺,魔高一丈”,已经经过了许多轮的迭代,演变出了许多攻防方式。随着各种攻击方法的产生,提出的防御方法看似抵御了这些攻击,但是新出现的攻击却又不断躲避着这些防御方法。
至今,人们仍不完全清楚神经网络这个黑盒的本质特性。甚至有研究指出,神经网络完成的分类任务仅是靠辨别局部的颜色和纹理信息,这使得自然的对抗样本,即便不是人为加入的扰动,而是真实采集到的图像,也能够成功地欺骗神经网络。
这也支持了许多研究者的观点,即神经网络只是学习了数据,而非知识,机器学习还无法像人一样学习。这项难题的最终解决,或许依赖于对神经网络的透彻理解,以及对神经网络结构的改进。
弄清楚神经网络内部的学习机制,并据此进行改进,或许才能真正解决目前神经网络对于对抗攻击的脆弱性。因此对抗机器学习不仅是机器学习被更加广泛地被应用的一道门槛,也是促使人们研究如何解释机器学习模型的动力。
随机投影是一种比较有效的降维方法,在计算上比主成成分分析更有效。它通常应用于当数据有太多维度,假定运行程序的资源有限,主成成分分析无法有效计算的时候。
一个简单化的案例,对PCA 和 随机投影。如下图:
PCA:将一个数据集从二维降至一维,PCA的做法是寻找方差最大化的方向,然后将数据投影到最大化方差的方向。该过程将产生最小损伤。
随机投影:在数据有很多维度时,会消耗一定的资源。通常情况下会随机选择一条直线,任何一条进行投影。在某些情景下没有太大的意义,但在更高维度下效果比较好,且效率高。
随机投影的基本前提是:用数据集乘以一个随机矩阵来减少其中的维度。在某种程度上讲,这就是随机投影。
一个简单的案例。如下图:
假如数据集有 12000 列,1500 个样本。这已经可以说是高维度数据集了。将数据集输入到sklearn中随机投影,返回到结果是6268 列、1500 个样本的数据集:
在随机投影中,其实是将原数据集乘以一个随机矩阵就可以被映射成低维的空间。在这种程度下,每两点之间的距离、每对之间的距离在某种程度下得到了保留。这很重要,因为在非监督学习和监督学习中,很多算法都与点之间的距离有关,所以需要保证距离有些失真,但可以保留。
如何保证投影之后的距离得以保留?Johnson-Lindenstrauss引理指出:投影后两点的距离平方值稍有压缩。它大于原数据集两点之间的平方值乘以 (1 - eps) ;小于原数据集两点之间的平方值乘以(1 + eps) 。
如果两点之间距离的平方值为 125.6 。 eps 为 0 ~ 1 之间的值,在sklearn中默认为 0.1。
eps 如同一个操作杆,用于计算产生了多少列,并在此维度是可接受的失真水平。eps 是输入到函数中,用此来在此程度下保证距离。
sklearn 中随机投影的案例:http://lijiancheng0614.github.io/scikit-learn/auto_examples/plot_johnson_lindenstrauss_bound.html#example-plot-johnson-lindenstrauss-bound-py
sklearn 中随机投影API:http://lijiancheng0614.github.io/scikit-learn/modules/generated/sklearn.random_projection.SparseRandomProjection.html#sklearn.random_projection.SparseRandomProjection
独立成分分析(ICA) 是同主成成分分析(PCA) 和 随机投影相似的方法。同样会通过一些数据集特征产生另一个作用数据集。但不同的是PCA用于最大化方差,ICA 则假设这些特征是独立源的混合。并尝试分离这些独立源。
假定有三个朋友参加艺术展览,展览会上同时有着钢琴声、小提琴声、电视声。三个人各在不同声音的旁边,同时用手机录取下来听到的声音。
三个朋友录取的声音都有不同的来源,靠近钢琴的朋友,录取到的钢琴声比较明显;而其他声音则比较弱。其他两个也是,一个录取的小提琴声音比较明显,一个录取电视声比较明显。
是否可以运用ICA剥离出源声音呢?答案是可以。输入收集的三种数据集,利用ICA算法剥离出源数据。这里的源组成分(这里等于3)
简单介绍 ICA 算法的原理。不会涉及复杂的数学知识。详细的信息可查看论文“独立成分分析:算法与应用”。
现在假设有数据集 X , 假设 X 数据集是由源信号 S 乘以混合矩阵 A 产生的, X = AS。如下图:
但是现在有数据集 X ,也就是原录音。S 信号源是需要计算得到的结果,A 为混合矩阵。如此需要变换公式,即 S = WX 。 W 为 A 的倒数,如果A是混合矩阵,W 即为非混合矩阵。
在 S = WX 公式中, X 为输入的源数据集。需要得到想要的 S 结果,就需要计算 W ,所以独立分析算法和其过程全部目标是趋近 W ,或者给出最佳的 W 与 X 相乘来产生原始信号。论文“独立成分分析:算法与应用”对算法做出了清楚的解释。
ICA 被广泛应用于医学扫描仪。一个叫做 EEG或MEG的脑部扫描仪的例子。论文:Independent Component Analysis of Electroencephalographic Data
将 ICA 应用于金融中的因子模型。论文:Applying Independent Component Analysis to Factor Model in Finance
sklearn 中 ICA 的API:http://lijiancheng0614.github.io/scikit-learn/modules/generated/sklearn.decomposition.FastICA.html
使用 ICA 提取混合的音频信号。与上述例子一样。在此下载 文件,使用 jupyter notebook 打开查看。
链接: https://pan.baidu.com/s/10SkvkM9dJPMJSzTRIpiPuQ?pwd=6wnn 提取码: 6wnn