深度学习-入门
深度学习
基础概念
重点:特征工程
特征工程
特征工程:如何提取特征
神经网络
线性函数
损失函数
分类器
- 线性代数
前向 / 反向传播
前向传播
反向传播 - 求导
- 求(偏)导
- 逐层、链式
反向传播 的 梯度(贡献值、导数值、斜率)计算
正常是对矩阵求偏导
矩阵求导
在数学和机器学习领域,对矩阵求偏导数通常指的是计算矩阵变量相对于标量变量的偏导数。这里我们讨论的是多元函数中矩阵元素作为自变量的情况,或者函数输出为矩阵时对其输入变量求导。
一、对矩阵中的每个元素求偏导数
假设有一个函数 f(X)
,其中 X
是一个 m×n 矩阵,X = [x_ij]
,i 从 1 到 m,j 从 1 到 n,那么对矩阵 X 中每一个元素 x_ij 求偏导数就是分别对 i 和 j 的索引进行求导:
1 |
|
对于具体的示例,考虑函数:
1 |
|
对 X 的任意元素 x_ij 求偏导数:
1 |
|
二、矩阵微分(Matrix Calculus)
在更高级的矩阵求导中,我们可能关心整个矩阵而不是单个元素。这时会使用到雅可比矩阵的扩展形式——弗雷德霍姆矩阵(Frobenius Inner Product)或梯度向量表示矩阵的导数。对于向量化的函数,如 f(X): R^(m×n) → R,其梯度是一个四阶张量,但通常被重塑成一个 (mn)×(mn) 的矩阵,以便于处理。
例如,如果 f(X) 是上述例子中的迹运算,那么整个矩阵的梯度可以写成:
1 |
|
这里,整个矩阵的梯度实际上包含了所有元素的偏导数组成的新矩阵。
三、矩阵乘法链式法则
对于包含矩阵乘法的复合函数,可以使用链式法则来求导。比如对于 g(X) = h(WX+b),其中 W 是一个 n×m 矩阵,X 是一个 m×p 矩阵,b 是一个 n×p 的偏置矩阵,h 是一个关于矩阵的可微函数,则 g 对 X 的导数可通过以下方式计算:
1 |
|
其中 Y = WX + b,dh/dY 表示将 Y 视为一个整体的矩阵求导结果。
以上是对矩阵求偏导的一些基本概念和示例。实际应用中,根据具体函数形式选择合适的求导规则,并结合矩阵微积分的知识进行计算。
神经网络组成
正则化
- 控制神经网络的强度
激活函数
参数初始化
Drop-Out
- 降低神经网络的强度 (训练阶段)
卷积神经网络 - CONV NN
卷积神经网络 — 多维
神经网络 — 一维
卷积 :Convolution
卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习算法,是深度学习的代表算法之一。它是一类包含卷积计算且具有深度结构的前馈神经网络,具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks,SIANN)”。
卷积神经网络的应用非常广泛,以下是一些常见的使用场景:
- 图像分类:卷积神经网络可以对输入的图像进行自动特征提取和分类,将图像分为不同的类别,如动物、植物、物品等。
- 物体检测:在图像中检测出不同的物体,并标注出其位置。例如,在自动驾驶领域,CNN可以用于识别道路上的车辆、行人和其他障碍物。
- 人脸识别:卷积神经网络可以通过学习人脸的特征来进行人脸识别,广泛应用于安全监控、身份验证等领域。
- 自然语言处理:CNN也被用于自然语言处理任务,如文本分类、情感分析、机器翻译等。它可以学习文本中的语义信息,进行高效的处理。
除了上述常见场景,卷积神经网络还在医学影像分析、视频处理、安全监控等多个领域发挥着重要作用。通过不断的研究和优化,卷积神经网络的应用场景还将进一步扩大。
如需了解更多卷积神经网络的内容,可以查阅深度学习、机器学习等领域的专业书籍,也可以访问相关学术网站,查看最新的研究成果和应用案例。
应用 - CV
- 无人驾驶
- 超分辨率重构 - 图像修复
- (图像)分类与检索
- 图像检测
- 人脸识别
在深度学习中,CV代表的是计算机视觉(Computer Vision)。计算机视觉是深度学习中最受欢迎的领域之一,主要应用包括图像分类、对象检测、图像分割和对象追踪等。这些应用都是基于深度学习的算法,通过对大量图像数据的学习,让计算机能够理解和解析图像中的信息。例如,图像分类任务要求模型从给定的分类集合中给图像分配一个标签;对象检测则是定义图像中存在的对象,对其进行标记并输出边界框;图像分割则是将整个图像分割成像素段,然后进行分类和标记;而对象追踪则在自动驾驶汽车等场景中有着重要的应用。
如需更深入了解CV在深度学习中的具体应用和技术细节,建议查阅相关领域的专业书籍或研究文献。
概念
- 卷积做了什么
图像通道
计算方式:
堆叠的卷积层
- 增加filter的维度
卷积层参数
步长
卷积核尺寸
- 每次提取的矩阵的大小:3 x 3 x 4, 即 3 x 3
蓝色部分
边缘填充
卷积核个数
- 几个filter,计算多少层
卷积结果的计算
参数共享
- 减少 Wi 的参数个数
池化层
max-pooling - 最大池化
计算结果
- Relu 为激活函数,不参与计算
经典卷积神经网络
- 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个类别预测的值。
图2 网络结构说明图
VGG - 知乎
VGG网络结构
下面是VGG网络的结构(VGG16和VGG19都在):
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。
图5 ResNet网络结构图
表1 不同深度的ResNet
下面我们再分析一下残差单元,ResNet使用两种残差单元,如图6所示。左图对应的是浅层网络,而右图对应的是深层网络。对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。有两种策略:(1)采用zero-padding增加维度,此时一般要先做一个downsamp,可以采用strde=2的pooling,这样不会增加参数;(2)采用新的映射(projection shortcut),一般采用1x1的卷积,这样会增加参数,也会增加计算量。短路连接除了直接使用恒等映射,当然都可以采用projection shortcut。
图6 不同的残差单元
作者对比18-layer和34-layer的网络效果,如图7所示。可以看到普通的网络出现退化现象,但是ResNet很好的解决了退化问题。
图7 18-layer和34-layer的网络效果
最后展示一下ResNet网络与其他网络在ImageNet上的对比结果,如表2所示。可以看到ResNet-152其误差降到了4.49%,当采用集成模型后,误差可以降到3.57%。
表2 ResNet与其他网络的对比结果
说一点关于残差单元题外话,上面我们说到了短路连接的几种处理方式,其实作者在[文献2]中又对不同的残差单元做了细致的分析与实验,这里我们直接抛出最优的残差结构,如图8所示。改进前后一个明显的变化是采用pre-activation,BN和ReLU都提前了。而且作者推荐短路连接采用恒等变换,这样保证短路连接不会有阻碍。感兴趣的可以去读读这篇文章。
图8 改进后的残差单元及效果
感受野
递归神经网络 - 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
自然语言处理 - NLP
词向量模型 – Word2Vec
- 目的:得到每一个词的多维向量表达
输入与输出的 概念
- 目的:输入- 词向量,能够提示 “模型”
构建训练数据
- 训练模型之前,先构建一个数据库,即类似于单词表、关联词库,这样我们 input,就能得到想要的、合理的 output
模型
CBOW
- 通过上下文,预测当前(空白)词
CBOW(Continuous Bag of Words)是Word2Vec中的一种模型,主要用于学习词的向量表示(即词嵌入)。Word2Vec是谷歌在2013年开源的一个用于获取词向量的工具,它将词语转化为一种数学上的表达,使得语义上相似的单词在数学表达上也同样接近。
在CBOW模型中,目标是根据上下文(即一个词的周边词)来预测当前词。模型会接收一个词序列(例如一个句子)作为输入,然后使用一个滑动窗口来选取上下文词。对于每个目标词,模型会尝试通过上下文词的词向量之和(有时还包括权重)来预测它。模型的结构通常包括输入层、隐藏层和输出层。
以下是CBOW模型的基本工作流程:
- 输入层:对于给定的词序列中的每个词,模型会选取一个固定大小的窗口(例如前后各5个词),并将窗口内的词作为上下文。这些上下文词的词向量被拼接起来(有时也会取平均)作为模型的输入。
- 隐藏层:隐藏层通常是一个简单的线性层,它对输入层的输出进行线性变换。在CBOW模型中,隐藏层的输出通常被视为输入词序列中目标词的预测向量。
- 输出层:输出层是一个softmax层,它根据隐藏层的输出计算词汇表中每个词的概率分布。训练的目标是使得目标词的概率最大化。
通过反向传播和梯度下降算法,CBOW模型可以学习到每个词的词向量表示,这些词向量捕捉了词与词之间的语义和句法关系。一旦模型训练完成,这些词向量就可以被用于各种NLP任务,如文本分类、命名实体识别、情感分析等。
需要注意的是,CBOW模型是一种基于上下文的词嵌入方法,它假设上下文中的词与目标词具有相似的语义。然而,这种假设并不总是成立,因此在实际应用中可能需要结合其他模型或方法进行改进。
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模型通过预测中心词的上下文来学习词的向量表示,是一种有效的词嵌入方法。
skip-gram 示例
进行训练
负采样模型
训练过程
《Keras实战》
模型使用情况:
- TensorFlow 可以自己实现模型
- pytorch
代码解析
一、普通神经网络(一维):
- lr – learning rate : 学习率
- train_loss / val_loss == 训练集的损失 验证集的损失 (validate、validation)
- train_acc / val_acc == 训练集的准确度 / 验证集的准确度 (validate、accuracy== 准确度 )
导包
步骤解析
数据预处理
lab 标签转化
- 将 cat、dog、panda - 3种标签,用二进制 000方式唯一表示,便于计算机计算(one-hot 格式)
构建网络模型 - model
初始化参数
- 这里损失函数,描述有误
- 损失函数是为了计算 xi 通过 wi 的计算得到的结果
softmax 分类器
- 转化为概率,结果
打印结果
Dense() 方法
densely connection === 密集连接 、 即全连接 用于运算过程的全连接运算
- 全连接层 densely connection layer
Dense方法是Keras中定义网络层的基本方法,其作用是将前一层(通常是卷积层或池化层)的输出进行扁平化并连接到输出层或下一个隐藏层。Dense层的工作原理如下:
- 输入扁平化:卷积层和池化层的输出是二维(或更高维)特征图,每个特征图对应一个特征。Dense层将这些特征图转换为一个长向量,以便输入到下一层。
- 连接所有特征:将扁平化的向量连接到Dense层后,每个神经元都与前一层的所有特征相连,这使得Dense层能够捕捉输入数据中所有特征之间的复杂关系。
- 学习权重:Dense层中的每个连接都有一个权重,模型通过训练过程中调整这些权重来学习从输入特征到输出类别的映射。这些权重使得模型能够在训练数据上学习到合适的特征表示和分类决策。
- 非线性激活函数:通常,在Dense层之后会应用一个非线性激活函数(如ReLU),以增加模型的表示能力并引入非线性因素,从而能够解决更加复杂的分类问题。
Dense层的函数为
keras.layers.Dense()
,其参数包括:
units
:神经元节点数,即输出空间维度。activation
:该层使用的激活函数。use_bias
:布尔值,该层是否使用偏置向量。kernel_initializer
:权重初始化方法。bias_initializer
:偏置初始化方法。kernel_regularizer
、bias_regularizer
:权重和偏置的正则化方法。kernel_constraint
、bias_constraint
:权重和偏置的约束方法。在实际使用中,可以根据具体需求调整这些参数,以达到最佳的训练效果。
学习率对结果的影响
- 0.001 / 0.01
Drop-out
- 减小过拟合程度
Truncated Normal
- 截断的高斯分布
- stddev 值越小,过拟合程度越低
二、CNN 卷积- 多维
- 卷积层 不加 Drop-out 删除每层的神经元
搭建模型
BatchNormalization - 正常化
- 矫正数据
作用:
三、LSTM 网络模型
model
config
code - layer
GAN
对抗生成网络
- 超分辨率重构
Loss 函数
- 计算损失值:判断结果的正确度
Generator
- 生成器
discriminator
- 辨别器
判断
- genenrator
- discriminator