- 博客(31)
- 收藏
- 关注
原创 自然语言处理(29:(终章Attention 5.)Attention的应用)(完结)
到目前为止,我们仅将Attention应用在了seq2seq上,但是Attention 这一想法本身是通用的,在应用上还有更多的可能性。实际上,在近些年 的深度学习研究中,作为一种重要技巧,Attention出现在了各种各样的场景中。本节我们将介绍3个使用了Attention的前沿研究,以使读者感受到 Attention 的重要性和可能性。还请麻烦各位大佬贡献一下自己的三连加关注!!!一、GNMT回看机器翻译的历史,我们可以发现主流方法随着时代的变迁而演变。
2025-04-01 15:16:34
796
原创 自然语言处理(28:(终章Attention 4.)关于Attention的其他话题)
到目前为止,我们研究了Attention(正确地说,是带Attention的 seq2seq),本节我们介绍几个之前未涉及的话题一、双向RNN这里我们关注seq2seq的编码器。首先复习一下,上一节之前的编码器如下图所示。如上图所示,LSTM中各个时刻的隐藏状态向量被整合为hs。这里, 编码器输出的hs的各行中含有许多对应单词的成分。需要注意的是,我们是从左向右阅读句子的。因此,在上图中,单词“猫”的对应向量编码了“吾輩”“は”“猫”这3个单词的信息。
2025-04-01 14:58:07
665
原创 自然语言处理(27:(终章Attention 3.)Attention的评价)
下面,我们使用上一节实现的AttentionSeq2seq类来挑战一个实际问题。我们通过研究“日期格式转换”问题(本质上属于人为创造的问题,数据量有限),来确认带Attention的seq2seq 的效果。以上就是关于Attention的评价的内容。通过这里的实验,我们体验了 Attention的奇妙效果。至此,Attention的核心话题就要告一段落了,但是关于Attention的其他内容还有不少。下一次我们继续围绕Attention, 给出它的几个高级技巧。
2025-04-01 14:40:17
947
原创 自然语言处理(26:(终章Attention 2.)带Attention的seq2seq的实现)
上一节实现了Attention层(以及Time Attention层),现在我们使用 这个层来实现“带Attention的seq2seq”。和上一章实现了3个类(Encoder、 Decoder 和 seq2seq)一样,这里我们也分别实现3个类(AttentionEncoder、 AttentionDecoder 和 AttentionSeq2seq)一、编码器的实现首先实现AttentionEncoder 类。
2025-04-01 11:49:27
946
原创 自然语言处理(25:(终章Attention 1.)Attention的结构)
上一章我们使用RNN生成了文本,又通过连接两个RNN,将一个时序数据转换为了另一个时序数据。我们将这个网络称为seq2seq,并用它成功求解了简单的加法问题。之后,我们对这个seq2seq进行了几处改进,几乎解决了这个简单的加法问题。本章我们将进一步探索seq2seq的可能性(以及RNN的可能性)。这里,Attention这一强大而优美的技术将登场。Attention毫无疑问是近年来深度学习领域最重要的技术之一。本章的目标是在代码层面理解Attention的结构,然后将其应用于实际问题,体验它的奇妙效果。
2025-04-01 11:41:03
624
原创 自然语言处理(24:(第六章4.)seq2seq模型的应用)
seq2seq 将某个时序数据转换为另一个时序数据,这个转换时序数据的框架可以应用在各种各样的任务中,比如以下几个例子。• 机器翻译:将“一种语言的文本”转换为“另一种语言的文本”• 自动摘要:将“一个长文本”转换为“短摘要”• 问答系统:将“问题”转换为“答案”• 邮件自动回复:将“接收到的邮件文本”转换为“回复文本”像这样,seq2seq可以用于处理成对的时序数据的问题。除了自然语言 之外,也可以用于语音、视频等数据。
2025-04-01 10:22:26
617
原创 自然语言处理(23:(第六章3.)seq2seq模型的改进)
本节我们对上一节的seq2seq进行改进,以改进学习的进展。为了达成 该目标,可以使用一些比较有前景的技术。本节我们展示其中的两个方案, 并基于实验确认它们的效果。
2025-04-01 09:47:24
1539
原创 自然语言处理(22:(第六章2.)seq2seq模型的实现)
这一节内容其实不多,主要是因为”代码“也占字数,导致字数超了10000,但莫慌!这个世界充满了时序数据。文本数据、音频数据和视频数据都是时序数据。另外,还存在许多需要将一种时序数据转换为另一种时序数据的任务, 比如机器翻译、语音识别等。其他的还有进行对话的聊天机器人应用、将源代码转为机器语言的编译器等。像这样,世界上存在许多输入输出均为时序数据的任务。从现在开始, 我们会考虑将时序数据转换为其他时序数据的模型。作为它的实现方法,将介绍使用两个RNN的seq2seq模型。理论大概看看,实现详细看看一、
2025-04-01 09:17:33
1131
原创 自然语言处理(21:(第六章1.)基于RNN生成文本)
在第4章和第5章中,我们仔细研究了RNN和LSTM的结构及其实现。现在我们已经在代码层面理解了它们。在本章,RNN和LSTM将大显身手, 我们将利用LSTM实现几个有趣的应用。使用语言模型生成文本首先,本章将使用语言模型进行文本生成。具体来说,就是使用在语料库上训练好的语言模型生成新的文本。然后,我们将了解如何使用改进过的 语言模型生成更加自然的文本。通过这项工作,我们可以(简单地)体验基于AI的文本创作。另外,本章还会介绍一种结构名为seq2seq的新神经网络。
2025-03-30 14:11:26
1043
原创 自然语言处理(20:(第五章5.)进一步改进RNNLM)
本节我们先针对当前的RNNLM说明3点需要改进的地方,然后实施 这些改进,并评价最后精度提高了多少。一、本章的主题是Gated RNN,我们指出了上一章的简单RNN中存在的梯度消失(或梯度爆炸)问题,说明了作为替代层的Gated RNN(具体指 LSTM和GRU等)的有效性。这些层使用门这一机制,能够更好地控制数据和梯度的流动。另外,本章使用LSTM层创建了语言模型,并在PTB数据集上进行了学习,评价了困惑度。另外,通过LSTM的多层化、Dropout和权重共享等技巧,成功地大幅提高了精度。
2025-03-30 11:30:43
842
原创 自然语言处理(19:(第五章4.)使用LSTM的语言模型)
Time LSTM 层的实现完成了,现在我们来实现正题——语言模型。一、LSTM的语言模型这里实现的语言模型和上一章几乎是一样的,唯一的区别是,上一章使用 Time RNN层的地方这次使用Time LSTM层,如下图所示。由上图可知,这里和上一章实现的语言模型的差别在于使用了 LSTM。我们将上图右图中的神经网络实现为Rnnlm类。Rnnlm类和上一章介绍的SimpleRnnlm类几乎相同,但是增加了一些新方法。下面给出使用 LSTM层实现的Rnnlm类的代码。
2025-03-30 09:04:10
1119
原创 自然语言处理(18:(第五章3.)LSTM的实现)
下面,我们来实现LSTM。这里将进行单步处理的类实现为LSTM类, 将整体处理T步的类实现为TimeLSTM类。一、LSTM的代码实现首先LSTM要进行的计算有:上述式子中,前四个式子(f, g, i, o)是仿射变换,这里的仿射变换是指xWx+hWh+b这样的式子。虽然通过4个式子可以分别进行仿射变换,但其实也可以整合为通过1个式子进行。如下图所示:在上图中,4个权重(或偏置)被整合为了1个。如此,原本单独执行4次的仿射变换通过1次计算即可完成,可以加快计算速度。
2025-03-30 08:27:12
704
原创 自然语言处理(17:(第五章2.)梯度消失和LSTM(详细拆解))
在RNN的学习中,梯度消失也是一个大问题。为了解决这个问题,需要从根本上改变RNN层的结构,这里本章的主题Gated RNN(门控RNN)就要登场了!!!内容拆解的有点多,但是不难,希望大家坚持看下去!一、这一节主要拆分讲解了门控RNN(Gated RNN)的原理,以及LSTM的结构。内容较多,但是整体还行,下节我们实现LSTM的代码。希望能看到这里的小伙伴们三连加关注!!!
2025-03-29 23:31:00
1518
原创 自然语言处理(16:(第五章1.)Gated RNN)
上一章的RNN存在环路,可以记忆过去的信息,其结构非常简单,易于实现。不过,遗憾的是,这个RNN的效果并不好。原因在于,许多情况下它都无法很好地学习到时序数据的长期依赖关系。现在,上一章的简单RNN经常被名为LSTM或GRU的层所代替。实际上,当我们说RNN时,更多的是指LSTM层,而不是上一章的RNN。顺便说一句,当需要明确指上一章的RNN时,我们会说“简单RNN”或 “Elman”。LSTM和GRU中增加了一种名为“门”的结构。基于这个门,可以学习到时序数据的长期依赖关系。
2025-03-29 22:52:13
813
原创 自然语言处理(15:RNNLM的学习和评价(整个第4章大总结))
在前几节中,实现RNNLM所需要的层都已经准备好了,现在我们来实现RNNLM, 并对其进行训练,然后再评价一下它的结果。最后总结整个第4章(可以查看博主前几次的文章)警告:本节的内容(代码)比较多,因为有部分代码我封装了,为了方便同志们复现我又给出来了,所以文章难免会字多一些(10000字左右),还请见谅!!!编写不易,希望三连加关注!!本章的主题是RNN。RNN通过数据的循环,从过去继承数据并传递 到现在和未来。如此,RNN层的内部获得了记忆隐藏状态的能力。
2025-03-28 21:59:58
1223
原创 自然语言处理(14:处理时序数据的层的实现)
本次我们的目标是使用RNN实现语言模型。目前我们已经实现了 RNN层和整体处理时序数据的Time RNN层,本节将创建几个可以处理时序数据的新层。我们将基于RNN的语言模型称为RNNLM(RNN Language Model,RNN 语言模型)。现在,我们来完成RNNLM。
2025-03-25 10:29:04
775
原创 自然语言处理(13:RNN的实现)
通过之前的探讨,我们已经看到了RNN的全貌。实际上,我们要实现的是一个在水平方向上延伸的神经网络。另外,考虑到基于Truncated BPTT的学习,只需要创建一个在水平方向上长度固定的网络序列即可,来吧,开始实现(迫不及待!!
2025-03-25 10:13:27
1047
原创 自然语言处理(12:RNN(正式介绍))
上一节为了引出RNN的魅力,我们拓展了话题,强行将word2vec的CBOW模型应用在了语言模型上,这节开始,就会直接介绍RNN了,请各位大佬们坐稳了!!在处理长时序数据时,通常的做法是将网络连接截成适当的长度。具 体来说,就是将时间轴方向上过长的网络在合适的位置进行截断,从而创建多个小型网络,然后对截出来的小型网络执行误差反向传播法,这个方法称为Truncated BPTT(截断的BPTT)。Truncated是“被截断”的意思。Truncated BPTT是指按适当长度截断的误差反向传播法。
2025-03-25 08:53:49
667
原创 自然语言处理(11:RNN(RNN的前置知识和引入)
上一次我们学习了最后的改进版word2vec的学习以及总结,(链接在此自然语言处理(10:改进版word2vec的学习以及总结)-优快云博客),且到目前为止,我们看到的神经网络都是前馈型神经网络。前馈是指网络的传播方向是单向的。具体地说,先将输入信号传 给下一层(隐藏层),接收到信号的层也同样传给下一层,然后再传给下一 层……像这样,信号仅在一个方向上传播。虽然前馈网络结构简单、易于理解,但是可以应用于许多任务中。不过, 这种网络存在一个大问题,就是不能很好地处理时间序列数据(以下简称为 “时序数据”)
2025-03-25 08:18:06
775
2
原创 自然语言处理(10:改进版word2vec的学习以及总结)
到目前为止,我们进行了word2vec的改进。首先说明了Embedding层,又介绍了负采样的方法,然后对这两者进行了实现。现在我们进一步来实现进行了这些改进的神经网络,并在PTB数据集上进行学习,以获得更加实用的单词的分布式表示。下面开始更加进一步的改进,如果遇到问题,可以问Deepseek,我都觉得有些地方不需要我来解答了,哈哈!当然最重要的,希望能留下各位的三连加关注!!!一、这里的类推问题的结果看上去非常好。不过遗憾的是,它是特意选出来的能够被顺利解决的问题。
2025-03-20 18:38:03
960
原创 自然语言处理(9:word2vec的高速化(CBOW的二次改进))
上一节我们介绍了CBOW模型的第一个改进,Embedding的添加,具体细节可以查看上一届的内容,自然语言处理(8:word2vec的高速化(CBOW的改进))-优快云博客废话不多说,下面,我们来进行word2vec的第2个改进。如前面所述,word2vec的另 一个瓶颈在于中间层之后的处理,即矩阵乘积和Softmax层的计算。本节的目标就是解决这个瓶颈。这里,我们将采用名为负采样(negative sampling) 的方法作为解决方案。
2025-03-19 10:20:59
649
原创 自然语言处理(8:word2vec的高速化(CBOW的改进))
上一章我们学习了word2vec的机制,并实现了CBOW模型。因为 CBOW模型是一个简单的2层神经网络,所以实现起来比较简单。但是, 目前的实现存在几个问题,其中最大的问题是,随着语料库中处理的词汇量 的增加,计算量也随之增加。也就是说,当词汇量(单词儿)达到一定程度之后,上一章的CBOW模型的计算就会花费过多的时间。一、在上一章的word2vec实现中,我们将单词转化为了one-hot表示,并将其输入了MatMul层,在MatMul层中计算了该one-hot表示和权重矩阵 的乘积。
2025-03-19 07:30:54
742
原创 自然语言处理(7:CBOW模型的补充和skip-gram模型的理论)
在上一篇文章中,我们详细探讨了word2vec的CBOW模型。接下来,我们将对 word2vec 补充说明几个非常重要的话题。首先,我们从概率(数学推导)的角度,再来看一下CBOW模型。(不难)本章我们详细解释了word2vec的CBOW模型,并对其进行了实 现。CBOW模型基本上是一个2层的神经网络,结构非常简单。我们使用 MatMul 层和Softmax with Loss 层构建了CBOW模型,并用一个小规模 语料库确认了它的学习过程。遗憾的是,现阶段的CBOW模型在处理效率 上还存在一些问题。
2025-03-17 10:27:23
803
原创 自然语言处理(6:CBOW模型的完整实现)
在开始word2vec的学习之前,我们先来准备学习用的数据。这里我们仍以“You say goodbye and I say hello.”这个只有一句话的语料库为例进行说明本次主要讲了CBOW的简单实现过程,当然难免有不少遗漏之处,希望看到这里的大佬们点点关注,一键三连哦!
2025-03-16 08:29:53
742
原创 自然语言处理(5:word2vec和CBOW模型的初步实现)
上一节我们学习了基于推理的方法,并基于代码讨论了神经网络中单词的处理方法,至此准备工作就完成了,现在是时候实现word2vec了。(如果忘了或者没康过,可以看我前几次发的文章)CBOW模型是根据上下文预测目标词的神经网络(“目标词”是指中间的单词,它周围的单词是“上下文”)。
2025-03-15 17:14:26
994
原创 自然语言处理(4:word2vec之基于推理的方法和神经网路)
接着上一章,本章的主题仍是单词的分布式表示。在上一章中,我们使用基于计数的方法得到了单词的分布式表示。本章我们将讨论该方法的替代方法,即基于推理的方法。顾名思义,基于推理的方法使用了推理机制。当然,这里的推理机制用的就是“神经网络这次的目标是实现一个简单的word2vec。这个简单的word2vec会优 先考虑易理解性,从而牺牲一定的处理效率。所以,我们不会用它来处理大规模数据集,但用它处理小数据集毫无问题。提示:以下是本篇文章正文内容,下面案例可供参考。
2025-03-15 11:10:51
842
原创 自然语言处理(3:基于计数方法的改进以及总结)
上一节我们学习并创建了单词的分布式表示和假设,共现矩阵,向量相似度,并使用它成功地将单词表示为了向量。但是,其中这个共现矩阵还有许多可以改进的地方。本节我们将对其进行改进,并使用更实用的语料库,获得单词的“真实的”分布式表示。上一节的共现矩阵的元素表示两个单词同时出现的次数。但是,这种 “原始”的次数并不具备好的性质。如果我们看一下高频词汇(出现次数很多的单词),就能明白其原因了。比如,我们来考虑某个语料库中the和car共现的情况。在这种情况下, 我们会看到很多“...the car...”这样的短语。
2025-03-14 22:46:19
952
原创 自然语言处理(2:基于计数方法的分布式表示和假设,共现矩阵,向量相似度)
本节共计5123字,阅读时间可能长,但内容丰富,坚持看下去,收获亦会非常丰富!
2025-03-14 18:45:06
759
原创 自然语言处理(1:同义词词典和基于计数方法语料库预处理)
corpus是单词 ID 列表,word_to_id 是单词到单词ID的字典,id_to_word是单词ID到单词 的字典。以上代码中,变量id_to_word 负责将单词ID转化为单词(键是单词ID,值是单词), word_to_id 负责将单词转化为单词ID。首先,使用lower()方法将所有字母转化为小写,这样可以将句子开头的单词也作为常规单词处理(不然You和you在计算机看来就是不同的意思),然后,将空格作为分隔符,通过split(' ')切 分句子。最后,我们将单词列表转化为单词ID列表。
2025-03-14 11:31:41
509
原创 关于git上传项目到Github
如果出现了以上警告,说明你把你要添加的文件打开了(例如我在这个报错是因为我打开了pycharm),我们只需要关掉这个文件就不会报错了。执行完以上命令后我们看到多了个.git文件夹(以下是在我的文件夹里面新增的.git文件)可以直接点击上面的链接,查看知乎的大佬的详细教程!接下来该如何查看自己上传在Github上的项目呢?然后,把文件提交到仓库,双引号内是提交注释。点开就是咱自己本地上传的那些文件啦!)敲一个:yes, 然后回车。查看我的本地内容(一模一样)接着,将所有文件添加到仓库。
2024-05-12 23:11:25
279
3
自然语言处理系列文章所有代码
2025-03-30
博弈树之α和β剪枝法
2023-06-07
python中txt保存不了
2023-05-30
python中PIL库的导入和下载
2022-11-09
python函数中return的作用
2022-11-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人