开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):机器学习概述(二)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19263
机器学习概述(二)
六、机器学习基于策略方式的划分
基于机器学习策略的划分,可以把机器学习分为传统的机器学习和深度学习。
传统的机器学习,它是基于经典的数学原理,比如统计、概率、线性代数这些。都是通过分析输入数据的模式来进行判断和预测。所以传统的机器学习,如果学习传统的机器学习的算法,对数学的要求比较高。这种机器学习的方式,它推理计算的过程也会非常的严谨。其实仔细想一下,所有的数学的知识,就像统计概率或者是新型代数。其实它都是人类的知识,人类已经获得的知识,相当于把获得的数学知识用它来去分析数据。这种传统的机器学习发展到一定程度之后,深度学习突然就兴起,它成为了机器学习的一个重要分支。它跟传统机器学习有很大的不同。它不用懂那么多数学的知识,当然要懂,但是不用那么多,它主要原理是什么呢?是模拟人类大脑的工作方式。人类大脑是怎么样去感知这个世界、人类大脑是怎么样组织的。然后在机器里面模拟,用什么模拟呢?用人工神经网络,构建人工神经网络,然后把数据输入,让神经网络去学习。神经网络在不断的学习之后,训练之后,他得到的网络模型就可以进行预测进行判断。这两个大的方向,传统的机器学习出现的很早,所以很多的教材、很多的人去组织知识的时候,传统的机器学习都作为人工智学习的一个基础。深度学习是新兴出来的,然后在很多问题的解决上有了突破,所以就是一个很火热的方向。
七、分类和回归得定义和区别
有监督的学习,主要的应用场景是分类和回归分类。分类是将不同的类别进行分开,而回归是找到一个空间,使得数据点尽可能的落在空间。用分类它预测的变量是离散的,回归预测的变量是连续的。看右边的图
比如说分类,用叉和点来表示不同的分类。那么找到的线可能就是找到的分类模型,当一个点出现在线的下边的时候,就会认为它是属于点的分类,当有一个新的数据点出现在右边上边,在叉、线的右侧的时候,就认为它是属于另一个分类。那回归要解决的问题不一样,他要预测的是连续的,比如说这边图就有很多点,那么回归是这个图里面的这条线,那是要来去做预测,如果这个点出现一个数据,比如说这个X的值是多少,Y的值应该是多少呢?就可以用这个模型,认为它的Y值应该是多少,这个点应该落在这里,这就是分类和回归。
分类和回归的区别:
分类和回归可以从多方面比较,现在从输出的方面和目的方面来比较一下。分类任务输出的是类别,比如进对图像进行分类的、对猫狗进行分类,它输出的类别是猫还是狗。回归的任务是输出的是具体的类别和预测值,预测值要求是具体的值。
比如,这个值到底是多少,这个数字到底是多少,比如是2.3还是3.4,还是多少。分类的任务,它输出的是离散的值,而这个回归输出的是连续值。分类输出的是定性的值,回归输出的是定量值。从目的的方向来比较,分类的目的是找决策的边界,回归是去寻找最优拟合。决策边界是要分类,把各个类别划开的边界在哪里。回归找最优拟合是让数据点尽量的落在某一个区域里。这里还举了一个例子,比如分类,可能天气,今天到底是阴天还是晴天,这个是分类的任务。回归可能就是要判断了明天的温度,预测的温度应该是多少。
八、机器学习常见函数
接下来一起学习机器学习里面的常见函数,在获得机器学习的模型的过程中,有很多基本的概念。其中有两个函数非常重要,这两个函数基本在有监督的学习的算法里面都会涉及到,他们损失函数和优化函数。
九、损失函数
看一下损失函数的概念,损失函数的定义是用来估量模型的预测值和真实值的不一致的程度,是一个非负实值函数。
机器学习要得到这个模型是你拿到这个模型之后,对原来的数据再进行预测。预测之后,跟真实的值就是已经标注的值,这个前提是有监督学习,标注的这个值可能会不一致,那肯定知道不一致。如果越大,说明模型就越差,如果不一致的程度越小,就说明做的这个模型就越好,跟真实的值就越接近。
损失函数就是用来评估这个东西的,因为不同的算法,算法之间是有差别的,所以不同的算法可能使用的损失函数是不一样的。但总的来说,这一点是没有问题,就是损失函数的值越小,就说明模型的预测值跟真实值就越接近,那也就说明这个模型的质量就越好。
损失函数是一个衡量现在模型到底好不好的一个重要的标准,因为这个模型是要把它找出来,然后可能进行优化,这个过程中,也是有损失函数才能指导怎么样找到一个好的模型。
通过一个示例让大家了解一下什么是损失函数。先看一下这个问题的背景:
模型 |
实际值 |
预测值 |
损失值 |
y=x |
a=1.5 |
d=1 |
损失值《以计算差值为例) loss=[1.5-1]+|2.2-2|+|2.4-3|=1.3 |
b=2.2 |
e=2 |
||
C=2.4 |
F=3 |
原始的数据是ABC,ABC分别是用橙色的点来标出来的。那么A是X等于1的时候,Y等于1.5,B是X等于2的时候Y等于2.2,Z是X等于3的时候,Y等于2.4,这3个点。ABC是原始的数据,用一个模型去拟合数据。Y等于X就是寻找到的模型,接下来问题来了,Y等于X这个模型到底好不好?我们要用损失函数来评估。前面讲到损失函数就是预测值和真实值之间的差距,在这个表里面把预测值和真实值列出来了,那实际的值是这里的ABC,ABC在X等于123的情况下,它分别得到的值是1.5、2.2和2.4。如果用Y等于X这个模型的话,那预测出来的值对应的分别是D等于e,e等于2,F等于3,能看到实际值和预测值之间是有差距的,这个就是损失,那损失具体的大小怎么来衡量呢?通过损失函数,确定这个损失函数是这样描述的,损失函数路是什么呢?是实际值和预测值之间的差的绝对值的和。也就是说把这里每一项ABC把它的实际值和它的预测值的差求绝对值,然后把所有的实际值和预测值之间的差都加起来,这个是A和D之间的差,B和E之间的、C和F之间的,把它们的差值的绝对值加起来之后,是1.3。这个时候1.3就是损失函数得到的结果。可以看出来1.3,它在上面图像上面的意义是AD、BE、FC这三个线段的长度加起来的和。从图形上讲,如果调节一下模型的参数,比如说在示例里面,直线稍微的倾斜一点,那么这个时候损失函数的值可能就会降低,那么这个损失函数也给我们去调节参数指明了方向。另外有的同学可能会想这个损失函数为什么这个值是这个线段,ADBFC这个线段呢?为什么不是从ABC 这个点到这个Y等于X这个直线的距离呢?这样的话其实就是用的是另外的损失函数。这就是损失函数的选择的问题。
十、优化函数
机器学习里面另一种常见的函数是优化函数。什么是优化函数呢?优化函数是通过调节参数,使得误差函数的值变小。通过前面对误差函数的理解,我们知道机器学习在寻找模型的过程中,目标就是使误差函数的值变小,误差函数的值越小,说明模型就越好。要在一个动态的过程中去不断的调节参数,使得误差函数的值变小。那怎么样去调节参数呢?这个要依靠优化函数,通过优化函数的帮助,让我们不断的去调节参数,让误差函数值越来越小。当调节到某一个程度的时候,就找到了目标的模型。所以在机器学习中选择优化函数很重要,选对了优化函数的话,可以让机器学习的训练的速度大大的增加,可以让训练的结果的质量得到提高。下面我们列举出来一些常见的优化函数。
首先梯度下降,相关的算法有三个,叫批量梯度下降、小批量梯度下降和随机梯度下降法。梯度下降的英文是gradient descent。有的时候大家见到这些算法会是他们缩写的形式,像批量梯度下降,它缩写是BGD。然后小批量梯度下降是mini batch GD,随机梯度下降是SGD,就是它的缩写的首字母。这三种算法后面会有详细的讲解,牛顿法是跟梯度下降是不一样的,他的速度也很快,也能高速的逼近最优质。然后动量优化法和适用性梯度算法可以看作是梯度算法的改进。动量法,看到名字就知道它里面用到了动量的概念,去加快这个梯度更新的速度。
适用性梯度算法,它是调节了学习率,它为每个参数自适应的去调整学习率。下面的这个均方根传播算法和AdaDelta算法,这两个算法也是在学习力上面去做优化的。最后adam算法是很常用,很好用的算法,它可以看作是动量优化法和军方跟传播算法它们的结合,可以自适应的去调整学习率。
优化函数主要是通过不断的去调整参数,然后让损失函数的值变小,这个过程是如何进行的,拿梯度下降为例来说明,梯度下降是机器学习里面非常基础的一个概念。先看一下右边这个图,来理解一下这个图跟所说的优化函数怎么执行有什么关系。
在机器学习的过程中,学习的是什么呢?
主要怎么样去调整数,模型的参数到底是怎么样的,有一个点是可能参数给到你的值是最优的,这个是我们追求的最低点。为什么叫最低点呢?因为参数最优的时候,前面讲过这个损失函数,计算的出来的loose损失是最小的,计算出来的最小的参数到了某一定的值的时候,能找到这个点。机器学习就是去调这个参数怎么样到最低的点。它初始的状态肯定没有,就像小球一样。这个是当时所在的一个状态,看它在这个位置,就知道它离最低点还有一定距离,这个时候用损失函数计算出来的loss损失的值可能是比较大的。接下来就需要不断的去调参数,让损失的值降到最低点。接下来的问题就是怎么样去调优化函数让我们找到调参数的方法,怎么去调?那个图可能会觉得很简单,这个球不就会在重力和泼面的作用下,它慢慢的滑到这个最低点吗?那这个算法里面没有,这个算法里面没有重力,我们当前处于这个点的时候,然后去到最低点,要去到最低点。要知道下面几个要素,一个是我们所处的位置在哪里,也就是我们现在损失值到底是多少,我们要先清楚你的lose你的损失值是多少,然后我们在迭代的过程中,要去移动这个点是,调整参数之后就移动这个点,随着这个点参数的调整,损失值也就会发生变化。那该向哪个方向去调整,这个是用梯度方向来判断。
梯度方向是什么?
简单来说,,根据我们所在的位置,可能朝某一个方向loose损失值就会上升,朝另外一个方向损失值就会下降,这个时候可以用导出的方式算出来应该向哪个方向走。找好这个方向之后,接下来问题是朝这个方向走,移动速度是怎么样,我们是用上帝视角来看这个问题,知道最低点的这里,如果不知道,如果把这个下面黄色框的部分去掉,在这个位置的时候,就知道这个方向可能是这样。
往下走的这个过程中,这个速度应该怎么样去控制?
就是学习率,确定了所处位置、移动的方向和移动的速度之后,这个小球就会接着往下走。比如说学习率是这么多、方向是正确的,往下走,走到下一个迭代的之后重复这个过程,知道再接下来应该向哪个方向走、移动的速度是怎么样的,在不断的重复这样的过程中,参数慢慢就向最低点靠拢,到了一定程度满足我们的需求,就找到了这个模型的应该有的参数的配置。这里注意一下,这个PPT没有把它表达成动画的形式,可以想象一下这个小球在往下走的过程中是迭代,一个迭代一点点的下来的。