深度学习-入门

深度学习

基础概念

重点:特征工程

image-20240307211352056

特征工程

特征工程:如何提取特征

image-20240307211438655

神经网络

线性函数

image-20240308085738260

image-20240308090217887

损失函数

image-20240308090818573

image-20240308091242550

分类器

  • 线性代数

image-20240308091549490

image-20240308092945073

前向 / 反向传播

前向传播

image-20240308093241197

image-20240308093517370

反向传播 - 求导

  • 求(偏)导
  • 逐层、链式

image-20240308094551527

image-20240308100024116

  • 反向传播 的 梯度(贡献值、导数值、斜率)计算

  • 正常是对矩阵求偏导

image-20240308101550712

image-20240308102141734

矩阵求导

在数学和机器学习领域,对矩阵求偏导数通常指的是计算矩阵变量相对于标量变量的偏导数。这里我们讨论的是多元函数中矩阵元素作为自变量的情况,或者函数输出为矩阵时对其输入变量求导。

一、对矩阵中的每个元素求偏导数

假设有一个函数 f(X),其中 X 是一个 m×n 矩阵,X = [x_ij],i 从 1 到 m,j 从 1 到 n,那么对矩阵 X 中每一个元素 x_ij 求偏导数就是分别对 i 和 j 的索引进行求导:

1
∂f/∂x_ij

对于具体的示例,考虑函数:

1
f(X) = trace(X^T A X), 其中 X 是 m×n 矩阵,A 是一个 n×n 的对称矩阵

对 X 的任意元素 x_ij 求偏导数:

1
∂f/∂x_ij = ∂(∑k=1^n ∑l=1^n x_ki * a_ik * x_lj) / ∂x_ij = a_ij * (x_ji + x_ij)

二、矩阵微分(Matrix Calculus)

在更高级的矩阵求导中,我们可能关心整个矩阵而不是单个元素。这时会使用到雅可比矩阵的扩展形式——弗雷德霍姆矩阵(Frobenius Inner Product)或梯度向量表示矩阵的导数。对于向量化的函数,如 f(X): R^(m×n) → R,其梯度是一个四阶张量,但通常被重塑成一个 (mn)×(mn) 的矩阵,以便于处理。

例如,如果 f(X) 是上述例子中的迹运算,那么整个矩阵的梯度可以写成:

1
∇f(X) = (A X + X^T A)^T

这里,整个矩阵的梯度实际上包含了所有元素的偏导数组成的新矩阵。

三、矩阵乘法链式法则

对于包含矩阵乘法的复合函数,可以使用链式法则来求导。比如对于 g(X) = h(WX+b),其中 W 是一个 n×m 矩阵,X 是一个 m×p 矩阵,b 是一个 n×p 的偏置矩阵,h 是一个关于矩阵的可微函数,则 g 对 X 的导数可通过以下方式计算:

1
dg/dX = dh/dY * dY/dX = dh/d(WX+b) * W

其中 Y = WX + b,dh/dY 表示将 Y 视为一个整体的矩阵求导结果。

以上是对矩阵求偏导的一些基本概念和示例。实际应用中,根据具体函数形式选择合适的求导规则,并结合矩阵微积分的知识进行计算。

神经网络组成

image-20240308103051130

正则化

  • 控制神经网络的强度

image-20240308105854137

激活函数

image-20240308111358644

image-20240308110415713

参数初始化

image-20240308110747655

Drop-Out

  • 降低神经网络的强度 (训练阶段)

image-20240308111001239

卷积神经网络 - CONV NN

卷积神经网络 — 多维

神经网络 — 一维

卷积 :Convolution

卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习算法,是深度学习的代表算法之一。它是一类包含卷积计算且具有深度结构的前馈神经网络,具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks,SIANN)”。

卷积神经网络的应用非常广泛,以下是一些常见的使用场景:

  1. 图像分类:卷积神经网络可以对输入的图像进行自动特征提取和分类,将图像分为不同的类别,如动物、植物、物品等。
  2. 物体检测:在图像中检测出不同的物体,并标注出其位置。例如,在自动驾驶领域,CNN可以用于识别道路上的车辆、行人和其他障碍物。
  3. 人脸识别:卷积神经网络可以通过学习人脸的特征来进行人脸识别,广泛应用于安全监控、身份验证等领域。
  4. 自然语言处理:CNN也被用于自然语言处理任务,如文本分类、情感分析、机器翻译等。它可以学习文本中的语义信息,进行高效的处理。

除了上述常见场景,卷积神经网络还在医学影像分析、视频处理、安全监控等多个领域发挥着重要作用。通过不断的研究和优化,卷积神经网络的应用场景还将进一步扩大。

如需了解更多卷积神经网络的内容,可以查阅深度学习、机器学习等领域的专业书籍,也可以访问相关学术网站,查看最新的研究成果和应用案例。

应用 - CV

  • 无人驾驶
  • 超分辨率重构 - 图像修复
  • (图像)分类与检索
  • 图像检测
  • 人脸识别

在深度学习中,CV代表的是计算机视觉(Computer Vision)。计算机视觉是深度学习中最受欢迎的领域之一,主要应用包括图像分类、对象检测、图像分割和对象追踪等。这些应用都是基于深度学习的算法,通过对大量图像数据的学习,让计算机能够理解和解析图像中的信息。例如,图像分类任务要求模型从给定的分类集合中给图像分配一个标签;对象检测则是定义图像中存在的对象,对其进行标记并输出边界框;图像分割则是将整个图像分割成像素段,然后进行分类和标记;而对象追踪则在自动驾驶汽车等场景中有着重要的应用。

如需更深入了解CV在深度学习中的具体应用和技术细节,建议查阅相关领域的专业书籍或研究文献。

概念

image-20240309165600553

  • 卷积做了什么

image-20240309170059558

image-20240309170528429

图像通道

image-20240309170732299

计算方式:

image-20240309171337255

堆叠的卷积层

  • 增加filter的维度

image-20240309172423465

卷积层参数

image-20240309172711360

步长

image-20240309172743326

卷积核尺寸

  • 每次提取的矩阵的大小:3 x 3 x 4, 即 3 x 3

蓝色部分

image-20240309171337255

边缘填充

image-20240309201445899

卷积核个数

  • 几个filter,计算多少层

卷积结果的计算

image-20240309202739676

参数共享

  • 减少 Wi 的参数个数

image-20240309203257155

池化层

image-20240309203725125

max-pooling - 最大池化

image-20240309203817588

计算结果

  • Relu 为激活函数,不参与计算

image-20240309204611647

image-20240309204835847

经典卷积神经网络

  • AlexNet
  • VGG
  • ResNet

AlexNet - 了解

卷积神经网络经典回顾之AlexNet - 知乎 (zhihu.com)

1、卷积+池化层(前五层)

AlexNet共有五个卷积层,每个卷积层都包含卷积核、偏置项、ReLU激活函数和局部响应归一化(LRN)模块。

卷积层C1:使用96个核对224 × 224 × 3的输入图像进行滤波,卷积核大小为11 × 11 × 3,步长为4。将一对55×55×48的特征图分别放入ReLU激活函数,生成激活图。激活后的图像进行最大池化,size为3×3,stride为2,池化后的特征图size为27×27×48(一对)。池化后进行LRN处理。

卷积层C2:使用卷积层C1的输出(响应归一化和池化)作为输入,并使用256个卷积核进行滤波,核大小为5 × 5 × 48。

卷积层C3:有384个核,核大小为3 × 3 × 256,与卷积层C2的输出(归一化的,池化的)相连。

卷积层C4:有384个核,核大小为3 × 3 × 192。

卷积层C5:有256个核,核大小为3 × 3 × 192。卷积层C5与C3、C4层相比多了个池化,池化核size同样为3×3,stride为2。

其中,卷积层C3、C4、C5互相连接,中间没有接入池化层或归一化层。

2、全连接层(后三层)

全连接层F6:因为是全连接层,卷积核size为6×6×256,4096个卷积核生成4096个特征图,尺寸为1×1。然后放入ReLU函数、Dropout处理。值得注意的是AlexNet使用了Dropout层,以减少过拟合现象的发生。

全连接层F7:同F6层。

全连接层F8:最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000个类别预测的值。

img

图2 网络结构说明图

VGG - 知乎

VGG网络结构

下面是VGG网络的结构(VGG16和VGG19都在):

img

VGG网络结构

- VGG16包含了16个隐藏层(13个卷积层和3个全连接层),如上图中的D列所示

- VGG19包含了19个隐藏层(16个卷积层和3个全连接层),如上图中的E列所示

ResNet

你必须要知道CNN模型:ResNet - 知乎 (zhihu.com)

ResNet的网络结构

ResNet网络是参考了VGG19网络,在其基础上进行了修改,并通过短路机制加入了残差单元,如图5所示。变化主要体现在ResNet直接使用stride=2的卷积做下采样,并且用global average pool层替换了全连接层。ResNet的一个重要设计原则是:当feature map大小降低一半时,feature map的数量增加一倍,这保持了网络层的复杂度。从图5中可以看到,ResNet相比普通网络每两层间增加了短路机制,这就形成了残差学习,其中虚线表示feature map数量发生了改变。图5展示的34-layer的ResNet,还可以构建更深的网络如表1所示。从表中可以看到,对于18-layer和34-layer的ResNet,其进行的两层间的残差学习,当网络更深时,其进行的是三层间的残差学习,三层卷积核分别是1x1,3x3和1x1,一个值得注意的是隐含层的feature map数量是比较小的,并且是输出feature map数量的1/4。

img

图5 ResNet网络结构图

img

表1 不同深度的ResNet

下面我们再分析一下残差单元,ResNet使用两种残差单元,如图6所示。左图对应的是浅层网络,而右图对应的是深层网络。对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。有两种策略:(1)采用zero-padding增加维度,此时一般要先做一个downsamp,可以采用strde=2的pooling,这样不会增加参数;(2)采用新的映射(projection shortcut),一般采用1x1的卷积,这样会增加参数,也会增加计算量。短路连接除了直接使用恒等映射,当然都可以采用projection shortcut。

img

图6 不同的残差单元

作者对比18-layer和34-layer的网络效果,如图7所示。可以看到普通的网络出现退化现象,但是ResNet很好的解决了退化问题。

img

图7 18-layer和34-layer的网络效果

最后展示一下ResNet网络与其他网络在ImageNet上的对比结果,如表2所示。可以看到ResNet-152其误差降到了4.49%,当采用集成模型后,误差可以降到3.57%。

img

表2 ResNet与其他网络的对比结果

说一点关于残差单元题外话,上面我们说到了短路连接的几种处理方式,其实作者在[文献2]中又对不同的残差单元做了细致的分析与实验,这里我们直接抛出最优的残差结构,如图8所示。改进前后一个明显的变化是采用pre-activation,BN和ReLU都提前了。而且作者推荐短路连接采用恒等变换,这样保证短路连接不会有阻碍。感兴趣的可以去读读这篇文章。

img

图8 改进后的残差单元及效果

img

感受野

image-20240310091026290

image-20240310090846401

递归神经网络 - RNN

  • 定义

递归神经网络(Recursive Neural Network,RNN)是一种特殊类型的神经网络,旨在处理具有序列依赖性的数据。这种网络结构特别适用于那些需要考虑到之前信息的情况,比如文本分析、语音识别、机器翻译等领域。

递归神经网络具有树状阶层结构,其网络节点按照连接顺序对输入信息进行递归处理。这种结构使得RNN能够捕获数据中的时序依赖关系,即某一时刻的输出不仅与当前时刻的输入有关,还与之前时刻的输出有关。这种特性使得RNN在处理序列数据时具有优势。

与传统的前馈神经网络相比,递归神经网络具有记忆功能,能够保留并传递历史信息。这使得RNN在处理长序列数据时更为有效,能够学习到数据中的长期依赖关系。

在自然语言处理(NLP)领域,递归神经网络得到了广泛应用。例如,在文本情感分析、文本内容预测、机器翻译等任务中,RNN都能够发挥出色的性能。此外,RNN还可以与其他深度学习技术结合使用,以进一步提高处理效果。

然而,需要注意的是,递归神经网络在处理长序列时可能会遇到梯度消失或梯度爆炸的问题。为了解决这个问题,研究者们提出了各种改进方法,如长短时记忆网络(LSTM)和门控循环单元(GRU)等。

总的来说,递归神经网络是一种强大的深度学习工具,特别适用于处理具有时序依赖性的序列数据。通过不断优化和改进,RNN将在更多领域发挥重要作用。

应用

  • NLP - 自然语言处理

NLP的自然语言处理(Natural Language Processing,简称NLP)是人工智能领域中的一个重要分支,它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。NLP的目标是让计算机能够理解和生成人类自然语言,实现人机间的有效交流。

NLP的核心任务包括自然语言理解(NLU)和自然语言生成(NLG)。自然语言理解是将人类语言转换为机器可读的格式以进行AI分析,而自然语言生成则是生成适当的响应,并以相同的语言将其发送回人类用户。

NLP的应用非常广泛,包括但不限于搜索引擎、机器翻译、语音助理等。它简化了人与机器之间的信息交换,使AI算法能够以新的方式接收数据。同时,NLP也对其他领域产生了影响,例如元宇宙,因为它可以使虚拟世界中的数字人类变得更加逼真。

然而,NLP的实现也面临着许多挑战,其中最大的挑战之一是自然语言文本和对话中存在的各种各样的歧义性或多义性。因此,尽管NLP已经取得了显著的进展,但仍有许多问题需要解决,以实现更精确、更智能的自然语言处理。

LSTM

image-20240310093510420

自然语言处理 - NLP

词向量模型 – Word2Vec

  • 目的:得到每一个词的多维向量表达

输入与输出的 概念

  • 目的:输入- 词向量,能够提示 “模型”

image-20240310095743735

image-20240310111353807

构建训练数据

  • 训练模型之前,先构建一个数据库,即类似于单词表、关联词库,这样我们 input,就能得到想要的、合理的 output

image-20240310111957840

模型

image-20240310112917565

CBOW

  • 通过上下文,预测当前(空白)词

CBOW(Continuous Bag of Words)是Word2Vec中的一种模型,主要用于学习词的向量表示(即词嵌入)。Word2Vec是谷歌在2013年开源的一个用于获取词向量的工具,它将词语转化为一种数学上的表达,使得语义上相似的单词在数学表达上也同样接近。

在CBOW模型中,目标是根据上下文(即一个词的周边词)来预测当前词。模型会接收一个词序列(例如一个句子)作为输入,然后使用一个滑动窗口来选取上下文词。对于每个目标词,模型会尝试通过上下文词的词向量之和(有时还包括权重)来预测它。模型的结构通常包括输入层、隐藏层和输出层。

以下是CBOW模型的基本工作流程:

  1. 输入层:对于给定的词序列中的每个词,模型会选取一个固定大小的窗口(例如前后各5个词),并将窗口内的词作为上下文。这些上下文词的词向量被拼接起来(有时也会取平均)作为模型的输入。
  2. 隐藏层:隐藏层通常是一个简单的线性层,它对输入层的输出进行线性变换。在CBOW模型中,隐藏层的输出通常被视为输入词序列中目标词的预测向量。
  3. 输出层:输出层是一个softmax层,它根据隐藏层的输出计算词汇表中每个词的概率分布。训练的目标是使得目标词的概率最大化。

通过反向传播和梯度下降算法,CBOW模型可以学习到每个词的词向量表示,这些词向量捕捉了词与词之间的语义和句法关系。一旦模型训练完成,这些词向量就可以被用于各种NLP任务,如文本分类、命名实体识别、情感分析等。

需要注意的是,CBOW模型是一种基于上下文的词嵌入方法,它假设上下文中的词与目标词具有相似的语义。然而,这种假设并不总是成立,因此在实际应用中可能需要结合其他模型或方法进行改进。

image-20240310112318124

Skipgram

  • 由当前词,推测上下文

Skip-gram是Word2Vec中的一种模型,主要用于学习词的向量表示(即词嵌入)。与CBOW(Continuous Bag of Words)模型不同,Skip-gram模型是根据中心词来推理上下文。

在Skip-gram模型中,首先会在句子中选定一个中心词,并将其他词作为这个中心词的上下文。然后,使用中心词的词向量去推理上下文,这样上下文定义的语义被传入中心词的表示中,从而达到学习语义信息的目的。这种推理过程在训练过程中会多次进行,以优化词向量的表示。

Skip-gram模型在处理生僻字(出现频率低的字)时效果更好,因为它不会刻意回避这些字。在模型的结构上,Skip-gram通常包括输入层、隐藏层和输出层。输入层接收中心词的one-hot编码,隐藏层对输入进行变换,输出层则使用softmax函数产生一个概率分布,即中心词的窗口内的上下文词各种取值的概率。

通过训练Skip-gram模型,我们可以得到每个词的词向量表示,这些词向量捕捉了词与词之间的语义和句法关系。一旦模型训练完成,这些词向量就可以被用于各种NLP任务,如文本分类、命名实体识别、情感分析等。

总的来说,Skip-gram模型通过预测中心词的上下文来学习词的向量表示,是一种有效的词嵌入方法。

image-20240310112653206

skip-gram 示例

image-20240310112953588

进行训练

image-20240310113301056

负采样模型

image-20240310113604320

训练过程

image-20240310113953731

image-20240310113906094

《Keras实战》

模型使用情况:

  • TensorFlow 可以自己实现模型
  • pytorch

image-20240310114253313

代码解析

一、普通神经网络(一维):

  • lr – learning rate : 学习率
  • train_loss / val_loss == 训练集的损失 验证集的损失 (validate、validation)
  • train_acc / val_acc == 训练集的准确度 / 验证集的准确度 (validate、accuracy== 准确度 )

导包

image-20240310162404860

步骤解析

数据预处理

image-20240310170455632

lab 标签转化

  • 将 cat、dog、panda - 3种标签,用二进制 000方式唯一表示,便于计算机计算(one-hot 格式)

image-20240310170221289

构建网络模型 - model

初始化参数

  • 这里损失函数,描述有误
  • 损失函数是为了计算 xi 通过 wi 的计算得到的结果

image-20240310174049689

softmax 分类器

  • 转化为概率,结果

打印结果

image-20240310195344357

Dense() 方法

densely connection === 密集连接 、 即全连接 用于运算过程的全连接运算

  • 全连接层 densely connection layer

Dense方法是Keras中定义网络层的基本方法,其作用是将前一层(通常是卷积层或池化层)的输出进行扁平化并连接到输出层或下一个隐藏层。Dense层的工作原理如下:

  1. 输入扁平化:卷积层和池化层的输出是二维(或更高维)特征图,每个特征图对应一个特征。Dense层将这些特征图转换为一个长向量,以便输入到下一层。
  2. 连接所有特征:将扁平化的向量连接到Dense层后,每个神经元都与前一层的所有特征相连,这使得Dense层能够捕捉输入数据中所有特征之间的复杂关系。
  3. 学习权重:Dense层中的每个连接都有一个权重,模型通过训练过程中调整这些权重来学习从输入特征到输出类别的映射。这些权重使得模型能够在训练数据上学习到合适的特征表示和分类决策。
  4. 非线性激活函数:通常,在Dense层之后会应用一个非线性激活函数(如ReLU),以增加模型的表示能力并引入非线性因素,从而能够解决更加复杂的分类问题。

Dense层的函数为keras.layers.Dense(),其参数包括:

  • units:神经元节点数,即输出空间维度。
  • activation:该层使用的激活函数。
  • use_bias:布尔值,该层是否使用偏置向量。
  • kernel_initializer:权重初始化方法。
  • bias_initializer:偏置初始化方法。
  • kernel_regularizerbias_regularizer:权重和偏置的正则化方法。
  • kernel_constraintbias_constraint:权重和偏置的约束方法。

在实际使用中,可以根据具体需求调整这些参数,以达到最佳的训练效果。

学习率对结果的影响

  • 0.001 / 0.01

image-20240310162209679

Drop-out

  • 减小过拟合程度

image-20240310162821695

Truncated Normal

  • 截断的高斯分布
  • stddev 值越小,过拟合程度越低

image-20240310164200758

image-20240310164007714

二、CNN 卷积- 多维

  • 卷积层 不加 Drop-out 删除每层的神经元

搭建模型

image-20240310171411922

image-20240310172821458

BatchNormalization - 正常化

  • 矫正数据

image-20240310195958127

作用:

image-20240310200643014

三、LSTM 网络模型

model

image-20240312160649768

config

image-20240312160929288

code - layer

image-20240312161400582

image-20240312161242506

GAN

对抗生成网络

  • 超分辨率重构

image-20240312203344159

Loss 函数

  • 计算损失值:判断结果的正确度

image-20240312204301743

image-20240312204705006

Generator

  • 生成器

image-20240312205336393

discriminator

  • 辨别器

image-20240312205108614

判断

  • genenrator

image-20240312210145407

  • discriminator

image-20240312210301162


深度学习-入门
http://example.com/2024/03/13/深度学习-神经网络/深度学习/
作者
where
发布于
2024年3月13日
许可协议