第3 章 机器学习相关技术分析
3.1 机器学习概念与分类。
3.1.1 机器学习概念。
机器学习[14]是在近 20 年间最热门的学科之一,普遍认为机器学习是属于人工智能的一个分支,同时也是一门涉及概率学,统计学,计算复杂性理论等多门学科的交叉学科,其基本思想是通过对数据量达到一定程度的历史经验的分析学习,求出针对数据的分类或者是回归的目标函数,设计出能够让计算机自动学习的算法,并根据设计出的算法对未知数据进行求解。
当前时期,机器学习已经被广泛应用到了各个领域中,从日常我们使用网络搜索,到语音识别或自然语言语音助手,再到图像识别图像分类,甚至是一些通过与数据结合设计的预测系统,无一不是将当前一些日常用到的技术与机器学习相结合,而进一步提高算法能力的结果。随着机器学习的不断加速发展,机器学习与其它方面的技术结合会越来越多。
对于机器学习,人们给出了各种定义[15],其中 H. A. Simon 认为,学习是系统所做出的适应性变化,使得系统在下一次完成同样或类似的任务时更为有效。
R. S. Michalski 认为,学习是构造或修改对于所经历事物的表示。无论是哪种定义,实质上都认为机器学习是一个不断循环,并不断完善自身知识库,最后通过知识库完成目标操作的一个过程。通过对机器学习流程的分析,我们可以建立一个简单的机器学习模型。
我们可以看到机器学习的基本结构,外界提供相关信息源,系统可以通过学习单元建立并完善知识库,而通过知识库,系统可以推算出执行任务,并把执行结果反馈至学习单元,用于优化知识库,提高机器学习的效能。对于一个具体的应用,环境,知识库和执行单元决定了应用的任务,通过完善这三个部分,可以将应用与机器学习对接起来。而学习单元是机器学习核心算法所在,学习所得系统的能力和准确性很大程度就取决于学习单元算法的效果。
对于学习单元,目前普遍认为的是把机器学习领域分为两类,无监督学习与监督学习。
3.1.2 监督学习与无监督学习。
无监督学习[16](unsupervised learning),也叫非监督式学习,指的是不需要指明具体目标,让计算机自主学习需要完成的任务。主要特征就是输入数据没有人为地指明部分数据为标签,通过对数据本身的分析分类把相似的数据聚集到一起,让计算机得到相应的映射函数,找到数据内部的隐含结构分析。由于输入的数据都是原始数据,不用对数据进行标注,所以无监督学习多用于大数据的数据挖掘。常见的聚类分析(Cluster analysis)就属于无监督学习。
监督学习(supervised learning)指的是使用给出的数据集,作为训练集,其中训练集必须包含数据和预期输出,计算机可以从训练集中学习或建立一个模式,然后通过训练使目标模式的误差收敛到阈值以下,而预测数据则可以通过该模式推测出新的结果。按照函数的输出的连续性可分为回归分析和分类,其中输出结果是连续的,称为回归,离散的称为分类。
监督式学习的目标都是在给定训练集的情况下,使用一个可能的函数对训练集进行计算,得到输出并计算出误差值,再调整预测模型以减小误差,最后使得函数的输出值与训练集中预期值的误差小到可以接受的范围以下。通常情况下,可以使用梯度下降算法找出新的函数常量以减小误差[17].
常见的人工神经网络,支持向量机,朴素贝叶斯方法等都属于监督式学习。
监督式学习的训练流程。
本论文中的机器学习系统主要使用的就是人工神经网络。
3.2 基于神经网络的预测系统理论分析
3.2.1 人工神经网络人工神经网络(Artificial Neural Network,ANN),也简称为神经网络[18],是通过模仿生物中枢神经系统的结构而设计的一种数学模型。神经网络主要由大量的人工神经元和之间的连接组成,内部神经元结构在接受外界信息的基础上可以自主地做出改变,是一种自适应系统,契合机器学习的概念。人工神经网络的研究[19]开始于 1943 年的 MP 模型[20],在 20 世纪 60 年代进一步发展完善,80 年代开始就一直是人工智能领域的研究热点,在最近这些年,人工神经网络的研究越来越广泛,越来越深入,在模式识别,智能控制,专家系统,预测等领域都得到了很好的应用t}}l,人们越来越多地利用神经网络与传统的技术相结合,以提高技术的信息处理能力,把系统推向智能化。
人工神经网络通过模拟生物要枢神经的方式使得其可以把信J息分布式存储,还有并行处理,能够一定程度模拟人的思维能力,因此具有以下基本特性:
1.并行分布处理,通过神经元的使用,可以让每个神经元。单独运算和处理本身接收到的数据再输出,从而提高并行能力。
2.非线性映射:通过非线性激活函数的使用和神经网络固有的非线性特性,系统可以模拟任意非线性变换。
3.白主学习能力,神经网络通过对训练集的学习,能够不断改变自身参数,适应各方面问题,对噪声和信息的缺失都有很好的抑制作用。
4,适应与集成能力,神经网络的灵活性,使得神经网络可以在线运行,并可以对其定量和定制,对于较复杂的系统表现出很好的性能。
【公式1】
函数的作用是接收一系列输入,然后通过激活函数在保留输入特征的前提下映射出一个结果,通常都是非线性输出,其目的是为神经元增加非线性因素,解决一些通过线性函数没办法解决的问题。常见的激活函数有 Sigmoid 系统,RectifiedLinear Units(ReLU),Softmax.从数学的角度分析,Sigmoid 激活函数的函数。
可以看到 Sigmoid 对中间区域的增益比较大,而图形两侧则较小,所以在特征空间的映射上效果比较好,这也是早期较多人选择使用 Sigmoid 激活函数的原因,但是近年来,人们发现了神经元的稀疏激活性,而使用 Sigmoid 激活函数时,会激活较多的神经元,出现大量数据的冗余,增加了运算的复杂性。
ReLU 激活函数[23]很好地解决了稀疏性问题,ReLU 激活函数会稀疏掉负值信号,产生一个多数元素为 0 的稀疏矩阵,结合神经网络反复计算的特性,ReLU激活函数也就是不断查找一个稀疏矩阵来表达输入数据的特征,而因为稀疏矩阵的特性,使用在运算时,大大减少了计算压力,同时稀疏矩阵也可以减少依存关系,尽量避免模型出现过拟合的情况。
Softmax 激活函数是逻辑回归模型在多分类问题的推广,从另一个角度来说,也可以说逻辑回归问题是 Softmax 回归的一个特例,这时候输出 y 值可以取多于两个值。通过使用 Softmax 激活函数,输出的 y 值在找到最可能的值时,会让这个值逼近 1,其它值逼近 0,并使所有 y 值的和为 1,这样计算完成后,只需要找到 y 向量中最大值的序号,即为目标结果。在对一些输出结果为已知小范围值的情况,Softmax 激活函数的作用十分明显。
在本系统中,人工神经网络的最后一层使用了 Softmax 激活函数,把神经网络计算结果按 Softmax 的格式输出,并通过该输出确定目标设备的控制档位,对于只有开关两个状态的设备,Softmax 激活函数输出向层只有二维,也可以看作逻辑回归。除了人工神经网络的最后一层外,其它神经元都使用了 ReLu 激活函数。
通过上文,人工神经网络的基本元素已经有了大致的说明,通过神经元可以组成最后的人工神经网络。人工神经网络是由互相连接的神经元组成的,最早的人工神经网络只有两层。
作为最简单的人工神经网络,明显还不够智能,仅能够解决一些简单的线性分类问题,在处理非线性的相对复杂一些的问题时,它就显得无能为力了,解决实际问题的能力十分有限,因此,人们很自然想到并开始在两层神经网络中加入一些隐含层,增加人工神经网络的非线性效果,从而增强了其健壮性,神经网络的每层都接收上一层的输入数据,在处理完毕之后输出到下一层的神经网络中,并通过权值确定神经元影响的大小。在神经网络的重复学习过程中,权值会发生改变,最后通过权值可以确定一些与目标输出关系较大的神经元,并通过这些神经元可以对新数据进行计算预测。
1个常见的多层人工神经网络。
具体与智能居家系统结合,本系统把各传感器数据,智能设备状态打乱次序,作为输入,这样可以使得邻近的样子之间相关性变差,对于整个训练的全局性更有利。人工神经网络中使用两个了隐含层,两个隐含层的神经元数均为 20 个,输入数据通过 1000 次的训练,在测试数据中,此神经网络已经有很好的预测效果。
3.2.2 最优化算法。
在对人工神经网络的训练中,我们必须找到一个方法,使得在多次迭代中,训练的网络会越来越好,也就是计算值与预期值的方差和最小,而梯度下降法和最小二乘法就是最常用的两个优化算法[24].
梯度下降法通常可以用下山的例子来表示,即假设我们现在站在山上的某个位置,并希望走下这座山,此时,我们通过向四周找到一个下降就快的方向,走出一小步,不断重复以上步骤,我们就可以下山。以上例子也可以通过数学表示,如果一个函数在 a 点有意义,并且可微,则函数在 a 点处下降最快的方向必然是沿着该点梯度的相反方向。
【公式2】
在使用梯度下降法时,我们可以在多次的训练中把误差值输出,通过观察多次训练中误差值的改变,去了解整个梯度下降的过程,把误差值与训练的次数分别作为 X,Y 轴,我们可以生成一个类似于图 3.10 的图形,十分形象地展示了梯度下降法运行时误差值的变化过程。
通常我们在多次迭代后就可以找到我们想要找的目标解,但是,梯度下降法并不是一个完美的算法,其有以下明显的缺点:
1. 算法与初始值相关性较大,有可能找到局部最优解。
2. 与学习率相关性较大,学习率太小则下降速度太慢,太大则无法收敛。
3. 在接近最优解时,下降速度变慢。
而最小二乘法则是通过用数学的方法优化函数,可以通过最小化误差的平方和而找到与目标数据匹配最好的函数。利用最小二乘法,我们可以在得到误差的计算方法之后很快地得到目标函数。相对于梯度下降法,最小二乘法的优势就是可以直接求导计算得到全局最小值,一方面不需要多次迭代求解,另一方面是可以找到全局最小,而非局部最小。
但是最小二乘法存在一个严重的缺点,最小二乘法是通过数学推算出结果的,所以如果要使用最小二乘法来解决目标问题,我们的误差计算式必须是线性最小二乘问题,所以最小二乘法的适应性相对较小。
而虽然梯度下降法存在一定的问题,但是在应用中还是表现出十分明显的效率和准确性,所以在本系统中使用了梯度下降法训练神经网络。
3.2.3 机器学习系统数据预处理与评估方法。
一个人工神经网络的训练有时会因为使用过多参数等原因,而得到一个十分复杂的模型,这个模型可以得到一个复杂的曲线完美地适应我们的训练集,但是这个模型对于未知数据表现出的效果却十分地差,我们通常称这种情况为过拟合[25],也就是说模型使用了过度复杂的函数去拟合我们的训练集,造成了一种模型效果特别好的假象。为了避免出现过拟合的情况,我们可以通过使用贝斯信息量准则或交叉验证等方法来实现。
在本系统中,我们使用了交叉验证的方式解决可能的过拟合问题,使用的原理是将数据样本,也就是原来的训练集分割出另一个子集,分割出的子集专门用于对模型是否过拟合的确认及验证,称该子集为交叉验证集。
对于一个已经训练完成或者正在训练过程中的机器学习系统,必须找到一个方法用以评估得到的模型,对于智能家居系统,我们评价的标准显然是预测出来的数据是否符合设备目标状态,对于未知的数据,我们无法处理或得到数据的准确性,但是我们可以从已有的数据中,用部分数据用于测试系统预测的准确性,可以一定程度的验证预测的效果。所以在上文中的训练集还需要再分割出一个子集,作为测试集,用于验证模型对于未知数据预测的准确性。
综上所述,我们把数据集分为以下三个子集:
1. 训练集,用于训练神经网络,建立模型2. 交叉验证集,用于检验初步建立的模型,防止过拟合3. 测试集,用于测试模型对未知数据预测的准确性。
通过这三个数据集的使用,我们可以得到一个预测效果明显,准确率也比较高的模型,达到预期目标。