这个故事包含了,有监督,无监督,训练数据集,测试数据集,过拟合
第一眼看到“学习”,大多数人想到的是读书、上课、写作业,我们就拿它作为切入点。上课时,我们是跟着老师一步步学习,即“有监督”学习;而课后的作业,则需要靠自己完成,是“无监督”学习。平时做的课后练习题,是我们学习系统的“训练数据集”,而考试时卷面上的题目则属于“测试数据集”,用于检验我们的学习成果。“学霸”训练效果比其他人好,对测试数据集的所有情况如数家珍;“学渣”则完全没有训练或训练不充分,对测试数据集的效果和随机猜测差不多;还有“学痴”在训练上出现了“过拟合”,平时做训练题滚瓜烂熟,一遇大考就跪了……
更抽象地表达,可以说学习是一个不断发现自身错误并改正错误的迭代过程。人是如此,机器亦如此。带“学习”功能的机器能仅仅通过“看”未知系统的输入-输出对(称为训练样本),自动实现该系统内部算法,并具有举一反三的能力(称为泛化),对不在训练样本中的未知输入也能产生正确的输出,完全不需要程序员或算法专家动手设计中间算法,是不是感觉非常酷?
如果将训练样本表示为:
D= {z1, z2, …, zn}
其中,zi表示未知系统 P(Z)中采样得到的数据(每个元素都可表示为输入-输出对)。规定惩罚函数L(f, Z),其参数为学习到的规则f和独立于训练样本的验证样本集Z,其返回值为实数标量,称为惩罚值,又称损失(Loss)。对机器的要求是让损失最小,否则会让机器陷入无止境的重复计算中不得安宁。运行在这些机器上的邪恶算法称为机器学习算法,它能从数据D中学习游戏规则f(攒经验),然后靠学到的经验不断提高游戏得分,最终获得整套游戏攻略(训练好的模型)。
为了让机器自动学习,需要为机器准备三份数据:
(1)训练集,机器学习的样例。
(2)验证集,机器学习阶段,用于评估得分和损失是否达到预期要求。
(3)测试集,机器学习结束之后,实战阶段评估得分。