最近学习了深度学习相关课程的两个视频,算是对深度学习有了一定的理解,现在就写一下总结吧。

主要是挑着感觉有用的和能看得懂的来总结,内容可能有些乱hhh

人工智能、机器学习、深度学习

谈到深度学习,我们往往会想到其他各种名词:人工智能、机器学习等等。那么怎么更明确地区分一下呢,它们大概是一个包含关系,即:

人工智能是一个领域,一个目标。机器学习是实现人工智能这个目标的一类方法。而深度学习只是机器学习中很小的一个点。

[软件工程]——深度学习绪论及概述

图灵测试

谈到上述那些名词,就不得不提图灵测试了。图灵测试由艾伦·麦席森·图灵提出,指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。

进行多次测试后,如果机器让平均每个参与者做出超过30%的误判,那么这台机器就通过了测试,并被认为具有人类智能。这可以称得上是人工智能的开端了。

机器学习

机器学习就是:计算机利用经验提高自身性能,基于经验数据的函数估计问题,理解数据。总结一下就是从数据中自动提取有意义的模式。

学什么?

机器学习适合学习数据规模大、规则复杂而且有意义的模式。例如:预测婴儿性别等。

怎么学?

机器学习需要模型,策略和算法。

[软件工程]——深度学习绪论及概述

 

根据数据标记、数据分布、和建模对象可以分许多种模型。

数据标记可以分为监督学习模型、无监督学习模型,以及半监督学习模型和强化学习模型。

数据分布可以分为参数模型和非参数模型。

建模对象可以分为判别模型和生成模型。

深度学习

一般是在机器学习中,使用了深度神经网络的学习称之为深度学习。(Deep Learning)

深度学习比较通俗的做法可以被很简单地概括。

 

[软件工程]——深度学习绪论及概述

浅层神经网络

生物神经元 多输入单输出,空间整合和时间整合、兴奋输入/抑制输入,阈值特性。我们根据这些特点,可以构建出人工神经元(MP神经元)。

它们是神经网络的基本零部件。

激活函数

用于神经元继续传递信息、产生新连接的概率。

没有激活函数,层层之间相当于矩阵相乘,多层和一层一样,只能拟合线性函数。

常见的激活函数有:Sigmoid函数、tanh函数、ReLU修正线性单元、Leaky ReLU。

[软件工程]——深度学习绪论及概述

感知器

可以学习的人工神经网络

单层感知器可以实现逻辑与或非功能,但实现不了异或问题。于是出现了多层感知器。

万有逼近定理

神经网络学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投影到线性可分的空间去分类、回归。

一个隐层包含足够多的神经元,三层前馈神经网络(输入—隐层—输出),能以任意精度逼近任意预定的连续函数

隐层足够宽时,双隐层感知器(输入—隐层1—隐层2—输出),可以逼近任意非连续函数

增加节点数:增加维度,线性转换能力。

增加层数:层架激活函数的次数,增加非线性转换次数。 

深度和宽度对函数复杂度的贡献是不同的,深度贡献是指数级增长的,一般更倾向于“瘦高”的网络。

误差反向传播

多层神经网络可以看成是一个复合的非线性多元函数。

输入数据后进行前向传播,在最后一层有输出,最后的输出和期待的正确结果会有损失,或者误差。利用这个误差回传,更新神经网络。

误差的反向传播用到了梯度。

[软件工程]——深度学习绪论及概述

 

 

梯度、梯度下降和梯度消失

梯度:方向是最大方向导数的方向,模为方向导数的最大值。

参数沿负梯度方向更新可以使函数值下降。

增加深度会造成梯度消失,误差无法传播,多层网络容易陷入局部极值,难以训练。

[软件工程]——深度学习绪论及概述

 

 根据激活函数的选择,某些点的导数会很小,最终导致梯度的消失。

 

遇到的问题

感觉在视频学习中确实是学习到了不少内容,对深度学习之类的理论有了更清晰的了解。但是也遇到了不少问题。

首先是不少数学知识都忘了个差不多,在误差反向传播这部分内容里,听不太懂,也跟不上公式讲解的速度,然后理解的就不透彻。

然后是对梯度那个地方也有些问题。参数沿负梯度方向更新可以使函数值下降,会找到局部极值,乃至最小值。但是我不太明白这个最小值的意义是什么。

最后就是玻尔兹曼机这个地方吧,还是因为数学那块忘的有点多加上内容有点多,没咋听懂。