当前位置: 首页 > news >正文

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

相关文章:

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

文章目录 主流应用方向核心流程(5步)1.选定语言模型结构2.收集标注数据3.forward 正向传播4.backward 反向传播5.使用模型预测真实场景 主流应用方向 文本分类文本匹配序列标注生成式任务 核心流程(5步) 基本流程实现的先后顺序…...

linux如何启用ipv6随机地址

简介 在 IPv6 中,临时随机地址(Temporary IPv6 Address)是一种为了提高隐私和安全而设计的功能。通常,默认的 IPv6 地址是基于设备的 MAC 地址生成的,容易导致跟踪和识别设备。启用临时 IPv6 地址可以避免这个问题&am…...

探索 Android DataBinding:实现数据与视图的完美融合

在 Android 开发中,数据与视图的交互一直是一个关键的问题。为了更好地实现数据的展示和更新,Google 推出了 DataBinding 库,它为开发者提供了一种简洁、高效的方式来处理数据与视图之间的绑定关系,大大提高了开发效率和代码的可读…...

Java 编码系列:线程基础与最佳实践

引言 在多任务处理和并发编程中,线程是不可或缺的一部分。Java 提供了丰富的线程管理和并发控制机制,使得开发者可以轻松地实现多线程应用。本文将深入探讨 Java 线程的基础知识,包括 Thread 类、Runnable 接口、Callable 接口以及线程的生命…...

《深度学习》—— ResNet 残差神经网络

文章目录 一、什么是ResNet?二、残差结构(Residual Structure)三、Batch Normalization(BN----批归一化) 一、什么是ResNet? ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获…...

针对考研的C语言学习(定制化快速掌握重点3)

1.数组常见错误 数组传参实际传递的是数组的起始地址&#xff0c;若在函数中改变数组内容&#xff0c;数组本身也会发生变化 #include<stdio.h> void change_ch(char* str) {str[0] H; } int main() {char ch[] "hello";change_ch(ch);printf("%s\n&q…...

pikachu XXE(XML外部实体注入)通关

靶场&#xff1a;pikachu 环境: 系统&#xff1a;Windows10 服务器&#xff1a;PHPstudy2018 靶场&#xff1a;pikachu 关卡提示说&#xff1a;这是一个接收xml数据的api 常用的Payload 回显 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY …...

shell脚本定时任务通知到钉钉

shell脚本定时任务通知到钉钉 1、背景 ​ 前两天看了一下定时任务&#xff0c;垃圾清理、日志相关、系统巡检这些&#xff0c;有的服务器运行就有问题&#xff0c;或者不运行&#xff0c;正好最近在做运维标准重制运维手册&#xff0c;顺便把自动化这块优化一下&#xff0c;所…...

2.4K star的GOT-OCR2.0:端到端OCR 模型

GOT-OCR2.0是一款新一代的光学字符识别&#xff08;OCR&#xff09;技术&#xff0c;标志着人工智能在文本识别领域的重大进步。作为一款开源模型&#xff0c;GOT-OCR2.0不仅支持传统的文本和文档识别&#xff0c;还能够处理乐谱、图表以及复杂的数学公式&#xff0c;为用户提供…...

【JavaEE】——线程的安全问题和解决方式

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;问题引入 二&#xff1a;问题深入 1&#xff1a;举例说明 2&#xff1a;图解双线程计算…...

初步认识了解分布式系统

背景认识&#xff1a;我们要学习redis&#xff0c;还是得了解一下什么是分布式。为什么呢&#xff1f;因为redis只有在分布式系统中才能发挥它最大的作用&#xff0c;也就是领域展开&#xff0c;所以接下来我们就简单过一下什么是分布式系统 一些术语认识&#xff1a; &#x…...

react 为什么不能学习 vue3 进行静态节点标记优化性能?

因为 React 使用的是 JSX&#xff0c;而 JSX 本质上就是 JS 语言&#xff0c;是具有非常高的动态的&#xff0c;而 Vue 使用的 template 则是给了足够的约束&#xff0c;比如说 Vue 的 template 里面使用了很多特定的标记来做不同的事情&#xff0c;比如说 v-if 就是进行变量判…...

Elasticsearch黑窗口启动乱码问题解决方案

问题描述 elasticsearch启动后有乱码现象 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; 到 \config 文件下找到 jvm.options 文件 打开后 在文件末尾空白处 添加 -Dfile.encodingGBK 保存后重启即可。...

Logtus IT员工参加国际技术大会

Logtus IT的员工参加了国际技术大会&#xff0c;该大会致力于在金砖国家框架内开发俄罗斯的技术。该活动包括一个展览&#xff0c;俄罗斯开发商展示了他们的信息技术、电子和电信成就。展示了面向国内和国际市场&#xff08;包括政府机构&#xff09;的解决方案、产品和平台。 …...

ant design vue组件中table组件设置分组头部和固定总结栏

问题&#xff1a;遇到了个需求&#xff0c;不仅要设置分组的头部&#xff0c;还要在顶部有个统计总和的栏。 分组表头的配置主要是这个&#xff0c;就是套娃原理&#xff0c;不需要展示数据的直接写个title就行&#xff0c;需要展示数据的字段才需要详细的配置属性。 const co…...

2024年信息安全企业CRM选型与应用研究报告

数字化的生活给人们带来便利的同时也带来一定的信息安全隐患&#xff0c;如网络侵权、泄露用户隐私、黑客攻击等。在互联网高度发展的今天&#xff0c;信息安全与我们每个人、每个组织甚至每个国家都息息相关。 信息安全行业蓬勃发展。根据智研咨询数据&#xff0c;2021年&…...

【后端开发】JavaEE初阶——计算机是如何工作的???

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解计算机工作原理&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;【MySQL】MySQL中JDBC编程——MySQL驱动包安装——&#xff08;超详解&#xff09; &#x1f308;感兴趣的小伙伴看一看小编主…...

Linux(Ubuntu)源码安装postgresql16.3

文章目录 Linux&#xff08;Ubuntu&#xff09;源码安装postgresql016.3下载程序包编译安装软件初次执行configure错误调试1:configure: error: ICU library not found再次执行configureBuild 设置环境初始化数据库启动数据库参考 Linux&#xff08;Ubuntu&#xff09;源码安装…...

Python 入门教程(7)面向对象 | 7.6、多态

文章目录 一、多态1、鸭子类型2、实现多态的机制2.1、鸭子类型2.2、继承与重写 3、Python多态的优势4、总结 前言&#xff1a; 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;多态&#xff08;Polymorphism&#xff09;是一种非常重要的概念&#xff0c;多态就是同一…...

Cilium + ebpf 系列文章-什么是ebpf?(一)

前言&#xff1a; 这篇非常非常干&#xff0c;很有可能读不懂。 这里非常非常推荐&#xff0c;建议使用Cilium官网的lab来辅助学习&#xff01;&#xff01;&#xff01;Resources Library - IsovalentExplore Isovalents Resource Library, your one-stop destination for ins…...

RabbitMQ08_保证消息可靠性

保证消息可靠性 一、生产者可靠性1、生产者重连机制&#xff08;防止网络波动&#xff09;2、生产者确认机制Publisher Return 确认机制Publisher Confirm 确认机制 二、MQ 可靠性1、数据持久化交换机、队列持久化消息持久化 2、Lazy Queue 惰性队列 三、消费者可靠性1、消费者…...

恶意Bot流量识别分析实践

1、摘要 随着互联网的发展&#xff0c;自动化工具和脚本&#xff08;Bots&#xff09;的使用越来越普遍。虽然一些善意 Bots 对于网站的正常运行和数据采集至关重要&#xff0c;但恶意 Bots 可能会对网站带来负面影响&#xff0c;如爬取敏感信息、恶意注册、刷流量等。因此&am…...

Java2 实用教程(第6版)习题2 第四题

【源文件的命名与书中的不同】 四、阅读程序题 1、上机运行下列程序&#xff0c;注意观察输出的结果。 public class E2_1 {public static void main(String args[]){for(int i20302;i<20322;i){System.out.println((char) i);}} } 运行结果&#xff1a; 低 住 佐 佑 佒…...

HashMap和ConcurrentHashMap的区别

1.是什么 HashMap和ConcurrentHashMap都是Java集合框架中的成员&#xff0c;它们用于存储键值对&#xff0c;但它们在并发场景下的表现和行为有很大的不同。以下是它们之间的一些主要区别&#xff1a; 1. 并发安全性 HashMap: HashMap不是线程安全的。如果多个线程同时访问Has…...

css 下拉框展示:当hover的时候展示下拉框 z-index的用法解释

代码如下&#xff1a; <template><div class"outer"><div class"left"></div><div class"aTest2"><div class"box">显示方框</div><div class"aTest3"></div></…...

spring装配笔记

spring装配是个大课题&#xff0c;能懂一点是一点吧。 关于代码链路&#xff0c;最后的方式就是倒序摸索&#xff0c;正序那么多逻辑&#xff0c;没有一百万也差不多少&#xff0c;所以就用倒序。 .(点号)和#井号是一个意思&#xff0c;下面代码可能不详细区分&#xff0c;复…...

vscode【实用插件】Notes 便捷做笔记

安装 在 vscode 插件市场的搜索 Notes点 安装 安装成功后&#xff0c;vscode 左侧栏会出现 使用 初次使用 需先选择一个本地目录 重启 vscode 后&#xff0c;得到 切换笔记目录 新建笔记 快捷键为 Alt N 默认会创建 .md 文件 配合插件 Markdown Preview Enhanced 预览 .md…...

中间件:maxwell、canal

文章目录 1、底层原理&#xff1a;基于mysql的bin log日志实现的&#xff1a;把自己伪装成slave2、bin log 日志有三种模式&#xff1a;2.1、statement模式&#xff1a;2.2、row模式&#xff1a;2.3、mixed模式&#xff1a; 3、maxwell只支持 row 模式&#xff1a;4、maxwell介…...

postman控制变量和常用方法

1、添加环境&#xff1a; 2、环境添加变量&#xff1a; 3、配置不同的环境&#xff1a;local、dev、sit、uat、pro 4、 接口调用 5、清除cookie方法&#xff1a; 6、下载文件方法&#xff1a;...

Spring Boot 中整合 Kafka

在 Spring Boot 中整合 Kafka 非常简单&#xff0c;Spring Kafka 提供了丰富的支持&#xff0c;使得我们可以轻松地实现 Kafka 的生产者和消费者。下面是一个简单的 Spring Boot 整合 Kafka 的示例。 1. 添加依赖 首先&#xff0c;在 pom.xml 中添加 Spring Kafka 的依赖&#…...