机器学习之旅(一)

吴恩达教授的机器学习课程的第一周相关内容:

1、什么是机器学习?

答:机器学习的定义:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.(英文版)。
假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。(中文版)

维基百科:机器学习是人工智能的一个分支。
人工智能的研究历史有着一条从以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。
机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法
机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。
算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。很多推论问题属于无程序可循难度,所以部分的机器学习研究是开发容易处理的近似算法。

2、机器学习的分类?

答:机器学习可以分成下面几种类别:
监督学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析(连续)和统计分类(离散)。
监督学习和非监督学习的差别就是训练集目标是否人标注。他们都有训练集 且都有输入和输出。
无监督学习与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有生成对抗(GAN)网络、聚类。
半监督学习介于监督学习与无监督学习之间。
增强学习通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。

3、 单变量线性回归(Linear Regression with One Variable)

3.1 模型表示

监督学习算法的工作方式
h 代表 hypothesis(假设), h 是一个从x 到 y 的函数映射。一种可能的表达方式为: h θ ( x ) = θ 0 + θ 1 x h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x , 因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
小结:h主要是为了让其与数据集上的数据相拟合,以便于预测其他数据的走向。

3.2 代价函数

我们现在要做的便是为我们的模型选择合适的参数 θ 0 θ 1 \theta _{0}和\theta _{1} ,我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。
在这里插入图片描述
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价
J ( θ 0 , θ 1 ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) ( y ( i ) ) 2 J\left ( \theta _{0},\theta _{1} \right )=\frac{1}{2m}\sum_{i=1}^{m}\left (h _{\theta }\left (x ^{\left ( i \right )} \right )- (y ^{\left ( i \right )}\right )^{2} 最小。
代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。
代价函数的直观理解如下图:
在这里插入图片描述
小结:代价函数的作用主要是描述数据集和假设函数之间的误差,通过求其最小值,可以让假设函数与数据集更好的拟合。

3.3 梯度下降

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数 J ( θ 0 , θ 1 ) J\left ( \theta _{0},\theta _{1} \right ) , 的最小值。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合 ( θ 0 , θ 1 , . . . . , θ n ) \left ( \theta _{0},\theta _{1}, ....,\theta _{n}\right ) ,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum) , 因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
批量梯度下降(batch gradient descent)算法的公式为:
在这里插入图片描述
其中 α 是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,若 α 过小则需要迭代很多次才能达到最小值,如果 α 过大,则可能越过最小值,一次次越过,会导致无法收敛。梯度在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。 θ j \theta _{j} 必须同时更新。
小结:梯度下降算法就是改变 θ \theta 的值以逼近代价函数J的最小值,上式中α 后面的偏导是为了求J在 θ j \theta _{j} 的斜率,以更好的改变 θ \theta 。如果梯度下降算法从J的最小出开始,那么偏导为0就不会改变 θ \theta 的值了。

3.4 梯度下降的线性回归

梯度下降是很常用的算法,它不仅被用在
线性回归上和线性回归模型、平方误差代价函数。我们需要将梯度下降和代价函数结合。我们将用到此算法,并将其应用于具体的拟合直线的线性回归算法里。
梯度下降算法和线性回归算法比较如图:
在这里插入图片描述
对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
在这里插入图片描述
在这里插入图片描述
小结:这里将梯度算法和单变量线性回归结合到了一起用以改变 θ \theta 的值和求J的最小值。

猜你喜欢

转载自blog.csdn.net/qq_42722278/article/details/82779411