深度学习教程(16) | Seq2seq序列模型和注意力机制(吴恩达·完整版)

大模型技术演进:从神经网络到Transformer的工程突破 神经网络作为人工智能的核心技术,经历了从McCulloch-Pitts神经元模型到现代Transformer架构的漫长演进。反向传播算法和LSTM等关键突破奠定了深度学习的理论基础,而大规模预训练和注意力机制等技术革新则推动了自然语言处理的快速发展。在工程实践中,优化器演进、分布式训练和高质量数据集构建等基础设施进步同样功不可没。这些技术积累最终催生了ChatGPT等大语言模型,在机器翻译、文本生成等场景展现出强大能力。理解从Word2Vec到BERT的技术发展脉络,对把握AI领域最新趋势具有重要意义。 阅读详情


第5门课 序列模型,第3周:序列模型和注意力机制

本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在这里查看。

引言

在ShowMeAI前一篇文章 自然语言处理与词嵌入 中我们对以下内容进行了介绍:

  • 词嵌入与迁移学习/类比推理
  • 词嵌入学习方法
  • 神经概率语言模型
  • word2vec(skip-gram与CBOW)
  • GloVe
  • 情感分析
  • 词嵌入消除偏见

本篇介绍自然语言处理中关于序列模型的高级知识,包括Sequence to sequence序列到序列模型和注意力机制。

1.Seq2Seq 模型

1.1 Seq2Seq结构

基础模型 Basic Models

Seq2Seq(Sequence-to-Sequence)模型能够应用于机器翻译、语音识别等各种序列到序列的转换问题。一个 Seq2Seq 模型包含编码器(Encoder)和解码器(Decoder)两部分,它们通常是两个不同的 RNN。

Seq2Seq模型

如图,为Seq2Seq模型典型的机器翻译应用,这个Seq2Seq网络中,包含编码网络(encoder network)和解码网络(decoder network)两个RNN模型子结构,其中encoder编码网络将输入语句编码为一个特征向量,传递给decoder解码网络,完成翻译输出。

提出 Seq2Seq 模型的相关论文:

Sutskever et al., 2014. Sequence to sequence learning with neural networks

Cho et al., 2014. Learning phrase representaions using RNN encoder-decoder for statistical machine translation

1.2 Seq2Seq类似结构应用

这种编码器-解码器的结构也可以用于图像描述(Image captioning)任务。这个任务要根据给定的图像,「翻译」出对应的内容描述。

Seq2Seq模型

要完成上述任务,可以这么做:

① 第1步:将图片输入到CNN(例如预训练好的AlexNet/VGG/Inception),去掉最后的Bleu层,则倒数第2层这个全连接层的输出,就相当于图片的特征向量(编码向量),表征了图片特征信息。

② 第2步**:将上述过程得到的图像信息表征向量输入至RNN,即decoder解码网络中,进行**解码翻译输出。

Seq2Seq模型

图像描述的相关论文:

Mao et. al., 2014. Deep captioning with multimodal recurrent neural networks

Vinyals et. al., 2014. Show and tell: Neural image caption generator

Karpathy and Fei Fei, 2015. Deep visual-semantic alignments for generating image descriptions

2.贪心搜索解码

2.1 机器翻译解码过程

选择最可能的句子 Picking the Most Likely Sentence

上面提到的简单机器翻译模型与ShowMeAI前面文章 序列模型与RNN网络 提到的语言模型类似,只是用编码器的输出作为解码器第一个时间步的输入(而非0向量)。因此机器翻译的过程其实相当于建立一个条件语言模型。

贪心搜索解码

对应上图,是一个典型的机器翻译编码解码过程。解码器进行预测输出词的过程,结果可能有好有坏。我们希望找到能使条件概率最大化的翻译,即

a r g   m a x y ⟨ 1 ⟩ , … , y ⟨ T y ⟩ P ( y ⟨ 1 ⟩ , … , y ⟨ T y ⟩ ∣ x ) arg \ max_{y^{\left \langle 1 \right \rangle}, \dots , y^{\left \langle T_y \right \rangle}}P(y^{\left \langle 1 \right \rangle}, \dots , y^{\left \langle T_y \right \rangle} \mid x) arg maxy⟨1⟩,…,y⟨Ty​⟩​P(y⟨1⟩,…,y⟨Ty​⟩∣x)

2.2 贪心搜索

如下为吴恩达老师课程中的一个例子,翻译成英文有多个翻译候选:

Jane visite I'Afrique en septembre.
→ Jane is visiting Africa in September.
→ Jane is going to be visiting Africa in September.
→ In September, Jane will visit Africa.
→ Her African friend welcomed Jane in September.

最直接能想到的解决方法是贪婪搜索(greedy search):贪心搜索根据条件,解码器的每个时间步都选择概率最高的单词作为翻译输出。

例如,首先根据输入语句,找到第一个翻译的单词「Jane」,然后再找第二个单词「is」,再继续找第三个单词「visiting」,以此类推。

2.3 贪心搜索缺点

但上述贪心搜索方法存在一些缺点。

① 因为贪心搜索每次只选择概率最大的一个词,没有考虑该单词前后关系,概率选择上有可能会出错。

  • 例如,上面翻译语句中,第三个单词「going」比「visiting」更常见,模型很可能会错误地选择了「going」,而错失最佳翻译语句。

② 贪心搜索总体运算成本也比较高,运算效率不高。

优化贪心搜索最常使用的算法是集束搜索(Beam Search)。

3.集束搜索解码

3.1 集束搜索方法

集束搜索 Beam Search

相比于贪心搜索每次都选择预测概率最大的词,集束搜索(Beam Search)会每次保留预测概率最大的 B B B个单词( B B B表示取概率最大的词个数,为可调超参数)。

集束搜索解码

3.2 集束搜索示例

下面针对前一节的机器翻译例子,取 B = 3 B=3 B=3做一个展开讲解:

① 根据集束搜索,首先从词汇表中找出翻译的第1个单词概率最大的B个预测单词。对应到上例中是:in,jane,september。

集束搜索解码

概率表示为: P ( y ^ ⟨ 1 ⟩ ∣ x ) P(\hat {y}^{\left \langle 1 \right \rangle} \mid x) P(y^​⟨1⟩∣x)

② 再分别以in,jane,september为条件,计算每个词汇表单词作为预测第二个单词的概率。从中选择概率最大的3个作为第二个单词的预测值,得到:in september,jane is,jane visits。

集束搜索解码

概率表示为: P ( y ^ ⟨ 2 ⟩ ∣ x , y ^ ⟨ 1 ⟩ ) P(\hat {y}^{\left \langle 2 \right \rangle} \mid x,\hat {y}^{\left \langle 1 \right \rangle}) P(y^​⟨2⟩∣x,y^​⟨1⟩)。

到这时,得到的前两个单词的3种情况的概率为:

P ( y ^ ⟨ 1 ⟩ , y ^ ⟨ 2 ⟩ ∣ x ) = P ( y ^ ⟨ 1 ⟩ ∣ x ) ⋅ P ( y ^ ⟨ 2 ⟩ ∣ x , y ^ ⟨ 1 ⟩ ) P(\hat {y}^{\left \langle 1 \right \rangle},\hat {y}^{\left \langle 2 \right \rangle} \mid x)=P(\hat {y}^{\left \langle 1 \right \rangle} \mid x)\cdot P(\hat {y}^{\left \langle 2 \right \rangle} \mid x,\hat {y}^{\left \langle 1 \right \rangle}) P(y^​⟨1⟩,y^​⟨2⟩∣x)=P(y^​⟨1⟩∣x)⋅P(y^​⟨2⟩∣x,y^​⟨1⟩)

③ 用同样的方法预测第三个单词。

分别以in september,jane is,jane visits为条件,计算每个词汇表单词作为预测第三个单词的概率。从中选择概率最大的3个作为第三个单词的预测值,得到:in september jane,jane is visiting,jane visits africa。

集束搜索解码

概率表示为: P ( y ^ ⟨ 3 ⟩ ∣ x , y ^ ⟨ 1 ⟩ , y ^ ⟨ 2 ⟩ ) P(\hat {y}^{\left \langle 3 \right \rangle} \mid x,\hat {y}^{\left \langle 1 \right \rangle},\hat {y}^{\left \langle 2 \right \rangle}) P(y^​⟨3⟩∣x,y^​⟨1⟩,y^​⟨2⟩)。

到这时,得到的前三个单词的3种情况的概率为:

P ( y ^ ⟨ 1 ⟩ , y ^ ⟨ 2 ⟩ , y ^ ⟨ 3 ⟩ ∣ x ) = P ( y ^ ⟨ 1 ⟩ ∣ x ) ⋅ P ( y ^ ⟨ 2 ⟩ ∣ x , y ^ ⟨ 1 ⟩ ) ⋅ P ( y ^ ⟨ 3 ⟩ ∣ x , y ^ ⟨ 1 ⟩ , y ^ ⟨ 2 ⟩ ) P(\hat {y}^{\left \langle 1 \right \rangle},\hat {y}^{\left \langle 2 \right \rangle},\hat {y}^{\left \langle 3 \right \rangle} \mid x)=P(\hat {y}^{\left \langle 1 \right \rangle} \mid x)\cdot P(\hat {y}^{\left \langle 2 \right \rangle} \mid x,\hat {y}^{\left \langle 1 \right \rangle})\cdot P(\hat {y}^{\left \langle 3 \right \rangle} \mid x,\hat {y}^{\left \langle 1 \right \rangle},\hat {y}^{\left \langle 2 \right \rangle}) P(y^​⟨1⟩,y^​⟨2⟩,y^​⟨3⟩∣x)=P(y^​⟨1⟩∣x)⋅P(y^​⟨2⟩∣x,y^​⟨1⟩)⋅P(y^​⟨3⟩∣x,y^​⟨1⟩,y^​⟨2⟩)

④ 按照同样的方法以此类推,每次都取概率最大的三种预测。最后,选择概率最大的那一组作为最终的翻译语句。

Jane is visiting Africa in September.

特别的,如果参数 B = 1 B=1 B=1,就等同于贪心搜索。实际应用中,根据效率要求、计算资源和准确度要求来设置 B B B的取值。一般 B B B越大,机器翻译越准确,但计算复杂度也会越高。

3.3 优化:长度标准化

改进集束搜索 Refinements to Beam Search

长度标准化(Length Normalization)是对集束搜索算法的优化方式。我们观察公式

a r g m a x ∏ t = 1 T y P ( y ^ ⟨ t ⟩ ∣ x , y ^ ⟨ 1 ⟩ , … , y ^ ⟨ t − 1 ⟩ ) arg max \prod^{T_y}_{t=1} P(\hat {y}^{\left \langle t \right \rangle} \mid x, \hat {y}^{\left \langle 1 \right \rangle}, \dots , \hat {y}^{\left \langle t-1 \right \rangle}) argmaxt=1∏Ty​​P(y^​⟨t⟩∣x,y^​⟨1⟩,…,y^​⟨t−1⟩)

当很多个小于1的概率值相乘后,会造成数值下溢(Numerical Underflow),即得到的结果将会是一个电脑不能精确表示的极小浮点数。一种处理方法是取 l o g log log值,并进行标准化:

a r g   m a x 1 T y α ∑ t = 1 T y l o g P ( y ^ ⟨ t ⟩ ∣ x , y ^ ⟨ 1 ⟩ , … , y ^ ⟨ t − 1 ⟩ ) arg \ max \frac{1}{T_y^{\alpha}} \sum^{T_y}_{t=1} logP(\hat {y}^{\left \langle t \right \rangle} \mid x, \hat {y}^{\left \langle 1 \right \rangle}, \dots , \hat {y}^{\left \langle t-1 \right \rangle}) arg maxTyα​1​t=1∑Ty​​logP(y^​⟨t⟩∣x,y^​⟨1⟩,…,y^​⟨t−1⟩)

公式中, T y T_y Ty​代表翻译结果的单词数量, α \alpha α是超参数归一化因子可调整(若 α = 1 \alpha=1 α=1,则完全进行长度归一化;若 α = 0 \alpha=0 α=0,则不进行长度归一化。一般令 α = 0.7 \alpha=0.7 α=0.7)。标准化用于减少对输出长的结果的惩罚(因为翻译结果一般没有长度限制)。

前面也讨论到了:集束宽 B B B的取值影响结果:

  • 较大的 B B B值意味着可能更好的结果和巨大的计算成本。
  • 较小的 B B B值代表较小的计算成本和可能表现较差的结果。

通常来说, B B B可以根据实际需求选取一个10以下的值。

与广度优先搜索和深度优先搜索等精确的查找算法相比,集束搜索算法运行速度更快,但是不能保证一定找到最准确的翻译结果。

3.4 误差分析

集束搜索的误差分析 Error Analysis in Beam Search

集束搜索是一种启发式搜索算法,有可能找不到最优的翻译结果。当Seq2Seq模型+集束搜索构建机器翻译等应用没有输出最佳结果时,我们可以通过误差分析来判断问题出现在RNN模型还是集束搜索算法中。

例如,对于下述两个由人工和算法得到的翻译结果:

( y ∗ ) (y^\ast) (y∗) Human:\ Jane\ visits\ Africa\ in\ September.\

( y ^ ) (\hat{y}) (y^​) Algorithm:\ Jane\ visited\ Africa\ last\ September.\

这个例子中,我们发现翻译结果的前三个单词差异不大,以其作为解码器前三个时间步的输入,得到第四个时间步的条件概率 P ( y ∗ ∣ x ) P(y^\ast \mid x) P(y∗∣x)和 P ( y ^ ∣ x ) P(\hat{y} \mid x) P(y^​∣x),比较其大小,我们有如下的结论:

  • 如果 P ( y ∗ ∣ x ) > P ( y ^ ∣ x ) P(y^\ast \mid x) > P(\hat {y} \mid x) P(y∗∣x)>P(y^​∣x),说明是集束搜索算法出现错误,没有选择到概率最大的词;
  • 如果 P ( y ∗ ∣ x ) ≤ P ( y ^ ∣ x ) P(y^\ast \mid x) \le P(\hat {y} \mid x) P(y∗∣x)≤P(y^​∣x),说明是RNN模型的效果不佳,预测的第四个词为「in」的概率小于「last」。

我们可以构建表格对错误的case进行汇总分析,综合判断错误出现在RNN模型还是集束搜索算法中。

误差分析

如果错误出现在集束搜索算法中,可以考虑增大集束宽 B B B;否则,需要进一步分析,看是需要正则化、更多数据或是尝试一个不同的网络结构。

4.Bleu 得分

Bleu 得分  Bleu Score

4.1 Bleu计算方式

上述我们一直以机器翻译为例给大家做讲解,下面我们介绍一下机器翻译的评估方法,我们会用Bleu(Bilingual Evaluation Understudy)得分评估机器翻译的质量,核心思想是「机器翻译的结果越接近于人工翻译,则评分越高」。

Bleu 得分

原始的Bleu计算方法将机器翻译结果中每个单词在人工翻译中出现的次数作为分子,机器翻译结果总词数作为分母,计算得到,但这种简单粗暴的方式容易出现错误。例如,机器翻译结果全部选定高频出现,又恰好在人工翻译结果中的词(比如上图的the),则按照上述方法得到的Bleu为1,显然有误。

改进的计算方法是将每个单词在人工翻译结果中出现的次数作为分子,在机器翻译结果中出现的次数作为分母。

4.2 从unigram到n-gram

上述统计,以单个词为单位的集合称为unigram(一元组)。我们可以以两两连续的词为单位统计,叫做bigram(二元组):对每个二元组,可以统计其在机器翻译结果( c o u n t count count)和人工翻译结果( c o u n t c l i p count_{clip} countclip​)出现的次数,计算Bleu得分。

同样的方式,还可以统计以 n n n个单词为单位的集合,称为n-gram(多元组),基于n-gram的Blue得分计算公式为:

p n = ∑ n-gram ∈ y ^ c o u n t c l i p ( n-gram ) ∑ n-gram ∈ y ^ c o u n t ( n-gram ) p_n = \frac{\sum_{\text{n-gram} \in \hat {y}}count_{clip}(\text{n-gram})}{\sum_{\text{n-gram} \in \hat {y}}count(\text{n-gram})} pn​=∑n-gram∈y^​​count(n-gram)∑n-gram∈y^​​countclip​(n-gram)​

对$ N 个 个 个p_n$进行几何加权平均得到:

p a v e = e x p ( 1 N ∑ i = 1 N l o g p n ) p_{ave} = exp(\frac{1}{N}\sum^N_{i=1}log^{p_n}) pave​=exp(N1​i=1∑N​logpn​)

4.3 长度惩罚

Bleu存在的1个问题是:当机器翻译结果比较短时,比较容易能得到更大的精确度分值(容易理解,因为输出的大部分词可能都出现在人工翻译结果中)。

对长度问题的改进方法之一,是设置一个最佳匹配长度(Best Match Length),若机器翻译的结果短于该最佳匹配长度,则需要接受简短惩罚(Brevity Penalty,BP):

B P = { 1 , M T _ l e n g t h ≥ B M _ l e n g t h e x p ( 1 − M T _ l e n g t h B M _ l e n g t h ) , M T _ l e n g t h < B M _ l e n g t h BP = \begin{cases} 1, &MT\_length \ge BM\_length \\ exp(1 - \frac{MT\_length}{BM\_length}), &MT\_length \lt BM\_length \end{cases} BP={1,exp(1−BM_lengthMT_length​),​MT_length≥BM_lengthMT_length<BM_length​

优化调整过后的Bleu得分为:

B l u e = B P × e x p ( 1 N ∑ i = 1 N l o g p n ) Blue = BP \times exp(\frac{1}{N}\sum^N_{i=1}log^{p_n}) Blue=BP×exp(N1​i=1∑N​logpn​)

相关论文:Papineni et. al., 2002. A method for automatic evaluation of machine translation

5.注意力模型

5.1 注意力机制

注意力模型直观理解 Attention Model Intuition

回到机器翻译问题,有时候翻译的句子很长,如果对整个语句输入RNN的编码网络和解码网络进行翻译,效果会不佳。具体表现是Bleu score会随着单词数目增加而逐渐降低,如下图所示。

一种处理长句的方法是将长语句分段,每次只对其一部分进行翻译。人工翻译也是采用这样的方法,高效准确。

注意力模型

这种「局部聚焦」的思想,对应到深度学习中非常重要的注意力机制(attention mechanism)。对应的模型叫做注意力模型(attention model)。

注意力模型

5.2 注意力模型(Attention Model)

注意力模型 Attention Model

下图为注意力模型的一个示例。模型的底层是一个双向循环神经网络(BRNN),「双向」是指的每个时间步的激活都包含前向传播和反向传播产生的激活结果:

a ⟨ t ′ ⟩ = ( a → ⟨ t ′ ⟩ , a ← ⟨ t ′ ⟩ ) a^{\langle t\prime \rangle} = ({\overrightarrow a}^{\langle t\prime \rangle}, {\overleftarrow a}^{\langle t\prime \rangle}) a⟨t′⟩=(a ⟨t′⟩,a ⟨t′⟩)

模型的顶层是一个「多对多」结构的循环神经网络,我们以第 t t t个时间步为例,它的输入包含:

① 同级网络前一个时间步的激活 s ⟨ t − 1 ⟩ s^{\left \langle t-1 \right \rangle} s⟨t−1⟩、输出 y ⟨ t − 1 ⟩ y^{\left \langle t-1 \right \rangle} y⟨t−1⟩

② 底层BRNN网络多个时间步的激活 c c c,其中 c c c计算方式如下(注意分辨 α \alpha α和 a a a): c ⟨ t ⟩ = ∑ ⟨ t ′ ⟩ α ⟨ t , t ′ ⟩ a ⟨ t ′ ⟩ c^{\left \langle t \right \rangle} = \sum_{\left \langle t \prime \right \rangle}\alpha^{ \left \langle t,t\prime \right \rangle }a^{\left \langle t \prime \right \rangle} c⟨t⟩=∑⟨t′⟩​α⟨t,t′⟩a⟨t′⟩

注意力模型

我们对上面的公式展开讲解:

① 参数 α ⟨ t , t ′ ⟩ \alpha^{\left \langle t,t\prime \right \rangle} α⟨t,t′⟩代表着 y ⟨ t ⟩ y^{\left \langle t \right \rangle} y⟨t⟩对 a ⟨ t ′ ⟩ a^{\left \langle t \prime \right \rangle} a⟨t′⟩的「注意力」,总和为 1 1 1(体现分配到不同部分的注意力比重):

∑ ⟨ t ′ ⟩ α ⟨ t , t ′ ⟩ = 1 \sum_{\left \langle t \prime \right \rangle}\alpha^{\left \langle t,t\prime \right \rangle} = 1 ⟨t′⟩∑​α⟨t,t′⟩=1

  • α ⟨ t , t ′ ⟩ \alpha^{\left \langle t,t\prime \right \rangle} α⟨t,t′⟩的计算是使用Bleu得到的,即: α ⟨ t , t ′ ⟩ = e x p ( e ⟨ t , t ′ ⟩ ) ∑ ⟨ t ′ = 1 ⟩ T x e x p ( e ⟨ t , t ′ ⟩ ) \alpha^{\left \langle t,t\prime \right \rangle} = \frac{exp(e^{\left \langle t,t\prime \right \rangle})}{\sum^{T_x}_{\left \langle t \prime =1 \right \rangle}exp(e^{\left \langle t,t\prime \right \rangle})} α⟨t,t′⟩=∑⟨t′=1⟩Tx​​exp(e⟨t,t′⟩)exp(e⟨t,t′⟩)​,所以也一定能保证总和为1。

② 上式中的 e ⟨ t , t ′ ⟩ e^{\left \langle t,t\prime \right \rangle} e⟨t,t′⟩是通过神经网络学习得到的。假设输入为 s ⟨ t − 1 ⟩ s^{\left \langle t-1 \right \rangle} s⟨t−1⟩和 a ⟨ t , t ′ ⟩ a^{\left \langle t,t\prime \right \rangle} a⟨t,t′⟩,则可以通过下图这样一个简单的神经网络计算得到:

注意力模型

注意力模型在其他领域,例如图像捕捉方面也有应用。它的一个缺点是时间复杂度较高。

Attention model能有效处理很多机器翻译问题,例如下面的时间格式归一化:

July 20th 1969 → 1969-07-20
23 April, 1564 → 1564-04-23

下图将注意力权重可视化:

注意力模型

上图中,颜色越白表示注意力权重越大,颜色越深表示权重越小。可见,输出语句单词与其输入语句单词对应位置的注意力权重较大,即对角线附近。

相关论文:

Bahdanau et. al., 2014. Neural machine translation by jointly learning to align and translate

Xu et. al., 2015. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention:将注意力模型应用到图像标注中

6.语音识别

语音识别 Speech Recognition

语音识别是另外一个非常典型的NLP序列问题,在语音识别任务中,输入是一段音频片段,输出是文本。我们有时会把信号转化为频域信号,也就是声谱图(spectrogram),再借助于RNN模型进行识别。

语音识别

以前的语音识别系统通过语言学家人工设计的音素(Phonemes)来构建,音素指的是一种语言中能区别两个词的最小语音单位。现在的端到端系统中,用深度学习就可以实现输入音频,直接输出文本。

要使用深度学习训练可靠的语音识别系统,要依赖海量的数据。在语音识别的学术研究中,要用到长度超过3000小时的音频数据;如果是商用系统,那么超过一万小时是最基本的要求。

语音识别系统可以用注意力模型来构建,一个简单的图例如下:

注意力模型

假如上例中,语音识别的输入为10s语音信号序列,采样率为100Hz,则语音长度为1000。而翻译的语句通常很短,例如「the quick brown fox」,包含19个字符。我们会发现 T x T_x Tx​与 T y T_y Ty​差别很大。为了让 T x = T y T_x=T_y Tx​=Ty​,可以对输出做一些处理,比如对相应字符重复,比如加入一些空白(blank),如下:

语音识别

上式中,下划线 _ 表示空白, ⊔ \sqcup ⊔ 表示两个单词之间的空字符。这种写法的一个基本准则是没有被空白符 _ 分割的重复字符将被折叠到一起,即表示一个字符。

通过加入了重复字符和空白符、空字符,可以让输出长度也达到1000,即 T x = T y T_x=T_y Tx​=Ty​。这种模型被称为CTC(Connectionist temporal classification):

相关论文:Graves et al., 2006. Connectionist Temporal Classification: Labeling unsegmented sequence data with recurrent neural networks

7.触发词检测

触发字检测 Trigger Word Detection

触发词检测(Trigger Word Detection)常用于各种智能设备,通过约定的触发词可以语音唤醒设备。例如Amazon Echo的触发词是「Alexa」,小米音箱的触发词是「小爱同学」,百度DuerOS的触发词是「小度你好」,Apple Siri的触发词是「Hey Siri」。

触发词检测

我们可以使用RNN模型来构建触发词检测系统。如下图的输入语音中包含一些触发词。RNN检测到触发字后输出1,非触发字输出0。这样训练的RNN模型就能实现触发字检测。

触发词检测

上述模型的缺点是,训练样本语音大部分片段都是非触发词,只有少数的触发词部分,即正负样本分布不均。

一种解决办法如下图所示,对触发词附近的数据处理,将附近的RNN输出都调整为1。这样简单粗暴处理后,相当于增加了正样本。

触发词检测

参考资料

ShowMeAI系列教程推荐

推荐文章

NLP全栈学习指南:从零到Transformer与大模型实战 自然语言处理(NLP)是人工智能的核心领域,旨在让计算机理解、生成和处理人类语言。其技术原理经历了从基于规则到统计方法,再到深度学习驱动的根本性变革。Transformer架构的出现,凭借其自注意力机制,彻底解决了传统序列模型的长程依赖问题,成为现代NLP的基石,带来了巨大的技术价值。这使得模型能够更有效地捕捉文本的上下文信息,推动了BERT、GPT等预训练大模型的诞生。这些模型通过在海量文本上预训练,具备了强大的语言表示和生成能力,广泛应用于机器翻译、智能问答、文本摘要和情感分析等场景。本文聚焦于**NL 阅读详情

相关推荐

五大神经网络模型核心原理与PyTorch实战:CNN、RNN、GNN、Transformer、GAN

神经网络作为深度学习的核心,其本质是通过多层非线性变换自动进行特征提取与模式识别,从而实现对复杂数据映射关系的拟合。这一原理使得模型能够从原始数据中学习到有效的特征表示,替代了传统机器学习中繁琐的手工特征工程。在工程实践中,针对不同数据结构,发展出了各具特色的神经网络架构。例如,卷积神经网络(CNN)利用局部连接和参数共享高效处理图像等网格数据;循环神经网络(RNN)及其变体LSTM通过循环结构捕捉序列数据中的时序依赖。这些模型在计算机视觉、自然语言处理等领域展现出巨大技术价值。随着图神经网络(GNN)处理

weixin_30892889的博客 379

《深度学习工程师-吴恩达》05序列模型—序列模型和注意力机制 学习总结

《深度学习工程师-吴恩达》05序列模型—序列模型和注意力机制 学习笔记 作者:jliang https://blog.youkuaiyun.com/jliang3 1.重点归纳 1)基础模型 (1)Sequence to sequence翻译模型 (2)Image to sequence图像描述模型:输入一张图片,它能自动地输出图片的描述 2)机...

jliang3的博客 1203

五大神经网络原理与实战速成:从CNN到Transformer的本地运行指南

这次我们来看一个面向初学者的神经网络原理与实战速成内容。标题虽然带有“10分钟动画讲解”的营销感,但其核心价值在于将GNN、RNN、GAN、CNN、Transformer这五大主流神经网络架构的原理与实战进行系统性串联。对于刚入门AI、被各种缩写搞晕的开发者来说,这种对比学习能快速建立知识框架,理解不同网络“为什么”能学习以及“如何”应用。 最值得关注的是其内容组织方式:它试图用动画和实战代码,一次性讲透五大网络的底层逻辑和适用场景。这解决了初学者常见痛点——学完CNN不知道和RNN有什么区别,了解了Tra

weixin_30721077的博客 408

吴恩达深度学习 5.3 序列模型和注意力机制

1. 知识点 sequence to sequence模型:编码网络和解码网络 image to sequence模型:卷积,全连接,输出序列,对序列解码 机器翻译:条件语言模型,相对于语言模型总是以零向量开始,机器翻译以每个单词的一系列向量作为输入。 机器翻译,寻找最大的概率输出: ...

weixin_43638099的博客 1264

基于ESP32-C3的物联网硬件设计:从免费工具链到PCB打样全流程实战

在物联网和嵌入式开发领域,硬件设计是连接软件逻辑与物理世界的关键环节。其核心原理在于通过电路设计将微控制器、传感器、通信模块等电子元件有机整合,实现特定功能。掌握硬件设计能力的技术价值在于能够自主实现产品原型,优化成本与性能,并深入理解系统底层运作。常见的应用场景包括智能家居节点、环境监测设备、工业传感终端等。本文以热门的ESP32-C3 RISC-V物联网芯片和广泛使用的KiCad免费EDA工具为例,详细解析了从核心器件选型、射频电路布局、PCB设计规则到Gerber文件生产的完整流程,并分享了在嘉立创平

weixin_30918633的博客 336

手把手教你用STM32F103的普通IO口读取SSI编码器(附完整代码与示波器调试心得)

本文详细介绍了如何利用STM32F103的普通IO口读取SSI绝对式编码器数据,提供完整的硬件连接方案、精确时序控制的软件实现及示波器调试技巧。通过低成本方案实现高精度位置反馈,适用于工业自动化和机器人控制领域。

weixin_29172963的博客 453

Seq2Seq与Attention

一、seq2seq 对于序列数据常用的深度学习结构是RNN,但是普通RNN的结构存在缺陷,比如梯度消失,输入序列与输出序列要求等长等问题。这在许多情况下,比如翻译、生成总结等,RNN没有很好的效果。为了解决RNN梯度消失问题,提出了lstn结构,但是仍没有解决输入序列与输出序列要求等长的问题。 Sequence-to-sequence(seq2seq)解除了输入和输出序列等长和长度固定的问题。一个...

u011517132的博客 842

自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真

自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P

zhudj08的博客 1万+

吴恩达序列模型

1.seq2seq模型:机器翻译、语音识别; 基本模型

u010070587的博客 354

PLCopen运动控制避坑指南:单轴功能块常见报错排查(基于SM3_Basic函数库)

本文深入解析PLCopen运动控制中单轴功能块的常见报错问题,基于SM3_Basic函数库提供实用排查指南。从功能块逻辑错误与硬件报错的甄别技巧到高频报错场景的解决方案,帮助工程师快速定位并解决运动控制系统中的稳定性问题,提升工业自动化设备的运行效率。

weixin_33686714的博客 318

ADI DSP开发环境(CCES)下的程序烧录问题(以ADSP-SC589为例)

在CCES环境下将程序烧录到flash主要有两种方式。首先在对项目编译产生文件的属性设置为Release。 在编译完成后,找到每个CORE单独生成的DXE文件: 文件通常位于项目目录下每个core的Release文件中。安装SC589评估板的驱动(ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0.exe)后,在安装目录下可以找到SPI FLASH芯片的驱动程序(sc589_w25q128fv_dpia_Core1.dxe): 把文件copy到CCES 的目录下由于SC58x处理器的特殊性

daijingxin的博客 3731

吴恩达 序列模型_学习笔记3 seq2seq 序列模型和注意力机制

我也是一个nlp新手,在这里将自己的学习心得总结下来,希望可以帮助到也在共同学习的同志们。 目录1、基本概念2、选择最可能的句子3、Beam search 算法4、改进的Beam search5、Beam search的误差分析6、Bleu(Bilingual evalution understudy )评分7-8 注意力机制9、语音辨别10、触发字检测 1、基本概念 回顾第一周的不同类型的RNN,seq2seq模型一般如下,其中前半部分可以看做是编码器,后半部分是一个解码器。而每一个单元可以是RNN单元也

weixin_42217488的博客 838

YOLO11涨点优化:创新多尺度卷积注意力(MSCA)模块,小目标检测神器!

MSCA模块通过创新的多尺度设计,在保持计算效率的同时显著提升小目标检测能力。实验证明,在YOLOv5/v8等模型上嵌入MSCA后,mAP提升超过2%,小目标检测精度提升近4%,且计算代价增加极小。注意力机制的未来发展方向动态核尺寸:根据输入特征自适应调整卷积核大小跨模态融合:结合RGB与深度/热力图等多模态信息自监督优化:利用对比学习预训练注意力模块尝试在你的YOLO模型中插入MSCA模块,欢迎在评论区分享你的涨点结果!参考文献。

QQ_778132974的博客 470

深度学习教程(1) | 深度学习概论(吴恩达·完整版)

本篇为深度学习系列教程的引言,以房价预测为例,讲解神经网络(Neural Network)模型结构和基础知识,并介绍针对监督学习的几类典型神经网络:Standard NN,CNN和RNN等知识

ShowMeAI研究中心 1万+

SAP S4 HANA:按单生产(MTO)场景中的COGS分割

本文介绍了SAP S/4HANA中提供的各种选项,以在销售订单/商品是按订单生产(以下称为MTO)生产流程中的成本对象时,在基于帐户的COPA环境中报告COGS分割信息。

adam915的博客 1192

【WLAN】【基础知识】WIFI那些事儿之信道和频谱(涵盖2.4G、5G、6G,全网最全)

- 从事WIFI相关开发或测试工作,经常要和信道、频宽、频率等打交道,本文仅将平时涉及的2.4G、5G、6G的信道、频宽、频率等做一总结。 - 一图胜万言,本文汇总了工作中经常用到的频谱图,保证全网最全!!! - 本博客地址,https://blog.youkuaiyun.com/qxhgd,欢迎各位关注,转发请注明出处。

一介草民,只为生活。 1万+

2020-11-16 吴恩达DL学习-C5 序列模型-W3 序列模型和注意力机制

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-start.com/dl2017/ 3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai 第三周 序列模型和注意力机制 Sequence to sequence models3.1 基础模型 Basic models 注意力机制可以增强序列模

weixin_42555985的博客 529

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深度学习教程 | 吴恩达专项课程 · 全套笔记解读

本篇内容是组织的「深度学习原理知识大全」系列教程入口,教程依托吴恩达老师《深度学习专项课程》,对内容做了重新梳理与制作,以更全面和直观的图文方式,对深度学习涉及的知识、模型、原理、应用领域等进行详解......

ShowMeAI研究中心 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

2020-11-16 吴恩达DL学习-C5 序列模型-W3 序列模型和注意力机制(3.1 基础模型-seq2seq模型-机器翻译/image to sequence模型-图像描述)

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-start.com/dl2017/ 3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai 3.1 基础模型 Basic models 在这一周,你将会学习seq2seq(sequence to sequence)模型,从机器翻译到语音识别,它们都

weixin_42555985的博客 293

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从Seq2Seq到Transformer:程序员转型大模型学习的核心路径与实践

序列到序列(Seq2Seq)模型是自然语言处理(NLP)领域的核心架构之一,它通过编码器-解码器结构解决机器翻译、文本摘要等序列转换任务。其原理在于将输入序列编码为上下文向量,再解码为目标序列,但传统RNN/LSTM架构存在信息瓶颈和长程依赖问题。Attention机制的引入让模型能够动态聚焦于输入序列的相关部分,显著提升了处理长序列的能力,这构成了Transformer架构的技术基础。从工程实践角度看,理解Seq2Seq与Attention是掌握现代大模型(如GPT、LLaMA)内部工作机制的关键跳板。本

weixin_34253126的博客 433

Python机器学习:从零基础到项目实战

当您翻开此书,您正踏入一场数据与智慧的修行。机器学习,并非冰冷的符码,而是机器模拟人类洞察世界的法门。本书将带您,以Python为舟,泛游于算法之海。我们不只传授“术”,更探求其后的“道”——从数据的生灭流转中观照规律,于模型的迭代演进里体悟得失。愿您合上书卷时,收获的不仅是驾驭数据的技能,更有一双洞悉复杂、化繁为简的“智慧之眼”。现在,让我们一同启程。

YunWisdom 972

注意力机制Attention Mechanism及论文

注意力机制源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息,上述机制通常被称为注意力机制。 例如在NLP中,当要捕捉一句话中词与词的关系时,如: 当看到eating这个词时,我们更希望看到食物apple,而对颜色green并不在意,此时我们就可以使用注意力机制来衡量词之间的相关性。相比于序列模型,它能够通过矩阵运算实现并行化,提高效率。

helluy的博客 7800

NLP---seq2seq与注意力机制

1. seq2seq 参考:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/ 模型结构 seq2seq是一个“编码解码器”结构,编码器处理输入序列中的每个元素,将捕获的信息编译成上下文内容向量 (context vector...

逗逗的博客 1807

<模型汇总-7>基于CNN的Seq2Seq模型-Convolutional Sequence to Sequence Learning

Seq2seq是现在使用广泛的一种序列到序列的深度学习算法,在图像、语音和NLP,比如:机器翻译、机器阅读、语音识别、智能对话和文档摘要生成等,都有广泛的应用。Seq2Seq模由encoder和decoder两个部分来构成,假设模型的训练样本为(X,Y),encoder负责把输入X映射到隐向量Z,再由decoder把Z映射到输出Y。现在大多数场景下使用的Seq2Seq模型基于RNN构成的,虽然取得

lqfarmer的博客 1万+

[吴恩达深度学习笔记]L5W3 序列模型和注意力机制(Sequence models & Attention mechanism)

目录3.1 基础模型(Basic Models) 3.1 基础模型(Basic Models)

YuQiao0303的博客 391

Seq2Seq+Attention+Pytorch实现Translation

From https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb 数据集 代码解析 class EncoderRNN(nn.Module): def __init__(self, input_size, hidden_size, n_layers=...

Yancy_的博客 2023
上一篇: 深度学习教程(15) | 自然语言处理与词嵌入(吴恩达·完整版)
下一篇: 大厂技术实现 | 行业解决方案系列教程
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值