机器学习三要素之数据模型、算法
1. 机器学习与⼈脑映射关系
我们⾃⼰⽤来判断万事万物的“观点”、“看法”、“洞察”,实际上都是我们头脑中⼀个个“模型”对所闻所见(输⼊数据)进⾏“预测”的结果。这些模型⾃⾝的质量,直接导致了预测结果的合理性。
从机器学习认识客观规律的过程中,我们可以知道,模型是由数据和算法决定的。对应到⼈脑,数据是我们经历和见过的万事万物,⽽算法则是我们的思辨能⼒。
2. 学原理和公式推导的意义
不同模型的特质、适⽤场景,对当前数据的匹配程度;
不同算法对算⼒和时间的消耗;
不同框架对软硬件的需求和并⾏化的⼒度;
评判模型性能的指标有哪些,如何计算?
正在使⽤的模型是怎么⼯作的?
这些超参数是什么含义,调整它们会产⽣哪些影响?
特征选取有哪些原则、⽅法可运⽤?
真正创造价值的,从来都是解决实际问题的⼈。
雅科仕vs380但对于理论知识扎实的机器学习⼯程师来说,他们完全有可能针对具体业务问题,构造出⽬标函数,甚⾄开发出符合⾃⾝软硬件资源特点的求解算法。
作者强烈建议:即使⽬标岗位是“深度学习⼯程师”,也应该从统计学习⽅法学起。
⼀⽅⾯深度学习与机器学习具有传承的关系,学习后者对于直观理解前者有极⼤帮助。
另⼀⽅⾯,统计学习⽅法建⽴在将概念“数字化”(向量化)的基础上,以数学公式和计算来表达概念之间的关联及转化关系。机器学习是⼀种认识世界的⼯具,借助它,我们可以从⼀个新的⾓度来看待世间万物。
换句话说,当我们知道机器是怎样通过学习事物特征的概率分布和转换来掌握事物规律的时候,我们就有可能反过来审视⾃⼰看待世界的⽅法,发现其中不合理的部分,并主动优化⾃⼰的思维模型。
作者分享出来只是想说明:学习机器学习原理和公式推导,并⾮只是做⼀些⽆聊的数字变换。很可能由此为我们打开⼀扇窗,让我们从新的⾓度看待世界,并为⽇常的思考过程提供更加可量化的⽅法。
3. 数据模型算法之间的联系
机器学习三要素包括数据、模型、算法。简单来说,这三要素之间的关系,可以⽤下⾯这幅图来表⽰:
总结成⼀句话:算法通过在数据上进⾏运算产⽣模型。
3.1 数据
输⼊给计算机的图⽚或者视频是原始数据,由于计算机只能处理数值,⽽不是图⽚或者⽂字。所以我们就需要构建⼀个向量空间模型(Vector Space Model ,VSM)。 VSM 负责将格式(⽂字、图⽚、⾳频、视频)转化为⼀个个向量。然后开发者把这些转换成的向量输⼊给机器学习程序,数据才能够得到处理。
3.1.1 ⽆标注数据
⽐如图2⼩马宝莉中的6为⼥主⾓,我们要给她们做聚类,⽽且已经知道了,要⽤她们的两个特征来做聚类,这两个特征就是:独⾓和翅膀。
那么我们就可以定义⼀个⼆维的向量 A=[a_1,a_2]。a_1 表⽰是否有独⾓,有则 a_1 = 1, 否则 a_1 = 0。⽽ a_2 表⽰是否有翅膀。
那么按照这个定义,我们的6匹⼩马最终就会被转化为下⾯6个向量:
X_1 =[1,0]
X_2 =[0,0]
X_3 =[0,0]
X_4 =[0,1]
X_5 =[0,1]
X_6 =[1,0]
这样,计算机就可以对数据 X_1,……,X_6 进⾏处理了。这6个向量也就叫做这份数据的特征向量
(Feature Vector)。
3.1.2 有标注数据
数据标注简单⽽⾔就是给训练样本打标签。这个标签是依据我们的具体需要给样本打上的。
⽐如,我们要给⼀系列图标做标注,所有图⽚分为两类:“猫”或者“不是猫”。那么就可以标注成下图这样:
我们把样本的标签⽤变量 y 表⽰,⼀般情况下,y 都是⼀个离散的标量值。
标注数据当然也要提取出特征向量 X。每⼀个标注样本既有⽆标注样本拥有的 X,同时还⽐⽆标注样本多了⼀个 y。 例如:
我们⽤三维特征向量 X 表⽰⽼⿏分类器的源数据,每⼀维分别对应“⽿朵是圆的”、“有细长尾巴”、“是尖⿐⼦”。同时⽤⼀个整型值 y 来表⽰是否为⽼⿏,是的话 y=1,否则 y=0。
那么图1⽼⿏和其他动物对应的数据就是这样的:
X_1 =[1,1,1]; y =1
X_2 =[1,1,1]; y =1
X_3 =[1,1,1]; y =1
X_4 =[1,1,1]; y =1
X_5 =[1,1,1]; y =1
X_6 =[0,1,1]; y =0
X_7 =[0,0,0]; y =0
X_8 =[0,1,0]; y =0
X_9 =[0,0,1]; y =0
在数据转换到 VSM 之后,机器学习程序要做的就是把它交给算法,通过运算获得模型。福瑞达论坛
⼤家已经看到了,我们之所以能把具体的⼀系列童话⼈物转化为2维或者3维的向量,是因为我们已经确定了对某些⼈物⽤哪些特征。
这⾥其实有两步:
确定⽤哪些特征来表⽰数据;
确定⽤什么⽅式表达这些特征。
这两步做的事情就叫做特征⼯程。有了特征⼯程,才有下⼀步的 VSM 转换。
3.2 模型
3.2.1 模型概念
模型是机器学习的结果,这个学习过程,称为训练( Train )。
⼀个已经训练好的模型,可以被理解成⼀个函数: y=f(x) 。我们把数据(对应其中的 x)输⼊进去,得到输出结果(对应其中的 y)。
这个输出结果可能是⼀个数值(回归),也可能是⼀个标签(分类),它会告诉我们⼀些事情。
⽐如,我们⽤⽼⿏和⾮⽼⿏数据训练出了⽼⿏分类器。这个分类器就是分类模型,它其实是⼀个函数。
3.2.2 模型来源
模型是基于数据,经由训练得到的。训练⼜是怎么回事?
模型是函数: y=f(x) , x 是其中的⾃变量, y 是因变量。从 x 计算出 y 要看 f(x) 的具体形式是什么,它有哪些参数,这些参数的值都是什么。
在开始训练的时候,我们有⼀些样本数据。如果是标注数据,这些样本本⾝既有⾃变量 x (特征)也有因变量 y (预期结果)。否则就只有⾃变量 x 。对应于 y=f(x) 中的 x 和 y 取值实例。
这个时候,因为已经选定了模型类型,我们已经知道了 f(x) 的形制,⽐如是⼀个线性模型 y=f(x)=ax+bx+c ,但却不知道⾥⾯的参数 a 、b 、 c 的值。
**训练 **就是:根据已经被指定的 f(x) 的具体形式——模型类型,结合训练数据,计算出其中各个参数的具体取值的过程。
训练过程需要依据某种章法进⾏运算。这个章法,就是算法。车王认证二手车超市
3.3 算法
有监督和⽆监督学习的算法差别甚⼤。因为我们在⽇常中主要应⽤的还是有监督学习模型,所以就先以此为重点,进⾏讲解。
有监督学习的⽬标就是:让训练数据的所有 x 经过 f(x) 计算后,获得的 y’ 与它们原本对应的 y 的差别尽量⼩。
我们需要⽤⼀个函数来描述 y’ 与 y 之间的差别,这个函数叫做损失函数( Loss Function ) L(y, y’)= L(y, f(x)) 。
红旗h7报价及图片
Loss 函数针对⼀个训练数据,对于所有的训练数据,我们⽤代价函数( Cost Function )来描述整体的损失。
代价函数⼀般写作: J ( theta )——注意,代价函数的⾃变量不再是 y 和 f(x) ,⽽是变成了 theta , theta 表⽰ f(x) 中所有待定的参数( theta 也可以是⼀个向量,每个维度表⽰⼀个具体的参数)!
⾄此,我们终于得到了⼀个关于我们真正要求取的变量( theta )的函数。⽽同时,既然 J(theta) 被称为代价函数,顾名思义,它的取值代表了整个模型付出的代价,这个代价⾃然是越⼩越好。
因此,我们也就有了学习的⽬标(也称为⽬标函数): argmin J(theta) —— 最⼩化 J(theta) 。
北京吉普b40多少钱
一汽大众召回查询能够让 J(theta) 达到最⼩的 theta ,就是最好的 theta 。当到最好的 theta 之后,我们把它带⼊到原 f(x) ,使得 f(x) 成为⼀个完整的 x 的函数,也就是最终的模型函数。
怎么能够到让 J(theta) 最⼩的 theta 呢?这就需要⽤到优化算法了。
具体的优化算法有很多,⽐如:梯度下降法( Gradient Descent )、共轭梯度法( Conjugate Gradient )、⽜顿法和拟⽜顿法、模拟退⽕法( Simulated Annealing ) 等等。
在这⾥需要强调⼀点:要得到⾼质量的模型,算法很重要,但往往(尤其是在应⽤经典模型时)更重要的是数据。
有监督学习需要标注数据。因此,在进⼊训练阶段前必须要经过⼀个步骤:⼈⼯标注。标注的过程繁琐且⼯作量颇⼤,却⽆法避免。
⼈⼯标注的过程看似简单,但实际上,标注策略和质量对最终⽣成模型的质量有直接影响。
往往能够决定有监督模型质量的,不是⾼深的算法和精密的模型,⽽是⾼质量的标注数据。