-
机器学习:通过对各种信息的汇总与分析,达到预测未来或者对未见事物进行推测的目的。
机器学习就是向计算机中输入各种数据,利用计算机已有的命令(计算机程序)去完成各种计算和分析判断。
计算机可以自动获取大量数据背后隐藏的关系和规律,能够对外面世界的法则进行学习,这就是机器学习。 -
特征量:我认为,特征量就是衡量一个事物需要用到的主要属性,比如衡量“美丽”,特征量就有“年龄”、“皮肤状态”等等。通过将特征量转换成数值,我们才能够进行机器学习。
-
特征向量:将特征量集中在一起表示出来,就是特征向量。
-
权重:表示参数(即特征量)的重要程度,通常是0到1之间的一个小数。1表示非常重要,0表示完全不重要。此外,也可以设置为负数。
-
输入数据(即特征向量) → 函数模型计算 → 输出结果
-
回归:我们开始的时候并不知道准确的函数模型,因此首先要建立一个近似的函数模型(通过猜测)
→ 然后通过与数据(包括输入与输出)的不断拟合,对函数进行微调。 -
通过矩阵运算,可以简化对方程式的变形和计算。
-
确定直线函数:斜率+截距。
-
误差函数:不是一种固定的类型,可以是方差或标准差。
-
有监督学习:已知正确输出结果,通过修改模型函数的参数去拟合这个正确结果的过程。
-
无监督学习:
-
聚类:将数据按照结构或特征进行分类。
-
梯度下降法:利用微分的思想,每次对参数的调整都只改变一点点,当改变参数之后误差变小,便保持这个方向调整这个参数,直到误差值保持不变或者反而有所上升时为止。依次改变各个参数。
最快梯度下降法:确定多个参数的改变方向之后,同时改变参数来减少误差。
梯度下降法的缺点:梯度下降法能达到极小值,但有可能不是最小值。
因为微分反映的是一种变化趋势。微分是要在某个数据点附近进行计算,但对于更大更远的空间范围,微分是无能为力的。
14. 训练用数据 & 测试用数据。
15. 通用性:用一部分数据来评价全体的能力。
16. “过度学习”:即“过学习”,指模型仅仅匹配训练用数据,但不满足测试用数据。
17. 将数据分成训练用数据和测试用数据,最常用的做法:将数据分成若干组,在每一组中,都将一份数据作为测试用数据,剩下的都作为训练用数据。当然,每一组拿出多少份作为测试用数据的数目不是固定的,可以根据实际情况而定。
18.
- 线性特性:
乘法和加法无论前面组合过多少次,最后总会合并成一次乘法和一次加法运算。这种只有乘法和加法运算的情况被称为线性特性。
除法和减法,其实就是乘法和加法的逆运算,所以并没有什么本质区别。
- 由原始的特征量直接加权求输出,这种模型对于求解某些问题来说,过于简单,并且难以得到理想的结果。因此我们需要使模型变得复杂一些。我们可以考虑通过现有的特征量去组成新的特征量,并且也给这些新的特征量不同的权重。
复杂模型中如果只有线性特性的话,效果是不好的。
- Sigmoid函数,用符号sig(x)表示。利用Sigmoid函数进行非线性变换:
首先,给每一个特征值加权再将这些结果求和。
将这个结果作为Sigmoid函数的输入量x,去求sig(x)即可。
处理复杂的问题就需要使用复杂的函数。
要设计一个复杂的函数,就需要非线性变换,幂运算就是其中一种。指示函数包含了幂运算,所以也是非线性变换。
-
单层神经网络:原先单纯将特征量直接加权组合求结果的模型:
多层神经网络:在单层神经网络的模型的基础上,增加了非线性变换。
中间层:
把特征量组合后进行非线性变换的是中间层(也叫做隐层)。
- 正向(前馈)型神经网络、双向(反馈)型神经网络、回归型神经网络结构。
- 对多层神经网络的模型进行微调时,不能单纯改变参数的权重,这样难以减小误差。
误差变化的程度和趋势就意味着梯度。
因此,在多层神经网络中,需要使用误差逆向传播算法(也叫做BP算法,书中没有介绍原理)对各种权值进行调整。
方法是这样的:现在轻轻搬动离输出层最近的摇杆,让摇杆的影响一步就可以直接传递到输出(方法还是要通过微分使得误差函数值变小)。
完成与输出最近的一层摇杆的调节后,再调整倒数第二层的摇杆。相当于从输出倒着向输入层的方向逐层调节摇杆。
权值不能一次变化太大。否则有可能造成输出结果反而变差。
- 挑选神经网络中,用来完成非线性变换的函数时,需要注意其梯度的大小,因为这将影响到多层神经网络中对权值的调整。
其实到底采用什么函数比较好,这个问题一直是众说纷纭的。
最近斜坡函数也渐渐获得了研究人员的重视。
微分之后的结果与摇杆是否容易搬动是有直接关系的。
- 防止过度学习的一种方法,中退取舍(dropout)法:
适当地选取一定比例的特征量,剩下的全部舍弃不用。
为了不出现过度学习,不能让某个参数值远远大于其他参数值,也不能让同一个参数在某个时刻的值远远大于其他时刻的值,否则必须对数据进行处理。
- 批量学习:
将全部数据收集齐了之后一起作为训练用数据使用。
在线学习:
随着数据不断地获取而逐步进行的学习。
数据的采集方法没有变,所以新数据基本有不会出现与原来数据差距极大的情况。
在线学习的通用性很好。
概率梯度下降法:这种方法是对批量学习的一种改进:
把已经获得的所有数据按照一定程度分成若干小组,对每一组数据分别进行学习。
数据分组的时候不能按自己的意愿进行。因此我们采用概率的方式去分组这些数据。
- 鞍点:
当有很多参数的时候,沿着某个方向滑动就有走向谷底的感觉。但是如果再向其他方向搜索的话,可能误差还会降低,这就是鞍点。
看到这里,对概率梯度下降法有了点新的认识,我认为概率梯度下降法就是会定时(或随机时间)调整各个分组的顺序,因此机器每一次都会重新尝试新的调整方向,这样就解决了鞍点带来的问题。
与其冲着预先规定好的方向一直走下去,倒不如时不时地左看看、右转转。
让机器进行学习的过程首先就是要尽量模仿人的这种学习过程,之后再让机器自己去寻找更适合的学习方法,这才是机器学习算法的发展方向。
- 单位阶跃函数。
- 分割用超平面:将数据集分割开来的直线(或非直线,比如曲线、曲面)。
我们不仅要正确地分割数据,还希望尽可能地将分割超平面调整到离这些数据点都比较远的地方,也就是提高数据分割的安全裕量。
- 感知器:可以通过移动分割超平面将不同特征的数据进行分类的模型。
- 支持向量机:支持向量机也是一种模型,用于尽可能地扩大安全裕量。
支持向量机的通用性非常好。能够根据分割数据指标的不同做出各种分割超平面。
- 矩阵:
矩阵虽然是由数字构成的,但应该看作是一些模式的排列。
我们看到的是大量的数字,但机器学习的目的就是要从这些数字中找到规律。
在一个矩阵中存在模式的个数,叫做秩。
如果矩阵的秩比较小,矩阵中空白的地方可以通过重新构建低秩矩阵来处理。
我们的目的是希望误差函数值尽量小,因此只要是在模型输出和数据匹配的范围内,不很重要的权值设置为零也是允许的。
当我们看到数据很复杂时,最好先别考虑选用复杂的模型去匹配。我们应该看看是不是有更加简单的规则来描述这个模型。
- 似然度:相似的程度。
- 玻尔兹曼机器学习:
我们将图像的颜色数据输入到玻尔兹曼机中,计算机通过分析这些数据,就可以得到实际图像的特征、各像素点显示某种颜色的概率,以及相邻像素间的关系等。这种学习过程就叫做玻尔兹曼机器学习。
在玻尔兹曼机器学习的时候有一个特殊的过程:将实际提供的数据输入到玻尔兹曼机之后,模型会输出伪数据(重构数据),我们要看课重构数据与实际数据的相似程度是否足够大。
玻尔兹曼机器学习是一种双向型神经网络。
- 采样:
这是玻尔兹曼机器学习中的一个过程,就是要自身不停地产生出书籍来。
- 玻尔兹曼机器学习在进行时,如何考虑相邻像素之间的关系:可采用的方法有:马尔科夫链蒙特卡罗方法、平均场近似法、信息交互法。
马尔科夫链蒙特卡罗方法:
这是一种在整个网络结构中的循环,在这一过程中还要不断地采集大量的重构数据。
平均场近似法:
单纯考虑由相邻像素传送来的信息。
信息交互法:
与相邻像素进行信息的相互交流。
- 隐含变量:
无法直接取得的,或者看不见的数据。
-
受限玻尔兹曼机:在玻尔兹曼机的基础上,加入了开关的概念。
开关:
当开关打开(ON)的时候,通过像素和开关之间的关系就可以决定在可见变量一侧表示出什么。
受限玻尔兹曼机:
这种方法认为可见变量(像素)之间没有任何关联,各个开关之间也没有关联。只考虑开关与像素之间的关系,叫做受限玻尔兹曼机。
- 对比散度算法。
- 深度玻尔兹曼机。
- 自我符号化。
- 降维操作:
通过输入的特征量在中间层进行重新组合,这样就可以降低输出的数量,最终只保存输入中最重要的部分。