当前位置:   article > 正文

课程小结四:循环神经网络与 NLP_循环神经网络课程

循环神经网络课程

序列模型

分类问题与预测问题

  • 图像分类 :当前输入 −>当前 输出
  • 时间序列预测 :当前+过去输入 −>当前输出
  • 自回归模型:通过利用时间序列自身的延迟值来预测未来值。常见的自回归模型包括AR、ARMA、ARIMA等。

数据预处理

特征编码

  • 将数据中的原始特征转换成机器学习算法更易于处理的形式的过程。这种转换可以包括对特征进行缩放、归一化、离散化等操作,以及将原始特征映射到更高维度的空间,以捕获更多的信息。特征编码的目的是使得数据更适合用于模型训练,从而提高模型的性能和泛化能力。常见的特征编码方法包括独热编码、标签编码、特征哈希、特征交叉等。选择合适的特征编码方法取决于数据的特点和机器学习模型的要求,良好的特征编码可以提高模型的效果和稳健性。
    文本处理:
  • 将文本数据转换为机器学习模型可用的特征表示形式的过程,常见方法包括词袋模型、TF-IDF、词嵌入等,以便模型能够有效学习和预测文本数据。

文本处理与词嵌入

文本预处理:一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列。我们将解析文本的常见预处理步骤。 这些步骤通常包括:

  • 将文本作为字符串加载到内存中。
  • 将字符串切分为词元(如单词和字符)。
  • 建立一个字典,将拆分的词元映射到数字索引。
  • 将文本转换为数字索引序列,方便模型操作。

词嵌入:是一种将词汇表中的单词映射到低维连续向量空间的技术。它通过将每个单词表示为密集向量,捕捉了单词之间的语义和语法关系。在词嵌入中,相似含义的单词在向量空间中会更加接近,而不同含义的单词则会有一定的距离。常见的词嵌入模型包括Word2Vec、GloVe和FastText。其中,Word2Vec通过训练神经网络来学习单词向量,它有两种训练模式:连续词袋模型(CBOW)和跳字模型(Skip-gram)。GloVe则是一种基于全局词频统计的方法,通过最小化词向量之间的差异来学习词嵌入。而FastText不仅可以学习单词级别的向量,还可以学习子词(subword)级别的向量,从而更好地处理未登录词和稀有词。

RNN模型

**循环神经网络(RNN)**是一种具有循环连接的神经网络结构,专门用于处理序列数据。与传统神经网络不同,RNN具有记忆功能,能够保持对序列中先前信息的状态。这种记忆使得RNN在处理自然语言、时间序列等具有时序性质的数据时非常有效。
RNN的基本结构包括一个循环单元,该单元在每个时间步接收输入和前一时间步的隐藏状态,并输出当前时间步的隐藏状态。这种循环结构使得RNN能够对序列数据进行逐步处理,并在整个序列中保持记忆。然而,传统的RNN存在梯度消失和梯度爆炸等问题,限制了其在长序列上的表现。
为了克服这些问题,出现了一些改进的RNN结构,如长短期记忆网络(LSTM)和门控循环单元(GRU)。LSTM引入了三个门控单元(输入门、遗忘门、输出门),以控制信息的输入、遗忘和输出,从而更有效地处理长期依赖关系。而GRU则简化了LSTM的结构,仅使用了更新门和重置门来控制信息的流动。

RNN误差反传

RNN误差反向传播是用于优化循环神经网络(RNN)参数的方法,通过计算模型输出与目标值之间的误差,并将误差通过时间展开的方式沿时间步传播,然后利用梯度下降算法更新参数。下面是RNN误差反向传播的基本公式:
假设 h t h_t ht表示在时间步 t t t的隐藏状态, x t x_t xt表示在时间步 t t t的输入, y t y_t yt表示在时间步 t t t的输出, h t − 1 h_{t-1} ht1表示在时间步 t − 1 t-1 t1的隐藏状态。 f f f表示RNN的激活函数(如tanh), W h x W_{hx} Whx W h h W_{hh} Whh分别表示输入到隐藏层和隐藏层到隐藏层的权重矩阵, W h y W_{hy} Why表示隐藏层到输出层的权重矩阵, b h b_h bh b y b_y by分别表示隐藏层和输出层的偏置。
其中,隐藏状态:
h t = f ( W h x x t + W h h h t − 1 + b h )   h_t = f(W_{hx}x_t + W_{hh}h_{t-1} + b_h) \ ht=f(Whxxt+Whhht1+bh) 
输出:
y t = W h y h t + b y   y_t = W_{hy}h_t + b_y \ yt=Whyht+by 
然后,我们计算每个时间步的损失(误差),常用的损失函数包括均方误差(MSE)或交叉熵损失:
L o s s t = Loss ( y t , y target )   Loss_t = \text{Loss}(y_t, y_{\text{target}})\ Losst=Loss(yt,ytarget) 
其中, y target y_{\text{target}} ytarget是目标输出。
接下来,沿时间步展开损失,并计算损失对参数的梯度。对于每个时间步 t t t,我们计算参数的梯度,并将梯度进行累积。然后,使用梯度下降算法或其变种(如Adam)来更新参数:
W h x = W h x − η ∂ L o s s ∂ W h x W_{hx} = W_{hx} - \eta \frac{\partial Loss}{\partial W_{hx}} Whx=WhxηWhxLoss
W h h = W h h − η ∂ L o s s ∂ W h h W_{hh} = W_{hh} - \eta \frac{\partial Loss}{\partial W_{hh}} Whh=WhhηWhhLoss
W h y = W h y − η ∂ L o s s ∂ W h y W_{hy} = W_{hy} - \eta \frac{\partial Loss}{\partial W_{hy}} Why=WhyηWhyLoss
其中, η \eta η是学习率。
通过反复迭代以上步骤,RNN模型将逐渐学习到训练数据中的模式,并优化参数以最小化损失函数。

门控循环单元(GRU)

门控循环单元(GRU)是一种改进的循环神经网络(RNN)结构,用于处理序列数据。与传统的RNN相比,GRU引入了门控机制,以更好地捕捉序列中的长期依赖关系,并且减少了参数量。
GRU的核心思想是通过更新门(update gate)和重置门(reset gate)来控制隐藏状态的更新和遗忘。更新门决定保留多少上一时刻的信息,而重置门则决定如何将当前输入与上一时刻的信息相结合。
GRU的公式如下:
重置门:
r t = σ ( W x r x t + W h r h t − 1 + b r ) r_t = \sigma(W_{xr}x_t + W_{hr}h_{t-1} + b_r) rt=σ(Wxrxt+Whrht1+br)
更新门:
z t = σ ( W x z x t + W h z h t − 1 + b z ) z_t = \sigma(W_{xz}x_t + W_{hz}h_{t-1} + b_z) zt=σ(Wxzxt+Whzht1+bz)
候选隐藏状态:
h ~ t = tanh ( W x h x t + r t ⊙ ( W h h h t − 1 ) + b h ) \tilde{h}_t = \text{tanh}(W_{xh}x_t + r_t \odot (W_{hh}h_{t-1}) + b_h) h~t=tanh(Wxhxt+rt(Whhht1)+bh)
更新隐藏状态:
h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t ht=(1zt)ht1+zth~t
其中, x t x_t xt表示在时间步 t t t的输入, h t − 1 h_{t-1} ht1表示在时间步 t − 1 t-1 t1的隐藏状态, h t h_t ht表示在时间步 t t t的隐藏状态, σ \sigma σ表示sigmoid激活函数, ⊙ \odot 表示逐元素相乘, W W W b b b分别表示权重矩阵和偏置向量。

长短期记忆网络(LSTM)

长短期记忆网络(LSTM)是一种特殊的循环神经网络(RNN)结构,设计用于解决传统RNN中的梯度消失和梯度爆炸问题,以及更好地捕获序列中的长期依赖关系。
LSTM引入了三个门控单元:输入门(input gate)、遗忘门(forget gate)和输出门(output gate),以控制信息的流动和保存。这些门控单元通过选择性地更新和遗忘信息,使得LSTM能够在序列中保持长期的记忆,并更好地处理长期依赖关系。
LSTM的公式如下:
输入门:
i t = σ ( W x i x t + W h i h t − 1 + b i ) i_t = \sigma(W_{xi}x_t + W_{hi}h_{t-1} + b_i) it=σ(Wxixt+Whiht1+bi)
遗忘门:
f t = σ ( W x f x t + W h f h t − 1 + b f ) f_t = \sigma(W_{xf}x_t + W_{hf}h_{t-1} + b_f) ft=σ(Wxfxt+Whfht1+bf)
候选记忆细胞:
C ~ t = tanh ( W x c x t + W h c h t − 1 + b c ) \tilde{C}_t = \text{tanh}(W_{xc}x_t + W_{hc}h_{t-1} + b_c) C~t=tanh(Wxcxt+Whcht1+bc)
更新记忆细胞:
C t = f t ⊙ C t − 1 + i t ⊙ C ~ t C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t Ct=ftCt1+itC~t
输出门:
o t = σ ( W x o x t + W h o h t − 1 + b o ) o_t = \sigma(W_{xo}x_t + W_{ho}h_{t-1} + b_o) ot=σ(Wxoxt+Whoht1+bo)
隐藏状态:
h t = o t ⊙ tanh ( C t ) h_t = o_t \odot \text{tanh}(C_t) ht=ottanh(Ct)
其中, x t x_t xt表示在时间步 t t t的输入, h t − 1 h_{t-1} ht1表示在时间步 t − 1 t-1 t1的隐藏状态, h t h_t ht表示在时间步 t t t的隐藏状态, C t − 1 C_{t-1} Ct1表示在时间步 t − 1 t-1 t1的记忆细胞, C t C_t Ct表示在时间步 t t t的记忆细胞, σ \sigma σ表示sigmoid激活函数, ⊙ \odot 表示逐元素相乘, W W W b b b分别表示权重矩阵和偏置向量。

深度循环神经网络

深度循环神经网络(Deep RNN)是循环神经网络(RNN)的一种变体,具有多个循环层堆叠在一起的结构。与传统的RNN相比,深度RNN能够更好地捕获序列中的复杂模式和特征,从而提高模型的表达能力和性能。

深度RNN的核心思想是将多个RNN层按顺序堆叠在一起,使得每一层都能够从前一层中获取更高级别的抽象特征。每个RNN层都有自己的隐藏状态序列,并将其作为输入传递给下一层。

深度RNN的公式如下:

h t ( l ) = f ( W x h ( l ) x t + W h h ( l ) h t − 1 ( l ) + b h ( l ) ) h_{t}^{(l)} = f(W_{xh}^{(l)}x_{t} + W_{hh}^{(l)}h_{t-1}^{(l)} + b_{h}^{(l)}) ht(l)=f(Wxh(l)xt+Whh(l)ht1(l)+bh(l))

其中, l l l 表示第 l l l层RNN,KaTeX parse error: Double superscript at position 12: h_{t}^{(l)}^̲表示第 l l l层在时间步 t t t的隐藏状态, x t x_{t} xt表示输入,在时间步 t t t 的输入, W x h ( l ) W_{xh}^{(l)} Wxh(l) W h h ( l ) W_{hh}^{(l)} Whh(l) 是第 l l l层的权重矩阵, b h ( l ) b_{h}^{(l)} bh(l)是第 l l l层的偏置向量, f f f是激活函数。

通过将多个RNN层堆叠在一起,深度RNN能够学习更复杂的序列模式,并且具有更强的表达能力。这使得它在各种序列建模任务中取得了显著的性能提升,如自然语言处理、时间序列预测等。

生成对抗网络

生成对抗网络(Generative Adversarial Networks,简称GANs)是一种深度学习模型,由生成器(Generator)和判别器(Discriminator)组成。GAN的目标是学习数据的分布,并生成与真实数据相似的新样本。
生成器的作用是学习生成与真实数据相似的样本,它接收一个随机噪声向量作为输入,并尝试将其映射到数据空间中。判别器的作用是区分生成器生成的假样本和真实数据,它接收一个样本作为输入,并输出该样本是真实的还是生成的概率。生成器和判别器相互对抗,通过对抗训练的方式不断提升彼此的性能。
GAN的训练过程通常包括以下步骤:

  • 随机生成一批噪声样本,并通过生成器生成一批假样本。
  • 将这批真实样本和生成的假样本输入到判别器中,分别计算它们的概率。
  • 利用判别器的输出来更新判别器的参数,使其能够更好地区分真假样本。
  • 将生成器生成的假样本输入到判别器中,计算其概率,并利用判别器的输出来更新生成器的参数,使其生成的假样本更接近真实数据的分布。
  • 重复以上步骤,直到生成器生成的样本足够逼真或达到预定的训练轮次。

神经辐射场(NeRF)

神经辐射场(NeRF,Neural Radiance Fields)是一种用于生成逼真三维场景的深度学习模型。它能够从单张或多张图像中重建出完整的三维场景,包括物体的形状、表面材质和光照信息,实现了高质量的三维重建和渲染。
NeRF的核心思想是将三维场景表示为一个辐射场,该辐射场由一个深度神经网络参数化,可以从任意视角生成场景的密集渲染。这个深度神经网络将场景中的每个三维点映射到其辐射(radiance)和密度(opacity)值,然后通过渲染方程(rendering equation)计算每个像素的颜色。
NeRF的训练过程包括两个阶段:
收集训练数据:需要拍摄场景的多个角度,并记录每个角度下的图片和相机参数。
训练网络:将这些图片和相机参数作为输入,训练神经网络以学习场景中每个点的辐射和密度值。

注意力机制

注意力机制是一种模拟人类视觉和认知过程的机制,用于增强神经网络对输入数据的处理能力。它允许模型在处理输入数据时,集中注意力于与当前任务相关的部分,从而提高模型的表现和泛化能力。
在注意力机制中,模型通过学习权重,来动态地调整输入数据的处理重点。这些权重用于指示模型在进行计算时,对输入数据的不同部分分配不同的注意力程度。在深度学习中,注意力机制通常用于处理序列数据(如文本、语音、时间序列等)和图像数据。

  • 在自然语言处理领域中,注意力机制常用于序列到序列(sequence-to-sequence)任务,如机器翻译和摘要生成。在这些任务中,编码器将输入序列编码为上下文向量,然后解码器根据上下文向量和当前解码状态生成输出序列。注意力机制允许解码器在生成每个输出时,动态地关注输入序列中与当前解码位置相关的部分。
  • 在计算机视觉领域中,注意力机制常用于处理图像数据,如图像分类、目标检测和图像生成。在这些任务中,注意力机制可以帮助模型在处理图像时,集中关注图像中的重要部分,从而提高模型的准确性和鲁棒性。

大模型

大模型是指具有庞大参数量和复杂结构的深度学习模型。这些模型通常包含数十亿到数百亿个参数,并且具有多层、多通道的架构。大模型的出现得益于计算能力的增强、数据集规模的扩大以及算法的不断改进。
大模型在各种领域展现了强大的能力。在自然语言处理领域,大型语言模型如GPT(Generative Pre-trained Transformer)系列和BERT(Bidirectional Encoder Representations from Transformers)等已经取得了令人瞩目的成就,在文本生成、语义理解、机器翻译等任务上超越了传统方法。在计算机视觉领域,大型卷积神经网络(CNN)模型如ResNet、EfficientNet等在图像分类、目标检测、图像生成等任务中表现出色。

语言-图像大模型

语言-图像大模型是一种结合了自然语言处理(NLP)和计算机视觉(CV)的深度学习模型,能够同时处理文本和图像数据,并实现语言与图像之间的联合理解和生成。这种模型通常基于大规模预训练的语言模型和图像模型,如BERT和ResNet等,以及注意力机制等技术,实现了多模态数据的处理和交互。
语言-图像大模型在多个任务和应用中发挥着重要作用。在图像描述生成任务中,模型接收图像作为输入,并生成与图像相关的自然语言描述。在文本到图像生成任务中,模型接收文本描述作为输入,并生成与描述相匹配的图像。此外,语言-图像大模型还可以应用于视觉问答(Visual Question Answering,VQA)、图像标注(Image Captioning)、图像搜索(Image Retrieval)等任务,实现对多模态数据的理解和处理。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/720117
推荐阅读
  

闽ICP备14008679号