深度学习之基础知识整理

        现在大语言模型很火,但它的基础仍然是以神经网络为基础的深度学习,不懂神经网络,不了解深度学习,对于大语言模型的二次开发也是整不明白。

        那到底需要了解哪些知识?才能看懂深度学习/神经网络的基础模型,想要加入AI大潮,想要ALL In ,也是有很高门槛的。至少我自已还差不少知识点。花了点时间,看了一些资料,整理了一下:(注意:整理得很乱且不具备完整性,可能对读者帮助并不大,慎入)。

今年中考,高考的数学都加难度了,谁让AI这么火呢?要想学习人工智能,数学能力是基础。应该说人工智能是建立在线性代数和概率论的基础上的。

一、数学基础

1.1:线性代数

重要概念:集合,标量,向量(一维数据,如:语音),矩阵(二维数据,如:灰度图像),张量(多维数据,如:RGB图像,视频)。

可以这么理解,线性代数是用虚拟的数字来表达真实物理世界的工具。

一个物体的多维表达,我们可以理解为一个向量,向量中每个值代表它的属性值。

范数(norm)表达单个向量的特征(求绝对值,平方和,最大值)表达了向量的尺度。
内积计算是表达两个向量的关系,可以表达相对位置,夹角,内积为0,表达正交。正交表达线性无关,互不影响,相互独立。

正交基:向量空间中的一组特殊向量。这些向量之间有垂直的关系。即内积为零。

内积可以用来表示2个向量间的关系,也就是说 采用元素乘积和,可以表达两者的关系。

线性空间中,向量代表N维空间中的一个点;空间中任意点可以唯一使用一个向量来表示。

向量中的值是我们找到在该维度下的正交基单位向量。

二维向量空间中,直角坐标系就是一个很好用的标准正交基。所以,(2,3)就代表在X軕上的2,0分量与Y辆上的0,3分量的交叉点。X,Y轴是标准的正交基。

两个点是否正交,在二维,三维的空间比较好理解,在更高维,

任何维空间中的点的变化,就是向量的线性变换,而描述对象变化或向量变化的数学语言就是矩阵

Ax = y

向量x 和 矩阵A 相乘,代表 向量x 经过 矩阵A 代表的变换,变成了向量 y。当然,这里要注意,相乘是有前提的,x的维度必须与A矩阵的2维中的一维相同。否则无法相乘。

对于向量与矩阵相乘,我们可以理解一个 N维的向量 被变成了 M维,实际上向量是发生了变化。但变化的原因是矩阵A代表的变换规律(因为A代表的是一种变化规律)。

矩阵不变的是特征值,有点象我们关系数据库中的字段,而变化的是特征的值,也就是行记录。

 短阵相乘就是将坐标系进行变换的方法。让原始坐标系的矩阵与变换的坐标系相乘。

矩阵的特征值和特征向量描述了变化的速度与方向。

总结一句话:我们可以用数学表达物理世界,静态的和动态的,可以用数字来表达物体的特征,物体间的关系。而这些表达的方法,会用到线性代数的知识。

1.2:概率论

对于我们看到的模型,实际上记录的就是一些权重。而权重就是我们讲的概率了。所以,概率论显然是深度学习重点要学习的概念。

重要概念:全概率公式,将复杂事件的概率求解,转化为在不同情况下发生的简单事件的概率求和。

在事件结果已确定的情况下(P(A)),推断各种假设发生的可能性(P(Bi|A))。这个理论是贝叶斯提出的,所以称之为贝叶斯公式:

这个公式非常重要,非常有用,我们来举例 说明:

有一种病在人群中的患病率是1%,其检查结果的可靠程度是95%,也就是得病的人95%会得到阳性结果,没得病的人95%会得到阴性结果。如果一个人检查的结果是阳性,那他得病的概率是多少?

检查结果是阳性,但实际上呢有95%可能是验错的,所以他得病的概率是:

计算所有验出阳性的人是:0.01 * 0.95 + 0.99 * 0.05  ,其中有病的人是:0.01 * 0.95

计算:0.01*0.95 / ( 0.01 * 0.95 + 0.99 * 0.05) = 0.16  也就是 16%

我在计算时,并未考虑贝叶斯公式。回过头来套用这个公式,可以发现:
P(A|Bi) * P(Bi),Bi 就是得病,A就是测出阳性。那就是  0.01 * 0.95

而分母中,计算的是 有病和无病的加总,无病但阳性的情况就是:0.99 * 0.05 ,

这样,刚好可以套到上面的公式,但说实话,并不好理解。不过,如果问题不止生病和不生病2种情况,那就需要用上面的公式了。

换成贝叶斯定理:

P(H):预先设定的假设成立的概率。这个叫先验概率。上例中:人群中得此病的概率  0.01

P(D|H):假设H成立的情况下,观察到的D的概率。这个叫似然概率。上例中:有病并且测试结果是阳性的概率 0.95

P(H|D):观测到结果D的前提下,假设成立H的概率。这个叫后验概率。上例中:观察到是阳性的前提下,是确切得病的概率。

有点绕脑,上面这个例子有助于理解。

贝叶斯定理可以用于在观测到结果的情况下,推断后验概率。这很有用,因为我们可以观测到一些结果,但因为结果产生是有前提的,所以,我们需要推测我们猜想的概率。就像上例中,我们可以有阳性检测的手段,但是,我们并不能100%确定它的准确性,那么,我们在已知推测总群体的概率前提下,我们可以推测出可能发生的概率。

对于频率学派,认定假设是客观存在的,不会改变的。只是我们观察者不知道。因此,在计算具体事件的概率时,要确定概率分布的参数,然后推算。

而贝叶斯学派则认为固定的先验分布并不存在,参数可能本身就是随机数,它会根据观察的结果,不断的去修正。这就和机器学习的训练方法是一致的,也就是我们需要通过数据,不断的去修正主观认识让它更加接近客观实际

机器学习的核心理论之一就是概率论,通过数据训练不断调整参数和修正假设。但因为数据还是有限的,所以必须要对概率进行预估。

概率的估计有两种方法:最大似然估计法(maximum likelihood estimation)和最大后验概率法(maximum a posteriori estimation),两者分别体现出频率学派和贝叶斯学派对概率的理解方式。

最大似然估计就是尽量让训练数据获得最大的概率。
最大后验概率是是符合目前深度学习的思路,会根据结果去调整之前的假定,会认为假定是不正确,需要不断通过训练数据去修正。

概率质量函数:针对离散随机变量,比如:投骰子的每种结果可能出现的概率。如:两点,二项,泊松分布。

概密密度函数:针对连续的变量。如:正态,均匀,指数分布。

除了概率质量函数 / 概率密度函数之外,另一类描述随机变量的参数是其数字特征。数字特征是用于刻画随机变量某些特性的常数,包括数学期望(expected value)、方差(variance)和协方差(covariance)。

方差表达与预期值的差距,数字期望是均值,协方差是表示线型关系。

总结一句话:概率是一切决策的基础。是推理的参数,我们可以通过概率来表达对事物的分类,预测。

1.3:数理统计

在常识的理解中,数理统计和概率是相关的。但又有本质的不同。概率是根据已知的分布来分析参数的规律。而数理统计是完全未知的分布,通过观察的结果来对原始分布做出判断。两者有点可逆的关系。

用买彩票举例,根据中奖号码的概率,可以推测中奖可能性,这是概率论。通过历史中奖和不中奖的数据进行统计本期中奖的号码,这是数理统计。

数理统计就是根据样本推测总体数据的特征,在选择样本时,需要判定是相互独立的,可以体现总体特征的。

在统计时,用到样本的重要公式。一个是样本均值 ,一个是样本方差。

统计推断有2种方法:

1:参数估计:通过随机抽取的样本来估算总体的分布。估计的是参数。

        点估计:

                矩估计:有样本k矩阵估计总体矩阵

                最大似然估计:

        对估计值如何评价?无偏性,有效性,一致性。

        区间估计:这就是置信区间,给出一个范围。置信包含真值和假值,对真值的置信统计就是置信水平。

2:假设检验:是关于总体的假设。这个和监督学习相关。用于推断学习器的性能。

在机器学习中,泛化性能是非常重要的,泛化误差分为偏差,方差,嗓声。

偏差:对于模型的欠拟合。

方差:表示过拟合。也就是数据有大的变化时,预测性能的影响。

嗓声:表示当前学习任务,能达到的最小泛化误差。

对于任何模型,偏差和方差都是不可调和的。

总结:在人工智能研究中,需要对算法和处理做合理的解释,数理统计可以根据实验数据来研究结果,并给出合理的解释和判断。

1.4:最优化方法

人工智能要解决的就是一个优化的问题,找出最优决策。在深度学习中,用来逼近结果的梯度下降法,理论依据就是这个了。

要找到最优解,我们会需要目标函数(评价函数),一般是需要找到目标函数的全局最小值,但要做全局很难,一般会是局部最小值。

根据约束条件不同,又将最优化问题分为无约束优化和约束优化。

对于约束优化的求解,采用拉格朗日公式。后面的式子是约束,前面是优化函数。

对于无约束优化,就是采用梯度下降法。就是沿着目标函数下降最快的方向寻找最小值,这就是要求导了。下降过程中,步长的选择是从大到小,类似粗调到精调。

梯度下降的方法有两种,一种是批处理,一种是随机下降。我们一般采用后者,效果更好。

一般我们采用一阶求导,但如果采用二阶求导,可以有更好的性能,这时的典型方法是牛顿法,它的收敛速度很快。确定方向,确定步长,也叫做 线性搜索法。

另外还有一种方法:先确定步长,划定一个区域,然后再寻找快速下降的办法,叫:置信域方法。

还有一种叫启发式算法:启发式算法的核心思想就是大自然中 " 优胜劣汰 " 的生存法则,并在算法的实现中添加了选择和突变等经验因素。启发式算法的实例包括模拟生物进化规律的遗传算法(genetic algorithm)、模拟统计物理中固体结晶过程的模拟退火算法(simulated annealing)、模拟低等动物产生集群智能的蚁群算法(ant colony optimization)等等。

好了,神经网络其实就是一种启发式算法。它需要优化方法来达成某个目标,而优化的过程就是在不断调整参数。而调整的参数实际上就是最终的模型。在深度学习中,我们使用前馈网络来正向生成预测结果,根据损失函数计算误差,采用优化算法,通过反向传播找到最小误差,修改网络的参数。

二、机器学习

深度学习属于机器学习的一种(采用了神经网络),所以,还得得全面学习一下机器学习。

2.1:概论

机器学习是计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的学科。

机器学习的主要分为:分类问题,回归问题,标注问题。

分类问题——主要针对离散数据,进行分类。如:图像识别,

回归问题——输入的数据和输出的数据都是连续的。往往会找出一个公式来进行结果的预测。如:根据房屋的特征预测房屋的价格。

标注问题——是分类任务中的特殊形式,为序列中的每个元素分配标签。比如:对一个语句中的词标注它的词性。主要应用于NLP领域。

我们在训练/学习时,有几个重要概念:

过拟合——训练误差低但是测试误差高,主要原因是学习时模型包含的参数过多,从而导致训练误差低但测试误差高。

欠拟合——学习能力弱,训练太少。欠拟合可以通过改进学习器的算法来改善。

过拟合出现基本是无法避免的(如果数据非常多,很自然会出现过拟合),只能尽量减少影响。

测试误差与模型复杂度之间是一个抛物线的关系。当模型复杂度较低时,测试误差高;随着模型复杂度增加,测试误差将逐渐下降并达到最小值;之后当模型继续上升时,测试误差会随之增加,对应着过拟合发生。

机器学习的任务分为三类:

监督学习:基于已知类别的训练数据进行学习;

无监督学习:基于未知类别的训练数据进行学习。

半监督学习:同时使用已知,未知类别的训练数据进行学习。

监督学习的效果最好,可以分成生成方法和判别方法两类。

两相对比,生成方法具有更快的收敛速度和更广的应用范围,判别方法则具有更高的准确率和更简单的使用方式。

2.2:线性回归

线性回归和数学的关系很大,应用了很多的数学工具。

线性回归假设输出变量是若干输入变量的线性组合,并根据这一关系求解线性组合中的最优系数。

回归的来源是达尔文表弟的人类身高的研究:发现人类的身高有回归的效应。

这里的线性回归是一个N维空间的回归。

在预测输出值和真实值的误差时,我们使用均方差,也就是欧几里得距离。为了使得均方误差最小,我们采用的求解模型是最小二乘法。

最小二乘法可用于解决单变量线性回归问题,当误差函数服从正态分布时,它与最大似然估计等价;

如何解决过拟合的问题?

要解决过拟合问题,常见的做法是正则化,即添加额外的惩罚项。在线性回归中,正则化的方式根据其使用惩罚项的不同可以分为两种,分别是“岭回归”和“LASSO 回归”。

不管岭回归还是 LASSO 回归,其作用都是通过惩罚项的引入抑制过拟合现象,以训练误差的上升为代价,换取测试误差的下降。

2.3:朴素贝叶斯方法

首先,记住这是解决分类问题的方法,面向的是离散数据。

基本思想在于分析待分类样本出现在每个输出类别中的后验概率,并以取得最大后验概率的类别作为分类的输出。

要理解朴素贝叶斯,必须要理解几个概率:

P(Y|X):后验概率  —— 表示在给定数据X的情况下,事件Y发生的概率。

注意:Y 是 有病的概率,X就是检测试纸的结果。我们认定X是可以检测的,而Y是我们想得到的结论。

P(Y):先验概率 —— 这是指的我们预先在没有任何数据的前提下,假设的概率。这叫先验概率。就是我们认定可能得病的概率是多少。

P(X}Y):似然概率 —— 这是指假定Y成立的时候,数据X被观察到的概率。似然指的是参数对数据的解释能力。反映某个参数在多大程度上能够解释观测到的数据。

我们假设条件是向量X(可能有多个属性),分类是Y。

如果要计算 P(X,Y)联合概率分布,P(Y)是很好计算的,但是 P(X|Y),要考虑的X的组合就会非常的多。为了减少这个组合,我们需要做如下假设:

朴素贝叶斯方法假定所有属性相互独立,基于这一假设将类条件概率转化为属性条件概率的乘积;

这样简化之后,公式就非常简单了,这就是贝叶斯的朴素之处。可以高效的利用样本数据。

当然,属性的独立性假设其实是很强的假设,大多数情况下是不成立的。

还有就是独立后,数据过度简化。

2.4:逻辑回归

线性回归是用来处理预测的问题,因为它是根据线性来预测规律。而朴素贝叶斯是用先验/后验概率来解决分类预测的问题,它是一种生成模型。生成X,Y的概率分布,完成分类。那还有一种用来分类的办法,是判别模型,就是逻辑回归了。注意,虽然说的是回归,但实际上是要解决分类的问题噢。它来源于线性回归,但因为引入了音调可微函数,

比如:使用对数几率函数,就可以把线性值变成0,1之间的值 ,就变成了一个二分类的问题。
这个函数叫Sigmoid,其实在深度学习中经常使用,因为它可以将所有数变成(0,1)之间。

2.5:决策树

又是一种分类器,但和贝叶斯和逻辑回归都不一样。它是通过构造一棵树来层层推理实现最终的分类。

决策树是一个包含根节点、内部节点和叶节点的树结构,其根节点包含样本全集,内部节点对应特征属性测试,叶节点则代表决策结果。

决策树模型的学习过程包括三个步骤:特征选择、决策树生成和决策树剪枝。同其他机器学习算法一样,决策树也难以克服过拟合的问题,“剪枝”是决策树对抗过拟合的主要手段。决策树的剪枝策略可以分为预剪枝和后剪枝。

2.6:支持向量机

支持向量机是一种二分类的算法。

支持向量机最神奇的是,它可以通过升维的方式,将低维无法分隔的数据,通过升维,添加核计算,达成可分的情况。比如:在二维平面不同圆环内的分类点。添加一个维度,Z = x平方 + y平方。就可以很轻松的在三维空间给出一个平面来进行分隔了。

有4种核 函数。

1:线性核——这个一般在原维度就可以解决。可以计算出线性公式中的b和w值。

2:多项式核——这个一般是有曲线的分隔,适合于有多项式特征的数据,比如上面的同心圆内的分界,可以通过升维,添加Z来完成分隔。

3:RBF核——这个适合于大多数非线性数据。

线性可分支持向量机通过硬间隔最大化求出划分超平面,解决线性分类问题;

在做分类时,我们旨在最大化数据点与分离超平面间的距离。这样划分的分类,泛化性最好。

如果无法完全线性,我们允许少量数据点不被 正常分开,加上一些约束和惩罚,这就是软间隔。

非线性的还可以通过升维的方式,在高维空间通过核函数,达成分隔的目标。

2.7:集成学习

通过多个个体学习器来获得比单个学习器更好的预测性能。

集成学习的核心是在多样性和准确性间做出折中。

学习器间可以并行(Bagging方法),也可以串行(Boosting方法),看它们之间的依赖性。

2.8:聚类分析

聚类分析是无监督学习,常识理解它应该是有监督的,这里指的是,我们在应用时,并没有很明确的类别标签。比如:购物人群,我们按购物行为进行分类,帮助营销人员识别不同类型的客户。你可以理解,预先并没有明确的分类,我们是在数据中找到分类,这就是无监督学习。

聚类的本质还是找向量间的距离,距离近的就在一起,同类了。

聚类的算法非常的多,

1:一种是层次聚类,像一棵树,类别不断的细分。这个很常用。一般用树状图来表达。一般采用自顶向下的的方式,或者自底向上的方式。计算方法有三种,单链接(最小距),全链接(最大距),均链接(平均距)。

2:一种是基于质心的聚类,又叫原型聚类。

3:还有是分布聚类,基于概率模型的聚类。

4:还有密度聚类,基于样本的分布密度。

终于到正题了,我们可以看看和深度学习直接相关的神经网络了。

三、神经网络

3.1:生理学背景

连接主义学派认为神经网络是建立在生理学和认识科学的基础上的,真的是这样的吗?

认为智能活动是基于大量简单的单元通过复杂方式相互连接后并行运行的结果。

人类智能的本质,主要来源于认识,连接学派认为认知单元是基础,而认知单元是由“知觉物体”构成的。而知觉物体就是类似人脑一样的神经网络。

从信息科学的角度看,大脑的处理可以看作多次特片提取。但是人的情绪是如何影响神经系统的,这些具体的机理我们还不明白。

人的智能基于有机特的碳基。而人工智能是基于硅基。所有,两者还是有些本质的区别。

计算机的基础是冯式架构,基于运算单元和存储单元的分离,两者由数据总线连接。两者无法同步进行,这限制了计算机的整体表现。数据的传输目前是性能的瓶颈。

3.2:神经元与感知器

神经元接受一个或多个输入,并对输入进行处理产生输出。输入可能是多维向量,而每维向量会有一个权重。我们假定0维的值 是1 ,那就会存在一个偏置畋入b。其中转换的函数就是传递函数。

什么是感知器?是会学习的神经元
学习的过程:
1:初始化权重w,权重可以初始化为0,或者较小的随机数。
2:将某个样本,输入初始化好的感知器,得到预测的输出y值。
3:将y值和真实的d值 ,按以下的规则更新权重向量,也就是开始学习。

这是最简单的学习的描述了,真实的权重调整,肯定不会是向上面公式这么简单,但这个公式能让人明白学习的实质

这种简单的感知器,实际上只能解决线性分类的问题。我们用异或问题(非线性问题)就可以难道这种简单的感知机。

3.3:多层感知器

我们用多层感知器来解决上节提到的异或问题

多层感知器加上隐藏层,每层神经元与前一层都是全连接,且都是相同方向,属于前馈神经网络。 

在计算误差时,如果有多个输出,为了保证多个输出不会正负抵销,必须要修改误差函数。将误差函数都写在平方项求和,去除对符号的影响。

传递函数最简单是使用符号函数,但它是不连续的函数,不能在不连续点上求解微分(不能求导无法进行梯度计算),所以,我们要换成对数几率函数来作为传递函数。

因为感知器是多层的,必须要考虚链式法,计算链条的整体效果。

那我们如何设计多层感知器呢?

训练样本数是权重系数的10倍。

数学上可证明,单个隐藏层能够实现凸区域,双陷藏层更是可以实现任意形态的凸领域,也能够解决任何复杂分类的问题。

 训练中迭代次数很重要,一旦误差函数停止减少,就终止学习

 训练中,如果训练集误差下降,验证集误差上升,需要让学习停止,因为已经过拟合了。

3.4:径向基函数神经网络

简称为RBF,和MLP的区别是,它只有一个隐藏层,一般使用高斯函数来做为转换函数,一般处理比较简单的任务,核 心是使用高斯函数将非线性升维为线性(类似SVM),因为是找分割面,所以会确定中心和宽度。学习的方法也不同,使用线性回归。MPL是使用反向传播进行学习。

3.5:自组织特征映射

和MLP和RBF不同,自组织特征映射是无监督学习

它将高维数据映射到低维(一般是二维数据),并且保持原有数据的拓朴结构。也就是高维的位置信息会保留 。

它类似编码/解码,这个和Transformer有相似之处了,需要仔细去理解。

好吧,我们正式开始学习深度学习。

四、深度学习

4.1:概述

        深度学习和神经网络是什么关系?

  深度学习是利用包含多个隐藏层的人工神经网络实现的学习。

        深度学习除了理论,更依赖于数据,依赖于工程问题的解决。得益于算力的飙升和互联网提供的大量数据。

深度学习是炼金术”的争议更是让不少大咖针锋相对,嘴仗打个不停。研究者批判深度学习的一个焦点在于其缺乏坚实的理论基础。在机器学习和浅层神经网络中,绝大部分最优解的最优性都是可以证明的。但在深度学习中,很多结果都是经验性而非理论性的,隐隐透出一丝看天吃饭的无力感。

4.2:深度前馈网络

        进化版的多层感知器,因为多层,具备更强的特征提取能力。

        在隐藏层,最常见的是全连接,也有一些采用了稀疏的连接方式。这具体要看应用场景。

任何机器学习算法都可以看成是对某个预设函数的最优化方法,深度前馈网络也不例外。与其他神经网络一样,深度前馈网络也利用梯度信息进行学习,在处理误差时采用的是反向传播方法,利用反向传播求出梯度后再使用随机梯度下降法寻找损失函数的最小值。但深度网络的非线性特性常常会影响到学习算法的收敛性能,这也是使用非线性函数的神经网络的一个固有特性。

损失函数的选择:回归问题的损失函数通常是最小均方误差,而分类问题的损失函数通常是交叉熵(Cross-Entropy)。

传递函数最常见的是:对数几率函数(sigmoid 二分类),Softmax函数(多分类),Relu(修正线性),Tanh(双曲正切)。

4.3:正则化

   正则化的用途是抑制过拟合,减少泛化误差,但代价是以训练误差的上升。

        正则化本来的含义是在一个不适定的问题中,通过添加额外的处理或约束使用问题更适定。
比如:我们希望参数不要过大或者过小,通过L1或L2的施加约束。这样可以将一些趋近0的权重变成0。达成稀疏的效果。

        基于训练数据(data)的正则化:可以通过运算产生新的训练数据,也就数据增强,可以施加一些预期的分布。Dropout是随机丢弃一些神经元,然后最后组合起来,这样可以使得模型的泛化效果更好。

        基于网络架构(network architecture)的正则化:简化关于映射的假设。

        基于误差函数(error function)的正则化:对误差函数进行正则化就相当于添加额外的学习任务,从而导致其目标发生变化,这部分变化就会体现在误差函数中额外的正则化项上。

        基于正则化项(the regularization term)的正则化:在权重衰减中,正则化项是以范数的形式表示的,常用的范数包括 L2 范数和 L1 范数。回忆一下,当这两种范数作为正则化项被应用在线性回归中时,分别对应着岭回归和 LASSO 回归。

        基于最优化过程(optimization)的正则化:对初始化(initialization)的正则化,对参数更新(weight update)的正则化,对终止条件(termination)的正则化。

4.4:优化

        什么是优化?优化就是指的通过调整参数来最小化损失函数,使模型在给定的数据(任务)上达到最佳。

        优化面临非凸优化问题,病态矩阵问题,局部极小值的问题。鞍点问题。

        因为有这么多问题,我们也无法有针对性的优化,只能使用经典算法——随机梯度下降法。

        对于损失函数,就是用来预估预测值和实际值之间的差异,最常见的就是均方差了(预测任务),交叉熵(分类任务),对抗性损失(生成模型),序列到序列损失(序列标签预测)。而优化函数则是上面说到的如何通过调整权重,尽量减少损失函数中产生的误差。最常见的就是简单梯度下降法(收敛速度较慢),改进梯度下降,综合型优化算法。

        优化方法有很多种,但每种可能会应用在不同的场景:

        对于梯度波动较大的情况,可采用动量方法。

        自适应方法是最常用的优化算法

        小规模高精度场景使用二阶求导

        大规模分布式环境,可以使用降嗓的方法

        需要快速收敛的场景,可以使用加速下降法。

        对于自然稀疏线性模型,可使用坐标一降法。

4.5:自编码器

        自编码器是一类执行无监督学习的神经网络结构。它的目的是学习一组数据的重新表达,也就是编码。用于数据压缩(图像压缩)和特征提取。

        编码:压缩,降维处理。
        解码:转换为原始值或近似原始值。

        自编码器可以由浅层开始,逐层迭加生成。也就是浅层可以级联生成深层的模型。

        稀疏自编码器利用稀疏的高维表达提取出训练集中隐含的统计规律;

       有一种变分自编码器,可以做为生成模型。比如:通过人脸的表情图片,生成潜在的可能的表情我人脸图。 

4.6:强化学习

强化学习是力图使计算机在没有明确指导的情况下实现自主学习,完成从数据到决策的转变。

强化学习是基于环境反馈实现决策制定的通用框架,根据不断试错得到来自环境的奖励或者惩罚,从而实现对趋利决策信念的不断增强。它强调在与环境的交互过程中实现学习,产生能获得最大利益的习惯性行为。

深度强化学习(deep reinforcement learning)是深度学习和强化学习的结合,它将深度学习的感知能力和强化学习的决策能力熔于一炉,用深度学习的运行机制达到强化学习的优化目标,从而向通用人工智能迈进。

根据实施方法的不同,有三类:

1:基于价值

建立一个价值函数。Q 函数,以状态空间 S 和动作空间 A 为自变量,其目的是确定智能体的行动策略。

2:基于策略

基于策略(strategy-based)的深度强化学习的基本思路就是直接搜索能够使未来奖励最大化的最优策略。

行动者是策略网络,用于对策略进行更新;评论家则是价值函数网络,通过逼近状态 - 动作对的价值函数来判定哪些是有价值的策略。这种机制就和人类的行为方式非常接近了,也就是用价值观来指导行为,而行为经验又会对价值观产生反作用。

3:基于模型

基于模型(model-based)的深度强化学习的基本思路是构造关于环境的模型,再用这个模型来指导决策。

五:深度学习框架下的神经网络

5.1:深度信念网络

**深度信念网络(DBN)**是一种生成模型,由多个堆叠的受限玻尔兹曼机(Restricted Boltzmann Machines, RBMs)或自动编码器(Autoencoders)构成。它是一种无监督学习模型,主要用于特征提取、降维和数据生成。DBN可以在预训练阶段进行无监督学习,然后在微调阶段通过监督学习进行调整。

从结构上看,复杂的深度信念网络可以看成由若干简单的学习单元构成的整体,而构成它的基本单元就是受限玻尔兹曼机。受限玻尔兹曼机的模型非常简单,就是一个两层的神经网络,包括一个可见层和一个隐藏层。可见层用来接收数据,隐藏层则用来处理数据。可见层和隐藏层以全连接的方式相连,也就是任意两个不同层次中的神经元都会两两相连。但同一层中的神经元则不会互相连接,因而每个层内也就没有信息流动,这正是其名称中“受限”的来源。

虽然目前深度信念网络的应用远不如卷积神经网络等其他模型广泛,但它却是一次吃螃蟹的成功尝试。如果没有这次尝试,也许我们依然在单个隐藏层的神经网络中兜兜转转,坐井观天。

5.2:卷积神经网络

注意:人脸识别就是使用的卷积神经网络技术。

卷积神经网络(convolutional neural network)指的是至少在某一层中用卷积运算(convolution)来代替矩阵乘法的神经网络。

在卷积网络中,两个参与运算的函数分别叫做输入和核函数(kernel function)。本质上讲,卷积就是以核函数作为权重系数,对输入进行加权求和的过程。

卷积就可以看成是做菜,输入函数是原料,核函数则是菜谱。对于同一个输入函数鲤鱼来说,如果核函数中酱油的权重较大,输出的就是红烧鱼;如果核函数中糖和醋的权重较大,输出的就是杭帮菜的西湖醋鱼;如果核函数中辣椒的权重较大,输出的就是朝鲜族风味的辣鱼。不同的菜谱对应不同的口味,不同的核函数也对应不同的输出。

输入层将待处理的图像转化为一个或者多个像素矩阵,卷积层利用一个或多个卷积核从像素矩阵中提取特征,得到的特征映射经过非线性函数处理后被送入池化层,由池化层执行降维操作。卷积层和池化层的交替使用可以使卷积神经网络提取出不同层次上的图像特征。最后得到的特征作为全连接层的输入,由全连接层的分类器输出分类结果。

在卷积神经网络的训练里,待训练的参数是卷积核,也就是卷积层中的权重系数矩阵。训练采用的也是反向传播的方法,参数的不断更新能够提升图像特征提取的精度。

5.3:循环神经网络

        RNN这个缩写有两层含义,它既可以表示循环神经网络(Recurrent Neural Network),也可以表示递归神经网络(Recursive Neural Network)。巧的是,这两个 RNN 之间的关系还很密切:循环神经网络可以看成是递归神经网络的特例,递归神经网络则可以视为循环神经网络的推广

        循环神经网络对时域的关联性的利用体现在时刻 t 的输出既取决于当前时刻的输入,也取决于网络在前一时刻 t−1 甚至于更早的输出。从这个意义上讲,循环神经网络引入了反馈机制,因而具有记忆的功能。正是记忆功能使循环神经网络能够提取来自序列自身的信息,这是传统的前馈神经网络所无法做到的。

前馈网络适用于表示客观性的知识,循环网络则适用于表示主观性的知识

5.4:生成式对抗网络

        这是一类在无监督学习中使用的人工智能算法,由两个在零和游戏框架下相互竞争的神经网络实现。生成式对抗网络里的两个玩家一个叫生成器(generator),一个叫判别器(discriminator),均可以采用深度神经网络实现,这两者之间的对抗就是网络训练的主旋律。

        生成式对抗网络好就好在摆脱了对模型分布的依赖,也不限制生成的维度,因而大大拓宽了生成数据样本的范围。其次,生成式对抗网络能够整合不同的损失函数,增加了设计的自由度。

        生成器的目的是精确模拟真实数据的分布,判别器的目的是精确区分真实数据和生成数据。

        生成式对抗网络的主要优点是超越了传统神经网络分类和特征提取的功能,能够按照真实数据的特点生成新的数据;​​​​​​​        ​​​​​​​

        

5.5:长短期记忆网络

        长短期记忆网络可以实现任意长度的记忆,对信息进行长期而精确的跟踪;

        长短期记忆单元的组成包括记忆模块、输入门、遗忘门和输出门;

        长短期记忆网络根据当前的输入、当前的记忆和前一时刻的输出确定当前的输出;

        长短期记忆网络能够解决梯度弥散的问题。

5.6:非深度学习的人工智能

* 概率图模型

概率图模型(probabilistic graphical model)也叫结构化概率模型,是用图论表现随机变量之间的条件依赖关系的建模方法。典型的概率图模型包括贝叶斯网络和马尔可夫随机场,分别对应着有向图模型和无向图模型。

* 集群智能

        集群智能的核心是由众多简单个体组成的群体能够通过相互之间的简单合作来实现某些功能,完成某些任务。

* 迁移学习

        迁移学习(transfer learning)是运用已学习的知识来求解不同但相关领域问题的新的机器学习方法,目的是让机器“学会学习”。

        在迁移学习中,已有的知识(包括样本数据集及其分布)叫做源域,要学习的新知识叫做目标域。同样,待解决的任务也可以分为源任务和目标任务。根据源域 / 目标域和源任务 / 目标任务的关系,迁移学习问题可以划分为以下三类:

归纳迁移学习(inductive transfer learning):源域与目标域可能相同也可能不同,目标任务与源任务不同;

直推式迁移学习(transductive transfer learning):源域与目标域不同,目标任务与源任务相同;

无监督迁移学习(unsupervised transfer learning):目标任务与源任务不同,且源域数据和目标域数据都没有标签。

如何迁移。迁移学习的具体方法包括以下四种:

基于样本的迁移学习(instance transfer);

基于特征的迁移学习(feature representation transfer);

基于模型的迁移学习(parameter transfer);

基于关系的迁移学习(relational knowledge transfer)。

* 知识图谙

人工智能的一个重要研究方向就是开发具有更好的可解释性,更容易被人理解的人工智能模型。

知识图谱(knowledge graph)是由大量的概念实体以及它们之间的关系共同构成的语义网络

人类的认知过程正是不断用概念、属性和关系去理解世界和解释世界的过程,而这些理解共同构成了人脑中高度组织化和结构化的知识图谱.

知识图谱可以根据已有实体的概念、属性和关系为新的概念自动生成属性;也可以明确不同新实体之间的关系。

归纳推理能够从旧知识中获取新知识,是知识的增殖过程。

六、应用实例

6.1:机器视觉

        传统的计算机视觉方法通常包括图像预处理、特征提取、特征筛选、图像识别等几个步骤。

        问题就出在待提取的特征要由人工手动设计,而不能让计算机自主学习        

在图像识别中,应用最广的深度模型非卷积神经网络莫属

除了残差网络之外,另一个新结构是由美国康奈尔大学和 Facebook 人工智能研究院合作提出的密集连接卷积网络。

        在传统的计算机视觉方法中,特征设计和分类器训练是割裂的;

        以卷积神经网络为代表的深度结构可以实现通用的物体识别算法;

        深度残差网络将输出和输入之间的残差作为拟合对象,解决了深度神经网络训练难的问题;

        密集连接网络采用全连接方式,实现了特征的高度重用,降低了参数数量和训练难度

6.2:语音处理

        Siri 的语音处理包括语音识别和语音合成两部分。语音识别(speech recognition)的作用是听懂用户的话,语音合成(speech synthesis)的作用则是生成 Siri 自己的回答。

        业界主流的语音合成方法有两种:单元选择和参数合成

        Siri 的语音合成系统包括文本分析、音韵生成、单元选择、波形串联四个模块,前两个环节对应前端的文本处理,后两个环节则对应后端的信号处理。

        Siri 使用的技术是深度混合密度网络(Mixture Density Network),这是传统的深度神经网络和高斯混合模型(Gaussian Mixture Model)的组合

        Siri 在声学模型的训练中用到了迁移学习技术,通过跨带宽和跨语言的初始化来提升神经网络的声学模型。

6.3:对话系统

人工智能的一个基本挑战就是赋予机器使用自然语言与人交流的能力。

1966 年的 Eliza,第一代对话系统:基本技术问题总结为以下五个:重要词语的识别,最小语境范围的判定,恰当的转化选择,适当回复的生成和结束对话的能力。早期的对话系统通过模式匹配和智能短语搜索对人类的合适回复。

Siri、Cortana 和 Google Now 为代表的语音助手就代表了对话系统的 2.0 版,也就是智能个人助理。它们的作用是提供各种被动性和主动性的帮助,以辅助用户在多个垂直领域完成任务。智能个人助理可以帮助用户在多个垂直领域完成任务;

对话系统 3.0 版的社交聊天机器人,基于神经网络的端到端对话系统不需要人为介入,而是从对话本身中进行学习。端到端对话系统采用的模型是记忆网络。神经网络能够帮助社交聊天机器人实现通用化的学习。

6.4:机器翻译

1949 年,洛克菲勒基金会的科学家沃伦·韦弗提出了利用计算机实现不同语言的自动翻译的想法,并且得到了学术界和产业界的广泛支持。以逐字对应的方法实现机器翻译

韦弗推崇的基于字 / 词的字典匹配方法被推翻,基于规则的句法分析方法粉墨登场。这里的“规则”指的是句法结构与语序特点。

眼下,基于深度学习和海量数据的统计机器翻译已是业界主流,谷歌正是这个领域的领头羊与先行者。

“零知识翻译”的概念。这一系统在前文系统的基础上更进一步,只用一套模型便可以实现 103 种不同语言的互译,这无疑意味着系统通用性的极大提升:一个神经网络以任何语言作为输入并转换成任何输出语言,而不需要任意输入 - 输出语言之间的两两配对。换言之,谷歌实现了一把解锁不同语言的万能钥匙,这一通用的解决方案对机器翻译而言无疑具有里程碑式的意义。

说实话,上面的知识看起来有点老旧,因为这几年深度学习加入注意力机制,加入Transformer,有了很大的发展。不过原有的一些基础概念还是成立的。还是应该仔细回顾一下。

但是,人工智能最重要的还是需要实际操作,参与项目。

相关推荐

  1. 深度学习基础知识

    2024-07-20 23:18:05       35 阅读
  2. 深度学习基础知识通道数channels

    2024-07-20 23:18:05       38 阅读
  3. PHP基础知识整理

    2024-07-20 23:18:05       36 阅读
  4. XSS基础知识整理

    2024-07-20 23:18:05       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 23:18:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 23:18:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 23:18:05       45 阅读
  4. Python语言-面向对象

    2024-07-20 23:18:05       55 阅读

热门阅读

  1. 【Flutter】 webview_flutter避坑

    2024-07-20 23:18:05       18 阅读
  2. C++的模板(十二):forward模板

    2024-07-20 23:18:05       16 阅读
  3. Kotlin协程最佳实践

    2024-07-20 23:18:05       11 阅读
  4. SQL Server的魔法工坊:打造数据库的自定义函数

    2024-07-20 23:18:05       20 阅读
  5. Qt判定鼠标是否在该多边形的线条上

    2024-07-20 23:18:05       15 阅读
  6. 什么是虹膜识别技术

    2024-07-20 23:18:05       15 阅读
  7. C++/Qt 信号与槽

    2024-07-20 23:18:05       18 阅读
  8. CentOS Mysql8 数据库安装

    2024-07-20 23:18:05       17 阅读
  9. ubuntu22.04下YOLOv5 TensorRT模型部署

    2024-07-20 23:18:05       15 阅读