【总结】漫画机器学习入门(大关真之著)

 

写在前面

谁是世界上最美丽的人?

特征量与特征向量

误差函数

有监督学习 & 无监督学习

最优化问题的求解

训练数据 & 测试数据

过学习

sigmoid 函数

多层神经网络

王后搬不动摇杆了?

BP算法(误差反向传播算法)

最好不要用sigmoid函数了!

使用其他的非线性函数?

 dropout

批量学习 & 在线学习

概率梯度下降法

粮食问题

分割用超平面 ---> 感知器perceptron

提高数据分割的安全裕量

分割超平面

模式的种类 = 矩阵的秩

预测方面有监督/无监督的不同 

非负矩阵分解

谁是世界上最美丽的人?

玻尔兹曼机器学习

似然度

深度玻尔兹曼机


写在前面

昨天逛图书馆偶然发现这本书。总觉得自己基础不太扎实,遂借来读一读。

这本书对一些基本概念的解析浅显易懂,也有配图,读得也快。

记下来一些自己之前易混淆,易遗忘的东西,权当做总结和读后感了。

豆瓣介绍

这本书通过魔镜与王后的对话,就如何找到世界上最美丽的人以及粮食问题进行了一系列的探讨。2333

 

 

谁是世界上最美丽的人?

  • 特征量与特征向量

王后按照魔镜的要求,,在全国范围内挑选美女,收集她们的年龄,眼睛大小,皮肤的润滑程度这些跟美丽有关的数据。

特征量就是每一个人的年龄,眼睛大小。

如果将这些特征量集中在一起表示出来,就是特征向量了。(为了防止混乱,必须要将每个人的信息都分开输入才可以,所以组成了向量的形式)一个向量是一个人各种特征量数据的集合。

 

  • 误差函数

搬动不同的摇杆(权重的变化),用来尽量减少误差函数值。

给出了特征量数据(输入)和对应的美丽程度(输出),要从中推导出由输入到输出的函数表达式(函数模型)。但是由于各种因素,当给定特征量输入时,无论怎样调整权重,实际输出也很难达到给定的美丽程度值(理想输出)。此时就需要一个计算“美丽程度”的实际输出与给定的理想输出之间的差值。因此需要确定一个误差函数。

  • 有监督学习 & 无监督学习

为了让模型尽量能够匹配每一个数据点,应该通过修改模型函数的参数来消除误差函数值,这就是一种学习方式。

如果通过这种学习方式得到输入输出之间的关系,称为有监督学习。

还有一种情况是只提出问题,而不给我们答案。 简单而言,就是当我们希望去解决问题时,首先要自己去抓住问题的本质,而没有人来告诉我们怎么做。这时候就要从所有给出的数据中自己去发现所有的关联,这就是无监督学习。

  • 最优化问题的求解

王后不停地搬动摇杆,但是总是存在着误差!

最小化误差函数,其实是一个求解最优化问题:我们的任务就是要找到没有误差或者误差小到满足要求的最适合的模型。这就要通过调节模型中的参数,使误差函数值尽量小,这就是求解(参数)最优化问题。

求解最优化问题是有窍门的!

稍微拉动一点摇杆,确认误差是否变小。这种操作叫做微分

一直拉到误差不再减少,直到误差值保持不变或者反而有所上升时为止。希望不停地调整权重,使得误差一直在朝着减小的方向前进。这种调整误差的方法叫梯度下降法

 

如果调查一下每根摇杆应该往哪边移动就能让误差减小,之后一口气同时调整所有的摇杆,这种方法叫做最快梯度下降法

  • 训练数据 & 测试数据

学习和测试是机器学习的两项基本任务。

首先,第一步是要读取大量数据,从数据中寻找存在的规律,这项工作被称为学习。这时的数据,是训练数据。

下一步就是利用这一学习成果进行实践检验,这项工作被成为测试。这时的数据,是测试数据。

  • 过学习

PS : 这里应该是我们常说的overfit.

如果仅仅拘泥于对眼前问题的学习,就会无法应对其他问题,这就被称作过学习。    

  • sigmoid 函数

当发现检测的结果不太好,王后想把模型变得更复杂一些。王后尝试将原始的特征量组合起来获得新的特征量,再加权求输出,却发现因为只有乘法和加法的情况这种线性特性,与之前并没有本质区别。因此,引入了sigmoid函数,这个非线性函数。

sig(x) = \frac{1}{1+e^{-x}}

 

使用这个函数时,现将特征值加权并求和(和以前一样),将当前的结果作为该函数的输入。单纯地增加爱一个sigmoid函数,并不会增加参数的数量。

但是如果我们把将特征量组合,新增加5个特征量的话(如图),摇杆的数量就变成了原来的5倍。

图中,每条线都代表一个权重。

  • 多层神经网络

将特征量直接加权组合起来,只有 一次组合的,叫做单层神经网络。

如果在单层神经网络的基础上,增加一层非线性变换,结构上也就多了一个中间的曾,就是多层神经网络。

  • 王后搬不动摇杆了?

​​​​​​​在多层神经网络中,进行了各种各样的特征量组合和非线性变换。

在使用梯度下降发和最快梯度下降法的时候,稍微动一下摇杆就能看到误差值是否在下降了,这就是微分。而误差变化的程度和趋势就意味着梯度。梯度消失,就会导致因为没有梯度使得误差下降困难。

模型越复杂,网络就越纠缠,拉动一根线就会对整个网络产生较大的影响。反过来,网络中任何一根线又会连接很多其他的线,拉它的时候也会受到很大限制,甚至拉不动。

  • BP算法(误差反向传播算法)

​​​​​​​PS : 这本翻译跟我之前了解的翻译,不太相同emmm

BP 算法解释比较困难,所以直接告诉我们 操作:距离输出层越近的摇杆越容易搬动,这是有梯度的结果。因为搬动一下离输出很近的摇杆,它的效果能够很方便地传递给输出。离输出越远,梯度越难计算,越难调整。

训练模型的方法:从输出倒着向输入层的方向逐层调节摇杆。注意权值不能一次变化太大。

  • 最好不要用sigmoid函数了!

​​​​​​​下图是sigmoid的微分图形(变化趋势,搬动摇杆的容易程度)。

当输入值较大的时候,输出sig(x)几乎看不出变化,就好像根本没有梯度了,因此显得摇杆很重搬不动。

  • 使用其他的非线性函数?

很久之前Yann LeCun曾提议采用tanh(x)

PS:tanh(x)是双曲函数中的一个,为双曲正切。在数学中,双曲正切tanh(x)是由基本双曲函数双曲正弦和双曲余弦推导而来。

                                                        tanh(x)=\frac{sinh(x)}{cosh(x)}=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}

函数的图像为:

也有人建议采用斜坡函数(ReLU函数)

当输入>0时,这个函数的微分就等于它的斜率了。它的微分,搬动的容易程度变成1了!!!解决了梯度消失的问题!!! 

  •  dropout

文中翻译成了中退取舍法,可能更常见的翻译是随机丢弃法吧。

适当地选取一定比例的特征量,剩下的全部舍弃不用。

  • 批量学习 & 在线学习

将全部数据收集齐了之后一起作为训练用数据使用,这叫做批量学习(batch learning)

与此相对的,随着数据不断地获取而逐步进行的学习则称为在线学习(online learning)

现在批量学习也在改进,有些地方与在线学习差不多。

  • 概率梯度下降法

 (采用概率的方式去分组,也叫随机选择,就是不能利用某种故意的特定意图去分组)

当利用概率分组后,对每一组数据进行训练,动一下摇杆看误差如何变化,然后再向误差变小的方向搬动摇杆,这就是概率梯度下降法。(通过适当地概率计算,让参数或左或右地跳动着变化)

这种算法考虑的是,与其冲着预先规定好的方向一直走下去,倒不如是不是地左看看,右看看。这样反倒更容易找到隐藏的近路。

 

 

粮食问题

  • 分割用超平面 ---> 感知器perceptron

用0和1代表不能收获和可以收获。

利用现有的参数,正好可以分割成两类,他们的分界线就是一条直线,这条直线就可以看作是分割用超平面。

  • 提高数据分割的安全裕量

我觉得安全裕量这个翻译蜜汁尴尬,我也不知道对应的正常翻译是什么?

我们不仅要正确的分割数据,还希望尽可能地将分割超平面调整到离这些数据点都比较远的地方,也就是提高数据分割的安全裕量。分割超平面应该尽量原理所有的数据点,这样可以增强通用性,使得适应性更好。

  • 分割超平面

当数据分布很简单时,可以用一条直线来分割。数据如果复杂,直线就不行了,需要用曲线。如果是三维空间的数据点,就需要利用曲面来分割。如果是多维,就要通过分割超平面去分割这些数据点。

  • 模式的种类 = 矩阵的秩

一个模式以一行向量表示。矩阵中两行的规律相似,应该属于同一种模式。假设数据中存在某些模式,那么在矩阵中一定会存在某一行的数值代表该模式,其他的某一行代表另一种模式。

如果模式能够从可见数据中推演出来,通过对可见数据做有效处理,就能够推测出不可见的那部分数据,这其实是一种无监督学习:希望能够完美地补充矩阵中空白的数据,并能够预测出新的模式。(计算机从大量数据中通过自己的分析来找出规律,叫做无监督学习)

  • 预测方面有监督/无监督的不同 

从数据中学到东西,这一点是一致的。之后,在是否进行预测这一点上是不同的。

有监督学习是希望计算机越来越聪明并逐渐能够代替人的某些工作。

无监督学习,是希望计算机从特征量中选择出我们容易理解的某种模式,将模式分成若干或者某种形式的分类。

  • 非负矩阵分解

Nonnegative Matrix Factor

非负,指在计算的时候不使用负值,也就是只做加法运算。就像用钢笔描绘人脸,先有眼睛,鼻子,再加上嘴等等。这些都是一个一个添加的。

如果也用减法,就像用铅笔,还可以用橡皮擦去一些地方。

 

谁是世界上最美丽的人?

  • 玻尔兹曼机器学习

王后想要看看自己的面部皮肤是否顺滑。

将图像的颜色数据输入到玻尔兹曼机中,计算机通过分析这些数据,就可以得到实际图像的特征,各像素点显示某种颜色的概率,以及相邻像素间的关系。这种过程叫做玻尔兹曼机器学习。

似然度

相似的程度。

在玻尔兹曼机器学习中有一个特殊的过程:将实际提供的数据输入到玻尔兹曼机之后,模型会输出伪数据(重构数据)。

不停地产生数据,也叫采样sampling

玻尔兹曼机器学习在进行时,采用马尔科夫蒙特卡罗方法,来逐一考虑相邻像素之间的关系,来完成双向型神经网络的信息流动。这是一种在整个网络结构中的循环,在这一过程中还要不断地采集大量的重构数据。很费时间。

替代算法是,单纯考虑由相邻像素传送过来的信息,平均场近似法

  • 深度玻尔兹曼机

利用深度玻尔兹曼机,学习图像中的各种特征。

而多层神经网络,告诉计算机特征量,还要告诉计算机这些人是否美丽。(有监督)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值