关于 NLP 应用方向与深度训练的核心流程

文章目录

主流应用方向

核心流程(5步)

基本流程实现的先后顺序(每一步都包含很多技术点):

1.选定语言模型结构

  • 语言模型作用
    判断那一句话相对更合理,相对不合理的会得到较底的分值,需要挑选成句概率分值最高的。
  • 评价指标:PPL(Perplexity) 困惑度
    • 评估一个语言模型在给定数据集上的预测效果
    • PPL 值与成句概率成反比(PPL 越小,成句概率越高)
  • 模型分类
    • SLM 统计语言模型
      ngram
    • NLM 神经语言模型(2003)
      RNN(循环神经网络)
      LSTM(RNN 进阶版)
      CNN(卷积神经网络)
      GRU
    • PLM 预训练语言模型(2018)
      • 基于 Transformer 架构
        • BERT(预训练模型)
          生成式任务是逐词预测,bert 是预测缺失的词或者句子前后关系
        • GPT
          生成式模型
        • 一系列类 bert 模型
    • LLM 大语言模型(2023)
      GhatGPT

2.收集标注数据

  • 样本数据
  • 预测数据

3.forward 正向传播

  1. 模型超参数随机初始化
  • 训练轮数:epoch_num
  • 每次训练样本个数:batch_size
  • 样本文本长度:window_size
  • 学习率:lr
  • 隐藏层:hidden_size
  • 模型层数:layer_num
  1. 构建词表

    load_vocab

  2. 构建数据集

    dataset

  3. 模型组成

    1. 离散值连续化(可选)

      • Padding(可选)
        • 将不同长度的文本补齐或截断到统一长度
        • 使得不同长度的文本可以放在同一个batch内运算
        • 补齐所使用的token需要有对应的embedding向量
      • embedding 层
        • 作用:
          • 将字符转为向量
            将离散型的输入数据(如单词、类别等)映射到连续的向量空间中
          • 核心
            将离散值转化为向量
        • 形状:[vocab_dim, hidden_size]
          hidden_size 是embedding 的下一层模型的输入形状
    2. 模型结构处理连续数据

    3. pooling 池化层

      embedding 结果要先转置后才能 pooling
      embedding.transpose(1,2)

      • 作用
        • 降低后续网络层的输入维度
        • 缩减模型大小
          -提高计算速度
        • 提高鲁棒性,防止过拟合
      • 分类
        • 平均池化
        • 最大池化
    4. 全连接层

      • 作用
        1. 将前面层提取到的特征进行组合和加权
        2. 参数可通过反向传播学习,适应不同数据和任务
        3. 提高模型的表示能力
          • 更好地捕捉数据中的复杂模式和关系
          • 通过堆叠多个全连接层,结合非线性激活函数,模型就可以学习更复杂的非线性映射
        4. 分类与回归
          • 分类任务中
            1. 将特征映射到不同类别的概率分布上
            2. 方便模型对输入进行分类
          • 回归任务中
            生成连续值的预测
      • 参数
        1. 权重(Weights)
          • 是模型中每个神经元或连接的参数
          • 权重矩阵定义了输入和输出之间的关系
        2. 偏置(Biases)
          额外参数,与权重一起用于计算激活函数的输入
    5. 激活函数(可选)
      不会改变输入内容的形状

      • 作用
        1. 引入非线性变换
          • 全连接层仅可线性变换
          • 将激活函数结果传递给下一个全连接层,可在学习复杂任务时,更好的表达数据的抽象特征
        2. 约束输出范围
        3. 提高模型的数值稳定性
      • 常用激活函数
        • Sigmoid
        • tanh
          RNN 自带一个 tanh
        • Relu
          可以防止梯度消失问题
        • Gelu
    6. Normalization 归一化层(可选)

      对输入数据进行归一化处理,使其具有零均值和单位方差,加速模型训练过程,提高模型稳定性和收敛速度

    • 代码
      from torch.nn import BatchNorm1d
      self.bn1 = BatchNorm1d(50)
    • 分类
      • 批量归一化 batch normalization
        对每一层的向量求平均,再求标准差 ,之后进行公式计算,获得可训练参数
        • 样本与其他样本归一化,适合 cv
        • 适合两张图片之间相似度评价
      • 层归一化 layer normalization
        纵向向量求平均,再求标准差 ,之后进行公式计算,获得可训练参数
        • 样本内进行归一化,适合 nlp
        • 适合文本
    1. dropout 层(可选)
      • 代码
        from torch.nn import Dropout
        self.dropout = Dropout(0.5)
      • 是一种常用的正则化技术
        • 作用
          • 减少神经网络的过拟合
          • 提高模型的泛化能力
          • 强制网络学习更加健壮和泛化的特征
          • 减少神经元之间的依赖关系
          • 使得网络更加鲁棒
        • 在训练期间
          • 随机"丢弃"一些神经元
            以一定的概率(通常在0.2到0.5之间)随机地将隐藏单元的输出置为零
          • 保持总体期望值不变
            将其余值按比例进行缩放
        • 在测试期间
          Dropout不会应用,而是将所有神经元的输出乘以保留概率,以保持输出的期望值
  4. 获取预测值

  5. 计算 loss

    是指预测值与样本真实值之间的loss计算。

    • 常见 loss 函数
      • 均方差(MSE)
        回归场景
      • 交叉熵(Cross Entropy)
        分类场景
      • BCE 0/1损失
        分类场景,一般输入为 sigmod 的输出
      • 指数损失
      • 对数损失
      • Hinge损失

4.backward 反向传播

  1. Optimizer 优化器

    • Adam

      • SGD 进阶版
      • 在模型的权重没有收敛之前(没有训练到预期结果之前),不断循环计算,历史每轮的梯度都参与计算。
      • 可无脑选择使用的优化器。是非常好的baseLine,一般出问题,不会因为adam 出问题。
      • 特点
      • 实现
        • 一阶动量
          历史 n 轮梯度差值
        • 二阶动量
          历史 n 轮梯度的平方差
        • 避免由于一阶动量与二阶动量初始值为零向量,引起参数估计偏向于 0 的问题
          • 一阶动量偏差修正
            一阶动量历史累计值/(1-超参数 t 次方)
          • 二阶动量偏差修正
            二阶动量历史累计值/(1-超参数 t 次方)
        • 权重更新
    • SGD

      计算逻辑:新权重 = 旧权重 - 学习率 * 梯度

    1. optmi->梯度归零
      optimizer.zero_grad()
    2. loss->反向传播,计算梯度
      loss.backward()
    3. optim->更新权重
      optimizer.step()

5.使用模型预测真实场景

经过前4步,得到训练好的模型,将模型投放到真实场景进行预测。

相关推荐
说私域4 小时前
开源AI智能名片链动2+1模式S2B2C商城小程序驱动下的电商裂变增长路径研究
人工智能·小程序·开源·流量运营·私域运营
说私域4 小时前
六度人脉视域下信息价值传递的创新路径——基于AI智能名片链动2+1模式小程序的实践研究
人工智能·小程序·流量运营·私域运营
新新学长搞科研4 小时前
【CCF主办 | 高认可度会议】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)
大数据·开发语言·网络·人工智能·算法·r语言·中国计算机学会
多恩Stone4 小时前
【3D-AICG 系列-2】Trellis 2 的O-voxel (上) Shape: Flexible Dual Grid
人工智能·python·算法·3d·aigc
珠海西格电力科技5 小时前
微电网控制策略基础:集中式、分布式与混合式控制逻辑
网络·人工智能·分布式·物联网·智慧城市·能源
Java后端的Ai之路6 小时前
【RAG技术】- RAG系统调优手段之高效召回(通俗易懂附案例)
人工智能·rag·rag系统·召回·rag调优
草莓熊Lotso6 小时前
Linux 基础 IO 初步解析:从 C 库函数到系统调用,理解文件操作本质
linux·运维·服务器·c语言·数据库·c++·人工智能
Cx330❀6 小时前
从零实现Shell命令行解释器:原理与实战(附源码)
大数据·linux·数据库·人工智能·科技·elasticsearch·搜索引擎
Niuguangshuo13 小时前
深入解析Stable Diffusion基石——潜在扩散模型(LDMs)
人工智能·计算机视觉·stable diffusion
迈火13 小时前
SD - Latent - Interposer:解锁Stable Diffusion潜在空间的创意工具
人工智能·gpt·计算机视觉·stable diffusion·aigc·语音识别·midjourney