机器学习与计算机视觉

Machine Learning and Computer Vision by Marcello Pelillo

前言

​ 本栏记录了我参加的2020年6月17日开始的、为期一周的机器学习与计算机视觉课程,由来自威尼斯大学的Marcello Pelillo教授主讲。在栏目中,我将记录我学习到的心得,而不会一一列举所有知识点。

特别注意:本课程由于是英语课程,所以理解有限,未免会出现错误,希望读者多加指正。

2020年6月17日

​ 今天主要入门了机器学习的一些基础的概念,如监督学习和非监督学习。我在本次学习的过程中,有下面的几点收获。

1. 贝叶斯理论(贝叶斯公式)

​ 我们在概率论与数理统计这门课程中的一开始,就提到了贝叶斯公式,即:
P ( a ∣ b ) = P ( a b ) P ( b ) P(a|b) = \frac{P(ab)}{P(b)} P(ab)=P(b)P(ab)
但是,我却没有想到贝叶斯公式在机器学习领域的应用。在机器学习中,虽然我们假设所有的样本服从独立同分布,即iid,但是我们并没有对样本的分布类型进行假设。

​ 如果我们知道了样本的分布,那么我们就会非常容易的得到预测某一样本的结果的概率。需要注意的是,在概率论中我们知道,样本若是服从一个分布,那么说明样本本身最终的取值,是存在不同的可能性的。

所以,在所有的机器学习的模型中,贝叶斯模型是最理想的模型(需要假定分布已知),因此可以作为其他模型的评测的标准。

2. KNN与K-Means

​ 之前我把这两个概念弄混淆了,这其实是两个非常不同的机器学习的算法。

  • KNN是根据该样本点 k k k个最邻近的样本的label投票得到最后该样本的label,本质上是监督学习的分类算法。
  • 而K-Means则是非监督学习的算法,用于聚类。在样本集中随机选择 k k k个点按照距离进行划分,再由每一个划分中取中值的点重新进行划分,直到中值的点不再发生变化。

3. 数据vs.理论

By the mid2000s, with success stories piling up, the field had learned a powerful lesson: data can be stronger than theoretical models. A new generation of intelligent machines had emerged, powered by a small set of statistical learning algorithms and large amounts of data.

​ 这段话引起了我的思考,在统计学上的规律是否可以用某学科现有的理论解释,或是说,如果有了统计学上的规律,可以对该学科进行启发。

2020年6月18日

​ 今天的主要内容是在时间的背景下,讲解神经网络。

1. 用于非线性的神经网络

​ 在本课程中,老师介绍了MP神经网络,其每一个神经元的数学表示如下:

\varepsilon(\sum_ix_iw_i - \text{threshold}) = \left\{ 
\begin{align}
& 1\quad \text{if}\quad \sum_ix_iw_i \geq \text{threshold}\\
& 0\quad \text{otherwise}\\
\end{align}
\right.
% CSDN 不知道为什么把公式吞了

​ 只用一个MP神经元构建的神经网络,称之为感知机

​ 我们使用一层MP神经网络,可以通过改变阈值的方式,来完成逻辑与、或、非。而在上个世纪60年代,人们已经知道神经网络可以用来完成所有的布尔运算,因为所有的逻辑都可以由基本逻辑(与、或、非)中的逻辑而组成。因此,随着逻辑的逐步趋向复杂,需要使用多次基本逻辑的组合来表示,进而体现在神经网络上的神经层也随之增加。

​ 使用一层神经网络可以将一个超平面一分为二,称之为决策域(decision region)。而随着layer的增加,决策域的形状更为复杂,更好的将所有的样本包括于其中。

​ 但是,当时科学家并不知道怎么使用数据来训练神经网络。只是通过改变阈值和权重的方式,来完成非线性的表示,因此并不可以称之为学习。 直到80年代机器学习领域引入了反向传播算法。不同于之前的含有移位的(阈值)的阶跃函数,当时人们改用了新的激活函数,也就是sigmoid函数。

2020年6月19日

​ 今天继续讲解神经网路,着重讲解了反向传播算法的数学推导,之后讲解了关于数据集分为训练集、验证集与测试集的意义,最后讲述了如何选择神经网络中神经元的数量。

​ 在吴恩达的课程中,同样也涉及了反向传播算法,可以参考我之前记录的笔记,但是在数学推导上有一些省略。

1. BP神经网络

​ 关于BP神经网络的数学推导,其实在网络上找到很多文章讲述。所以这里我在这里讲两个方面,帮助读者来了解一下其中的内核:

  • 误差函数(Error Function):真实值和预测值向量差的2-范数的一半。

  • 导数和偏导数的链式法则:这将在下面的梯度下降算法中使用。

  • 梯度下降算法:使用梯度下降算法的目的是将误差函数降到最小,即收敛时,得到的预测最为准确。

关于梯度下降算法可以参考以下文章:

2. 训练集、验证集和测试集

​ 在训练的过程中,我们会遇到两个问题:

  • 欠拟合,也就是拟合的结果并没有体现出样本集变化的趋势
  • 过拟合,拟合的结果完美的满足样本集中的每一个样本。

​ 在对模型进行反复训练的过程中,会使模型完美地经过每一个样本,我们采用了将样本集分为训练集、验证集和测试集办法,对模型进行评价。

​ 在使用训练集对模型进行训练的同时,关注于使用验证集作为模型的输出的偏差。当验证集的偏差达到最小值时,模型训练结束,从而避免了过拟合的问题。

​ 而测试集是对模型的最终表现进行评价的,使用测试集作为输入而产生的偏差,通常用于描述整个模型的性能。

3. 神经网络的超参数和调参

​ 神经网络的超参数用于描述神经网络的结构,需要区别于神经网络中两个神经元之间的权重。超参数的选取决定了神经网络的性能,比如是否收敛和收敛的速度。

​ 因为使用了梯度下降算法,所以我们不一定会在收敛后得到误差函数的最小值,有可能只是一个局部的极小值。出现这种问题的原因是梯度下降的起始位置以及学习率决定的,所以在使用神经网络的时候,我们往往需要使用不同的超参数对模型进行尝试,最后选取效果最好的超参数来表示这个模型的性能。

2020年6月20日

​ 今天的主题是支持向量机。

1. 支持向量机的名字由来

​ 在二元分类问题中,根据边缘上的点的距离来确定的分类方法。在数据集空间上,可以画出很多超平面,使得含有不同标签的样本在不同的区域,但是怎么选择最好的呢?以泛化效果作为评价标准

​ 为什么叫支持向量机呢?因为用于区分边界的超平面是由两侧数据集的最靠近边缘的样本决定的,称为支持向量。也就是说,支持向量的确定后,决策域便于两侧样本的分布没有关系了。

2. 支持向量机推导的数学

​ 支持向量机的推导主要使用了以下的知识点:

  • 线性代数
  • 拉格朗日乘数法

数学推导我会在整理之后更新

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐