深度学习
文章平均质量分 85
未来影子
曾先后在百度、理想、快手参与研发工作
后端、大数据、NLP学习者
展开
-
GCN初步尝试
【代码】GCN初步尝试。原创 2023-08-11 16:01:58 · 408 阅读 · 0 评论 -
深度学习实验3 - 卷积神经网络
定义一个函数用来生成相应的文件夹定义划分数据集的函数split_data(),将数据集进行划分训练集和测试集将划分好的数据集利用DataLoader进行迭代读取,ImageFolder是pytorch中通用的数据加载器,不同类别的车辆放在不同的文件夹,ImageFolder可以根据文件夹的名字进行相应的转化。这里定义一个batch size为1281 手写二维卷积1.1 自定义卷积通道1.2 自定义卷积层1.3 添加卷积层导模块中1.4 定义超参数1.5 初始化模型、损失函数、优原创 2022-12-11 22:33:26 · 6774 阅读 · 19 评论 -
实验2_前馈神经网络实验
device = torch . device("cuda" if torch . cuda . is_available() else "cpu") # 如果有gpu则在gpu上计算 加快计算速度 print(f'当前使用的device为 {原创 2022-12-10 22:22:38 · 4615 阅读 · 14 评论 -
深度学习课件-实验1_PyTorch基本操作实验
利用 𝐓𝐞𝐧𝐬𝐨𝐫 创建两个大小分别 𝟑×𝟐 和 𝟒×𝟐 的随机数矩阵 𝑷 和 𝑸 ,要求服从均值为0,标准差0.01为的正态分布 2) 对第二步得到的矩阵 𝑸 进行形状变换得到 𝑸 的转置 𝑸^𝑻 3) 对上述得到的矩阵 𝑷 和矩阵 𝑸^𝑻 求内积!利用 𝐓𝐞𝐧𝐬𝐨𝐫 创建两个大小分别 𝟑×𝟐 和 𝟒×𝟐 的随机数矩阵 𝑷 和 𝑸 ,要求服从均值为0,标准差0.01为的正态分布 2) 对第二步得到的矩阵 𝑸 进行形状变换得到 𝑸 的转置 𝑸^𝑻 3) 对上述得到的矩阵 𝑷 和矩阵 𝑸^𝑻 求内积!原创 2022-12-10 17:46:17 · 7350 阅读 · 11 评论 -
深度学习验证结果不一致
在原来的DataLoader那块,在测试时候,将shuffle设置为False,就不会出现结果不一致的了。同一个seed下,几次shuffle之后的结果不一致,实验如下。原创 2022-12-09 13:36:59 · 717 阅读 · 0 评论 -
pytorch的F.cross_entropy交叉熵函数和标签平滑函数
标签平滑是一种损失函数的修正,它将神经网络的的训练目标从“1”调整为“1 - label smoothing adjustment”,这意味着神经网络被训练得对自己的答案不是那么自信,NN有一个坏习惯,在训练过程中对预测变得“过于自信”,这可能会降低它们的泛化能力,从而在新的、看不见的未来数据上表现得同样“出色”,此外,大型数据集通常会包含标签错误的数据,这意味着神经网络在本质上应该对“正确答案”持怀疑态度,以减少一定程度上围绕错误答案的极端情况下建模。N:样本个数,C:类别数。最后计算每个样本的均值。原创 2022-10-28 19:43:34 · 2341 阅读 · 0 评论 -
在colab上运行GitHub项目
运行我们这个项目,注意,我们当前是在仓库(Bert-Chinese-Text-Classification-Pytorch)的这个目录下,故可以直接使用如下命令,不然记得给文件(run.py)加上前缀,例如:/content/drive/MyDrive/Colab Notebooks/Bert-Chinese-Text-Classification-Pytorch/run.py。有点背,开了pro会员,还是背分到了T4,/(ㄒoㄒ)/~~科学上网、拥有谷歌邮箱、谷歌云端硬盘、colab注册。原创 2022-10-26 16:25:12 · 5021 阅读 · 1 评论 -
自然语言推断:微调BERT
我们以前在WikiText-2数据集上预训练BERT(注意,原始的BERT模型是在更大的语料库上预训练的),原始的BERT模型有数以亿计的参数。在下面,我们提供了两个版本的预训练的BERT:"bert.base"与原始的BERT基础模型一样大,需要大量的计算资源才能进行微调。在下文中,预训练的BERT模型bert被送到用于下游应用的BERTClassifier实例net中,在BERT微调的常见实现中,只有额外的多层感知机(net.output)的输出层的参数将从零开始学习。原创 2022-10-11 16:08:01 · 1048 阅读 · 0 评论 -
针对序列级和词元级应用程序微调BERT
在前几节中,我们为自然语言处理应用设计了不同的模型,例如基于循环神经网络、卷积神经网络、注意力和多层感知机。这些模型在有空间或时间限制的情况下是有帮助的,但是,为每个自然语言处理任务精心设计一个特定的模型实际上是不可行的。因此,我们介绍了一个名为BERT的预训练模型,改模型可以对广泛的自然语言处理任务进行最少的架构更改。当有足够的计算资源时,我们可以考虑为下游自然语言处理应用微调BERT下面,我们将自然语言处理应用的子集概括为序列级和词元级。在序列层次上,介绍了在单文本分类任务和文本对分类(或回归)任务中,原创 2022-10-11 16:07:11 · 617 阅读 · 0 评论 -
自然语言推断:使用注意力
例如,上述的“注意”(attending)步骤确定前提中的“need”和“sleep”都与假设中的“tired”对齐,则将对“疲倦-需要睡眠”进行比较。与保留前提和假设中词元的顺序相比,我们可以将一个文本序列中的词元与另一个文本序列的每个词元对齐,然后比较和聚合这些信息,以预测前提和假设之间的关系。从语义上的相似性,我们不妨将假设中的“我”与前提中的“我”对齐,将假设中的“累”与前提中的“睡眠”对齐。同样,我们可能希望将前提中“我”与假设中的“我”对⻬,将前提中的“需要”和“睡眠”与假设中的“累”对⻬。原创 2022-10-11 16:00:00 · 909 阅读 · 0 评论 -
自然语言推断与数据集
下面我们来定义一个用于加载SNLI数据集的类。构造函数中的变量num_steps指定文本序列的长度,使得每个小批量序列将具有相同的形状。换句话说,较长序列的前num_steps个标记后的标记将被截断特殊标记""将被附加到较短的序列后,直到它们的长度变为num_steps通过是实现__getitem__功能,我们可以任意访问带有索引idx的前提、假设和标签。原创 2022-10-10 20:43:21 · 436 阅读 · 0 评论 -
情感分析:使用卷积神经网络
在下面的类中实现textCNN模型,与双向循环神经网络模型相比,除了用卷积层代替循环神经网络层外,还使用了两个嵌入层:一个是可训练权重,另一个是固定权重。原创 2022-10-09 21:01:51 · 922 阅读 · 0 评论 -
情感分析:使用循环神经网络
在下面的BiRNN类中,虽然文本序列的每个词元经由嵌入层(self.embedding)获得其单独的预训练GloVe表示,但是整个序列由双向循环神经(self.encoder)编码。我们将使用预训练的Glove模型来表示每个词元,并将这些词元表示送入多层双向循环神经网络以获得文本序列表示,该文本序列表示将被转换为情感分析输出,对于相同的下游应用,我们将考虑不同的架构选择。我们使用这些预训练的词向量来表示评论中的词元,并且在训练期间不要更新这些向量。最后,让我们使用训练好的模型对两个简单的句子进行情感预测。原创 2022-10-09 21:00:12 · 265 阅读 · 0 评论 -
情感分析:使用循环神经网络
在下面的BiRNN类中,虽然文本序列的每个词元经由嵌入层(self.embedding)获得其单独的预训练GloVe表示,但是整个序列由双向循环神经(self.encoder)编码。我们将使用预训练的Glove模型来表示每个词元,并将这些词元表示送入多层双向循环神经网络以获得文本序列表示,该文本序列表示将被转换为情感分析输出,对于相同的下游应用,我们将考虑不同的架构选择。我们使用这些预训练的词向量来表示评论中的词元,并且在训练期间不要更新这些向量。最后,让我们使用训练好的模型对两个简单的句子进行情感预测。原创 2022-10-09 20:58:54 · 2082 阅读 · 6 评论 -
情感分析及数据集
由于情感可以被分类为离散的极性或尺度(例如,积极的和消极的),我们可以将情感分析看作一项文本分类任务,它将可变长度的文本序列转换为固定长度的文本类别。在这两个数据集中,“积极”和“消极”标签的数量相同,表示不同情感积极性。情感分析(sentiment analysis)研究人民在文本中(如产品评论、博客评论和论坛讨论等)“隐藏”的情绪。正如我们所料,评论的长度各布不相同,为了每次处理小批量这样的评论,我们通过截断和填充将每个评论的长度设置为500。在词元化之后,让我们绘制评论词元长度的直方图。原创 2022-10-09 20:58:14 · 2591 阅读 · 0 评论 -
ChineseBERT Chinese Pretraining Enhanced by Glyph and Pinyin Information
最近预训练的模型关于中文的忽视了两个重要因素:字形和拼音。它们在语言理解上携带了重要的语法和语义信息。在本文的工作中,我们提出了ChineseBERT,结合汉字的字形和拼音信息。- 字形嵌入是基于不同字体,能够从视觉特征捕获字符语义- 拼音嵌入字符对汉字的发音进行了处理,处理了汉语中常见的同字异义现象(不同发音代表不同含义)原创 2022-10-06 18:11:12 · 1342 阅读 · 0 评论 -
自然语言处理:预训练 - 词的相似性和类比任务
除了找到相似的词,我们还可以将词向量应用到此类比任务中,例如,“man”:“woman”::“son”:“daughter”是⼀个词的类⽐。glove_6b50d中预训练词向量的词表包含400000个词和一个特殊的未知词元,排除输入词和未知词元后,我们在词表中找到“chip”一词语义最相似的三个词。为了演示在预训练词向量中捕捉到过去式概念,我们可以使用“现在式-过去式”的类比来测试句法:“do”:“did”::“go”:“went”下面输出与“baby”和“beautiful”相似的词。原创 2022-09-21 22:12:12 · 622 阅读 · 0 评论 -
现代卷积神经网络 - 稠密连接网络(DenseNet)
接下来,类似于ResNet使⽤的4个残差块,DenseNet使⽤的是4个稠密块。使用通道数为3的输入时,我们会得到通道数为3 + 2 * 10 = 23的输出。卷积块的通道数控制了输出通道数相对于输入通道数的增长,因此也被称为增长率(growth rate)⽽过渡层可以⽤来控制模型复杂度。它通过1 × 1卷积层来减⼩通道数,并使⽤步幅为2的平均汇聚层减半⾼和宽,从⽽进⼀步降低模型复杂度。在每个模块之间,ResNet通过步幅为2的残差块减小高和宽,DenseNet则使用过渡层来减半高和宽,并减半通道数。原创 2022-09-20 21:53:43 · 478 阅读 · 0 评论 -
现代卷积神经网络 - 残差网络(ResNet)
通过配置不同的通道数和模块里的残差块数可以得到不同的ResNet模型,例如更深的含152层的ResNet-152。ResNet的前两层跟之前介绍的GoogLeNet中的一样:在输出通道数为64、步幅为2的7 * 7卷积层后,接步幅为2的3 * 3的最大汇聚层。随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要,更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力,为了取得质的突破,我们需要一些数学基础知识。我们也可以在增加输出通道数的同时,减半输出的高和宽。原创 2022-09-20 21:50:49 · 324 阅读 · 0 评论 -
现代卷积神经网络 - 残差网络(ResNet)
通过配置不同的通道数和模块里的残差块数可以得到不同的ResNet模型,例如更深的含152层的ResNet-152。ResNet的前两层跟之前介绍的GoogLeNet中的一样:在输出通道数为64、步幅为2的7 * 7卷积层后,接步幅为2的3 * 3的最大汇聚层。随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要,更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力,为了取得质的突破,我们需要一些数学基础知识。我们也可以在增加输出通道数的同时,减半输出的高和宽。原创 2022-09-20 21:49:46 · 730 阅读 · 0 评论 -
现代卷积神经网络 合并行连结的网络(GoogLeNet)
这些路径的通道数分配和第三模块中的类似,首先是3 * 3卷积层的第二条路径输出最多通道,其次是仅含1 * 1卷积层的第一条路径,之后是含5 * 5卷积层的第三条路径和含3 * 3最大汇聚层的第四条路径。其中每条路径通道数的分配思路和第三、第四模块中的一致,只是在具体数据上有所不同,需要注意的是,第五模块的后面紧跟输出层,该模块同NiN一样使用全局平均汇聚层,将每个通道的高和宽变成1,最后我们将输出变成二维数组,再接上一个输出个数为标签类别数的全连接层。同时,我们可以为不同的滤波器分配不同数量的参数。原创 2022-09-20 21:48:16 · 755 阅读 · 0 评论 -
现代卷积神经网络 - 批量规范化
当我们训练时,中间层的变量(例如,多层感知机中的仿射变化输出)可能具有更广的变化范围:不论是沿着从输入到输出的层,跨同一层中的单元,或是随着时间的推移,模型参数随着训练更新变幻莫测。然而,我们必须小心区分直觉对我们观察到的现象的真实解释,回想一下,我们甚至不知道简单的神经网络(多层感知机和传统的卷积神经网络)为什么如此有效,即使在暂退法和权重衰减的情况下,它们仍然非常灵活,因此无法通过常规的学习理论泛化保证来解释它们是否能够泛化到看不见的数据。正是由于这个基于批量统计的标准化,才有了批量规范化的名称。原创 2022-09-20 21:43:39 · 831 阅读 · 0 评论 -
现代卷积神经网络 - 网络中的网络(NiN)
卷积层的输入和输出由四维张量组成,张量的每个轴分别对应样本、通道、高度和宽度。若我们将权重连接导每个空间位置,我们可以将其视为1 * 1卷积层,或作为在每个像素位置上独立作用的全连接层。然而,若使用了全连接层,可能会完全放弃表征的空间结构,网络中的网络(NiN)提供了一个非常简单的解决方案:再每个像素的通道上分别使用多层感知机。NiN块以一个普通卷积层开始,后面是两个1 * 1的卷积层。NiN使用窗口形状为11 * 11、5 * 5和3 * 3的卷积层,输出通道数量与AlexNet中的相同。原创 2022-09-18 22:27:38 · 164 阅读 · 0 评论 -
现代卷积神经网络 - 使用块的网络(VGG)
研究人员开始从单个神经元的角度思考问题,发展导整个层,现在又转向块,重复层的模式。如 图7.2.1中所⽰。使用块的想法首先出现在牛津大学的视觉几何组的VGG网络中,通过使用循环和子程序,可以很容易地在任何深度学习框架的代码中实现这些重复的架构。该函数有三个参数,分别对应于卷积层的数量num_convs、输入通道的数量in_channels和输出通道的数量out_channels。正如你所看到的,我们在每个块的高度和宽度减半,最终高度和宽度都为7,最后再展平表示,送入全连接层处理。原创 2022-09-18 22:23:41 · 225 阅读 · 0 评论 -
现代卷积神经网络 - 深度卷积神经网络(AlexNet)
在LeNet提出后,卷积神经网络在计算机视觉和机器学习领域中很有名气。但卷积神经网络并没有主导这些领域。这是因为虽然LeNet在小数据上取得了很好的效果,但是在更大、更真实的数据集上训练卷积神经网络的性能和可行性还有待研究。事实上,在上世纪90年代初和2012年之间的大部分时间里,神经网络往往被其他机器学习方法超越,如支持向量机(support vector machincs)在计算机视觉中,直接将神经网络与其他机器学习方法进行比较也许不公平。这是因为,卷积神经网络的输入是由原始像素值或是经过简单预处理(例原创 2022-09-18 22:18:34 · 393 阅读 · 0 评论 -
卷积神经网络 - 图像卷积
值得注意的是,由于卷积核是从数据中学习到的,因此⽆论这些层执⾏严格的卷积运算还是互相关运算,卷积层的输出都不会受到影响。为了说明这⼀点,假设卷积层执⾏互相关运算并学习 图6.2.1中的卷积核,该卷积核在这⾥由矩阵K表⽰。所以,卷积层中的两个被训练的参数是卷积核权重核标量偏置。然而,当有了更复杂数值的卷积核,或者连续的卷积层时,我们不可能手动设计滤波器。现在我们将输入的二维图像转置,再进行如上的互相关运算,其输出如下,之前检测到的垂直边缘消失了,不出所料,这个卷积核K只可以检测垂直边缘,无法检测水平边缘。原创 2022-09-17 18:30:44 · 562 阅读 · 0 评论 -
卷积神经网络 - 填充和步幅
当卷积核的高度和宽度不同时,我们可以填充不同的高度和宽度,使输出和输入具有相同的高度和宽度。在如下示例中,我们使用高度为5,宽度为3的卷积核,高度和宽度两边的填充分别为2和1。接下来,看一个稍微复杂的例子。原创 2022-09-17 18:29:07 · 296 阅读 · 0 评论 -
卷积神经网络 - LeNet
随着层叠的上升,通道的数量从输入时的1个,增加到第一个卷积层之后的6个,再到第二个卷积层之后的16个。在本节中,我们将介绍LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而收到广泛关注。与 3.6节中定义的train_epoch_ch3不同,在进⾏正向和反向传播之前,我们需要将每⼀⼩批量数据移动到我们指定的设备(例如GPU)上。虽然卷积神经网络的参数较少,但与深度的多层感知机相比,它们的计算成本仍然很高,因为每个参数都参与更多的乘法,若你有机会使用GPU,可以用它加快训练。原创 2022-09-17 18:27:50 · 971 阅读 · 0 评论 -
卷积神经网络 - 汇聚层
例如,若我们拍摄黑白之间轮廓清晰的图像X,并将整个图像向右移动一个像素,即Z[i,j] = X[i,j+1],则新图像Z的输出可能大不相同。通常当我们处理图像时,我们希望逐渐降低隐藏表示的空间分辨率、聚集信息,这样随着我们在神经网络层中层叠的上升,每个神经元对其敏感的感受野(输入)就越大。下面,我们用深度学习框架中内置的二维最大汇聚层,来演示汇聚层中填充和步幅的使用。因此,若我们使用形状为(3,3)的汇聚窗口,那么默认情况下,我们得到的步幅形状为(3,3)与卷积层一样,汇聚层也可以改变输出形状。原创 2022-09-17 18:26:13 · 1011 阅读 · 0 评论 -
卷积神经网络 -多输入多输出通道
然而,正如我们在6.1.4节中所讨论的,每一层有多个输出通道时至关重要的。在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分别率以获得更大的通道深度。因此,多输出通道并不仅是学习多个单通道的检测器。现在的输出包含3个通道,第一个通道的结果与先前输入张量X和多输入单输出通道的结果一致。通过将核张量K与K+1(K中每个元素+1)和K+2连接起来,构造了一个具有3个输出通道的卷积核。我们可以构造与图6.4.1中的值相对应的输入张量X和核张量K,以验证互相关运算的输出。原创 2022-09-17 18:24:19 · 1727 阅读 · 0 评论 -
卷积神经网络 - 从全连接层到卷积
我们可以从⼉童游戏”沃尔多在哪⾥”(图6.1.1)中得到灵感:在这个游戏中包含了许多充斥着活动的混乱场景,⽽沃尔多通常潜伏在⼀些不太可能的位置,读者的⽬标就是找出他。然⽽,即使分辨率减⼩为⼗万像素,使⽤1000个隐藏单元的隐藏层也可能不⾜以学习到良好的图像特征,在真实的系统中我们仍然需要数⼗亿个参数。此外,拟合如此多的参数还需要收集⼤量的数据。例如,在之前猫狗分类的例⼦中:假设我们有⼀个⾜够充分的照⽚数据集,数据集中是拥有标注的照⽚,每张照⽚具有百万级像素,这意味着⽹络的每次输⼊都有⼀百万个维度。原创 2022-09-17 18:22:42 · 902 阅读 · 0 评论 -
优化算法 - 学习率调度器
为此,我们选择了一个稍微现代化的LeNet版本(激活函数使用relu而不是sigmoid,汇聚层使用最大汇聚层而不是平均汇聚层),并应用于Fashion-MNIST数据集。此外,我们混合网络以提高性能,由于大多数代码是标准的,我们只介绍基础知识,而不做进一步的详细讨论。遗憾的是,关于为什么在理论上某些策略会导致较轻的过拟合,有⼀些观点认为,较⼩的步⻓将导致参数更接近零,因此更简单。对此,⼀⽅⾯,我们可以选择⼀个⾜够⼩的学习率,从⽽防⽌⼀开始发散,然⽽这样进展太缓慢。另⼀⽅⾯,较⾼的学习率最初就会导致发散。原创 2022-09-16 19:37:51 · 1571 阅读 · 0 评论 -
优化算法 - RMSProp算法
来观察RMSProp算法的轨迹。回想在11.7节中,当我们使用学习率为0.4的Adagrad算法时,变量在算法的后期阶段移动非常缓慢,因为学习率衰减太快。我们将初始学习率设置为0.01,加权γ设置为0.9.也就是说,s累加了过去的。原创 2022-09-16 19:36:27 · 1506 阅读 · 0 评论 -
优化算法 - Adam算法
不出预料,作为深度学习中使用的更强大和有效的优化算法之一,它非常受欢迎。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NF6jVSDf-1663328054526)(https://yingziimage.oss-cn-beijing.aliyuncs.com/img/202209161925007.svg)]此外,我们可以用深度学习框架自带算法应用Adam算法,这里我们只需要传递配置参数。现在,我们用以上Adam算法来训练模型,这里我们使用η=0.01的学习率。原创 2022-09-16 19:34:45 · 1629 阅读 · 0 评论 -
优化算法 -AdGrad算法
这已经表明,即使在无噪声的情况下,学习率的降低可能相当剧烈,我们需要确保参数能够适当地收敛。同动量法一样,AdaGrad算法需要对每个自变量维护同它一样形状的状态变量。我们可以直接使用深度学习框架中提供的AdaGrad算法来训练模型。原创 2022-09-16 19:33:08 · 614 阅读 · 0 评论 -
优化算法 - Adadelta
Adadelta是AdaGrad的另一种变体,主要区别在于前者减少了学习率适应坐标的数量。此外,广义上Adadelta被称为没有学习率,因为它使用变化量作为未来变化的校准。Adadelta需要为每个变量维护两个状态变量,即。原创 2022-09-16 19:31:07 · 606 阅读 · 0 评论 -
优化算法 - 动量法
从构造来看,x2⽅向的梯度⽐⽔平x1⽅向的梯度⼤得多,变化也快得多。因此,我们陷⼊两难:如果选择较⼩的学习率,我们会确保解不会在x2⽅向发散,但要承受在x1⽅向的缓慢收敛。在优化问题条件不佳的情况下(例如,有些方向的进展比其他方向慢得多,类似狭窄的峡谷),“加速”梯度还额外享受更有效的好处。新的梯度替换不再指定特定实例下降最陡的方向,而是指向过去梯度的加权平均值的方向。唯一的变化是,在这种情况下,我们将梯度。在本节中,我们将讨论更有效的优化算法,尤其是针对实验中常见的某些类型的优化问题。原创 2022-09-16 19:28:40 · 1039 阅读 · 0 评论 -
优化算法 -小批量随机梯度下降
在随机梯度下降的实验中,每当⼀个样本被处理,模型参数都会更新。可以看出,尽管在处理的样本数⽅⾯,随机梯度下降的收敛速度快于梯度下降,但与梯度下降相⽐,它需要更多的时间来达到同样的损失,因为逐个样本来计算梯度并不那么有效。在以前我们已经实现过小批量随机梯度下降算法,我们在这里将它的输入参数变得更加通用,主要是为了方便本章后面介绍的其他优化算法也可以使用同样的输入。显而易见,小批量上的计算基本上与完整矩阵一样有效,需要注意的是,在7.5节中,我们使⽤了⼀种在很⼤程度上取决于⼩批量中的⽅差的正则化。原创 2022-09-14 21:32:24 · 1063 阅读 · 0 评论 -
优化算法 - 梯度下降
正如预期的那样,参数的⽅差⼤⼤减少。另⼀⽅⾯,如果我们使⽤多项式衰减,其中学习率随迭代次数的平⽅根倒数衰减,那么仅在50次迭代之后,收敛就会更好。但是,在前面的章节中,我们一直在训练过程中使用随机梯度下降,但没有解释它为什么起作用。例如,我们可以从较小的学习率开始,然后使其迅速上涨,再让它降低,尽管这会更慢。这样的计划各种各样。现在,让我们专注于可以进行全面理论分析的学习率计划,即凸环境下的学习率。对于一般的非凸问题,很难获得由意义的收敛保证,因为总的来说,最大限度地减少非线性非凸问题是NP困难的。原创 2022-09-14 21:30:59 · 266 阅读 · 0 评论 -
优化算法 - 梯度下降
尽管梯度下降(gradient descent)很少直接用于深度学习,但了解它是理解下一节随机梯度下降算法的关键。例如,由于学习率过大,优化问题可能会发散,这种现象早已在梯度下降中出现。同样地,预处理(preconditioning)是梯度下降中的一种常用技术,还被沿用到更高级的算法中。让我们从简单的一维梯度下降开始。原创 2022-09-14 21:29:12 · 515 阅读 · 0 评论