机器学习基本知识

机器学习基本知识

最近由于一些需要在学习机器学习,B站上找了一个系列的视频,感觉还行,对机器学习、深度学习好好学习学习,做一些简单的记录。

机器学习

机器学习(Machine Learning, ML)是多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或者技能,重新组织已有的知识结构使之不断改善自身的性能。
机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,主要使用归纳、综合而不是演绎。机器学习、机器学习,那么这里的学习到底指什么样的一个过程呢?

学习:针对经验E和一系列任务T以及一定表现的衡量P,如果随之经验E的积累,针对定义好的任务T可以提高表现P,就说明计算机具有学习能力。

机器学习被这样定义:探究和开发一系列算法来如何使计算机不需要通过外部明显地知识,而可以通过数据进行学习、建模,并且利用建立的模型对新输入的数据进行预测的学科。

当今,机器学习已经广为,现在常见并且火热的应用如下:

  • 语音识别
  • 自动驾驶
  • 语言翻译
  • 计算机视觉
  • 推荐系统
  • 无人机
  • 垃圾邮件识别

一些基本概念

机器学习、包括下面提到的深度学习都有自己的一些元素,也算是一些概念,主要是:训练集测试集特征值监督学习非监督学习半监督学习分类回归。下面对主要概念进行解释:

概念学习:从有关某个布尔函数的输入输出训练样例中推断出该布尔函数,概念定义在实例集合之上;
训练集(training set):又称训练样例,用来训练、产生模型或算法的数据集;
测试集(testing set):又称测试样例,专门用来测试训练好的模型或算法的数据集;
特征向量(feature vector):属性的集合,通常用一个向量来表示,附属于一个实例;
标记(label):实例类别的标记,即结果的类型,包括正例(positive example)和反例(negative example);
分类(classification):目标标记为类别型数据(category);
回归(regression):目标标记为连续性数值(continuous numeric value);
有监督学习(supervised learning):训练集数据有类别标记,即训练集的样例存在最终的结果;
无监督学习(unsupervised learning):训练集数据无类别标记;
半监督学习(semi-supervised learning):训练集数据部分有类别标记、部分没有类别标记。

机器学习步骤

  • 1、把数据集拆分为训练集测试集
  • 2、用训练集和训练集的特征向量来训练算法
  • 3、用训练出的算法在测试集上进行评估(可能涉及调整参数,用到验证集parameter set))

算法评估

对一个机器学习算法性能的评估,主要考虑一下五个方面:

  • 1、准确率:执行结果的准确度
  • 2、速度:执行速度的快慢
  • 3、强壮性:数据的个别值缺失时能否对数据进行准确处理
  • 4、可规模性:数据集很大的时候算法是否仍然有效
  • 5、可解释性:算法处理数据的结果可解释的程度

深度学习

了解了机器学习的基本知识,再往深里说是深度学习(Deep Learning, DL),它是基于机器学习延伸出的一个新领域,由以人脑结构为启发的神经网络算法(NNs)为起源加之模型结构深度的增加发展,并伴随大数据和计算能力的提高而产生的一系列算法。
深度学习被广泛应用于图像处理与计算机视觉、自然语言处理以及语音识别等领域。

对于深度学习,主要对神经网络相关的算法进行学习,这也是目前应用最为广泛的机器学习算法了。

神经网络

神经网络NNs),也称人工神经网络Artificial Neural Networks,简写为ANNs)或称作连接模型Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

它机器学习得以发展出深度学习的关键所在,以人脑中的神经网络为启发产生的机器学习算法。

多层向前神经网络(Muiltilayer Feed-Forward Neural Network)

主要有三部分组成:输入层input layer),隐藏层hidden layers),输出层output layer

每层由单元unit,也称为神经元)组成,输入层将训练集的实例特征向量进行传入,经过连接结点的权重weight)传入下一层,上一层的输出是下一层的输入。隐藏层的数量是任意的,输入层和输出层只有一层,不过一般算层数时不将输入层计算在内。

其工作过程大致是:将输入的实例值进行加权求和,再经过非线性方程转化输出到下一层。理论上讲,当隐藏层足够多、训练集足够大时,可以模拟出任何方程。

设计神经网络结构

使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数。

特征向量在被传入输入层时通常被先标准化normalize)到01之间,目的是加速学习的过程,但是输入的特征值类型可能是离散型的,也可能是连续型的。对于离散型的变量,可以通过编码成每一个输入单元对应一个特征值可能赋的值。例如

特征值A可能取三个值(a0、a1、a2),那么可以使用3个输入单元来表示A。如果A=a0,则表示a0的单元值取1,其余取0;如果A=a1,则表示a1的单元值取1,其余取0

神经网络既可以解决分类问题,也可以解决回归问题。分类问题即为结果是离散型的问题,比如预测哪个品牌的电脑卖得更好;回归问题即结果是连续型的问题,比如预测某地的房价。
分类问题居多,因此主要学习分类问题的解决,对于该类问题,如果是两类,用一个输出单元表示即可,即01;多于两类则每一个类别用一个输出单元表示,因此输出层的单元数量通常等于类别的数量。

对于隐藏层数的设置,如果没有明确规则,则可以根据实验测试和误差,以及准确度来实验并作出调整。准确度的测试可以利用测试集来进行测试。不过还有一种常用的测试方法:交叉验证方法

交叉验证方法(Cross-Validation)

将数据集分为n份,第一次将第一份作为测试集其余作为训练集进行训练和测试,第二层选择第二份作为测试集其余作为训练集进行训练和测试,依次类推进行。

Backpropagation算法

该算法可以说是其他神经网络算法的基本,通过迭代性的训练集输入来处理训练集中的实例,对比通过神经网络处理后输出层的预测值与训练集真实值之间的差,来反向地以最小化误差调节每个连接之间的权重,以此方式逐渐地进行训练。

算法的要素如下:

输入:数据集D、学习率L、一个多层向前神经网络
输出:一个训练好的神经网络
起始状态时需要初始化权重偏向Bias,每个单元都有一个偏向,相当于上层传到当前结点的一个偏移):随机初始化值在-11之间,或者-0.50.5之间。

对于一个训练实例,执行以下步骤:

  • 1、由输入层向前传送,传送时需要对每个单元进行加权,然后加上传入到的目标结点的偏向值,最后对加权值进行非线性的转化,然后传送给下层结点。如下图:

  • 2、根据误差进行反向传送

  • 3、按照上述两步,输出训练集不同的数据进行多次的向前传送和反向传送进行更新,终止条件:
    • 权重的更新低于某个阈值
    • 预测的错误率低于某个阈值
    • 达到预设一定的循环次数

非线性转化方程

sigmoid函数(S曲线)用来作为转化方程,sigmoid函数曲线形如下图:

通常有两种:双曲函数逻辑函数

关于机器学习的知识很多,我主要学习一些神经网络的东西,后面会继续记录。

Comments


:D 一言句子获取中...

Loading...Wait a Minute!