神经网络与深度学习

前言

要考试了,所以一方面打笔记,一方面把知识进行汇总,方便以后查阅复习。本篇侧重点仅依据专业老师课上讲的和自己平时的笔记,可能有所遗漏或者不对的地方,仅作参考~

ppt来源邱锡鹏老师:神经网络与深度学习 (nndl.github.io)

1.机器学习概述

1.1机器学习

机器学习 ≈ 构建一个映射函数

机器学习:通过算法使得机器能从大量数据中学习规律从而对新的样本做决策(预测函数)。

机器学习三要素:

  • 模型:就是一个函数映射
  • 学习准则:损失函数(衡量单个样本预测与真实标签之间的差异或损失程度的函数

机器学习问题转化成为一个最优化问题。但机器学习不等于优化!

  • 优化:如随机梯度下降SGD(梯度下降是通过计算损失函数的梯度来更新模型参数的

与梯度下降区别:适用于大型数据集或者参数空间较大。

每次只使用一个样本来计算梯度并更新参数。

好处:每次更新的计算成本较低,并且能够更快地收敛到局部最优解。缺点:由于随机性质,每次更新可能会跳过一些重要的信息,导致收敛过程不够稳定。

常见机器学习问题:回归、分类、聚类

过拟合:模型在训练集上错误率很低,但是在未知数据上错误率很高。

  • 原因:数据冗余,模型太复杂

欠拟合:模型在训练数据上表现不佳

  • 模型过于简单、特征不足、训练数据量少

学习率:

  • 过大:梯度爆炸、不收敛或发散,错过最优解
  • 过小:收敛速度过慢,陷入局部最优解、梯度消失

如何降低泛化错误 :适应新模型的能力差

  • 优化->经验风险最小

经验风险是指模型在训练数据上的平均损失或错误率,通常用损失函数来衡量。

经验风险最小化是指在机器学习中通过优化训练数据的损失函数来选择模型参数,以使得模型在训练数据上的预测误差最小化。即选择一个表现最好模型。

  • 正则化->降低模型复杂度,提高神经网络的泛化能力

所有损害优化的方法都是正则化。 分为:

  • 增加优化约束:L1/L2约束、数据增强
  • 干扰优化过程:权重衰减、随机梯度下降、提前停止
  • 提前停止:使用一个验证集(Validation Dataset)来测试每一次迭代的参数在验证集上是否最优。如果在验证集上的错误率不再下降,就停止迭代。

主成分分析:PCA是一种常用的数据降维技术,用于将高维数据转换为低维数据,同时保留数据的最重要的结构信息。属于特征工程。它通过线性变换将原始数据投影到一个新的坐标系中,使得数据在新坐标系中的方差最大化,从而找到数据中的主要特征或主成分。这些主成分是原始数据中的线性组合,通常按照其对数据方差的贡献程度进行排序。PCA常用于数据预处理、可视化、特征提取等任务中。

1.2线性回归

优化方法:

经验风险最小化:最小二乘法

最大似然估计

2.线性模型

应用:图像分类,文本分类

分类问题看作条件概率估计问题。引入引入非线性函数g 来预测类别标签的条件概率p(y=c|x)。

2.1线性分类模型

线性分类模型总结:

在logistic回归和softmax回归中,y为类别的one-hot向量表示; 在感知器和支持向量机中,y为{+1,−1}

2.1.1Logistic回归

也就是常说的sigmoid函数,常用于二分类:

激活函数:用来确定神经网络输出的数学方程式。引入非线性。即函数g由激活函数实现:

那在得出预测值和真实值概率后该怎样衡量两个条件分布的差异?引入熵:熵用来衡量一个随机事件的不确定性。

交叉熵:交叉熵是按照概率分布q的最优编码对真实分布为p的信息进行编码的长度。可以用来比较真实分布和预测分布p_θ(y│x)之间的差异。

在给定 𝑞 的情况下,如果 p和 𝑞 越接近,交叉熵越小; 如果 p 和 𝑞 越远,交叉熵就越大 

KL散度:用概率分布q来近似p时所造成的信息损失量。

即其平均编码长度(即交叉熵)H(p,q)和p的最优平均编码长度(即熵)H(p)之间的差异。

梯度下降是通过计算损失函数的梯度来更新模型参数的。交叉熵损失函数是分类任务中常用的。下面演示一下梯度下降的过程:

交叉熵损失函数:

梯度为:

综上:总结logistic:

2.1.2Softmax回归

常用于多分类。

2.1.3感知器

模拟生物神经元行为的机器,即线性分类器。用于二元分类任务。组成如权重(突触)、偏置(阈值)及激活函数(细胞体),输出为+1或-1。输入特征经过线性函数计算后与阈值进行比较,从而确定输入属于哪一类。每一次迭代中通过调整权重来逐步逼近正确的分类边界。只能处理线性可分的数据集。

两类感知器算法:

多层感知器MLP压平操作指将输入数据的多维特征转化为一维向量。目的:

  • 简化数据结构
  • 满足全连接层的输入要求
  • 标准化神经网络的输入形式

2.1.4支持向量机

上述模型均来解决线性可分问题,但如何处理非线性可分问题?除了增加非线性特征,下面引入深度学习。

深度学习 

3.神经网络基础

深度学习的步骤:定义网络、损失函数、优化

简单的线性模型:

偏置:总的来说,偏置项的作用是调整神经元的激活函数输出,使得神经网络能够更好地拟合输入数据的分布,提高模型的性能和表达能力。在网络的初始阶段,偏置可以初始化为小的随机值,然后通过反向传播算法进行训练,以使网络能够适应输入数据并调整偏置的值,以最小化损失函数。

人工神经网络需要考虑的三方面:

  • 神经元的激活规则:即输入到输出的映射关系,为一个非线性函数(不能用一个直线表示)
  • 网络的拓扑结构:神经网络中各层之间的连接方式
  • 学习算法:训练数据来学习神经网络的参数

常见的网络结构:并行分布结构

3.1前馈神经网络FNN

通用近似定理:一个具有足够数量的隐藏单元的前馈神经网络可以以任意精度逼近任何连续函数,只要给予足够的训练和适当的参数调整。即得出一个两层的神经网络可以模拟任何函数。

隐藏层即再输入数据和输出结果之间的中间表示。可理解为特征表示和特征提取。对输入进行线性加权和应用非线性激活函数来计算输出。

反向传播算法:首先通过前向传播计算出网络的输出,并将输出与真实标签进行比较,得到损失函数。然后通过链式法则,从输出层向输入层逐层计算每个参数对损失函数的梯度。最后,使用梯度下降法或其变种方法,按照梯度的方向更新网络参数,使得损失函数逐步减小 。

大致公式:x_{k+1} = x_{k}-\alpha *dx_{k}

梯度下降更新参数详细过程:

3.1.1常见激活函数

为什么我们需要激活函数?

为了引入非线性,使网络能学到更复杂的关系特征,更好的拟合出一个函数

softmax:

关于Tanh函数,有的也表示成 \tfrac{2}{1+exp(-2x)}-1,化简上下同时除exp(-x)即和上表一致。左Tanh,右ReLU:

                        

3.1.2两个问题

非凸优化:梯度下降就是为了找到全局最优解,但当损失函数为非凸函数时(就是不止一个最高点), 得到的可能为局部最优解。为凸函数的到的一定为全局最优解。

  • 解决方法:多次参数初始化、使用不同的优化算法(如随机梯度下降、遗传算法)、约束优化、分解和并行化

梯度消失 :反向传播过程中,梯度逐渐变小接近0。

  • 解决方法:改变激活函数、合理初始化权重、使用批量归一化

梯度爆炸:则是一会向上一会向下, 因为计算的难度越来越复杂导致 

  • 权重衰减、梯度截断 

3.2卷积神经网络CNN

目的即提取特征,与前馈(常用于文本图像分类)区别在于引入了卷积和池化,常用于目标检测和识别。

引入:全连接前馈神经网络特点:

  • 权重矩阵的参数非常多
  • 全连接前馈网络很难提取这些局部不变特征(进行了某些变换,这些特征依然能够被可靠地检测或描述)

3.2.1卷积神经网络

感受野:某一层输出结果中一个元素所对应的输入层的区域大小

有三个结构上的特性:

  • 局部连接
  • 权重共享
  • 空间或时间上的次采样

 卷积:不同的滤波器来提取信号序列中的不同特征

卷积的结果按输出长度不同可以分为三类:

  • 窄卷积:步长 𝑇 = 1 ,两端不补零 𝑃 = 0 ,卷积后输出长度为 𝑀 − 𝐾 + 1
  • 宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 = 𝐾 − 1 ,卷积后输出长度 𝑀 + 𝐾 − 1
  • 等宽卷积:步长 𝑇 = 1 ,两端补零 𝑃 =(𝐾 − 1)/2 ,卷积后输出长度 𝑀
  • 通过在边界上进行合适的填充(如零填充)padding来保持输出特征图的宽度与输入特征图相同。

 在深度学习中,通常使用的是互相关操作来表示卷积

即卷积核是否进行180度的旋转并不影响最终的结果,因为卷积核的参数是通过反向传播进行学习的,所以无论是否进行旋转,最终学到的卷积核都会自动调整其参数以适应任务。

卷积结构:由卷积层、汇聚层、全连接层交叉堆叠而成。 

 其他卷积种类:

  • 转置卷积/微步卷积:将低维特征映射恢复到高维空间,将输入特征图的大小扩展到更大的尺寸。
  • 空洞卷积:卷积核中引入了额外的间隔增加输出单元的感受野

CNN的局部性假设:

在卷积神经网络中,每个神经元的响应仅对应于输入数据中局部区域的特征,即神经元只关注输入数据的局部信息而非全局信息。这一假设是CNN成功的关键之一。 

3.2.2典型的卷积网络

 LeNet-5:共有 7 层。 卷积-池化-卷积-池化-全连接-全连接-输出层

AlexNet:5个卷积层、3个汇聚层和3个全连接层。采用了ReLU作为非线性激活函数,使用Dropout(参数丢失机制)防止过拟合,使用数据增强 

VGGNet :就是不断地堆叠卷积层和池化层。可理解为五个块堆叠而成的主干特征提取网络加上3个全连接层,块之间通过maxpool进行下采样连接,从而增加通道数降低特征图分辨率。使用较小的3x3卷积核,多层堆叠替代大尺寸卷积核。并使用padding为1保证输入输出的特征图保持不变。

下面是VGG16的结构图,16代表除池化层以外的层数。

很小的卷积,通过增加网络深度可以有效提高性能。 

3.2.3残差网络 

通过给非线性的卷积层增加直连边的方式来提高信息的传播效率。

ResNet:即残差块的堆叠。残差块一般由两部分组成:

  • 残差函数:包括一系列卷积、批量归一化、激活函数等操作。平均池化在残差块最后,连接层之前进行。
  • 恒等映射:将输入直接传递给输出,减少信息丢失

 

 3.3循环神经网络RNN

 前馈网络有不足之处:

  • 连接存在层与层之间,每层的节点之间是无连接的
  • 输入和输出的维数都是固定的,不能任意改变。无法处理变长的序列数据。
  • 每次输入都是独立的,每次网络的输出只依赖于当前的输入

RNN: 通过使用带自反馈的神经元,能够处理任意长度的时序数据。广泛应用在语音识别、语言模型以及自然语言生成。

上一时刻学的一起生成这一时刻学的,再储存这一刻的到延时器中。增强网络的记忆功能。

 3.3.1简单循环网络

RNN优点:引入记忆、图灵完备

缺点:长程依赖问题、记忆容量问题、并行能力

RNN的通用近似定理:一个完全连接的循环网络是任何非线性动力系统的近似器 。

3.3.2长程依赖问题

在传统的循环神经网络(RNN)中,当序列长度增加时,网络难以捕捉到序列中较长距离的依赖关系。即由于RNN的特殊结构导致了梯度消失或梯度爆炸实际上只能学习到短周期的依赖关系。

为了解决这个问题,一些改进的循环神经网络结构被提出,如长短期记忆网络(LSTM)和门控循环单元(GRU)

LSTM:引入了门控机制解决长期依赖问题。通过三种门控单元来控制信息的流动:

  • 遗忘门(forget gate):LSTM第一步决定丢失什么信息。读取上一个输出h_{t-1}和当前输入x_{t},做一个Sigmoid 的非线性映射,然后输出一个向量𝑓𝑡,后与细胞状态C_{t-1}相乘
  • 输入门(input gate):下一步是确定什么样的新信息被存放。sigmoid层称“输入门层”决定什么值我们将要更新。tanh层创建一个新的候选值向量\tilde{C}_{t},会被加入到状态中
  • 细胞状态(cell state):该更新旧细胞状态。C_{t-1}更新为C_{t},旧状态与f_{t}相乘,丢弃掉我们确定需要丢弃的信息,接着加上i_{t} * \tilde{C}_{t}。这就是新的候选值。
  • 输出门(output gate):最终输出,运行一个sigmoid层来确定细胞状态的哪个部分将输出,把细胞状态通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘。

3.3.3深层模型

堆叠循环神经网络:是将多个RNN层堆叠在一起形成的深层网络结构。每一层的输出会作为下一层的输入,从而形成多层的信息传递和抽象表示。这种结构可以增加模型的表示能力,使其能够学习到更复杂和抽象的特征。

双向循环神经网络:是一种结合了两个方向信息的循环神经网络结构。由两个单向的循环神经网络组成,一个按时间顺序处理输入序列,另一个按时间逆序处理输入序列。这样,模型可以同时从过去和未来获取信息,从而更好地理解输入序列的上下文和语义。

4.网络优化与正则化

4.1网络优化

优化难点:

  • 结构差异大:没有通用的优化算法、超参数多
  • 非凸优化问题
  • 梯度消失/爆炸问题

高维的非凸优化问题:

鞍点: 在高维空间中,鞍点是目标函数在某个方向上是局部最大值而在另一个方向上是局部最小值的点。鞍点可能导致优化算法停滞,因为梯度接近零 。

  • 解决方法:使用更复杂的优化算法、优化过程加入随机性

平摊底部: 在高维空间中,目标函数可能具有非常平坦的底部,这意味着在底部附近梯度非常小,使得优化算法难以收敛到最优解。

  • 解决方法:增加模型的复杂度、使用正则化来限制模型的参数范围

4.1.1优化算法 

随机梯度下降SGD:使用一个样本计算梯度,不计算全部

Mini-batch梯度下降法: 结合了批量梯度下降和随机梯度下降的优点,每次更新使用一小批量样本的梯度。(动态学习率、Adam算法优先)

批量梯度下降:在每次更新时用所有样本

批量mini-batch大小不影响随机梯度的期望,但是会影响随机梯度的方差.

批量越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率

批量较小时,需要设置较小的学习率,否则模型会不收敛.

4.1.2超参优化 

超参数:能自己定义修改的参数

如层数 每层神经元个数 激活函数 学习率(以及动态调整算法) 正则化系数 mini-batch 大小 

优化方法:

网格搜索 随机搜索 贝叶斯优化 动态资源分配 神经架构搜索

网格搜索:在网格搜索中,首先定义了每个超参数的候选取值范围,然后穷举地组合这些超参数的所有可能取值,对每一组超参数进行交叉验证或者其他评估方法来评估模型性能,最终选择性能最优的超参数组合作为最终模型的参数。例如,如果有两个超参数A和B,它们各自有3个候选取值,则网格搜索会尝试9种组合(3x3)。

4.2正则化

神经网络过度参数化、拟合能力强不代表泛化性(能力)差

正则化,用于提高神经网络的泛化能力。分为两个方面上面已具体介绍。

  • L1正则化:(曼哈顿/街区)倾向于使权重稀疏(即某些权重为零),因此可以用于特征选择。
  • L2正则化:(欧式距离)通过惩罚大的权重,有助于防止过拟合。
  • Dropout: 在训练过程中,随机将一部分神经元的输出设置为0,以减少神经元之间的依赖关系。这样可以强制模型学习更加鲁棒的特征表示,从而降低过拟合风险。
  • Early-stop:使用一个验证集来测试每一次迭代的参数在验证集上是否最优。如果在验证集上的错误率不再下降,就停止迭代。
  • 数据增强:图像数据的增强主要是通过算法对图像进行转变,引入噪声等方法来增加数据的多样性。方法有旋转、翻转、缩放、平移、加入噪声

5.注意力机制与外部记忆

由于优化算法和计算能力的限制,神经网络在实践中很难达到通用近似的能力。即不能近似算法来找到一个接近于最优解的解决方案。因为网络不能太复杂(参数太多)

如何提高网络能力:局部连接 权重共享(在神经网络中多个神经元之间共享相同的权重如CNN) 汇聚操作(如最大池化)

增加网络能力的另一种思路: 注意力机制 外部记忆

5.1注意力机制

会聚(focus)和汇聚(pooling)是两个重要的步骤,用于计算注意力权重和生成上下文向量。

汇聚:自下而上

会聚:自上而下

打分函数:用于计算每个注意力权重的分数,以确定模型在给定上下文中应该关注哪些信息。 

5.1.1注意力机制的变体

硬性注意力:在给定的上下文中明确地选择一个或多个特定的信息以进行处理,而不是在所有信息上进行软性加权的操作。

键值对注意力:用于在给定查询向量和一组键值对的情况下,计算查询向量与每个键之间的相关性,并根据相关性对相应的值进行加权组合。用于机器翻译、语言生成。

多头注意力:

指针网络:只利用注意力机制中的第一步,将注意力分布作为一个软性的指针(pointer)来指出相关信息的位置。

当使用神经网络来处理一个变长的向量序列时,通常使用卷积网络或循环网络进行编码来得到一个相同长度的输出向量序列。 但只建模了输入信息的局部依赖关系

(指的是序列中相邻位置之间存在的依赖关系)

如何建立非局部的依赖关系呢?(非局部的依赖关系指的是序列中不仅仅是相邻位置之间存在依赖关系,而是远距离位置之间也存在关联和影响。)

使用全连接:无法处理变长问题,即权重中的个数/维度(w里有几个值)一定 。

那么引入自注意力模型建立非局部依赖关系:

5.1.2自注意力模型

一种利用注意力机制来建模序列数据之间依赖关系的模型。它通过将输入序列中每个元素与其他元素进行交互,并根据它们之间的关系动态地分配注意力权重,从而实现对序列的建模和表示。

QKV(Query-Key-Value)模式:

给定一个输入序列,首先通过三个独立的线性变换将输入元素映射到查询Q、键K和值V的空间中。然后,针对每个查询向量,计算它与所有键向量之间的相似度,通常采用点积或其他相似度函数。接着,将相似度经过 softmax 函数归一化,得到注意力权重。最后,利用注意力权重对值向量进行加权求和,得到上下文向量。

拓展:

5.2外部记忆

神经图灵机和注意力机制都可被看作是引入外部记忆,它们允许网络动态地访问和操作外部存储器,从而扩展了网络的记忆和计算能力。

外部记忆:定义为矩阵M∈Rd×k k 是记忆片段的数量,d 是每个记忆片段的大小。类型分为:

  • 只读型:Memory Network(记忆网络)、RNN中的 (h_t)(隐藏状态:存储前一时刻信息的那个)
  • 可读写型:神经图灵机(NTM)

 Memory Network:一种模型,通过将外部记忆作为额外输入,利用注意力机制来读取外部记忆并将其整合到模型的计算过程中。能以只读方式访问外部记忆,从而扩展了模型的记忆能力。

NTM: 具有可读写外部存储器的神经网络结构。可以通过注意力机制来读取和写入外部存储器,从而在模型的计算过程中动态地操作外部记忆。使得 NTM 能够更灵活地利用外部记忆来解决各种任务,如序列学习、推理和记忆。

关于图灵机:一种抽象数学模型,可以用来模拟任何可计算问题

不严格的类比: 

6.无监督学习

典型的无监督学习:

6.1无监督特征学习 

主成分分析:一种最常用的数据降维方法,使得在转换后的空间中数据的方差最大。因为方差最能体现总体情况。

稀疏编码:旨在通过学习一组基向量的线性组合来对输入数据进行编码。核心思想是尽可能用少量的基向量来表示输入数据,从而实现对输入数据的高效表征。

  • 训练过程:一般用交替优化的方法进行。
  • 优点:降低计算量(好多地方为0)、可解释性、特征的自动选择

自编码器:通过将输入数据编码为低维的表示,然后再将该表示解码为与原始输入尽可能相似的输出,从而迫使网络学习到输入数据的有效特征表示。

最简单的自编码器是两层的神经网络,输入层到隐藏层用来编码,隐藏层到输出层用来解码。

模型:

编码器:将输入数据映射到低维表示空间,通常通过多层神经网络实现。

解码器:将编码后的表示映射回原始输入空间,并尽可能重构输入数据。

学习准则:最小化重构错误(即输入数据与解码器输出之间的差异,通常使用平方损失或交叉熵等损失函数来衡量。)

稀疏自编码器 :通过给自编码器中隐藏层单元z加上稀疏性限制,自编码器可以学习到数据中一些有用的结构。

优点:有很高的可解释性,并同时进行了隐式的特征选择。

降噪自编码器:通过引入噪声来增加编码鲁棒性的自编码器。编码鲁棒性指的是编码器对输入数据中的噪声和变化的容忍程度 

  • 对于一个向量x,我们首先根据一个比例µ随机将x的一些维度的值设置为0,得到一个被损坏的向量x ̃。 然后将被损坏的向量x ̃输入给自编码器得到编码z,并重构出原始的无损输入x 。

6.2概率密度估计

参数密度估计:根据先验知识假设随机变量服从某种分布,然后通过训练样本来估计分布的参数 

  • 估计方法:最大似然估计
  • 正态分布:连续型概率密度函数,适用于连续型变量的参数密度估计
  • 多项分布:适用于离散型变量的参数密度估计。

非参数密度估计:不假设数据服从某种分布,通过将样本空间划分为不同的区域并估计每个区域的概率来近似数据的概率密度函数

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值