基础知识
涉及一些基础知识的总结与整理
机器学习
机器学习算法是一种能够从数据中学习的算法。Mitchell(1997)定义机器学习:“对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中学习是指通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。”
机器学习的主要挑战是我们的算法必须能够在先前未观测的新输入上表现良好,而不只是在训练集上表现良好。在先前未观测到的输入上表现良好的能力被称为 泛化(generalization)。
- 训练集上的误差:训练误差(traning error) (误差指的是期望方差)
- 新样本上的误差:泛化误差(generalization error)
- 测试集上的误差:测试误差(test error)
- 泛化误差(generalization error) 近似 测试误差(test
error)
以下是决定机器学习算法效果是否好的因素:
- 降低训练误差(traning error)。
- 缩小训练误差和测试误差(test error)的差距。
欠拟合(underfitting)和 过拟合(overfitting)
对应机器学习的两个主要挑战: 欠拟合(underfitting)和 过拟合(overfitting)。
-
所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。
Eg:是识别一只狗狗的模型,我需要对这个模型进行训练。恰好,我训练样本中的所有训练图片都是二哈,那么经过多次迭代训练之后,模型训练好了,并且在训练集中表现得很好。基本上二哈身上的所有特点都涵括进去,那么问题来了!假如我的测试样本是一只金毛呢?将一只金毛的测试样本放进这个识别狗狗的模型中,很有可能模型最后输出的结果就是金毛不是一条狗。 -
欠拟合(underfitting)就是学习器没有很好地学到训练样本的一般性质,不能够很好地拟合数据,所以不论在训练数据还是测试数据中表现都很差。当模型过于简单时会发生欠拟合,由于太少的特征或太多的正则化而导致,这使得从数据集中学习变得不灵活。
Eg:可能二哈被提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至二哈都无法识别。
评估方法
如何选取训练集与测试集,有如下几种方法(测试集于训练集选取尽可能互斥。 ):
- 留出法:将数据集D划分为两个互斥的集合,一个为训练集S另一个为测试集T,D=S⋃T,S∩T=∅(训练集与测试集的选取通常采用分层抽样的方法,并且单次使用留出法所得到的结果不够稳定可靠,一般要采用多次划分重复进行实验后取平均值作为评估结果,一般2/3—4/5的数据用于训练)
- 交叉验证法:将数据集D划分为K个大小相似的互斥子集,即D=D1⋃ D2⋃D3⋃…⋃Dk,Di∩Dj=∅(每个子集通过分层采样得到,用k-1个子集进行训练,余下的子集作为测试集,训练k次返回k次结果的均值,这种方法的极限是留一法)
- 自助法:给定包含m个样本的数据集D,每次随机从中挑选一个样本放入D’中,再将此数据放回D中,然后再进行采样此过程重复m次,我们就得到包含m个样本的数据集D’(样本在m次采样始终不被采到的概率 ,则这部分作为测试集。自助法在数据集较小,难以划分训练集时使用,但是自助法改变了初始数据的分布会带来误差)
预训练
我们在训练模型的时候,如果训练数据比较少,则会导致训练的模型参数不够好;这时候,如果有一批其它的大量的训练数据,我们可用这批大量的数据训练一个网络,学会网络参数,然后用相同的网络结构,参数初始化时加载训练好的参数,在高层的参数随机初始化,用少量的数据集进行训练。加载的训练好的参数可以保持不变,即“frozen“,也可以随着训练的进行改变,即”fine_tuning“,最常见的例子用在图像处理中。
优点:加快训练速度;解决数据集太小导致的无法训练问题;找到好的初始化参数。