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

文章目录

  • 主流应用方向
  • 核心流程(5步)
    • 1.选定语言模型结构
    • 2.收集标注数据
    • 3.forward 正向传播
    • 4.backward 反向传播
    • 5.使用模型预测真实场景

主流应用方向

  • 文本分类
  • 文本匹配
  • 序列标注
  • 生成式任务

核心流程(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步,得到训练好的模型,将模型投放到真实场景进行预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/431225.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊Thread Local Storage

聊聊ThreadLocal 为什么需要Thread Local StorageThread Local Storage的实现PThread库实现操作系统实现GCC __thread关键字实现C11 thread_local实现JAVA ThreadLocal实现 Thread Local Storage 线程局部存储,简称TLS。 为什么需要Thread Local Storage 变量分为全…

MySQL程序

目录 MySQL程序 常用的MySQL的程序 mysqld程序 mysql客户端 客户端命令的常用的选项 配置文件 配置文件语法 MySQL客户端命令 ​编辑 .sql 文件中执行SQL语句 mysqlcheck (表维护程序) Mysqldump(数据库备份程序) mysql…

[数据集][目标检测]基于yolov5增强数据集算法mosaic来扩充自己的数据集自动生成增强图片和对应标注无需重新标注

【算法介绍】 YOLOv5最引人注目的增强技术之一是马赛克增强,它将四张不同的图像拼接成一张图像。 思路:首先,从数据集中随机选择四张图像,然后将它们缩放、随机裁剪,并按马赛克模式拼接在一起。这种方式允许模型看到…

10. 排序

一、排序的概念及引用 1. 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录…

无人机之编程基础原理

无人机编程基础原理涉及多个方面,主要包括无人机的基本原理、飞行控制算法、编程语言及算法应用等。以下是对这些方面的详细阐述: 一、无人机基本原理 无人机的基本原理是理解其结构、飞行原理、传感器和控制系统等的基础。无人机通常由机身、动力系统&…

企业如何利用短视频平台做口碑塑造和品牌营销?

抖音和小红书作为短视频平台的代表,吸引了大量的用户和品牌。如何利用抖音、小红书等短视频平台进行品牌塑造和口碑营销呢?小马识途营销顾问分析,短视频平台的用户以年轻人为主,他们具有高度的社交性和消费意愿。短视频平台提供了…

fiddler抓包11_列表显示服务器IP (配置文件)

请求列表默认不显示服务器IP字段,也无法从定制列窗口添加,可以修改CustomRules.js实现。 ① 菜单栏“Rules”(规则) - “Customize Rules...”(自定义规则),打开CustomRules.js文件。 &#xf…

Qt (17)【Qt 文件操作 读写保存】

阅读导航 引言一、Qt文件概述二、输入输出设备类三、文件读写类四、文件和目录信息类五、自定义“记事本” 引言 在上一篇文章中,我们学习了Qt的事件处理机制,知道了如何响应用户的操作。但应用程序常常还需要处理文件,比如读写数据。所以&a…

CVPR最牛图像评价算法!

本文所涉及所有资源均在 传知代码平台可获取。 目录 概述 一、论文思路 1.多任务学习框架: 2.视觉-语言对应关系: 3.动态损失权重: 4.模型优化和评估: 二、模型介绍 三、详细实现方法 1.图像编码器和语言编码器(Image…

大语言模型的发展-OPENBMB

一、自然语言处理的基础 1、图灵测试 就是验证人工智能程序有多智能 让计算机像人一样,能够听懂问题,然后给出答案; 自然语言发展历史: advances in Natural Lannguage Processing --论文 2、自然语言处理的基本任务和应用 …

MES系统如何提升制造企业的运营效率和灵活性

参考拓展:苏州稳联-西门子MES系统-赋能智能制造的核心引擎 制造执行系统(MES)在提升制造企业运营效率和灵活性方面发挥着关键作用。 一、MES系统的基本概念和功能 MES系统是连接企业管理层与生产现场的重要桥梁。它主要负责生产调度、资源管理、质量控制等多个方…

【重学 MySQL】三十一、字符串函数

【重学 MySQL】三十一、字符串函数 函数名称用法描述ASCII(S)返回字符串S中的第一个字符的ASCII码值CHAR_LENGTH(s)返回字符串s的字符数,与CHARACTER_LENGTH(s)相同LENGTH(s)返回字符串s的字节数,和字符集有关CONCAT(s1,s2,…,sn)连接s1,s2,…,sn为一个字…

低代码可视化工具--vue条件判断v-if可视化设置-代码生成器

在Vue UniApp中,条件判断通常是通过指令v-if、v-else-if、v-else来实现的。这些机制允许你根据表达式的真假值来决定是否渲染某个元素或元素组,或者执行特定的逻辑。 条件判断说明 v-if 是惰性的:如果在初始渲染时条件为假,则什么…

如何使用ssm实现基于Java web的高校学生课堂考勤系统的设计与实现+vue

TOC ssm686基于Java web的高校学生课堂考勤系统的设计与实现vue 第一章 课题背景及研究内容 1.1 课题背景 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性&#x…

BUUCTF [SCTF2019]电单车详解两种方法(python实现绝对原创)

使用audacity打开,发现是一段PT2242 信号 PT2242信号 有长有短,短的为0,长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

Leetcode 反转链表

使用递归 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class S…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

动态规划11,完全背包模板

NC309 完全背包 问题一:求这个背包至多能装多大价值的物品? 状态表示:经验题目要求 dp[i][j] 表示 从前i个物品中挑选,总体积不超过j,所有选法中,能选出来的最大价值。 状态转移方程 根据最后一步的状态&a…

harmonyOS ArkTS最新跳转Navigation

文章目录 取消标题栏初始页面(load)设置为竖屏 自定义标题Tabs&TabContentTabs通过divider实现了分割线各种属性 图片下载 官方文档 Entry Component struct Index {State message: string Hello WorldState djs:number 5build() {Column(){Navigation(){}.title("g…

达梦-华为鲲鹏ARM架构下性能测试最佳实践

一、测试综述 1.1 测试目的 本次测试的目的是验证达梦数据库,在鲲鹏服务器下,不同服务器参数基于sysbench性能压力测试的表现。本次参数是根据为华为鲲鹏arm服务器调优十板斧内建议值调整 成长地图-鲲鹏开发套件开发文档-鲲鹏社区 1.2 通用指标 指标…