type
status
date
slug
summary
tags
category
icon
password

深度学习入门

二、感知机 perceptron

  1. 📖 感知机:感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
    1. 具体地说,w1 和w2 是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1 的程度)的参数。
      notion image
  1. 单层感知机的局限
  • 单层感知机无法实现异或门/单层感知机无法分离非线性空间 ( 使用2层感知机表示异或门)
只能实现与门、与非门、或门
notion image
  • 单层感知机只能表示一条直线分割的空间 ( 多层感知机可以表示非线性空间)
notion image
 

三、神经网络

  1. 📖 神经网络:由无数个神经元有机组合搭建成的网络,能够模拟人脑神经。
    1. 分为输入层、中间层(隐藏层)、输出层
  1. ⚠️ 激活函数(activation function) : 将输入信号的总和转换为输出信号。
  • 作用:决定如何来激活输入信号的总和。
  • sigmod函数:
    • notion image
  • 阶跃函数:
    • notion image
  • Relu(Rectified Linear Unit)函数:
    • notion image
  • softmax函数:
    • 输出为0-1之间的实数,输出总和为1。
      notion image
sigmod函数和阶跃函数的比较
  1. 二者平滑性不同
  1. 阶跃函数只能返回0或1信号,而sigmod函数可以返回0-1之间的实数
  1. 二者都是非线性函数
  1. 输入较小时,输出接近0;输入较大时,输出接近1。
  1. sigmod的导数在任何地方都不为0,阶跃函数的导数在绝大多数地方都为0。
神经网络的激活函数必须使用非线性函数?
因为使用线性函数的话,加深神经网络的层数就没有意义。为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。
例如:
输出层激活函数的选择
  1. 回归问题使用恒等函数
  1. 二元分类问题使用sigmod函数
  1. 多元分类问题使用softmax函数
  1. 定义
  • 前向传播:将输入数据通过网络中的权重和偏置计算,最终得到输出结果。
  • 正规化normalization:把数据限定到某个范围内的处理 称为正规化。
  • 预处理pre-processing:对神经网络的输入数据进行某种特定的转换 称为预处理。
  • 批处理:批处理(Batch)就是对某对象进行批量的处理。
    • 为什么要进行批处理?
      大多数处理数值计算的库都进行了能够高效处理大型数组运算的最优化,因此批处理可以大幅缩短每张图像的处理时间;当数据传送成为瓶颈时,批处理可以减轻数据总线的负荷。 总之,批处理一次性计算大型数组比分开逐步计算各个小型数组速度更快
  • 批:输入数据的集合 称为批。
 

四、神经网络的学习

  1. 定义:
  • 泛化能力(generalization ability):模型在训练数据上学习到一些知识后,处理未被观察过的数据(不包含在训练数据中的数据)的能力。
  • 过拟合(overfitting):只对某个数据集过拟合的状态称为过拟合。
  • 机器学习中数据分类:
      1. 训练数据(监督数据):用来对模型进行训练学习的数据,寻找最优的参数
      1. 测试数据:测试模型泛化能力的数据
      1. 验证数据:评估超参数好坏的数据
  1. ⚠️损失函数:用来估量模型的输出真实值之间的差距,给模型的优化指引方向,即损失函数。
  • 均方误差(mean sequared error)
    • notion image
      k为数据的维度
      tk为训练(监督)数据,正确为1,错误为0
      yk为神经网络的输出
  • 交叉熵误差(cross entropy error)前者为单个数据,后者为全部数据
    • notion image
为什么要设定损失函数?
因为模型是根据损失函数的值,然后通过反向传播去更新各个参数,来降低真实值与预测值之间的损失,使得模型生成的预测值往真实值方向靠拢,从而达到学习的目的。
为什么不用识别精度作为指标?
识别精度对微小的参数变化基本无反应,即便有反应,它的值也是不连续地、突然地变化。
作为激活函数的阶跃函数也有同样的情况,如果使用了阶跃函数,那么即便将损失函数作为指标,参数的微小变化也会被阶跃函数抹杀,导致损失函数的值不会产生任何变化。
  1. 📖 数值微分(bumerical differentiation):利用微小的差分求导数的过程称为数值微分
    1. 📖 解析性求导:基于数学的推导式求导数的过程,求导得到的导数是不含误差的“真的导数”
      📖 梯度:由全部变量的偏导数汇总而成的向量
      📖 梯度法(gradient method):通过不断地沿梯度方向前进,逐渐减小函数值的过程就是梯度法
      📖 学习率(learning rate):决定在一次学习中应该学习多少,以及在多大程度上更新参数就是学习率。
      📖 超参数:和神经网络的参数(权重和偏置)性质不同的参数,如学习率。它是人工设定的、不需要学习、根据多次尝试设定。
  1. ⚠️神经网络的学习步骤:
    1. mini-batch:从训练数据中随机选出一部分数据,这部分数据成为mini-batch,目标是减少mini-batch的损失函数的值
    2. 计算梯度:计算损失函数关于各个权重参数的梯度
    3. 更新参数:将权重参数沿梯度方向进行微小更新
    4. 重复:重复步骤1、步骤2、步骤3
  1. SGD(随机梯度下降法):使用随机选择的mini batch数据,通过梯度下降法更新参数。
  1. epoch:是一个单位。一个 epoch表示学习中所有训练数据均被使用过一次时的更新次数
 

五、误差反向传播法

  1. 定义:
  • 正向传播:从计算图的出发点到结束点的传播
  • 反向传播:从计算图的结束点到出发点的传播
      1. 加法节点:不变。
      1. 乘法节点:将上游的值乘以正向传播时的输入信号的“翻转值”后传递给下游。
      1. relu函数:x>0时,导数为1 ;x ≤0 时,导数为0。
        1. notion image
      1. sigmod函数:导数等于
        1. notion image
      1. Affine层
        1. notion image
      1. 批版本的Affine层
        1. notion image
  • 为什么用计算图解题?
      1. 局部计算使各个节点致力于简单的计算,从而简化问题。
      1. 计算图可以将中间的计算结果全部保存起来。
      1. 计算图可以通过反向传播高效计算导数。
  • 链式法则:如果某个函数由复合函数表示,则该复合函数的导数可以用 构成复合函数的各个函数的导数的乘积表示。
  • 梯度确认:确认数值微分求出的梯度结果和误差反向传播法求出的结果是否一致的操作称为梯度确认。
  1. ⚠️给定任务,画计算图,(通过链式法则计算梯度)计算反向传播
  • 问题一:计算图
    • notion image
      notion image
      notion image
  • 问题二:计算图 反向传播
    • notion image
      notion image
      notion image
      notion image
  1. 数值微分和误差反向传播比较
    1. 数值微分实现简单,但计算耗费较多时间
    2. 误差反向传播可以快速高效地计算梯度
 

六、与学习相关的技巧

  1. 最优化:寻找最优参数,使损失函数尽可能小的过程叫做最优化
    1. 随机梯度下降法(SGD):使用参数的梯度,沿梯度方向更新参数,并重复步骤多次,从而逐渐靠近最优参数的过程叫做SGD。
      1. SGD在椭圆空间下降会走之字形。
        notion image
      2. 优点:简单;容易实现
      3. 缺点:在解决某些问题时没有效率;根本原因是梯度方向并没有指向最小值的方向
    2. Momentum:参照小球在碗中滚动的物理规则进行移动
      1. notion image
    3. AdaGrad: 为参数的每个元素适当调整学习率,使得变动大的参数的学习率逐渐减少
      1. notion image
        h保存了以前的所有梯度值的平方和
    4. Adam:融合Momentum和AdaGrad两种方法,组合两个方法的优点,实现参数空间的高效搜索;进行超参数的“偏置校正”
    5. 对比:超参数(学习率等)的设定值不同,结果也会发生变化。
      1. notion image
  1. 权重初始值
    1. 为什么不可以将权重初始值设为0/全部初始化相同?
      1. 因为在误差反向传播中,所有的权重值都会进行相同的更新。
        如果权重被更新为相同的值,并拥有了对称的值(重复的值),这使得神经网络拥有许多不同权重的意义丧失了。为了防止“权重均一化”(严格地讲,是为了瓦解权重的对称结构),必须随机生成初始值。
    2. 梯度消失(gradient vanishing):偏向0和1的数据分布会造成反向传播中梯度的值不断变小,最后消失。
    3. Xavier初始值激活值分布不受限制,表现力更强。
      1. 初始值:前一层节点数为n, 初始值使用标准差为的分布
        使用条件:激活函数为sigmod函数、tanh函数(双曲正切函数)等S型曲线函数。
    4. He初始值
      1. 前一层节点数为n时,使用标准差为的高斯分布。
        使用条件:激活函数为ReLU
  1. ⚠️Batch Normalization(批标准化)以进行学习时的mini-batch为单位,按mini-batch进行正规化。具体而言,就是进行使数据分布的均值为0、方差为1的正规化。
    1. notion image
  • 优点
    • 可以使学习快速进行(可以增大学习率)。
    • 不那么依赖初始值(对于初始值不用那么神经质)。
    • 抑制过拟合(降低Dropout等的必要性)。
  1. 过拟合:只能拟合训练数据,但不能很好地拟合不包含在训练数据中的其他数据的状态。
    1. 原因
        • 模型拥有大量参数、表现力强。
        • 训练数据少。
    2. ⚠️解决(抑制过拟合的正则化技术)
        • 权值衰减:对大的权重进行惩罚、来抑制过拟合。例如:为损失函数加上权重的平方范数,这样就可以抑制权重变大。eg:L2范数、L1范数、L∞范数,适用于简单模型。
        • Dropout:在学习的过程中随机删除神经元。适用于模型复杂时。
            1. 原理:训练时,随机选出隐藏层的神经元,然后将其删除。被删除的神经元不再进行信号的传递,然后,测试时,虽然会传递所有的神经元信号,但是对于各个神经元的输出,要乘上训练时的删除比例后再输出。
            1. 集成学习:让多个模型单独的学习,推理时再取多个模型的输出的平均值。
            1. dropout和集成学习关系:dropout将集成学习的效果通过一个网络实现了。
            为什么Dropout可以抑制过拟合?(自己总结的,先介绍Dropout的原理+原因)
          • 较大程度上减小了网络的大小
          • 类似于集成学习,将集成学习的效果通过一个网络实现了,泛化能力强
  1. 超参数的验证:
    1. 超参数:各层的神经元数量、batch大小、参数更新时的学习率或权值衰减等。
    2. 为什么不能用测试数据评估超参数的性能呢?
      1. 为如果使用测试数据调整超参数,超参数的值会对测试数据发生过拟合。
  1. ⚠️超参数的最优化过程
      • 步骤0: 设定超参数的范围。
      • 步骤1: 从设定的超参数范围中随机采样。
      • 步骤2: 使用步骤1中采样到的超参数的值进行学习,通过验证数据评估识别精度(但是要将epoch设置得很小)
      • 步骤3: 重复步骤1和步骤2(100次等),根据它们的识别精度的结果,缩小超参数的范围
 

七、卷积神经网络CNN

  1. 全连接(Affine):相邻层的所有神经元都有连接
    1. 全连接层存在的问题
      1. 忽视了数据的形状
      1. 参数量巨大,容易导致过拟合
  1. 卷积层(Convolution)
    1. 卷积运算:相当于“滤波器运算”
      1. notion image
        notion image
      2. 卷积层的输入输出数据称为特征图。输入特征图、输出特征图
      3. 将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和
    2. 填充(padding):为了调整输出的大小。因为如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变为 1,导致无法再应用卷积运算。
      1. notion image
    3. ⚠️步幅应用滤波器的位置间隔称为步幅(stride)
      1. notion image
    4. 根据参数计算图像大小
      1. notion image
        notion image
        notion image
    5. 结合方块思考(三维卷积)
      1. 书写顺序为(channel, heigrt, width):(通道C,高度H,长度W)
        notion image
        多个卷积核,在通道层面上得到多个卷积输出。
        notion image
    6. 批处理
      1. notion image
  1. 池化层(Pooling)
    1. 池化是缩小高、长方向上的空间的运算。
        • 最大池化Max:从目标区域中取出最大值
        • 平均池化Average:计算目标区域的平均值
    2. ⚠️池化层的特征
        • 没有要学习的参数。池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。
        • 通道数不发生变化。经过池化运算,输入数据和输出数据的通道数不会发生变化。计算是按通道独立进行的。
        • 对微小的位置变化具有鲁棒性(健壮)。输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。
  1. 代表性CNN: LeNet、AlexNet、GoogLeNet、ResNet、VGG
  1. CNN特点:稀疏连接、权重共享、平等表达。
 

八、深度学习

  1. 深度学习:加深了层的深度神经网络。
  1. 如何提高识别精度?应对Mnist数据集。 集成学习、学习率衰减、数据扩充
  1. 数据扩充:施加旋转、垂直、水平方向上的移动;crop处理、flip处理
  1. ⚠️加深层的好处
      • 减少网络参数、扩大感受野(receptive field,给神经元施加变化的某个局部空间区域)。
        • 感受野(Receptive Field):输出特征图上每个像素对应输入图像的区域大小。深层网络的感受野决定了模型能捕获的上下文范围。
      • 分层次地分解需要学习的问题,分层次地传递信息,使学习更加高效。
      • 提高网络表现力。
 

深度学习进阶

一、神经网络的复习

notion image

二、自然语言和单词的分布式表示

  1. 📖自然语言处理(natural language processing, nlp):处理自然语言的科学,能够让计算机理解人类语言。
    1. 理解单词含义的三种方法:
      1. 基于同义词词典的方法
      2. 基于计数的方法
      3. 基于推理的方法(word2vec)
  1. 同义词词典(thesaurus):在同义词词典中,具有相同含义或类似含义的单词被归类到同一组中。
    1. ⚠️同义词词典的问题
      1. 难以顺应时代变化
      2. 人力成本高
      3. 无法表示单词的微妙差异
  1. 基于计数的方法:对语料库(corpus)中的每个单词周围的单词的出现频率进行计数并汇总,得到共现矩阵,然后将其转化为PPMI并降维,可以得到单词的分布式表示。
    1. 语料库:大量的文本数据
    2. 📖单词的分布式表示将单词表示为固定长度的向量,这种向量的特征在于它是用密集向量表示的。
    3. 📖分布式假设:猜想某个单词的含义由它周围的单词组成,这种想法就是分布式假设。
    4. 📖窗口大小目标词汇的上下文大小
      1. notion image
    5. 📖共现矩阵矩阵的各行对应相应单词的向量,每个元素表示两个单词同时出现的次数。(滑动窗口定为某个值)
      1. notion image
        根据共现矩阵可以获得单词的向量表示。
    6. 向量间的相似度:余弦相似度
      1. notion image
    7. ⚠️相似单词的排序当某个单词作为查询词时,将与这个查询词相似的单词按降序排列
      1. ❶ 取出查询词的单词向量。
        ❷ 分别求得查询词的单词向量和其他所有单词向量的余弦相似度。
        ❸ 基于余弦相似度的结果,按降序显示它们的值。
  1. 基于计数方法的改进
    1. 直接使用共现矩阵的缺点:the 跟 car 比 drive 跟 car 更接近,违背真实情况。
      改进方法:单词的共现矩阵——> PPMI——>SVD降维——>单词的分布式表示
    2. 点互信息(Pointwise Mutual Information, PMI):
      1. notion image
        • P(x) 表示 x 发生的概率,P(y) 表示 y 发生的概率,P(x, y) 表示 x和 y 同时发生的概率。PMI 的值越高,表明相关性越强
        • 共现矩阵为/表示单词 x 或 y 在句子中出现的次数。表示单词共现的次数。
    3. 正的点互信息PMI:
      1. 解决当两个单词共现次数为0时,的问题
    4. 降维(dimensionality reduction):减少向量维度
      1. 降维原因:PPMI矩阵式是稀疏矩阵,容易受噪音影响,稳健性差。
      2. 方法:奇异值分解SVD(singular value decomposition)
        1. notion image
        • SVD 将任意的矩阵 X 分解为 U、S、V 这 3 个矩阵的乘积,其中 U 和 V 是列向量彼此正交的正交矩阵,S 是除了对角线元素以外其余元素均为 0 的对角矩阵。
          • notion image
        • S是对角矩阵,对角线上的奇异值降序排列,可以将奇异值视为“对应的基轴”的重要性;因此,如果要对单词向量X降维,例如降到2维,只保留即可
          • notion image
 

三、Word2vec (一种神经网络模型)

  1. 用向量表示单词的两种方法
    1. 基于计数的方法:(根据上下文表示目标词汇)使用整个语料库的统计数据(共现矩阵和PPMI等)通过一次处理(SVD)获得单词的分布式表示。
    2. 基于推理的方法:(根据目标词汇预测上下文)使用神经网络,通常在mini-batch数据上进行学习。这意味着神经网络一次只需要看一部分学习数据,并反复更新权重。
    3. ⚠️优缺点(对比)
      1. 前者一次性处理全部学习数据(SVD复杂度为);后者使用部分数据逐步学习(mini batch)。
      2. 向词汇表添加新词并更新单词的分布式表示时:前者需要从头计算;后者允许参数的增量学习。
      3. 单词的分布式表示的性质:前者主要编码单词的相似性;后者除了单词的相似性外,还能理解更复杂的单词之间的模式。
      4. 前者不适用于词汇量大的语料库;而后者可以处理词汇量大的语料库。
      5. 准确性:二者难分上下。
  1. 神经网络中单词的处理方法
    1. 使用神经网络,输入值必须为向量,不能直接处理,就要先把单词进行初步向量表示。可以使用 one-hot,有多少个单词(集合,要去重),就用多少个输入神经元的神经网络。
  1. 简单的Word2vec(基于推理的方法)
    1. CBOW(continuous bag-of-words) 模型:根据上下文预测目标词的神经网络。n个上下文(上下文考虑N个单词),n个输入层。
      1. 一般,只使用作为单词的分布式表示,通过反复学习不断更新各个单词的分布式表示
        notion image
        中间层神经元是各个输入层经全连接层变换后得到的值的“平均”
        notion image
    2. skip-gram模型:是反转了CBOW模型处理上下文和目标词的模型:根据中心词预测上下文的神经网络
      1. notion image
    3. 对比
        • 输入层数量不同:CBOW有n个上下文就有n个输入层;skip-gram只有一个输入层。
        • 输出层数量不同:CBOW只有一个输出层;skip-gram有n个上下文就有n个输出层。
        • 学习速率:CBOW比skip-gram快。因为skip-gram需要根据上下文数量计算相应个数的损失(每个输出层都有一个损失),计算成本变大。
        • 大规模语料库以及低频词和类推问题的性能上:skip-gram表现好
 

四、word2vec的高速化

  1. word2vec存在的问题
    1. 随着词汇量的增大,输入层的one-hot表示的向量大小会增大,此外,还计算one-hot表示和权重矩阵Win的乘积也要花费大量的计算资源。 ——>引入embedding层
    2. 随着词汇量的增加,中间层和权重矩阵的乘积以及Softmax层均需要大量的计算。 ——>引入负采样Negative Sampling
  1. embedding:
    1. 正向传播:将矩阵的某个特定行抽出来,将该行的神经元原样传给下一层;
    2. 反向传播:从上一层(输出侧的层)传过来的梯度将原样传给下一层(输入侧的层)
    3. notion image
  1. 负采样(negative sampling):就是从一堆负样本中采样出一部分负样本,用于模型的训练。
    1. 将多分类转换为二分类问题---负采样的关键
      1. 即从判断目标词是哪个单词”转变为“目标词是不是say?”
    2. 经过把多分类转化成二分类问题,只提供了中心词,也就是说,只能保证对中心词的预测得分高,但不能保证对其他词得分低。
      1. 需提供负例,使得模型对正确的词得分高,对错误的词得分低。从而拉开差距。
        不能用所有负例进行计算,否则词汇量巨大,计算困难。需要提供少许(5个或10个)负例来提供训练。
        因此,选择正例及一部分负例,将二者的损失加起来作为最终的损失。
        notion image
    3. 如何进行负采样?
      1. 根据语料库中各个单词的出现次数求出“概率分布”,然后根据概率分布进行采样,保证常用的词被抽到的概率大,稀有的词难被抽到。
        使用下面的公式使得低频单词的概率变高。
        notion image
  1. 迁移学习:在某个领域学到的知识可以被应用于其他领域。
  1. word2vec的应用(迁移学习):查找近似单词、文本分类、文本聚类、词性标注、情感分析
 

五、RNN(简单RNN)

  1. 语言模型(language model):语言模型给出了单词序列发生的概率。具体来说,就是使用概率来评估一个单词序列的可能性,即在多大程度上是自然的单词序列。
  1. 马尔可夫性:指未来的状态仅依存于当前的状态。当某个事件的概率仅取决于前面N个时间时,称为“N阶马尔科夫链”。
  1. RNN(Recurrent Neural Network) 循环神经网络
    1. 结构
      1. notion image
        notion image
    2. 计算公式
      1. RNN有两个权重,分别是将输入转化为输出的权重和将前一个RNN层的输出转化为当前时刻的输出的权重
        将RNN的输出称为隐藏状态(hidden state)或者隐藏状态向量(hidden state vector)
        notion image
    3. 基于时间的反向传播BPTT(Backpropagation Through Time)
    4. 截断的BPTT(Truncated BPTT)指按适当长度截断的误差反向传播法。在处理长时序数据时,将网络连接截成适当的长度,从而创建多个小型网络,然后对截出来的小型网络执行误差反向传播法。正向传播无中断,反向传播被截成适当长度。
      1. 反向传播的连接会被截断,但是正向传播的连接不会。
        正向传播不截断。对切开的每个块,先对第一个块进行正向传播,再反向传播;接着对第二个块……
        正向传播不截断。对切开的每个块,先对第一个块进行正向传播,再反向传播;接着对第二个块……
    5. Truncated BPTT的mini-batch学习
      1. ▶️注意事项
        • 数据需要按顺序输入
        • 要平移各批次(各样本)输入数据的开始位置
        notion image
    6. RNNLM(RNN语言模型)
      1. 每个词按顺序输入网络,先进行embedding,获取分布式表示;再进入RNN层,RNN向下一层(上方)输出隐藏状态,向下一时刻的RNN(右侧)输出隐藏状态。RNN层向上方输出的隐藏状态经过Affine层,传给Softmax
        notion image
    7. TimeRNN
      1. notion image
  1. 困惑度/平均分叉度用作评价语言模型的预测性能的指标。表示“概率的倒数”,越小越好。
    1. notion image
      假设数据量为N
      k为数据的维度
      表示第n个数据的第k个值;训练(监督)数据,正确为1,错误为0
      表示概率分布;为神经网络的输出
 
 

六、Gated RNN

  1. ⚠️简单RNN存在的问题
    1. 梯度消失(vanishing gradients):梯度的大小随时间步长呈指数级减少
    2. 梯度爆炸(exploding gradients):梯度的大小随时间步长呈指数级增加
    3. 原因:矩阵被反复乘了T次。
      1. ① 如果是标量:当大于1时,梯度呈指数级增加;当小于1时,梯度呈指数级减少。
        ② 如果是矩阵:矩阵的奇异值的最大值大于1,预测梯度指数级增加;矩阵的奇异值的最大值小于1,预测梯度指数级减少。(奇异值大小是必要条件,并非充分条件)
    4. 梯度爆炸的对策:梯度裁剪(gradients clipping)(如果梯度的L2范数大于等于某个阈值threshold,就修正梯度, 整合了神经网络中用到的所有参数的梯度)
      1. 伪代码
        伪代码
    5. 梯度消失的对策: LSTM (一种Gated RNN)
  1. LSTM(long short-memory 长短期记忆)(三个门如何加的,门的作用,为什么加)
    1. Sigmoid函数用于求门的开合程度(输出值为0~1)
      记忆单元:,存储了时刻t时LSTM的记忆,可以认为其中保存了从过去到时刻t的所有必要信息(或者以此为目的进行了学习)
      notion image
      notion image
    2. 输出门:管理下一个隐藏状态ht的输出的门
      1. notion image
    3. 遗忘门:忘记不必要记忆的门
      1. notion image
    4. 新的记忆单元:g 表示向记忆单元添加的新信息。
      1. notion image
    5. 输入门:判断新增信息 g 的各个元素的价值有多大。输入门不会不经考虑就添加新信息,而是会对要添加的信息进行取舍。
      1. notion image
    6. 不会发生梯度消失(或梯度爆炸)的原因: LSTM 的反向传播进行的不是矩阵乘积计算,而是对应元素的乘积计算(阿达玛积),而且每次都会基于不同的门值进行对应元素的乘积计算
  1. RNNLM的改进
    1. LSTM层的多层化提高表现力:叠加多个LSTM层
      1. notion image
    2. 抑制过拟合(由于加深层会过拟合):
      1. ① 增加训练数据;
        ② 降低模型复杂度;
        正则化使用Dropout提高泛化能力;对模型复杂度给予惩罚(例如,L2正则化对过大的权重予以惩罚)
        需要注意的是,如果将 dropout 层加入到 LSTM 的时序方向(横向)上,随着时间的推移,记忆将丢失严重。因此,选择在纵深方向上加入 dropout 。
        notion image
    3. 权重共享(weight tying):在embedding层和Affine层实现权重共享,有效利用权重提高精度
      1. 假设词汇量是V,Embedding 层的权重形状就是 ,Affine 层权重形状就是 ,故可以直接将 Embedding 层的权重进行转置,应用到 Affine 层上面去。二者进行绑定,即可实现抑制过拟合的效果。
        为什么? 因为这样可以减少训练参数,抑制了过拟合,也提升了模型的精度。
 

七、基于RNN生成文本

  1. seq2seq(Encoder-Decoder)的原理:
    1. 编码是基于某种规则进行信息转换的过程。解码是还原信息的过程。
      编码器利用LSTM将时序数据转换为隐藏状态h,解码器的LSTM层接收h。编码器对输入语句进行编码,解码器接收并解码这个编码信息,获得目标输出语句。
      notion image
  1. seq2seq的改进
    1. 反转输入数据Reverse:学习进度更快,精度提高,梯度的传播更平滑
    2. 偷窥Peeky
      1. 编码器就是将输入语句(任意长度的文本)转换为一个固定长度的向量,这个向量集中了编码器所需的全部信息
        而peeky是将这个集中了重要信息的编码器的输出h分配给解码器的其他层
         
        notion image
  1. seq2seq的应用:
    1. 机器翻译:将一种语言的文本转换为另一种语言的文本
      自动摘要:将一个长文本转换问短摘要
      问答系统:将问题转换为答案
      邮件自动回复:将接收到的邮件文本转换为回复文本
      聊天机器人;自动图像描述(图像→文本);
 

八、Attention is all you need!

  1. Attention的结构
    1. seq2seq存在的问题:无论输入多长的文本,当前编码器都会将其转换为固定长度的向量,可能会导致有用的信息从向量中溢出。
    2. 编码器的改进:编码器整体输出各个单词对应得LSTM层得隐藏状态向量
      1. notion image
        意义:编码器可以根据输入语句的长度,成比例地编码信息。
    3. 解码器的改进
      1. 实现Weight Sum层: 计算 a(表示各个单词重要度的权重) 和 hs 的加权和,并输出上下文向量 c。
      2. 实现Attention Weight层:
        1. 通过向量内积算出h和hs的各个单词向量之间的相似度,并将其结果表示为s,然后对s使用softmax函数正规化,正规化后的结果就是各个单词得权重
      3. 将Weight Sum层和Attention Weight组合起来。
      4. notion image
        notion image
        编码器得输出hs被输入到各个时刻得Attention层,另外,也将LSTM层得隐藏状态向量输入Affine层
 

历年题

2024.6.17

一、名词解释 3*8

  1. 分布式表示
  1. 超参数
  1. 梯度确认
  1. 共现矩阵
  1. Attention机制
  1. 截断的BPTT
  1. 语言模型
  1. 困惑度

二、简答8*6

神经网络学习过程
Word2vec计算瓶颈,解决方法
激活函数为什么使用非线性
Dropout为什么能抑制过拟合
Batch normalization三个优点
训练集,测试集,验证集用处,为什么要分为训练集和测试集

三、大题

256*256的彩色RGB图像,有一个10神经元的隐藏层,输出层神经元数量为1000.不考虑偏置,
  1. 求参数数量 6分
    1. 3 * 256 * 256 * 10 + 10 * 1000 = 1,976,080
  1. Cnn的特点 3分
  1. SGD效率低的根本原因,写出三个除SGD外的参数更新方法。 4分
 
LSTM RNNLM
1)画出LSTM计算图 5分
2)简述LSTM三个门 5分
3)RNNLM的优化方法,至少三条 5分
 
 

2023.6

一、名词解释

1.权重衰减
2.分布式假设
3.梯度消失
4.随机梯度下降法

二、简答题

  1. 什么是损失函数,举出两种常用的损失函数
  1. 池化是如何操作的,举出池化的特性
  1. Batch Normalization的概念和计算过程
  1. 卷积神经网络和循环神经网络的不同点
      • RNN主要用于序列数据的处理,例如自然语言文本、时间序列数据等;RNN的主要特点是它可以将前面的信息传递到后面的计算中,因此它可以捕捉到序列数据中的时间依赖关系
      • CNN主要用于图像和语音等信号数据的处理;CNN的输入和输出都是一个固定大小的张量;CNN的主要特点是它可以通过卷积操作来提取图像中的局部特征,并且可以通过池化操作来减少特征图的大小
  1. 阶跃函数和sigmoid函数的不同和共性
  1. 画出LSTM层结构,说明三个门作用

三、计算题

给出函数f(a,b,c)=5(a+bc)
1.画出计算图,求a=7,b=5,c=3(数据有点记不准了,不影响)的结果
2.利用计算图,求f函数对a,b,c的偏导
 

2022.6

一、名词解释

  1. 全连接层:相邻层的所有神经元都有连接
  1. 感知器:感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
  1. 梯度爆炸:梯度的大小随时间步长呈指数级增加
  1. epoch:一个 epoch 表示学习中所有训练数据均被使用过一次时的更新次数。

二、简答题

  1. rnn梯度消失的原因和解决方法
  1. cbow和skipgram的区别及各自优点
  1. 损失函数的定义,列举两个损失函数
  1. rnn和传统人工神经网络训练的异同
  1. relu和sigmoid的共性和区别
  1. 比较gan和dcgan,简述gan存在的问题和dcgan的改进

三、综合题

f(a.b.c)=3(a+bc)画出计算图和反向传播过程。
 
 
 
 
 
PyCharm远程开发实战:本地代码实时同步Docker容器方案解除网页文本禁止复制粘贴限制
Loading...
Rainnn
Rainnn
bling bling ⭐
Latest posts
深度学习笔记
2025-6-5
基于决策树算法完成鸢尾花品种预测任务
2025-5-30
集成学习 Esemble Learning
2025-5-30
支持向量机
2025-5-30
神经网络学习
2025-5-30
Linux Notes
2025-5-12
Announcement
wakuwaku!
你竟然发现了这里!!
创作不易,获取加🔒文章密码/试读文章,请微信关注公众号 Code & Cookies
notion image