一、简介
大家认识和学习一个新事物,往往推荐遵循 WHAT、HOW、WHY 的顺序,本文从 WHAT 的角度对机器学习进行介绍,希望大家能够喜欢。
从本质上讲,机器学习是让机器根据数据来学习一个函数,这个函数能够从输入得到正确的输出,下面列举几个例子:
1. 回归问题:
2. 分类问题:
3. 翻译问题:
4. 自动摘要:
5. 自动问答:
很多机器学习算法是统计学习算法,下面对一些符号进行解释:
1. 表示事件
发生的概率;
2. 表示条件概率,即当事件
发生时,事件
发生的概率;
二、贝叶斯分类
贝叶斯分类器是利用贝叶斯定理对现实进行简化建模的一类分类器,贝叶斯定理有下面所示的公式:
,其中,
表示最终事件,
表示导致事件发生的原因。
在基于贝叶斯定理的算法中,将 解释为数据样本,将
解释为分类,即由于样本属于某个分类才导致了数据具有这样的特征。根据数据特征之间的关系,又分为朴素贝叶斯、线性判别分析、逻辑斯蒂回归等方法,下面依次进行介绍。
2.1 朴素贝叶斯
假设有这样的一个场景:我们收集了 片树叶,记录下每片树叶的:长度、宽度、厚度、重量这4个特征,以及每片树叶的分类:杨树叶(= 0)、柳树叶(= 1)、桉树叶(= 2)。我们希望开发一个程序,输入数据是树叶的这4个特征,输出结果是树叶的分类。
首先我们对模型进行简化,即认为树叶的长度、宽度、厚度、重量这4个特征是相互独立的(其实并不是),用向量 表示树叶的特征,用
表示树叶所属的分类,然后计算
的后验概率,如下:
然后我们对 后验概率公式中的参数进行估计,根据概率论中的强大数定理,频率以概率1收敛到概率,所以我们使用频率对
和
进行估计,即:
,
将概率的估计值代入 的公式中计算出
的后验概率,我们取后验概率最大的
作为
的分类。
2.2 线性判别分析
在前面的朴素贝叶斯中,我们假设了数据的特征之间是独立的。现在,我们取消这个假设,并且增加另一个假设:每个类别的特征符合协方差相同的多元正态分布。设 为特征向量(维度为
),
为第
个分类的特征均值向量,
为第
个分类的概率,
为公共的协方差矩阵,则特征的概率密度函数为:
我们计算 的后验概率的比值的对数:
通过上面的公式,就可以得到判别函数:
我们取 最大的
作为
的分类,可以看出
是特征分量的线性函数,这就是线性判别分析的名称由来。
2.3 逻辑斯蒂回归
逻辑斯蒂回归(简称:逻辑回归)是分类方法,并不是回归方法,它适合对数据进行二分类,其中正例为1,反例为0。逻辑回归对数据的基本假设是:
,其中,
,
为权重向量,
为偏置
通过计算可以可到:
,即对数似然比是特征分量的线性函数,这是逻辑回归的最终假设。
我们需要从 个训练数据中学习到正确的
参数,那么需要一个对正确与否的衡量标准。我们反其道而行之,使用下面的交叉商误差作为损失函数来衡量参数的正确性:
请注意,在给定训练数据的情况下, 是
的函数。可以证明,
具有唯一的全局最小值,那么我们可以利用梯度下降的方法来寻找
的最优解,通过计算可以得到
的梯度为:
然后,通过迭代算法就可以通过训练数据学习到 的最优解。
三、线性和非线性回归
回归问题是希望得到一个具有连续输出的函数,这个函数根据输入的特征输出正确的连续值。
3.1 线性回归
线性回归对数据的基本假设是独立性和比例性,例如函数 :当
发生变化时,对
的影响与
无关,这就是独立性;当
增加
时,
增加
,这就是比例性。
设数据有 个特征,线性回归使用下面的函数进行建模:
,如果设
,则方程可以改写成向量内积的形式:
,其中:
当有 个数据时,线性回归可以用下面的矩阵方程(未知量为
)来表示:
,其中:
,
上面的方程未必是有解的,所以我们寻找它的最小二乘解,即:
可以证明以下两点:
1. 一定是线性方程组
的解;
2. 线性方程组 一定有解;
当 可逆时,可以直接求得
的解析解:
当 不可逆时,有两种方法求解:
1. 求 的广义逆矩阵,则
具有解析解:
2. 求函数 的梯度,使用迭代算法求解;
得到 后,我们还需要对
进行显著性检验,这需要假设
是独立同分布的正态随机变量,具体内容请参考线性回归的相关资料。
3.2 非线性回归
非线性回归是去掉了线性回归中独立性和比例性的假设,主要包括以下几种模型:
1. 阶梯回归:通过将特征空间进行分割,将某个区间的平均值作为输出值;
2. 多项式回归:通过引入特征的幂,或者,多个特征之间的交互项,然后再进行常规的线性回归;
3. 决策树回归:通过创建决策树对特征空间进行二叉分割,将某结点的平均值作为输出值;
4. 神经网络回归:使用均方误差作为损失函数,使用 函数作为激活函数的多层神经网络,可以获得较好的回归效果,但也容易过拟合;
四、神经网络
神经网络是端到端的机器学习方法,它通过多层感知机和非线性激活函数,实现对非线性函数的拟合,在函数逼近、计算机视觉、自然语言处理中有广泛应用。
4.1 感知机
感知机是输入特征的仿射函数的符号函数,即特征的线性组合加上偏置大于等于零则为 1,否则为 -1:
在一个线性可分数据中,存在一个分离超平面,可以通过函数 将数据分为正例和负例。首先随机选择分离超平面,并且将所有误分类点与该平面的距离作为损失函数,对数据和损失函数执行梯度下降。根据感知机收敛定理,通过有限次迭代后,可以得到正确的分离超平面。
4.2 前馈神经网络
前馈神经网络(FNN)是在每层堆叠多个感知机,并且使用多个隐藏层。例如上图的神经网络,输入特征数是2,具有3个隐藏层,第一层有3个感知机,第二层有2个感知机,第三层有2个感知机。通过这样堆叠感知机,并对感知机的输出应用非线性激活函数后,我们可以得到一个从 到
的函数。由于数据都是从前向后传播的,所以这样的神经网络叫做前馈神经网络,又叫做全连接层。FNN 一般用在分类和回归算法最后的输出模块中。
4.3 卷积神经网络
卷积神经网络(CNN)主要应用在计算机视觉中,它的诞生是为了弥补 FNN 进行图像建模时,丢失了图像的区域信息和层次信息的问题。如上图所示,输入数据是具有 C 个通道(一般为RGB 3 通道)、尺寸为 H*W 的图片,卷积核尺寸为 FN*C*FH*FW;卷积核在每个通道上进行卷积运算(对应元素相乘后求和,类似于向量内积)后相加,最后加上偏置得到输出结果,所以卷积元算实质上还是仿射运算。通过这样对输入的处理,输出数据中保留了图片的空间信息,有利于对图片进行分类识别或进一步处理。
4.4 循环神经网络
循环神经网络(RNN)主要应用在时间序列处理中。前述的 FNN、CNN 都属于前馈神经网络,每个输入都是独立存在的,前一个输入数据不影响当前输入数据的输出。CNN 通过将前一个数据的输出状态作为当前数据的附加输入,从而实现对时间序列状态的记忆。实际中使用的 RNN 层大多是 LSTM 层,LSTM 在内部对记忆状态进行门控处理,解决了梯度消失问题。RNN主要有以下应用:
1. 文本生成:通过一个输入词(或句子),得到随机的输出文本;
2. 机器翻译:将一个输入序列转换为确定的输出序列;
3. 图片摘要:通过 CNN 将图片转换为向量,然后将输入向量转换为输出文本;
4. 多变量时间序列异常检测:研究中;