机器学习概述
机器学习是概率论、线性代数、信息论、最优化理论和计算机科学等多个领域交叉的学科传统编程模式:规则+数据——>传统编程——>答案机器学习模式:数据+答案——>机器学习——>规则机器学习特点:以计算机为工具平台,以数据为研究对象,以学习方法为中心研究包括:(1)机器学习方法:旨在开发新的学习方法(2)机器学习理论:旨在探求机器学习的有效性和效率(3)机器学习应用:主要考虑机器学习模型应用到实际中去,解
目录
2、无监督学习(Unsuprevised Learning)
3、强化学习(Reinforcement Learning)
1.1 机器学习介绍
1.1.1 机器学习的特点
机器学习是概率论、线性代数、信息论、最优化理论和计算机科学等多个领域交叉的学科
传统编程模式:规则+数据——>传统编程——>答案
机器学习模式:数据+答案——>机器学习——>规则
机器学习特点:以计算机为工具平台,以数据为研究对象,以学习方法为中心
研究包括:
(1)机器学习方法:旨在开发新的学习方法
(2)机器学习理论:旨在探求机器学习的有效性和效率
(3)机器学习应用:主要考虑机器学习模型应用到实际中去,解决实际业务问题
1.1.2 机器学习的对象
机器学习的对象是数据,即从数据出发,提取数据的特征,抽象出数据模型,发现数据中的规律,再回到对新数据的分析和预测中去。
机器学习的数据对象是多种多样的,比如文本、图像、语音。一般在做机器学习之前,我们首先会把数据统一同为一种格式类型,如矩阵的形式:
e.g.1:对文本进行分词处理,统计各个词出现的频率值,形成文档的词频矩阵
e.g.2:给定多幅图像数据,可以将每幅图片当一个像素矩阵
1.1.3 机器学习的应用
目前机器学习可以应用于自动驾驶、人脸识别、垃圾邮件检测、信用风险预测、工业制造缺陷检测、商品价格预测、语音识别和智能机器人等领域
Sup
深度学习、机器学习和人工智能三者之间的关系
1.2 机器学习分类
按任务类型分类和按学习方式分类
1.2.1 按任务类型分类
1、回归问题
利用数理统计中的回归分析技术,来确定两种以上变量之间的依赖关系
2、分类问题
机器学习中最常见的一类任务,例如图像分类、文本分类等
3、聚类问题
聚类问题又称群分析,目标是将样本划分为紧密关系的子集或簇。简单来说就是希望利用模型将样本数据集聚合成几大类,常见应用:市场分析、社群分析等
4、降维问题
降维是指采用某种映射方法,将原高维空间中的数据点映射到低维空间,理由:
(1)原始空间中包含冗余信息或噪声,需要通过降维将其消除
(2)某些数据集特征维度较大,训练过程困难,需要通过降维来减少特征的量
常用的降维模型有主成分分析(PCA)和线性判别分析(LDA)等
1.2.2 按学习方式分类
1、有监督学习(Suprevised Learning)
有监督学习,简称监督学习,是基于一组带有结果标注的样本训练模型,然后利用该模型对新的未知结果的样本做出预测
换句话说就是利用训练数据学习得到一个将输入映射到输出的关系映射函数,然后将该该关系映射函数使用在新实例上,得到新实例的预测结果
常见的监督学习任务是分类(Classify)和回归(Regression)
分类:当模型被用于预测样本所属类别时,就是一个分类。例如,要区别某张给定图片中的对象是猫还是狗。
回归:当所要预测的样本结果为连续值时,就是一个回归问题。例如,要预测某股票未来一周的市场价格。(好想拥有这种模型!)
在有监督学习中,学习方法可以进一步划分为生成方法和判别方法,所学到的模型对应称为生成模型和判别模型。
生成模型:
生成方法是由数据学习训练集的联合概率分布 P(X,Y),然后求出条件概率分布 P(Y|X) 作为预测的模型,即做成模型再运用这个模型对测试集数据进行预测,即
这样的方法之所以被称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系
典型的生成模型:朴素贝叶斯模型 和 隐马尔科夫模型
生成方法的特点:
<1>生成方法可以还原出联合概率分布 P(X,Y),而判别方法不能
<2>生成方法的学习收敛速度一般更快
<3>当存在隐变量时,生成方法仍可以使用,而判别方法不能
判别模型:
判别方法是由数据直接学习决策函数 f(X) 或条件概率分布 P(X,Y) 作为预测模型,即判别模型
判别方法关心的是给定输入X,应该预测出什么样的输出Y
典型的判别模型:K近邻、感知机、决策树、Logistic回归、最大熵模型、支持向量机、提升方法、条件随机场等
判别方法的特点:
判别方法直接学习条件概率或决策函数,即直接面对预测,往往学习的准确度更高
由于可以直接学习 P(Y|X) 或 f(X),可以对数据进行各种程度的抽象,能定义特征并使用特征,因此可以简化学习问题
2、无监督学习(Unsuprevised Learning)
在无监督学习中,训练样本的结果信息是没有被标注的,即训练集的结果标签是未知的。我们的目标是通过对这些无标记训练样本的学习来揭示数据的内在规律,发现隐藏在数据之下的内在模式,为进一步的数据处理提供基础
常见的无监督学习任务是聚类(Clustering)和降维(Dimension Reduction)
聚类:试图将整个数据集划分为若干个不相交的子集,每个子集被称为一个簇(Cluster)。聚类问题既可以作为一个单独的过程,用于寻找数据内在的分布结构,又可以作为分类等其他学习任务的前驱过程,用于数据的预处理
降维:当我们遇到样本数据的特征维度很高但数据稀疏,并且一些特征还可能是多余的,对任务目标没有贡献,这时机器学习任务会面临一个比较严重的障碍,我们称之为维数灾难(Curse of Dimensionality);维数灾难不仅仅会导致计算困难,还会对机器学习任务的精度造成不良影响。缓解维数灾难的一个重要途径就是降维,即通过某些数学变换关系,将原始的高纬度空间映射到另一个低维的子空间,在这个子空间中,样本的密度会大幅提高,更容易进行学习
3、强化学习(Reinforcement Learning)
强化学习,又称再励学习、评价学习,是从动物学习、参数扰动自适应控制等理论发展而来的,ta把学习过程看作一个试探评价过程
机器学习选择一个初始动作作用于环境,环境接收到该动作后状态发生变化,同时产生一个强化信号(奖赏或惩罚)反馈给机器,机器再根据强化信号和环境当选择下一个动作,选择的原则是使受到正强化(奖赏)的概率增大
强化学习在智能机器人及分析预测等领域有许多应用,比如在围棋界打败世界冠军的AlphaGo就运用了强化学习
1.3 机器学习方法三要素
机器学习方法 = 模型 + 策略 + 算法
1.3.1 模型
我们可以将模型理解为函数:
为数据的特征, 为特征为x的数据所对应的结果值, 是该数据类型对应的映射逻辑
举例说明:
我们现在要帮助银行建立一个模型来判别是否可以给某个用户办理信用卡,我们可以获得用户的性别、年龄、学历、工作年限和负债情况等基本信息,如图:
对用户的各个特征属性数值化:
性别:男用“1”表示,女用“2”表示
学历:高中、本科、硕士、博士分别用“1”、“2”、“3”、“4”表示
然后将每一个用户看作一个向量,其中 ,向量 的维度就是第 个用户的性别、年龄、学历、工作年限和负债情况等特征:
(N为特征数量)
给每个特征维度赋予一个权重 ,我们可以计算出向量的加权和 :
并设定一个门限值(threshold),当某用户加权和大于门限值,则给其办理信用卡,反之则不办理,即:当 > threshould,准予办理;当 < threshould,不准予办理
进一步,我们将“是”和“否”分别用 “1” 和 “0” 表示,即:
就是我们对上述用户信用卡额度问题建立的一个模型,有了该模型后,每当有一个新用户来办理信用卡时,我们就可以将其填写的基本信息输入到该模型中,自动判别是否同意给其办理
上述模型中,含有未知参数 ,,我们通过训练集将其学习出来,即为接下来要讲的策略问题
1.3.2 策略
训练集:指一批已经知道结果的数据,它具有和预测集相同的特征,比预测集多了已知的结果项
用户信用模型数据(训练集)
要由给定结果的训练集学习出模型中的位置参数 ,,我们采取的策略是为模型定义一个“损失函数”(Loss Function)(也称作“风险函数”),该损失函数可用来描述每一次预测结果与真实结果之间的差异
(1)0-1损失函数
0-1损失函数在朴素贝叶斯模型的推导中会用到
(2)绝对损失函数
(3)平方损失函数
平方损失函数一般用于回归问题中
(4)指数损失函数
指数损失函数在AdaBoost模型的推导中会用到
(5)Hinge损失函数
Hinge损失函数是SVM模型的基础
(6)对数损失函数
对数损失函数在Logistics回归模型的推导中会用到
对于上述案例,我们采用平方损失函数,对于训练集中的每一个用户,我们可以由上面建立的模型对其结果产生一个预测值,则有 ,那么对于训练集中所有M个用户,我们得到模型的总体损失函数为
其中 指模型中的权重参数向量, 为设置的门限值,我们需要让损失函数最小化,此时预测值与真实值最接近。所以,求解模型未知参数的问题实际上就转化为求解公式:
1.3.3 算法
通过定义损失函数并采用最小化损失函数策略,我们将案例问题转换为一个最优化问题,接下来求解该最优化问题,可采用的优化算法有 梯度下降法、牛顿法、拟牛顿法......
1、梯度下降法
(1)引入
计算机在运用迭代法做数值计算(比如求解某个方程组的解)时,只要误差能够收敛,计算机经过一定次数的迭代后可以得到一个近似解,而计算机是沿梯度方向进行迭代的,因此引入梯度下降法
(2)梯度下降法原理
在多元微分学中,梯度就是函数的导数方向
根据导数的定义,函数 的导数就是目标函数在在变量 和 上的变化率,在多元的情况下,目标函数 在某点的梯度 是一个由各个分量的偏导数构成的向量,负梯度方向是 减小最快的方向
当要求 的最小值时,我们可以先任意选取一个函数的初始点,让其沿负梯度方向移动,即可最快到达极小值点
(3)梯度下降法的推导
先将 在 处进行一阶泰勒展开,即
再取,得:
整理得:
又因为要使 下降,使得 恒成立
结合上式即等价于要使 恒成立
显然,我们取
即
时,上面的等式是恒成立的
(4)梯度下降法得过程
输入:目标函数,每一次的迭代步长为 ,计算精度为
输出: 的极小值点
步骤如下:
第 1 步:任取初始值 ,即置
第 2 步:计算 在 处的函数值 和 在 处的梯度值
第 3 步:若,则停止迭代,极小值点为
第 4 步:置 ,计算
第 5 步:若 或 时,停止迭代,极小值点为
第 6 步:否则,置 ,转到第 2 步
对于于多维情况,如损失函数 ,求解过程中的梯度应换成各自的偏导数
上述过程称为批量梯度下降法
(5)随机梯度下降法
在梯度下降法的迭代中,除梯度值本身的影响外,每一次取的步长 也很关键:步长取值越大,收敛速度越快,但容易越过函数的最优点,导致发散;步长取值越小,算法的收敛速度又会明显降低
另外,当目标函数不是凸函数时,使用梯度下降法求得的结果可能只是某个局部的最优点
为解决上述两个问题,引入随机梯度下降法,与批量梯度下降法原理相同,改进如下:
a. 将固定步长 改为动态步长
b. 引入随机样本抽取方式,即每次迭代只是随机取了训练集中的一部分样本数据进行梯度计算
优点:有效避免陷入局部最优的情况
缺点:会稍微降低优化过程的收敛速度,并导致最后得到的最优点可能只是全局最优点的一个近似
(6)随机梯度下降法过程
输入:目标函数,计算精度为
输出: 的极小值点
步骤如下:
第 1 步:任取初始值 ,即置
第 2 步:计算 在 处的函数值 和 在 处的梯度值
第 3 步:若,则停止迭代,极小值点为
第 4 步:否则求解最优化问题:,得到第 轮的迭代步长;
再置 ,计算
第 5 步:当 或 时,停止迭代,极小值点为
第 6 步:否则,置 ,转到第 2 步
2、牛顿法
(1)牛顿法介绍
牛顿法也是求解无约束最优化问题的常见方法,最大的优点是收敛速度快
(2)牛顿法的推导
将目标函数 在 处进行二阶泰勒展开,可得:
因为目标函数 有极值的必要条件是在极值点处一阶导数为0,即 ,所以对上面的展开式两边同时求导(只有 为变量,其余皆为常量),并令 ,可得:
取 ,可得:
整理后得到:
上式中, 是关于未知变量的梯度矩阵表达式,即
是关于未知变量 的Hessen矩阵表达式,一般记作 ,即
(3)牛顿法的过程
输入:目标函数,计算精度为
输出: 的极小值点
步骤如下:
第 1 步:任取初始值 ,即置
第 2 步:计算 在 处的函数值 和, 在 处的梯度值, 在 处的Hessen矩阵值
第 3 步:若,则停止迭代,极小值点为
第 4 步:置 ,计算
第 5 步:若 或 时,停止迭代,极小值点为
第 6 步:否则,置 ,转到第 2 步
从本质上看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法更快
从几何上说,牛顿法是用一个二次曲面去拟合当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部平面,通常情况下,二次曲面的拟合会比平面更好
(4)阻尼牛顿法
牛顿法的问题:当初始点 远离极小值点时,牛顿法可能不收敛
原因:牛顿方向 不一定是下降方向,经迭代,目标函数值可能上升;此外,即使目标函数是下降的,得到的点 也不一定是沿牛顿方向最好的点或极小值点
解决:阻尼牛顿法
(5)阻尼牛顿法的过程
输入:目标函数,计算精度为
输出: 的极小值点
步骤如下:
第 1 步:任取初始值 ,即置
第 2 步:计算 在 处的函数值 和, 在 处的梯度值, 在 处的Hessen矩阵值
第 3 步:若,则停止迭代,极小值点为
第 4 步:否则求解最优化问题:,得到第 轮的迭代步长 ,再置,计算
第 5 步:若 或 时,停止迭代,极小值点为
第 6 步:否则,置 ,转到第 2 步
3、拟牛顿法
(1)概述
牛顿法的优势是收敛较快,但每一次迭代都必须计算Hessen矩阵的逆矩阵,当函数中的未知变量个数较多时,计算量会大大增加
解决办法:用一个更简单的式子去近似拟合式子中的Hessen矩阵,即为拟牛顿法
(2)拟牛顿法的推导
先将目标函数 在 处进行二阶泰勒展开,可得:
两边同时取梯度,得:
取 ,得:
即:
记:
则有:
推出:
上面这个式子被称为“拟牛顿条件”,每次计算出 和 后,就可以根据上式估算出Hessen矩阵得逆矩阵表达式
1.3.4 小结
机器学习方法从数学角度看就是:模型 + 策略 + 算法
模型就是对一个实际业务问题进行建模,将其转化为一个可以用数学来量化表达的问题
策略就是定义损失函数来描述预测值与理论值之间的差距,将其转化为一个使损失函数最小化得优化问题
算法指的是求解最优化问题得方法,一般将其转化为无约束优化问题,然后利用梯度下降法和牛顿法等进行求解
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)