- 博客(191)
- 收藏
- 关注
原创 BERT模型入门(16)BERT模型入门总结
然后,我们介绍了BERT模型是如何通过两个有趣的任务进行预训练的,这两个任务被称为遮蔽语言模型(MLM)和NSP。我们了解到,在遮蔽语言模型中,我们遮蔽15%的tokens并训练BERT预测遮蔽的tokens,而在NSP任务中,我们训练BERT以分类第二个句子是否是第一个句子的后续句子。在此基础上,我们了解了BERT的不同配置。我们学到,BERT-base包含12个编码器层、12个注意力头和768个隐藏单元,而BERT-large包含24个编码器层、16个注意力头和1024个隐藏单元。
2024-12-24 06:00:00
186
原创 BERT模型入门(14)字节级别的字节对编码(BBPE)
我们可以观察到,我们将输入单词转换为字节序列。以这种方式,我们将给定文本转换为字节级序列,然后我们应用BPE算法并使用字节级频繁对构建词汇表。但是,为什么要进行字节级BPE而不是字符级BPE呢?字节级别的字节对编码(BBPE)是另一种广泛使用的算法。它的工作原理与BPE非常相似,但是它使用字节级序列而不是字符级序列。现在,我们不是将单词转换为字符序列,而是将其转换为字节级序列。这样,我们将给定的输入转换为字节级序列,而不是字符级序列。而在BBPE中,我们不是将单词转换为字符序列,而是将其转换为字节级序列。
2024-12-23 06:00:00
352
原创 BERT模型入门(15)WordPiece分词算法
我们了解到在BPE中,从给定的数据集开始,首先提取带有计数的单词。在WordPiece中,我们做同样的事情,但一个区别是WordPiece不是基于频率合并符号对。也就是说,WordPiece合并对语言模型(在给定训练数据上训练)具有高似然性的符号对。我们了解到在BPE中,我们合并最频繁的符号对。在BPE中,我们合并了符号对s和t,因为它们出现了4次。首先,我们检查语言模型(在给定训练集上训练)对每个符号对的似然性。以这种方式,我们计算所有符号对的似然性,并合并具有最大似然性的符号对,将其添加到词汇表中。
2024-12-23 06:00:00
610
原创 BERT模型入门(13)使用BPE进行分词
现在我们检查单词mean是否在我们的词汇表中。现在,我们检查子词是否在词汇表中。我们可以观察到子词me在词汇表中,但子词an不在我们的词汇表中。因此,我们拆分子词an,现在我们的子词包括[me, a, n]。现在我们检查字符a和n是否在我们的词汇表中。我们可以观察到单词bear不在我们的词汇表中。子词be在词汇表中,但ar不在词汇表中。我们可以观察到a在词汇表中,但r不在词汇表中。这是因为在这个小例子中,字符r不在我们的词汇表中。但是当我们使用大量语料库创建词汇表时,我们的词汇表将包含所有字符。
2024-12-22 06:00:00
316
原创 BERT模型入门(12)字节对编码(Byte Pair Encoding,BPE)
假设从数据集中提取的单词及其计数为(cost, 2)、(best, 2)、(menu, 1)、(men, 1)和(camel, 1)。这样,我们重复这个步骤多次,直到达到词汇表的大小。从前面的图中,我们可以观察到现在我们的词汇表有14个tokens。由于在这个例子中,我们创建的是大小为14的词汇表,所以我们在这个步骤停止。要向词汇表中添加新tokens,首先,我们识别最频繁的符号对。然后,我们将这个最频繁的符号对合并并添加到词汇表中。接下来,我们定义词汇表的大小。我们可以观察到,我们的词汇表大小为11。
2024-12-22 05:45:00
400
原创 BERT模型入门(10)BERT的预训练过程
BERT使用Toronto BookCorpus和维基百科数据集进行预训练。我们了解到BERT使用掩蔽语言建模(完形填空任务)和NSP任务进行预训练。现在,我们如何准备数据集以使用这两个任务训练BERT呢?
2024-12-21 06:00:00
456
原创 BERT模型入门(11)子词标记化算法
子词分词在许多最先进的自然语言模型中被广泛使用,包括BERT和GPT-3。它在处理OOV(Out Of Vocabulary,词汇表外)词汇方面非常有效。在本节中,我们将详细理解子词分词是如何工作的。在直接进入子词分词之前,让我们先看看词级分词。
2024-12-21 06:00:00
445
原创 BERT模型入门(9)下一句预测
下一句预测(NSP)是用于训练BERT模型的另一种有趣策略。NSP是一个二分类任务。在NSP任务中,我们向BERT输入两个句子,它必须预测第二个句子是否是第一个句子的后续(下一句)。让我们通过一个例子来理解NSP任务。
2024-12-20 06:00:00
979
原创 BERT模型入门(7)掩蔽语言建模
为了预测被掩蔽的标记,我们将BERT返回的被掩蔽标记的表示喂给带有softmax激活的前馈网络。现在,前馈网络将作为输入,并返回我们的词汇表中所有单词作为被掩蔽单词的概率,如下面的图所示。在掩蔽语言建模任务中,在给定的输入句子中,我们随机掩蔽15%的单词,并训练网络预测被掩蔽的单词。需要注意的是,在初始迭代中,我们的模型不会返回正确的概率,因为前馈网络和BERT的编码器层的权重不会是最优的。然而,通过一系列的迭代,以及反向传播,我们更新了前馈网络和BERT的编码器层的权重,并学习到了最优权重。
2024-12-19 06:00:00
773
原创 语音信号处理(9)如何提取语音信号的基频?
提取语音信号的基频(Fundamental Frequency,通常缩写为F0)是语音信号处理中的一个常见任务,通常用于语音合成、语音识别和语音分析等应用。
2024-12-19 06:00:00
914
原创 BERT模型入门(5)BERT模型输入数据表示之WordPiece tokenizer
当我们使用WordPiece tokenizer进行分词时,首先我们检查单词是否在我们的词汇表中。如果单词不在词汇表中,那么我们将单词分割成子词,并检查子词是否在词汇表中。但如果子词不在词汇表中,那么我们再次分割子词,并检查它是否在词汇表中。在我们的例子中,单词pretraining不在BERT的词汇表中。现在,就像我们在上一节中学到的那样,我们将输入tokens喂给token、segment和位置嵌入层,获取嵌入(embeddings),将嵌入(embeddings)相加,然后将其作为输入喂给BERT。
2024-12-18 06:00:00
658
原创 BERT模型入门(4)预训练BERT模型之输入数据表示
在本节中,我们将学习如何预训练BERT模型。但是预训练是什么意思呢?假设我们有一个模型m。首先,我们用一个大型数据集针对特定任务训练模型,并保存训练好的模型。现在,对于一个新的任务,我们不是用随机权重初始化一个新模型,而是用我们已经训练好的模型——m(预训练模型)——的权重来初始化模型。也就是说,由于模型已经在大型数据集上进行了训练,所以对于新任务,我们不是从零开始训练新模型,而是使用预训练模型m,并根据新任务调整(微调)其权重。这是一种转移(transfer)学习。
2024-12-18 05:45:00
618
原创 BERT模型入门(6)语言建模
BERT模型在以下两个任务上进行预训练。让我们逐一了解这两种预训练策略是如何工作的。在介绍掩蔽语言模型任务之前,首先让我们了解语言建模任务是如何工作的。在语言建模任务中,我们训练模型根据给定的单词序列预测下一个单词。
2024-12-17 22:58:17
235
原创 (84)QPSK频带调制(载波调制)解调与性能仿真的MATLAB实现源码
本文给出QPSK频带调制传输通信系统建模与传输性能仿真的MATLAB源码,给出仿真结果。QPSK(Quadrature Phase Shift Keying,正交相移键控)是一种数字调制技术,它通过改变载波信号的相位来传输信息。QPSK能够在一个符号周期内传输2比特的信息,相比BPSK(Binary Phase Shift Keying,二进制相移键控)每个符号周期只能传输1比特信息,QPSK的数据传输效率更高。
2024-12-17 06:00:00
4706
原创 BERT模型入门(2)BERT的工作原理
如名称所示,BERT(来自Transformer的双向编码器表示)是基于Transformer模型。我们可以将BERT视为只有编码器部分的Transformer。记得在上一个主题《Transformer入门》中,我们了解到将句子作为输入喂给Transformer的编码器,它会返回句子中每个单词的表示作为输出。这正是BERT的本质——来自Transformer的编码器表示(EncoderRepresentation from Transformer)。
2024-12-16 22:45:16
1100
原创 BERT模型入门(1)BERT的基本概念
BERT是**B**idirectional **E**ncoder **R**epresentations from **T**ransformers的首字母简写,中文意思是:Transformer的双向编码器表示。它是谷歌发布的最先进的嵌入模型。BERT在许多NLP任务中提供了更好的结果,如问答、文本生成、句子分类等,从而在NLP领域取得了重大突破。BERT成功的一个主要原因在于它是一个基于上下文的嵌入模型,而其他流行的嵌入模型,如word2vec,则是上下文无关的。
2024-12-16 22:31:35
614
原创 Transformer入门(14)transformer总结与BERT引入
关于Transformer这一主题的系列文章,我们从理解transformer模型是什么以及它如何使用编码器-解码器架构开始对本主题进行介绍。我们查看了transformer的编码器部分,并了解了编码器中使用的各个子层,如多头注意力和前馈网络。我们了解到自注意力机制将一个单词与句子中的所有单词关联起来,以更好地理解该单词。为了计算自注意力,我们使用了三种不同的矩阵,称为查询、键和值矩阵。接下来,我们学习了如何计算位置编码以及如何使用它来捕获句子中的单词顺序。
2024-12-15 06:00:00
208
原创 Rust语言进阶教程
在之前的简明入门教程中,我们已经了解了Rust的基本概念。现在,我们将深入探讨Rust的高级特性,包括模式匹配、生命周期、特性(Traits)、闭包、并发编程等。
2024-12-15 06:00:00
446
原创 Rust语言入门教程
Rust是一门系统编程语言,注重安全、性能和并发。它由Mozilla主导开发,适用于系统开发、嵌入式编程、网络编程等领域。本教程仅介绍了Rust语言的一些基本概念。要深入学习Rust,建议阅读官方文档、编写实际项目,并参与社区交流。Rust社区非常活跃,有很多优秀的资源可以帮助你提高。
2024-12-14 07:00:00
1359
原创 Transformer入门(12)将所有组件放在一起构成完整的Transformer解码器
(3)现在,我们取注意力矩阵M和编码器表示R,并将它们作为输入喂给多头注意力层(编码器-解码器注意力层,encoder-decoder attention layer),该层再次输出新的注意力矩阵(attention matrix)。接下来,我们将目标句子的解码器表示喂给线性层和softmax层,并获得预测的单词。(1)首先,我们将解码器的输入转换为嵌入矩阵(embedding matrix),然后添加位置编码(position encoding),并将其作为输入喂给最底层的解码器(decoder 1)。
2024-12-14 06:00:00
449
原创 Transformer入门(13)包含编码器和解码器的完整transformer架构与transformer的训练
我们需要注意的另一个要点是,为了防止过拟合,我们会在每个子层的输出上应用dropout,并且我们还会在嵌入和位置编码的总和(the sum of the embeddings and the positional encoding)上应用dropout。在前面的图中,Nx表示我们可以堆叠的编码器和解码器的数量N。正如我们所观察到的,一旦我们输入句子(源句子source sentence),编码器就会学习其表示并将其发送给解码器,解码器进而生成输出句子(目标句子target sentence)。
2024-12-14 06:00:00
274
原创 Transformer入门(11)Transformer解码器组件介绍之前馈网络、加法和归一化组件、线性层和softmax层
线性层生成的大小等于词汇量大小的logits向量。从前面的矩阵中,我们可以理解索引2的概率很高。所以,我们在词汇表中查找索引2处的单词。由于单词“爱”位于索引2,我们的解码器将预测目标句子中的下一个单词为“爱”。现在,线性层返回的logits将是一个大小为3的向量。接下来,我们使用softmax函数将logits转换为概率,然后解码器输出索引概率值较高的单词。现在我们已经理解了所有解码器组件,接下来,让我们将它们放在一起,看看它们整体是如何工作的。解码器中的前馈层的工作方式与我们在编码器中学到的完全相同。
2024-12-13 20:50:21
494
原创 Transformer入门(10)Transformer解码器组件介绍之多头注意力
查询矩阵本质上持有我们的目标句子的表示,因为它来自M,而键和值矩阵持有源句子的表示,因为它来自R。(2)同样,从矩阵的第二行,我们可以观察到我们正在计算查询向量q2(我)和所有键向量k1(I)、k2(love)和k3(learning)之间的点积。(1)从矩阵的第一行,我们可以观察到我们正在计算查询向量q1()和所有键向量k1(I)、k2(love)和k3(learning)之间的点积。下图显示了查询矩阵和键矩阵。因此,z2的值将包含来自值向量v1(I)的98%的值和来自值向量v2(love)的2%的值。
2024-12-13 20:42:23
815
原创 Transformer入门(8)Transformer解码器原理介绍
现在我们有了解码器的基本概念,接下来,让我们详细查看解码器的每个组件,然后我们将了解解码器整体是如何工作的。在时间步t=3,除了当前输入外,解码器还接收上一步t-1新生成的单词,并尝试生成句子中的下一个单词。类似地,在这里,我们不是直接将输入喂给解码器,而是将其转换为嵌入,添加位置编码,然后喂给解码器。在时间步t=2,除了当前输入外,解码器还接收上一步t-1新生成的单词,并尝试生成句子中的下一个单词。从前面的图中我们可以观察到,一旦生成了表示句子结束的标记,这意味着解码器已经完成了目标句子的生成。
2024-12-12 06:00:00
495
原创 Transformer入门(9)Transformer解码器组件介绍之掩蔽多头注意力
为了做到这一点,我们可以掩蔽所有尚未由我们的模型预测的右侧单词。在训练期间,因为我们有正确的目标句子,我们可以直接将整个目标句子作为输入喂给解码器,但有一个小的修改。现在,我们可以将softmax函数应用于前面的矩阵,并将结果乘以值矩阵Vi,从而获得最终的注意力矩阵Zi。这里的 表示一个非常小的负数,这样在应用softmax函数后,这些被掩码的位置将产生接近零的概率,从而在注意力机制中忽略这些位置。为了预测单词“我”右边的单词,我们的模型不应该关注“我”右边的所有单词(因为在测试时这些单词将不可用)。
2024-12-12 06:00:00
626
原创 (83)BPSK频带调制(载波调制)解调建模与性能仿真的MATLAB实现源码
本文给出BPSK频带调制传输通信系统建模与传输性能仿真的MATLAB源码,给出仿真结果。BPSK(Binary Phase-Shift Keying,二进制相移键控)是一种数字调制技术,它通过改变载波信号的相位来表示数据。在BPSK中,有两种相位状态,通常对应于二进制数字“1”和“0”。暂无。
2024-12-12 06:00:00
2878
原创 Transformer入门(7)掩蔽多头注意力Masked multi-head attention是什么?
在Transformer模型中,Masked Multi-Head Attention是一种特殊类型的注意力机制,它在某些场景下用于防止模型在训练过程中看到未来的信息。这在序列处理任务中尤为重要,尤其是在机器翻译、文本摘要和生成式对话系统等序列到序列(Seq2Seq)模型中。
2024-12-11 06:15:00
1522
原创 Transformer入门(6)Transformer编码器的前馈网络、加法和归一化模块
我们可以将N个编码器一个接一个地堆叠;最终编码器(最顶层编码器)获得的输出(编码器表示)将是给定输入句子的表示。让我们将最终编码器(在我们的例子中是编码器2)获得的编码器表示表示为R。
2024-12-11 06:00:00
816
原创 (82)BPSK基带调制解调MATLAB实现源码
BPSK(Binary Phase-Shift Keying,二进制相移键控)是一种数字调制技术,它通过改变载波信号的相位来表示数据。在BPSK中,有两种相位状态,通常对应于二进制数字“1”和“0”。
2024-12-10 06:01:36
2421
原创 Transformer入门(5)Transformer通过位置编码学习位置
问题是由于我们并行输入单词到transformer中,如果单词顺序没有保留,它将如何理解句子的含义?要理解句子,单词顺序(句子中单词的位置)是重要的,对吧?是的,单词顺序非常重要,因为它有助于理解句子中每个单词的位置,这反过来又有助于理解句子的含义。
2024-12-10 05:04:10
709
原创 Transformer入门(4)Transformer的多头注意力机制
我们可以使用多个注意力头(注意力矩阵),而不是只有一个注意力头(注意力矩阵)。也就是说,在前一节中,我们学习了如何计算注意力矩阵Z。我们也可以计算多个注意力矩阵,而不是只计算一个单一的注意力矩阵Z。问题是:计算多个注意力矩阵有什么用呢?
2024-12-09 06:00:00
1811
原创 Transformer入门(3)Transformer的自注意力机制的理解(下)
我们计算了查询矩阵和键矩阵之间的点积,得到了分数,然后使用softmax函数对分数进行了归一化。现在,自注意力机制的最后一步是计算注意力矩阵Z。
2024-12-08 14:06:50
859
原创 Google BERT入门(3)Transformer的自注意力机制的理解(上)
我们学习了如何计算查询矩阵Q、键矩阵K和值矩阵V,并且我们还了解到它们是从输入矩阵X中获得的。现在,让我们看看查询、键和值矩阵在自注意力机制中是如何被使用的。
2024-12-08 05:24:47
843
原创 (81)一个经典的基带调制通信系统传输性能仿真的MATLAB模型源码
本文以QAM基带调制传输为例,给出一个经典的基带调制通信系统传输性能仿真的MATLAB模型源码。
2024-12-07 06:00:00
353
原创 Transformer入门(1)transformer及其编码器-解码器
Transformer模型是一种用于自然语言处理的机器学习模型,它在2017年由Google的研究者提出,并在论文《Attention is All You Need》中详细描述。Transformer模型的核心创新在于其采用了自注意力(self-attention)机制,这使其在处理序列数据(如文本)时比传统的循环神经网络(RNN)和长短期记忆网络(LSTM)更加高效。
2024-12-06 06:00:00
1205
原创 (80)MQAM基带调制通信系统瑞利平坦衰落信道传输性能的MATLAB仿真
本文给出瑞利平坦衰落信道上的M-QAM通信系统性能仿真的MATLAB源代码与仿真结果。其中,调制方式M-PAM包括4-QAM、16-QAM、64-QAM、256-QAM等方式。暂无。后续有机会补上。
2024-12-06 06:00:00
1723
原创 数字信号处理Python示例(602)一阶IIR滤波器的输入输出
为了理解滤波器的行为,我们向滤波器输入了两种类型的信号。输入1是一个直流信号,而输入2是一个高频信号。下面给出处理这两种不同类型输入下滤波器响应的Python代码与相应的运行结果。
2024-12-05 06:00:00
377
连续相位频移键控CPFSK调制的Python代码实现,调制指数h=1,若把调制指数设置为0.5,则为MSK调制
2024-12-17
QPSK频带调制BER-Eb/N0性能MATLAB仿真与算法实现、调制解调算法实现,绘制理论性能曲线与仿真性能曲线
2024-12-16
Rust语言案例:命令行加法计算器
2024-12-14
PyTorch是一个Python包
2024-12-10
数字音频信号处理,噪声抑制,回声消除等,用于语音信号处理的开源C代码
2024-12-10
MPSK和MQAM的理论符号错误率,理论公式的MATLAB实现源码,中文注释
2024-12-10
TensorFlow-An Open Source Machine Learning Framework for Everyone
2024-12-06
M-QAM调制系统在瑞利平坦衰落信道上的性能仿真MATLAB源码
2024-12-05
M-PAM调制系统在瑞利平坦衰落信道上的性能仿真MATLAB源码
2024-12-04
M-PSK调制系统在瑞利平坦衰落信道上的性能仿真MATLAB源码
2024-12-02
M-QAM正交幅度调制在AWGN信道上的传输性能仿真MATLAB源代码
2024-12-01
MPSK-AWGN性能仿真MATLAB源码
2024-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人