首页 > 其他分享 >Deep Learning

Deep Learning

时间:2024-04-18 09:44:39浏览次数:25  
标签:RNN 卷积 模型 boldsymbol Deep Learning CNN mathcal

Deep Learning

基础知识

  1. 损失函数

    • MSE(mean square error loss)(均方误差)
    • CEE(cross entropy error loss)(交叉熵误差)
  2. 反向传播(backward):

    Sigmoid:

    sigmoid

    ReLU:

    relu

    Add: (直接传播,不发生改变)

    Multiply: (相当于互换输入)

    mutiply

    Affine: (矩阵乘法,也是交替相乘,不过需要考虑矩阵的形状,进行相应的转置)

    affine

  3. 参数优化器

  4. 权重衰退(weight decay):

    一般取值weight_decay=1e-4

  5. Dropdout(暂退法)

    作用:删除部分神经元,防止模型过拟合

\[\begin{aligned} h' = \begin{cases} ​ 0 & \text{ 概率为 } p \\ ​ \frac{h}{1-p} & \text{ 其他情况} \end{cases} \end{aligned} \]

​ 按照概率p删去神经元结点,保留下来的神经元的值需要增大(正则化,期望保持不变)

  1. Batch Norm(批量归一化)

    Covariant(协方差):

    定义式:$$\begin{matrix}Cov\left(X,Y\right)=E\left[\left(X-E\left[X\right]\right)\left(Y-E\left[Y\right]\right)\right]\end{matrix}=E[XY]-E[X]E[Y]$$

    意义:表示X、Y两个维度偏离各自均值的程度,如果Cov > 0,则说明两者正相关,如果Cov < 0 则说明负相关,Cov = 0 则说明相互独立

    运算符:BN()

    首先对输入的数据进行归一化:

    \[\begin{gathered}\hat{\boldsymbol{\mu}}_{\mathcal{B}}=\frac1{|\mathcal{B}|}\sum_{\mathrm{x}\in\mathcal{B}}\mathrm{x},\\\hat{\boldsymbol{\sigma}}_{\mathcal{B}}^2=\frac1{|\mathcal{B}|}\sum_{\mathbf{x}\in\mathcal{B}}(\mathbf{x}-\hat{\boldsymbol{\mu}}_{\mathcal{B}})^2+\epsilon.\end{gathered} \]

    得到归一化后的均值和方差(方差加上了一个很小的数 \(\epsilon\) 防止除以0),之后通过批量归一化层(如下)

    \[\mathrm{BN}(\mathbf{x})=\boldsymbol{\gamma}\odot\frac{\mathbf{x}-\hat{\boldsymbol{\mu}}_{\mathcal{B}}}{\hat{\boldsymbol{\sigma}}_{\mathcal{B}}}+\boldsymbol{\beta}. \]

    通过训练 \(\gamma\) (拉伸)和 \(\beta\) (偏移)两个参数,BN运算位于输入之后,激活函数之前

    bn

  2. 卷积(CNN)

    卷积层的参数数量:in_channels * out_channels * kernel_size

    解释

    1*1卷积层:一般用于降低通道数(减少参数)

    kernel_size=1:相当于全连接层

    nn.Flatten():将4D的tensor转换成2D的tensor(只保留了张量个数的维度,将通道和高宽展平了)

    1. LeNet

    2. AlexNet(相当于层数更多的LeNet网络,最后有一个dropout层用来简化模型参数)

    3. VGG(将模型特定的层抽出合并成一个块,称为VGG块)

      -> 卷积层 -> 激活函数 (-> 卷积层 -> 激活函数 ...) -> 汇聚层

      每一个vgg块由多个卷积层、激活函数叠加再加上一个池化层组成,一个vgg网络由多个vgg块组成

    4. NiN

      nin块由卷积层、激活函数和两个1X1的卷积层组成

      去掉了全连接层,降低了过拟合的概率,并减少了参数的数量

      NiN

    5. GoogLeNet

      卷积层数超过100层

      重要思想:将不同的卷积模块封装成一个stage

    6. ResNet

      ResNet块

      resnet block

      重要思想

      将原来的模型 到了卷积后的模型中,能够避免梯度变得过小(梯度消失)

      *问题:当神经网络较深时,梯度很容易变得很小(网络参数没法更新)

      image

    7. DenseNet

  3. RNN(区域神经网络)

  4. 多GPU并行

    • 将批量数据均分到多个GPU上进行计算
    • 将模型拆分成多个小模型存在不同的GPU上
  5. 分布式计算

  6. train(训练):

    torchvision.datasets.ImageFolder(root: str, tranform) -> Dataset
    # 读取root中的数据集,并返回处理好后的Dataset
    
    torch.utils.data.DataLoader(dataset: Dataset, batch_size, shuffle, num_workers) -> DataLoader(Iterator)
    # 将获取Dataset转换成DataLoader(Iterator类型)
    
    net = torchvision.models.resnet18(pretrained=False)
    net.fc = nn.Linear(net.fc.in_features, <out_features>)
    nn.init.xavier_uniform_(net.fc.weight)
    # 使用定义好的网络结构,并修改最后一层的输出形状
    

目标检测

将物体识别出来并标出图像中物体的位置和物体的类别

  • 基于锚框(anchor)的检测算法

    Bounding box(锚框)

    image

    包含边框左上角和右下角的坐标、边框中物体的类别(coco数据集中有80个类,这个就是长度为80的向量)、置信度(0~1)

IOU(交并比)

iou

通过计算预测框与预先标定的框的交、并区域面积比较

NMS(非极大值抑制)

image

语义分割

将物体的边缘分割出来

实例分割

不仅将物体的边缘分割出来,还能够确定每个物体的类别

序列模型

  • 自回归模型

    马尔科夫链

  • N元语法

    认为第N个词的出现只与前面N-1个词有关
    n-gram
    一元语法忽略了文本之间的信息

  • 拉普拉斯平滑法

    作用:处理零概率问题(在观测某个样本库时,不能因为一个事件没有发生而认为该事件概率为0,即不可能事件)

    公式:(将所有的事件数目都+1)

    image

    image

RNN(循环神经网络)

RNN的输出取决于当前时刻输入和上一时刻的输出(将输出继续作为输入,相当于循环)

  • 应用

    image

优化算法

损失函数

  • MSE (mean square error)

    均方误差,用于数值回归模型

  • CE (cross entropy)

    交叉熵损失,用于分类模型

优化算法

  • SGD

    随机梯度下降

    \[\boldsymbol{W}_{t+1}=\boldsymbol{W}_t-\eta\nabla_{\boldsymbol{W}_t}l \]

  • SGD-Momentum

    包含动量(使用指数加权平均法对梯度下降进行平滑处理

    \[\begin{aligned}&\boldsymbol{V}_t=\beta\boldsymbol{V}_{t-1}+(1-\beta)\nabla_{\boldsymbol{W}_t}l\\&\boldsymbol{W}_{t+1}=\boldsymbol{W}_t-\eta\boldsymbol{V}_t\end{aligned} \]

    指数加权平均

    \[v_t=\beta*v_{t-1}+(1-\beta)\theta_t \]

    \(v_t\) 为第t次的平均值,\(\theta_t\) 为第t次的测量值

    image

    作用:1. 抚平短期波动,起到了平滑的作用。2. 还能够将长线趋势或周期趋势显现出来。

    优点:运用递推的方法求解n时刻的平均值,并且只需要保存 (n-1) 时刻的平均值和 n 时刻的值即可,节省内存(AdaGrad还需要存储 n)。\(\beta\) 经验值取 0.9

  • AdaGrad

    image

    随着算法不断迭代,r会越来越大,整体的学习率会越来越小

    优点:学习率发生改变

  • RMSProp

    image

    求累计平方梯度的方法与AdaGrad不同

  • Adam(更常用)

神经网络原理分析

  1. 越靠近输入层的卷积层(底层)包含更多的边缘轮廓信息,越靠近输出层的卷积层(顶层)包含更多的语言信息(抽象的

  2. 越靠近顶层的feature map分辨率越低

    经过众多 conv, pooling 操作之后,feature map 的尺寸减小,虽然包含了较多的语言信息,但是缺失了边缘轮廓等的位置信息(一般是进行上采样操作

经典网络模型

分类/回归

区别在于最后全连接层的输出
分类模型最后的softmax层输出长度为分类类别数的one-hot vector,回归模型中最后的softmax层输出长度为1(即一个0~1的数值)

  • MLP(多层感知机)

    使用全连接层

  • CNN(卷积神经网络)

时序序列

包含文本序列和音频序列

  • RNN
  • LSTM
  • GRU

生成式模型

  • 文本生成模型
    • CNN+RNN
    • transformer(end-to-end)
  • 图像生成模型
    • VAE
    • GAN
    • Diffusion

深度学习中的操作

前向传播

  • 卷积(conv)
  • 汇聚(pooling)
  • 残差连接(resnet)

反向传播

实践和应用

目标检测

  • RCNN(区域卷积神经网络)

    将CNN用于目标检测中

    原理:通过Selective Search算法获取2000个选框,然后对每个选框区域使用CNN提取feature map,再将其输入到21个(20个类别+1个背景)SVM分类器中得到每个类别的概率,然后对所有候选框最大概率类别进行NMS操作(非极大值抑制)从而筛选出最后结果。

    Selective Search(选择性搜索)

    • 穷举法(对每个像素随机生成多个选框)
    • 相似性度量
    • 颜色相似性(色彩直方图)
    • 纹理相似性

    SPPNet(空间金字塔池化层)

    image

    作用:对图像进行多尺度的卷积操作(分别送入尺寸不同但维度相同的卷积层中前向传播)
    优点:避免了在图片输入网络前进行resize操作(CNN网络要求输入的数据尺寸固定),在最后一层将不同维度的feature map进行合并,得到固定长度的向量作为CNN网络的输入

  • RCNN(Region CNN)

  • Fast RCNN

  • Faster RCNN

  • FPN(特征金字塔)

OCR文字识别

  1. 检测文本的位置(分割模型)

    • CTPN

    • DBNet

  2. 识别区域内文字内容(RNN + CTC)

    • CRNN

    • CTC

      作用:常用在语音识别、文本识别等领域的算法,用来解决输入和输出序列长度不一、无法对齐的问题

      CTC通常接在RNN的后面,与RNN结合使用

标签:RNN,卷积,模型,boldsymbol,Deep,Learning,CNN,mathcal
From: https://www.cnblogs.com/scy157609962/p/18141956

相关文章

  • Learning-Scrapy-中文版(一)
    LearningScrapy中文版(一)零、序言序言第1章Scrapy介绍第2章理解HTML和XPath第3章爬虫基础第4章从Scrapy到移动应用第5章快速构建爬虫第6章Scrapinghub部署第7章配置和管理第8章Scrapy编程第9章使用Pipeline第10章理解Scrap......
  • Learning-Scrapy-中文版(三)
    LearningScrapy中文版(三)八、Scrapy编程到目前为止,我们创建爬虫的目的是抓取数据,并提取信息。除了爬虫,scrapy可以让我们微调它的功能。例如,你会经常碰到以下状况:你在同一个项目的爬虫间复制粘贴了很多代码。重复的代码更多是关于处理数据,而不是关于数据源。你必须写脚本,好......
  • Learning-Scrapy-中文版(二)
    LearningScrapy中文版(二)三、爬虫基础本章非常重要,你可能需要读几遍,或是从中查找解决问题的方法。我们会从如何安装Scrapy讲起,然后在案例中讲解如何编写爬虫。开始之前,说几个注意事项。因为我们马上要进入有趣的编程部分,使用本书中的代码段会十分重要。当你看到:$echohell......
  • win11安装deepinWSL
    背景近期接收到反馈说win11下deepinWSL无法使用,随即搞了台windows11最新版本试了试,果然不能用……我启动的时候给我报了个这个错误:这玩意谁能看懂是啥原因……其实所有的WSL可能都不能用了,解决方法都可以参考下面内容分析随即找到我们的研发大佬帮忙看看。Q:之前明明......
  • deeplink
    deeplink1.什么是deeplink?简而言之,就是你在手机浏览器上面点击一个链接,可以跳转到另一个app内部的某一个页面,不是app正常打开时显示的首页内容。在早期的时候各个app之间就像大海(Android,ios)中的孤岛,互相之间没有什么联系,一项技术的出现,必然是为了解决某些痛点,直到deep......
  • [NeuralPS2023]How Re-sampling Helps for Long-Tail Learning
    这篇文章作者写得非常详细,读起来非常舒适。Contribution:在long-taileddata中,re-sampling不一定有效。re-sampling的失败可能是对于不相关的context过拟合导致的,作者设计了实验论证了这一假说。在single-stage的框架下,作者提出了上下文转换增强(contextualtransformationau......
  • 【论文随笔】深度推荐系统的自动化_一项调查(Automl for deep recommender systems_ A
    前言今天读的论文为一篇于2021年1月发表在ACMTransactionsonInformationSystems的论文,本文是一篇关于深度推荐系统自动化机器学习(AutoML)的综述,由RuiqiZheng、LiangQu、BinCui、YuhuiShi和HongzhiYin共同撰写。文章首先提出了一个抽象概念——AutoMLforDeepRecommende......
  • Deep Deterministic Policy Gradient(DDPG)算法讲解笔记
    DDPGDeepDeterministicPolicyGradient,基于actor-critic模型提出了一个有效的valuebased连续型空间的RL算法,引入了一些帮助训练稳定的技术。基础:DQN,Batchnormm,Discretize,微积分backgroundDQN改进的推广Policybased方法(TRPO)已经在actionspace取得突破传统disc......
  • 一种提升深度多视角行人检测的泛化性能的方法 Bringing Generalization to Deep Mult
    一种提升深度多视角行人检测的泛化性能的方法BringingGeneralizationtoDeepMulti-ViewPedestrianDetection论文url:https://openaccess.thecvf.com/content/WACV2023W/RWS/html/Vora_Bringing_Generalization_to_Deep_Multi-View_Pedestrian_Detection_WACVW_2023_paper.......
  • Deep Learning with Differential Privacy
    差分隐私深度学习(CCS16'(CCFA))时隔半年重读这篇论文,终于懂了个七七八八,现在来做一下总结。摘要基于神经网络的机器学习技术在众多领域都取得了令人瞩目的成果。通常,模型的训练需要大量具有代表性的数据集,这些数据集可能是众包的,包含敏感信息。模型不应暴露这些数据集中的隐......