随笔分类 - 深度学习&机器学习&机器学习 / 深度学习-pyTorch
摘要:到目前为止,我们主要关注如何更新权重向量的优化算法,而不是它们的更新速率。 然而,调整学习率通常与实际算法同样重要,有如下几方面需要考虑: 首先,学习率的大小很重要。如果它太大,优化就会发散;如果它太小,训练就会需要过长时间,或者我们最终只能得到次优的结果。我们之前看到问题的条件数很重要。直观地说,
阅读全文
posted @ 2023-10-05 20:50
lipu123
摘要:AdaGrad算法 我们从有关特征学习中并不常见的问题入手。 稀疏特征和学习率 假设我们正在训练一个语言模型。 为了获得良好的准确性,我们大多希望在训练的过程中降低学习率,速度通常为\(\mathcal{O}(t^{-\frac{1}{2}})\)或更低。 现在讨论关于稀疏特征(即只在偶尔出现的特征
阅读全文
posted @ 2023-10-05 19:43
lipu123
摘要:冲量法也是在实际应用中使用比较多的算法 冲量法使用平滑过的梯度对权重更新 在小批量随机梯度下降的时候,梯度还是会有比较大的抖动,特别是当整个目标函数比较复杂的时候 真实数据的损失函数是不平滑的,在一个不那么平滑的平面上做优化的时候,梯度的变化趋势就有点类似于随机运动,噪音可能会带来一些不必要的抖动
阅读全文
posted @ 2023-10-05 15:12
lipu123
摘要:在实际应用中,真正使用的是小批量随机梯度下降,之所以用小批量随机梯度下降,不是统计的原因,而是计算的原因,因为随机梯度下降对单样本计算梯度,这样的话很难完全利用硬件资源(CPU 和 GPU 都是多线程的,假设只是对单样本进行梯度计算的话,计算量可能不足以能够占满整个硬件资源)所以假设可以用多个样本计
阅读全文
posted @ 2023-10-04 22:10
lipu123
摘要:在深度学习中,目标函数通常是训练数据集中每个样本的损失函数的平均值。 我们在应用时通常使用的都是随机梯度下降而不用梯度下降,因为当我们有\(n\)个样本的时候,\(f(x)\)表示所有样本上损失的平均值,因为计算一个样本比较贵。梯度下降是在整个完整的样本上求导,比较贵,所以通常使用的都是随机梯度下降
阅读全文
posted @ 2023-10-04 21:00
lipu123
摘要:梯度下降法 尽管梯度下降(gradient descent)很少直接用于深度学习, 但了解它是理解下一节随机梯度下降算法的关键。 例如,由于学习率过大,优化问题可能会发散,这种现象早已在梯度下降中出现。 同样地,预处理(preconditioning)是梯度下降中的一种常用技术, 还被沿用到更高级的
阅读全文
posted @ 2023-10-04 19:44
lipu123
摘要:凸性(convexity)在优化算法的设计中起到至关重要的作用, 这主要是由于在这种情况下对算法进行分析和测试要容易。 换言之,如果算法在凸性条件设定下的效果很差, 那通常我们很难在其他条件下看到好的结果。 此外,即使深度学习中的优化问题通常是非凸的, 它们也经常在局部极小值附近表现出一些凸性。 这
阅读全文
posted @ 2023-10-03 22:18
lipu123
摘要:优化和深度学习 我们已经使用了许多优化算法来训练深度学习模型。优化算法使我们能够继续更新模型参数,并使损失函数的值最小化。这就像在训练集上评估⼀样。事实上,任何满足于将优化视为黑盒装置,以在简单的设置中最小化目标函数的人,都可能会知道存在着⼀系列此类“咒语”(名称如“SGD”和“Adam”)。 但是
阅读全文
posted @ 2023-10-03 22:14
lipu123
摘要:子词嵌入 在英语中,“helps”“helped”和“helping”等单词都是同一个词“help”的变形形式。“dog”和“dogs”之间的关系与“cat”和“cats”之间的关系相同,“boy”和“boyfriend”之间的关系与“girl”和“girlfriend”之间的关系相同。在法语和西班
阅读全文
posted @ 2023-10-03 17:46
lipu123
摘要:我们之前学了很多词语言模型: 如果我们词独立的话有方法:One-hot、Bag of words、IF-IDF。 然后如果我们假设词与词之间是相互关联的话有方法:word2vec,FastText和Glove。 在英语中,“helps”“helped”和“helping”等单词都是同⼀个词“help
阅读全文
posted @ 2023-10-03 16:07
lipu123
摘要:词向量的表示可以分成两个大类 基于统计方法例如共现矩阵、奇异值分解SVD; 基于语言模型例如神经网络语言模型(NNLM)、word2vector(CBOW、skip-gram)、GloVe、ELMo。 word2vector中的skip-gram模型是利用类似于自动编码的器网络以中心词的one-ho
阅读全文
posted @ 2023-10-02 20:46
lipu123
摘要:import math import torch from torch import nn from d2l import torch as d2l batch_size, max_window_size, num_noise_words = 512, 5, 5 data_iter, vocab =
阅读全文
posted @ 2023-10-02 16:54
lipu123
摘要:现在我们已经了解了word2vec模型的技术细节和⼤致的训练⽅法,让我们来看看它们的实现。具体地说,我们将以跳元模型和负采样为例。本节从用于预训练词嵌⼊模型的数据集开始:数据的原始格式将被转换为可以在训练期间迭代的小批量。 import math import os import random im
阅读全文
posted @ 2023-10-02 11:53
lipu123
摘要:跳元模型的主要思想是使⽤softmax运算来计算基于给定的中⼼词\(w_c\)⽣成 上下文字\(w_o\)的条件概率。 由于softmax操作的性质,上下文词可以是词表V中的任意项,也就是说可以是词表(通常有几十万或数百万个单词)中的所有词,包含与整个词表⼤⼩⼀样多的项的求和。因此,跳元模型的梯度计
阅读全文
posted @ 2023-10-02 10:37
lipu123
摘要:要理解文本,我们可以从学习它的表⽰开始。利⽤来⾃⼤型语料库的现有⽂本序列,自监督学习(selfsupervised learning)已被⼴泛⽤于预训练⽂本表⽰,例如通过使⽤周围⽂本的其它部分来预测⽂本的隐藏部分。通过这种⽅式,模型可以通过有监督地从海量⽂本数据中学习,而不需要昂贵的标签标注! 本章
阅读全文
posted @ 2023-09-29 21:43
lipu123
摘要:从上下文无关到上下文敏感 例如,word2vec和GloVe都将相同的预训练向量分配给同⼀个词,而不考虑词的上下文(如果有的话)。形式上,任何词元\(x\)的上下文无关表示是函数\(f(x)\),其仅将\(x\)作为其输入。考虑到自然语言中丰富的多义现象和复杂的语义,上下文无关表示具有明显的局限性。
阅读全文
posted @ 2023-09-26 16:21
lipu123
摘要:Self-supervised Learning 首先我们看一下什么是Supervised Learning呢? 其实就是我们输入一个\(x\),经过一个model,然后我们输出一个\(y\)。但是我们需要label标签。比如说我们来判断一篇文章是正面的还是负面的。我们需要先找一大堆文章来,然后标注
阅读全文
posted @ 2023-09-25 21:05
lipu123
摘要:BERT:公认的里程碑 BERT 模型可以作为公认的里程碑式的模型,但是它最大的优点不是创新,而是集大成者,并且这个集大成者有了各项突破,下面让我们看看 BERT 是怎么集大成者的。 BERT 的意义在于:从大量无标记数据集中训练得到的深度模型,可以显著提高各项自然语言处理任务的准确率。 近年来优秀
阅读全文
posted @ 2023-09-25 10:04
lipu123
摘要:1.Attention Attention可以从纷繁复杂的输入信息中,找出对当前输出最重要的部分。一个典型的Attention包括三部分\(Q,K,V\)。 \(Q\)是Query,是输入的信息。\(key\)和\(value\)成对出现,通常是源语言、原始文本等已有的信息。通过计算\(Q\)和\(
阅读全文
posted @ 2023-09-23 16:36
lipu123
摘要:nn.Embedding(vocab_size, embed_size) vocab_size:表示一共有多少个字需要embedding,这里注意这个vocab_size的数量可以看成最后又多少类,也就是又多少个词,就又多少类 embed_size:表示我们希望一个字向量的维度是多少 它其实和one
阅读全文
posted @ 2023-09-23 15:18
lipu123