九、【人工智能】【机器学习】【监督学习】-循环神经网络 (RNN)

 系列文章目录

第一章 【机器学习】初识机器学习

第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression)

第三章 【机器学习】【监督学习】- 支持向量机 (SVM)

第四章【机器学习】【监督学习】- K-近邻算法 (K-NN)

第五章【机器学习】【监督学习】- 决策树 (Decision Trees)

第六章【机器学习】【监督学习】- 梯度提升机 (Gradient Boosting Machine, GBM)

第七章 【机器学习】【监督学习】-神经网络 (Neural Networks)

第八章【机器学习】【监督学习】-卷积神经网络 (CNN)


目录

系列文章目录

前言

一、基本定义

(一)、监督学习

(二)、监督学习的基本流程

(三)、监督学习分类算法(Classification)

二、循环神经网络 (RNN)

(一)、定义

(二)、基本概念

(三)、训练过程

(四)、特点

(五)、适用场景

(六)、扩展

三、总结


前言

    在先前的文章系列中,我们深入探讨了机器学习的基础框架和算法分类,为读者构建了关于这一领域的坚实理论基础。本章节我们将焦点转向监督学习领域中的一个核心算法—— 循环神经网络 (RNN),旨在详尽解析其内在逻辑、应用实践及重要参数调整策略。


一、基本定义

(一)、监督学习

        监督学习(Supervised Learning)是机器学习中的一种主要方法,其核心思想是通过已知的输入-输出对(即带有标签的数据集)来训练模型,从而使模型能够泛化到未见的新数据上,做出正确的预测或分类。在监督学习过程中,算法“学习”的依据是这些已标记的例子,目标是找到输入特征与预期输出之间的映射关系。

(二)、监督学习的基本流程

        数据收集:获取包含输入特征和对应正确输出标签的训练数据集。
        数据预处理:清洗数据,处理缺失值,特征选择与转换,标准化或归一化数据等,以便于模型学习。
        模型选择:选择合适的算法,如决策树、支持向量机、神经网络等。
        训练:使用训练数据集调整模型参数,最小化预测输出与实际标签之间的差距(损失函数)。
        验证与调优:使用验证集评估模型性能,调整超参数以优化模型。
        测试:最后使用独立的测试集评估模型的泛化能力,确保模型不仅在训练数据上表现良好,也能在未见过的新数据上做出准确预测。

(三)、监督学习分类算法(Classification)

        定义:分类任务的目标是学习一个模型,该模型能够将输入数据分配到预定义的几个类别中的一个。这是一个监督学习问题,需要有一组已经标记好类别的训练数据,模型会根据这些数据学习如何区分不同类别。
        例子:垃圾邮件检测(垃圾邮件 vs. 非垃圾邮件)、图像识别(猫 vs. 狗)。


二、循环神经网络 (RNN)

(一)、定义

        循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的神经网络模型。与传统的前馈神经网络不同,RNN具有反馈连接,允许信息在时间上进行传播,从而能够捕捉序列中的时序依赖性。

(二)、基本概念

  • 循环单元:RNN的核心是循环单元,它接受当前时间步的输入和前一时间步的状态作为输入,并输出当前时间步的状态和可能的输出。
  • 状态向量:循环单元在每个时间步都会维护一个状态向量,这个状态向量可以被看作是网络的“记忆”,它包含了之前时间步的信息。
  • 时间步:序列数据按照时间顺序被分成一系列的时间步,每个时间步对应一个输入和一个可能的输出。

(三)、训练过程

        RNN的训练通常使用一种称为“时间反向传播”(Backpropagation Through Time, BPTT)的方法。BPTT在每个时间步计算损失,并将损失反向传播回之前的循环单元,以更新网络的权重。

扩展:

循环神经网络(RNN)的训练过程涉及到一种特殊的反向传播算法,称为“时间反向传播”(Backpropagation Through Time,BPTT)。这种算法允许网络学习到输入序列中不同时间点之间的依赖关系。下面是RNN训练过程的详细描述:

1. 初始化网络

首先初始化RNN的权重参数,包括输入到隐藏层的权重矩阵𝑊𝑖𝑥​,隐藏层到隐藏层的权重矩阵𝑊ℎ,以及隐藏层到输出层的权重矩阵𝑊ℎ𝑦。此外,还有对应的偏置项𝑏ℎ​和𝑏𝑦​。

2. 前向传播

对于输入序列{𝑥1,𝑥2,...,𝑥𝑇},其中𝑇是序列长度,执行以下步骤:

  • 在𝑡=1时,将输入𝑥1​与初始隐藏状态ℎ0​(通常是零向量)传递给RNN的循环单元。
  • 计算隐藏状态,其中𝑓f是激活函数,如tanh或ReLU。
  • 使用隐藏状态ℎ𝑡来计算输出
  • 这个过程重复进行直到序列的最后一个时间步𝑇。

3. 计算损失

在每个时间步𝑡,将预测输出𝑦𝑡与实际目标𝑦𝑡′比较,计算损失。常见的损失函数有均方误差(MSE)对于回归任务,交叉熵损失(Cross Entropy Loss)对于分类任务。

4. 时间反向传播(BPTT)

  • 从最后一个时间步开始,反向计算梯度,以确定每个权重和偏置项对损失的贡献。
  • 对于每个时间步𝑡,计算输出层的梯度∇𝑊ℎ𝑦,然后计算隐藏层的梯度∇𝑊ℎℎ和∇𝑊𝑖𝑥。
  • 由于隐藏状态在时间上是相互依赖的,需要将梯度沿着时间轴向前传播,这称为“时间展开”。
  • 这种过程会一直持续到第一个时间步,收集所有时间步的梯度。

5. 更新权重

  • 利用收集到的梯度,通过优化算法(如随机梯度下降SGD、Adam等)更新网络的权重和偏置项。
  • 更新公式可以是:,其中𝛼是学习率,∇𝐿是损失函数关于权重的梯度。

6. 迭代训练

  • 重复前向传播、损失计算、BPTT和权重更新的步骤,直到达到预定的迭代次数或满足停止条件(如损失收敛)。

7.注意事项

  • 梯度消失/爆炸:在长时间序列中,梯度可能会变得非常小(梯度消失),或者变得非常大(梯度爆炸),导致训练困难。LSTM和GRU等变体通过门控机制解决了这个问题。
  • 截断BPTT:在非常长的序列上,为了减少计算成本,可以只在最近的几个时间步执行BPTT,这种方法被称为截断BPTT。

整个训练过程旨在最小化损失函数,从而使RNN能够学习到输入序列中的模式并做出准确的预测。

(四)、特点

  • 记忆性:RNN能够记住先前的输入,这对于处理序列数据至关重要。
  • 参数共享:在不同的时间步,RNN使用相同的权重,这有助于减少参数的数量,简化模型。
  • 图灵完备:理论上,RNN可以模拟任何图灵机,这意味着它们在计算上是非常强大的。

(五)、适用场景

  • 自然语言处理:如文本分类、情感分析、机器翻译、语音识别。
  • 时间序列预测:如股票价格预测、天气预报。
  • 音乐生成:生成音乐序列。
  • 生物信息学:如DNA序列分析。

(六)、扩展

  • 长短期记忆网络(LSTM):LSTM是一种特殊的RNN,通过引入门控机制解决了RNN长期依赖问题,能够更有效地处理长序列数据。
  • 门控循环单元(GRU):GRU是LSTM的一种简化版本,使用较少的门控单元,但同样能够处理长期依赖。
  • 双向RNN(Bi-RNN):Bi-RNN同时从序列的开始和结束两个方向处理数据,可以利用序列的前后上下文信息。
  • 深度RNN:通过堆叠多个循环层,可以构建深度RNN,以增强模型的表达能力。
  • 注意力机制:注意力机制允许RNN在处理序列时,关注序列中最重要的部分,提高模型的性能和解释性。

三、总结

        RNN及其变体在处理序列数据方面表现出了强大的能力,尤其是在自然语言处理和语音识别等领域。然而,RNN也有其局限性,例如训练时间较长和对长时间序列处理的困难,这些限制促使了LSTM和GRU等改进模型的出现。

更多文章,请关注公众号获取:

                                             

码上云游

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值