机器学习初步
什么是机器学习
我们人类学习的过程就像是在理解一个知识并且能够运用这种知识,而理解知识过程本身就是一种改善提高自我的过程。这里面最重要的其实就是从过往的,已有的数据中,提取知识,并且能够运用
机器学习的三个步骤
在人类学习的过程中,例如学习将实物苹果和文字“苹果”做对应,我们通过观看苹果的图片或者实物,提取出共同的特征,例如都有类似红色的颜色,顶部和底部都有凹陷的窝,一般有梗,叶子是绿色的等等一系列特征,再将这些特征与苹果这两个文字联系起来,就完成了从实物到文字的这样一个映射(学习过程)
那么对于机器学习也是一样的,我们有特定输入,预期输出,处理函数
对于特定输入,其实就是苹果的图片或者实物,但是对于计算机而言,他是无法观看这些实物的影像的。因此我们考虑将这些影响转化为具有特征值的向量空间,例如使用灰度矩阵来表示图片
预期输出也就是我们最终学习到的“苹果”两个字,也就是学习之后的结果
而处理函数就是我们的大脑
每一个具体的输入称之为实例(instance),由特征向量(feature vector)构成,所有特征向量存在的空间称之为特征空间(feature space)
那我们对这个学习的过程进一步抽象,就分为三步
- 找到一系列函数来实现预期的功能
- 找到一系列评价标准来评判函数的好坏
- 如何找到性能最优的函数
那么对于监督学习来说,我们的模型都是在训练数据中学习,调整模型参数,然后在测试数据中进行预测验证
这里的训练数据中的输入和输出都是成对出现的,那么这时候对于训练数据就像老师一样,他知道正确的结果,在学习的过程中可以不断调整模型的参数达到学习的目的
对于不同的输入输出变量,我们也给机器学习的任务做了分类,例如输入输出都是连续的,就称之为回归(Regression),输出是有限个离散值,就称之为分类(Classification),输入输出都是变量序列,那么就称之为标注(Tagging)
为什么机器学习和编程不一样
机器学习是无需显示编程就能表现出学习能力的,但这并不是说他不需要编程,只是在逻辑上有所不同
传统的编程其实我们是把数据和代码同时交给了机器,而他只需要负责计算,就可以达到预期的结果
而机器学习则不同,我们给的是输入和预期结果,需要让机器自行总结规律
也就是说,机器学习的代码并不是完全固定的,而且这样学习还能处理更加多变,新鲜的样例,而程序本身并不用有多大改变
机器学习大致可以分为三类,监督学习、非监督学习、半监督学习
监督学习
监督学习(Supervised Learning)基本上都是分类,他从有标签的训练数据中学习模型,然后对给定的新数据贴标签
监督就是有个老师在训练阶段会告诉你答案,这样学习得出最后的模型
这样总的看上去机器就好像提取出共同点,也就是具备了泛化的能力
监督学习的形式化描述
监督学习是在训练集下进行训练模型,而训练集我们一般采用下面的公式进行表示
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) … , ( x i , y i ) … ( x m , y m ) } T=\{(x_1,y_1),(x_2,y_2)\dots,(x_i,y_i)\dots(x_m,y_m)\} T={(x1,y1),(x2,y2)…,(xi,yi)…(xm,ym)}
需要注意的是,这里的每一个x和y的二元组表示每一组输入和输出,而输入或者输出本身可能并不是单纯的一个数值,而是一个特征向量组,这里我们一般使用n维列向量来表示
有了数据集,接下来就是要进行训练,来调整模型参数,直到误差在我们可以容忍的范围内,就可以认为训练完成了
无论是分类问题还是回归问题,总归都是对已有的数据进行总结,然后预测未知
而回归更数学化的表达就是函数的拟合,我们构造一个函数使之能很好的拟合已知数据,并且能够较好的预测未知数据
这样我们也可以构建出一个函数模型
Y ≈ f ( X , β ) Y\approx f(X,\beta) Y≈f(X,β)
这里的X是输入,而β是参数,我们训练的目的就是找到这样一个参数β,使得每一个输入的X都能得到预期的Y
损失函数
那我们应该描述参数是否匹配呢,或者说预期结果和输出值的差距呢
那就需要定义损失函数(Loss Function)
常见的损失函数有如下四类
-
0-1损失函数
L ( Y , f ( X ) ) = { 1 if Y ≠ f ( X ) 0 if Y = f ( X ) L(Y,f(X)) = \begin{cases} 1 & \text{if } Y \neq f(X) \\ 0 & \text{if } Y = f(X) \end{cases} L(Y,f(X))={10if Y=f(X)if Y=f(X) -
绝对损失函数
L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=∣Y−f(X)∣ -
平方损失函数
L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X))=(Y-f(X))^2 L(Y,f(X))=(Y−f(X))2 -
对数损失函数
L ( Y , P ( Y ∣ X ) ) = − log P ( Y ∣ X ) L(Y,P(Y|X))=-\log P(Y|X) L(Y,P(Y∣X))=−logP(Y∣X)
第三类损失函数,有时也会在前面加一个0.5的系数,主要是为了方便求导
第四类损失函数可以使用最大似然估计来求极值,简单说最大似然估计的意思就是找到一个参数能让预期结果出现的概率最大,具体内容可以参考其他文章或者概念,目前只需要了解即可