神经网络与深度学习 课程复习总结
神经网络的发展历史
第一代神经网络(1958~1969)
- MCP模型(1943年):麦卡洛克和皮茨提出了第一个人工神经元模型,简化为输入信号线性加权、求和、非线性激活(阈值法)。
- 感知器(1958年):罗森布拉特发明了感知器,这是第一种用于模式识别的人工神经网络。
- 异或问题(1969年):马文·明斯基指出感知器无法解决非线性可分问题,如异或问题,这导致了神经网络研究的第一次低潮。
第二代神经网络(1986~1998)
- BP算法(1986年):Hinton发明了反向传播算法(Backpropagation),适用于多层感知器(MLP),有效解决了非线性分类和学习问题。
- 万能逼近定理(1989年):Robert Hecht-Nielsen证明了MLP可以以任意精度逼近任何连续函数。
- 卷积神经网络(1989年):LeCun发明了LeNet,用于数字识别,取得了较好的成绩,但未引起足够关注。
- 硬件限制:由于计算机硬件水平有限,神经网络规模增大时会出现“梯度消失”问题,限制了BP算法的发展。
- 浅层机器学习的兴起:90年代中期,以支持向量机(SVM)为代表的浅层机器学习算法取得了很好的效果,人工神经网络的发展再次进入瓶颈期。
第三代神经网络(2006年至今)
- 深度学习的突破(2006年):机器学习领域取得突破性进展,深度学习算法被提出,用于处理抽象概念。
- 深度信念网络:Hinton提出了一种快速学习算法,用于深度信念网络。
- 降维方法:Hinton等人提出了用神经网络进行数据降维的方法。
- 标志性成果:
- AlphaGo(2016年):DeepMind的AlphaGo击败围棋九段李世石。
- AlphaGo Zero(2017年):不需要任何数据,自学围棋规则,短时间内击败AlphaGo。
- AlphaFold(2020年):DeepMind的AI系统成功预测蛋白质三维结构,达到与实验技术相当的准确性。
- ChatGPT(2022年):OpenAI发布的大型语言模型,能够生成自然语言处理任务的回答。
神经网络的发展经历了从简单的线性模型到复杂的多层网络的演变,不断克服技术和硬件限制,实现了从理论研究到实际应用的飞跃。
机器学习三要素总结
1. 模型(Model)
模型是用来表示数据规律的数学结构或算法。选择合适的模型是机器学习的第一步。
- 线性模型:如线性回归,其中模型的输出是输入特征的线性组合。
- 广义线性模型:如果特征函数是可学习的非线性基函数,模型可以扩展为神经网络。
2. 学习准则(Learning Criterion)
学习准则是评估模型好坏的标准,通常通过损失函数来定义。
- 损失函数:如平方损失函数和0-1损失函数。损失函数衡量预测结果与真实值之间的差距。
- 经验风险最小化:在训练数据上最小化损失函数以近似期望风险。
- 结构风险最小化:通过引入正则化项来防止过拟合。
3. 优化方法(Optimization Method)
优化方法是通过调整模型参数以最小化损失函数的方法。
- 梯度下降法:包括批量梯度下降法和随机梯度下降法,用于迭代地调整参数以减少损失。
- 正则化技术:如L1和L2正则化,通过增加约束条件来降低模型复杂度,防止过拟合。
过拟合与泛化能力
- 过拟合:模型在训练数据上表现良好但在测试数据上表现不佳。
- 泛化错误:模型在未见数据上的预测误差,期望风险与经验风险之间的差异。
- 正则化方法:包括权重衰减、数据增强、提前停止等,通过干扰优化过程来减少泛化错误。
机器学习中的几个关键概念
- 概率:涉及概率分布、随机变量、条件概率等基本概念。
- 最大似然估计与最大后验估计:用于参数估计的方法,分别基于数据的似然函数和先验概率。
总结来说,机器学习的核心是通过构建合适的模型、定义合理的学习准则,并通过优化方法来调整模型参数,使得模型在新数据上的预测尽可能准确。正则化和优化技术在提高模型的泛化能力上起着关键作用。
神经网络结构、通用近似定理和反向传播算法总结
神经网络结构
-
1、基本组成:
- 神经元:神经网络的基本单位,通过激活函数将输入映射到输出。
- 层级结构:包括输入层、隐藏层和输出层。每层由若干神经元组成。
-
2、前馈神经网络:
- 全连接网络:相邻层之间的神经元全部连接,层内无连接。
- 无反馈结构:信号仅从输入层单向传递到输出层,可用有向无环图表示。
-
3、激活函数:
- 非线性映射:常用激活函数包括ReLU、Tanh、Sigmoid等,具有不同的性质和适用场景。
- 导数性质:激活函数的导数在训练过程中起关键作用,影响梯度计算和参数更新。
通用近似定理
-
1、定义:
- 函数逼近能力:前馈神经网络具有逼近任何从实数空间中定义的有界闭集到实数空间的连续函数的能力,只要隐藏层的神经元数量足够多。
-
2、条件:
- 线性输出层:网络的输出层需要是线性的。
- 非线性激活函数:隐藏层需要使用具有“挤压”性质的激活函数,如Sigmoid或Tanh。
-
3、意义:
- 广泛应用:该定理保证了前馈神经网络在理论上可以处理各种复杂的函数映射任务,为其在机器学习中的广泛应用提供了理论基础。
反向传播算法
-
1、目的:
- 参数更新:通过计算损失函数对网络各参数的梯度,实现网络参数的优化和学习。
-
2、步骤:
- 前向传播:计算每一层的输出,直到输出层,得到预测结果。
- 计算损失:根据预测结果和实际值计算损失函数。
- 反向传播:从输出层开始,逐层计算损失函数对每个参数的偏导数,使用链式法则。
- 梯度更新:利用梯度下降法,根据计算得到的梯度更新网络参数。
-
3、计算图与自动微分:
- 计算图:将前向计算过程表示为有向图,每个节点代表一个操作或变量。
- 自动微分:通过计算图自动计算梯度,分为前向模式和反向模式。反向模式(即反向传播)用于高效计算复杂函数的梯度。
总结
- 神经网络结构决定了信息如何在网络中流动和处理,前馈神经网络结构简单且功能强大。
- 通用近似定理保证了前馈神经网络的函数逼近能力,为其广泛应用提供了理论支持。
- 反向传播算法是神经网络训练的核心方法,通过梯度计算和参数更新实现网络的学习和优化。
卷积神经网络中的反向传播算法
概述
卷积神经网络(CNN)通过卷积层、池化层和全连接层的堆叠来处理图像数据。在训练CNN时,反向传播算法(Backpropagation)是关键的优化方法,用于调整网络的权重以最小化损失函数。
反向传播的步骤
反向传播算法可以分为以下几个主要步骤:
-
前向传播(Forward Pass):
- 输入数据通过网络各层进行前向计算,直到产生最终输出。
- 记录每一层的输入、输出和中间结果(如激活值),以备后续计算梯度使用。
-
计算损失(Loss Calculation):
- 使用输出结果与实际标签计算损失值。常用的损失函数包括均方误差(MSE)和交叉熵损失(Cross-Entropy Loss)。
-
反向传播(Backward Pass):
- 输出层反向传播:计算损失函数关于输出层每个神经元输入的偏导数。
- 隐藏层反向传播:逐层向前计算每层的梯度。利用链式法则,将后层的梯度传播到前层。
-
参数更新(Parameter Update):
- 使用梯度下降法(如随机梯度下降SGD,Adam等),调整每层的权重和偏置。更新公式为:
\[ \theta = \theta - \eta \cdot \nabla_{\theta} L \]其中,$\theta$ 表示权重参数, \(\eta\) 为学习率,\(\nabla_{\theta} L\) 为损失函数相对于参数的梯度。
卷积层的反向传播
在卷积层中,反向传播的具体过程与全连接层有所不同,主要包括以下几个部分:
-
卷积核梯度计算:
- 计算损失函数关于卷积核的梯度。对于每个卷积核,梯度通过卷积操作的反向传播计算得出。
-
输入梯度计算:
- 计算损失函数关于输入数据的梯度。这一步同样通过卷积操作的反向传播实现。
-
参数梯度累积:
- 对于每个卷积核,累积梯度并更新参数。
数学表达
对于卷积层的梯度计算,假设输入为(X),卷积核为(W),输出为(Y),损失函数为(L),则梯度计算公式如下:
- 损失函数关于卷积核的梯度:
-
其中,\(\ast\) 表示卷积操作, \(\delta\) 为损失函数关于输出的梯度。
-
损失函数关于输入的梯度:
残差网络(Residual Network)
残差网络(ResNet)是解决深层神经网络训练难题的重要创新之一。通过引入残差块(Residual Block),ResNet有效地缓解了深度增加导致的梯度消失和梯度爆炸问题。
核心思想
ResNet的核心思想是引入残差连接(skip connections),即在某一层的输出直接传递到后面几层,用于构造残差块。具体地,残差块的输出不仅依赖于该块的输入经过若干层的变换,还包括一个恒等映射(identity mapping)。
残差块
一个典型的残差块由两个卷积层组成,并添加了输入的恒等映射,如下所示:
其中,$ \mathcal{F}(x, {W_i}) $ 表示卷积层的变换,( x ) 为输入,( y ) 为输出。这样,通过恒等映射,残差块的输入直接加到输出上,有助于梯度更好地反向传播。
网络结构
ResNet由多个残差块堆叠而成,可以构建非常深的网络结构,如ResNet-50、ResNet-101和ResNet-152等。每个残差块的基本结构如下:
- 卷积层:带有Batch Normalization和ReLU激活函数。
- 恒等映射:直接将输入传递到后续层。
训练优势
残差网络通过恒等映射有效地解决了深层网络的梯度消失问题,使得非常深的网络能够顺利训练。这一改进使得ResNet在各种图像识别任务中取得了显著的性能提升。
实践应用
- 图像识别:ResNet在ImageNet比赛中取得了优异的成绩,大幅度提升了图像分类的准确率。
- 迁移学习:由于其强大的特征提取能力,ResNet被广泛用于迁移学习任务中,作为预训练模型的基础网络。
- 其他领域:包括目标检测、图像分割和自然语言处理等领域,ResNet的残差连接思想被广泛应用。
总结
残差网络通过引入残差连接,有效解决了深层神经网络的训练难题,使得构建和训练非常深的网络成为可能。这一创新在计算机视觉和其他领域带来了巨大的性能提升和广泛的应用。
自注意力机制
定义与特点
- 自注意力(Self-Attention):通过对输入序列中的每一个元素进行加权计算,捕捉序列中不同位置间的依赖关系。其主要优势在于能够并行计算并捕捉长距离依赖。
- QKV模式:自注意力机制通常采用Query、Key、Value三元组(QKV模式),通过这些向量计算注意力权重,生成新的表示向量。
计算过程
- 对于输入序列 $\X = [x_1, ..., x_N] \in \mathbb{R}^{D \times N}$,首先生成三个向量序列(Query、Key、Value)。
- 利用缩放点积作为注意力打分函数,输出向量序列可以简写为一种形式,即多头自注意力模型,通过多个注意力头并行计算,提高模型的表达能力。
应用领域
- 自注意力机制被广泛应用于自然语言处理(NLP)、语音识别、图像处理等领域。例如,BERT和Transformer模型都采用了自注意力机制。
Transformer
架构概述
- Encoder-Decoder结构:Transformer模型包含编码器(Encoder)和解码器(Decoder)两部分。编码器将输入序列转换为隐藏表示,解码器则将隐藏表示转换为输出序列。
- 多头自注意力:Transformer中的核心组件,多头自注意力机制允许模型在不同的表示子空间中并行地关注不同位置的信息。
位置编码
- 由于自注意力机制本身不包含位置信息,Transformer通过位置编码(Positional Encoding)为每个位置添加唯一的向量,使模型能够捕捉序列中的位置信息。
优势
- 并行计算:与RNN不同,Transformer可以并行处理整个序列,从而提高计算效率。
- 处理长距离依赖:自注意力机制使得Transformer能够有效处理序列中的长距离依赖关系。
应用场景
- 机器翻译:通过序列到序列(seq2seq)学习,Transformer在输入序列和输出序列之间建立映射关系,是机器翻译任务中的一种有效模型。
- 语音翻译和语音识别:Transformer模型也被应用于语音处理任务,通过自注意力机制处理长时间的语音序列。
综上,自注意力机制和Transformer模型通过并行计算和有效处理长距离依赖,广泛应用于各种序列建模任务,如自然语言处理、语音识别和机器翻译等领域。这些技术的核心在于自注意力机制的高效计算和Transformer架构的灵活应用。
改进自编码模型的思想
自编码模型主要是通过学习数据的有效表示来进行重构,常见的改进自编码模型的思想包括稀疏自编码器和降噪自编码器。
稀疏自编码器
- 概念:通过给自编码器的隐藏层单元增加稀疏性限制,促使自编码器学习数据中一些有用的结构。
- 优点:稀疏自编码器具有高可解释性,并能隐式地进行特征选择。这意味着它能选择与输入样本相关的最少特征,从而更好地表示输入样本,降低噪声并减轻过拟合。
降噪自编码器
- 概念:通过向输入向量加入噪声,使自编码器在重构时必须学习到数据的本质特征,从而增加编码的鲁棒性。具体方法是将输入向量的一些维度值随机设置为0,得到一个被损坏的向量,然后将其输入自编码器进行重构。
- 目的:这种方法的核心在于通过引入噪声来提升模型对数据本质特征的提取能力,使得模型对原始无损数据的重构能力更强。
模型独立学习的思想
模型独立学习方法不依赖于特定的模型架构,而是通过各种学习策略来提升模型的性能,主要包括集成学习、元学习等。
集成学习
- 概念:集成学习通过组合多个基模型来提升整体模型的性能。常见的方法包括Bagging和Boosting
- 具体方法:
- 随机森林:通过构建多个决策树并对其结果进行平均或投票,从而提升模型的泛化能力。随机森林中的每个基模型都是一棵决策树,每棵树通过随机选择特征和样本来训练,以增加基模型之间的独立性
- AdaBoost:一种Boosting算法,通过迭代训练多个弱分类器,每次训练时增加前序分类器分错样本的权重,从而使后续分类器更关注难分类的样本,最终提升整体模型的准确率
元学习
- 概念:元学习(Meta-learning)旨在使模型具备快速学习新任务的能力。与传统的机器学习需要大量数据从头开始训练不同,元学习通过先训练超参数,再进行具体任务的微调,使模型能够高效地学习新任务
- 方法:在元学习中,训练单位是任务而非样本数据。通过多个训练任务来学习较好的超参数,然后在特定任务上进行测试,以提升模型的学习能力
迁移学习
- 概念:迁移学习通过在大规模数据上训练模型,然后在具体任务中进行微调,来提升模型的性能。根据特征空间和标签空间的不同,迁移学习可以分为异构迁移学习和同构迁移学习
总结,改进自编码模型的核心在于通过稀疏性和噪声引入来提升模型的特征提取和重构能力;而模型独立的学习思想则通过集成学习、元学习和迁移学习等方法,不依赖于特定的模型架构,来提高模型的泛化能力和学习效率。
概率图模型
概率图模型(Probabilistic Graphical Models)是利用图结构表示随机变量及其条件依赖关系的概率模型。它们结合了图论和概率论,广泛应用于机器学习和统计学中。本文档主要讨论深度生成模型及其相关概念。
深度生成模型
深度生成模型是利用神经网络构建生成模型的框架,包括变分自编码器(Variational Autoencoder, VAE)和生成对抗网络(Generative Adversarial Network, GAN);。
变分自编码器(VAE)
-
基本原理:VAE通过学习数据的潜在表示,生成具有相似特征的新数据样本。其训练过程包括以下步骤:
- 将数据输入推断网络(编码器),得到潜在表示。
- 从潜在表示中采样,得到随机噪声。
- 将随机噪声输入生成网络(解码器),生成重建数据。
- 计算重建损失和KL散度,并将两者相加作为总损失。
- 使用反向传播算法更新网络参数,以最小化总损失。
- 重复以上步骤直到模型收敛。
-
模型结构:VAE包含两个主要部分:推断网络和生成网络​
生成对抗网络(GAN)
-
基本原理:GAN由生成网络和判别网络组成,通过对抗训练,生成网络不断改进生成数据的质量,判别网络不断提升区分生成数据和真实数据的能力
-
训练过程:
- 生成网络从隐空间中随机采样作为输入,生成模拟样本。
- 判别网络接收生成样本和真实样本,尝试将它们区分开。
- 生成网络和判别网络通过对抗训练,不断优化各自参数。
-
对抗过程:生成网络的目标是欺骗判别网络,使其无法区分生成样本和真实样本;判别网络的目标是尽可能准确地区分这两者
显式密度模型和隐式密度模型
- 显式密度模型:明确构建样本的密度函数,通过最大似然估计求解参数。例如高斯混合模型和概率图模型
- 隐式密度模型:不直接估计数据分布的密度函数,而是通过生成样本来间接反映数据分布,例如变分自编码器和生成对抗网络
含隐变量的概率图模型
概率图模型中隐变量的引入使得模型能够更好地表示数据生成过程
- 根据隐变量的先验分布进行采样,得到样本。
- 根据条件分布进行采样,生成观测数据。
EM算法
EM算法主要用于估计含有隐变量的概率模型参数
- E步(期望步):计算联合分布的条件概率期望,即隐变量的后验概率分布。
- M步(极大步):使用E步骤中计算得到的隐变量后验概率,重新估计模型参数。
Wasserstein GAN
Wasserstein GAN (WGAN)引入Wasserstein距离来衡量两个分布之间的距离,相比于KL散度和JS散度,Wasserstein距离在分布重叠较少的情况下仍能有效反映分布的远近;。这解决了生成对抗网络中可能出现的梯度消失问题,提升了模型训练的稳定性和效果。
其他改进模型
- 条件生成模型:根据特定条件生成数据,提高生成数据的控制性和多样性
- InfoGAN:引入信息论的概念,通过最大化生成数据和条件变量之间的互信息,增强生成数据的解释性
- BiGAN:在生成网络和判别网络之外增加编码器,通过编码器和生成网络的交替训练,提高生成数据的质量和一致性
算式推导总结
生成模型的对数边际似然分解
给定一个样本 ( x ),其对数边际似然 ( \log p(x|\theta) ) 可以分解为:
其中,第一项是变分自由能,第二项是KL散度,用于衡量后验分布 $\ q(z|x) $ 和真实后验分布 $\ p(z|x,\theta) $ 之间的差异。
GAN模型分析
在传统GAN中,生成器G固定参数时,最优的判别器D要最小化如下损失:
通过对判别器最优情况进行分析,生成器的损失函数为:
KL散度
前向KL散度和逆向KL散度的定义分别为:
- 前向KL散度:$ KL(p | q) = \int p(x) \log \frac{p(x)}{q(x)} dx $
- 逆向KL散度:$ KL(q | p) = \int q(x) \log \frac{q(x)}{p(x)} dx $
这两种散度在计算真实分布 ( p_r(x) ) 和模型分布 ( p_\theta(x) ) 之间的差异时,顺序不同,导致其在优化过程中有不同的表现。
具体算式推导
在深度生成模型中,通过最大似然估计来求解参数时,需要用到以下公式:
在变分自编码器(VAE)中,通过优化以下变分下界来训练模型:
这些推导在实际应用中,通过神经网络和反向传播算法进行参数更新,确保模型能够有效地学习数据的潜在表示并生成新数据。
本文由博客一文多发平台 OpenWrite 发布!