由于研究生阶段的方向为人工智能,所以想在还没有开学的这个暑假自己先打打基础,方便进组。
其中除了各种视频资料中的内容之外还包括了部分自己的理解,如有不对的地方,还请大家多多指正。
目录
引言
什么是机器学习?
相信大家对于人工智能这个词并不陌生,而机器学习正是一门关于人工智能的科学。我们每天都在生活中或多或少的接触了机器学习的算法,例如人脸支付、无人驾驶、商品推荐等。再比如每当人们使用搜索引擎时,算法会根据用户输入的关键字,将更高质量的搜索内容排列在前面,以便于用户能够更加方便、快捷、高效的提取到需要的信息。或许我们不知道如何让计算机去做各种各样的事情,但我们可以让机器去自己学习如何去解决问题,这便是机器学习。
两种学习算法的类型
目前存在几种不同的学习算法,下面主要介绍常用的两种。
有监督学习
有监督学习,顾名思义,要有个监督者来“监督”计算机去学习。
我们先来看一个例子,我们都知道房屋面积在很大程度上影响了房子的价格,假如你有一套面积为x的房子,那么你大概能卖多少钱呢?
x轴为房屋面积,y轴为房屋价格。根据学习算法可以根据这一部分数据(红叉表示)来拟合出一条直线,从而预估房价 。当然也可以利用不同学习算法拟合出曲线(在上图中曲线效果反而更好一点)。
可以看出来,所谓监督学习,就是将大量的数据经过一定的学习算法得出一个逼近正确值的预测值。我们尝试着去预测一个连续的结果,在本例中即为房价,这样的问题一般称之为回归问题。
还有一个预测结果离散的例子,即分类问题。假设我们可以用肿瘤的大小来判断肿瘤是否为良性(虽然我知道真实情况仅仅根据大小来判断是完全不可取的)。
x轴表示肿瘤的大小,而y轴被分为两个部分(二分类问题),我们可以很明显的看出,在大多数实例当中,较小的肿瘤一般是良性的,但这个说法也不是绝对的。
以上是最简单的二分类问题,在实际应用中我们可以根据需要选择不同的算法进行多分类。并且影响因素不仅仅只有一个。就如上面的例子,肿瘤性质还会被患者的年龄、性别、生活方式等因素影响,如果使用足够优秀的算法,我相信这些不同的参数会让我们的预测结果更加的准确可靠。
无监督学习
无监督学习就不一样了(自觉性较高啊嘿嘿),自学成才。
我觉得无监督学习更加贴近于生活,因为在人类发展的历史长河中有很多东西没有先验的知识或是经验,因此我们无法对数据进行标签,再者人工标签也需要花费一定的成本。而它的不同之处在于获取的数据集当中没有标签或者都是相同的标签,我们只知道其中的数据,其他一无所知。而无监督学习算法就可以将大量的数据分为不同的聚集簇,在我看来就是根据某些规则将数据进行分类。
在生物基因学上,可以根据不同个体提供的DNA来将个体分类,其原理就是在分析他们的DNA中是否有一个特定的基因,或是有多少特定基因表达了出来,以此来达到分类效果。
单变量线性回归
模型表示
以之前房价问题为例,左边为面积,右边为房价。问题数据集如下表:
该回归问题的表示如下:
m代表训练集中实例的数量
x代表特征/输入变量
y代表目标变量/输出变量
(x,y)代表训练集中的实例
(x(i),y(i))代表第i个实例
h代表学习算法的解决方案或函数
那么究竟该如何表达函数h呢?单变量线性回归的表达方式为:
误差函数
误差函数是用来度量所构建模型准确率的函数,以上边单变量线性回归表达式为例,其误差函数定义为:
我们的目标就是尽可能地使这个误差函数变小。
梯度下降
梯度下降算法是求函数最小值的算法,它可以帮助我们寻找误差函数的最小值。
梯度下降的主要算法思想是:刚开始随机选择一组参数并计算出误差函数,然后在附近寻找可以让函数下降最多的参数组合,直到找到一个最小值。因为没有遍历所有的参数组合,因此这个最小值是一个局部最小值。
批量梯度下降算法的公式为:
其中α是学习率,它决定了函数的下降效率,在每一次下降时,都要减去学习速率乘以误差函数的导数。注意:在更新参数时应该同时更新,即同时更新和
。学习率的选择也非常的重要。如果学习率太小,就会导致曲线收敛太慢,太耗时间;如果学习率太大,则可能导致无法收敛,甚至发散。
那么如果一开始就在一个局部最优点,会发生什么情况呢?此时局部最优点的倒数为0,那么说根据公式
就不会再改变,这也解释了当学习率α不变时,梯度下降算法依旧可以找到局部最优点。
梯度下降的线性回归
现在我们尝试将梯度下降算法与误差函数相结合,并应用到拟合直线的线性回归算法里。
批量梯度下降算法的公式为:
单变量线性回归的表达方式为:
单变量线性回归误差函数定义为:
对误差函数求导:
j=0时,
j=1时,