文言一心,ChatGLM-6B和ChatGPT等模型概述

原文首发于博客文章大语言模型概况

定义

(个人理解的)大语言模型(Large Language Model)是一种基于深度学习技术的自然语言处理通用模型,它可以通过学习大规模文本数据的模式和规律,从而实现对自然语言的理解和生成。通用型:在广泛的任务中表现出色,而不是针对一项特定任务,规模大:参数数量在数十亿或更多数量级的深度学习模型。

大模型在 NLP 任务中的出色表现确实为人工智能领域带来了新的发展和探索方向。语言作为思想的符号,是人类交流和表达的主要方式,因此理解和生成自然语言是通往通用人工智能(AGI)之路的一个重要方向。大模型的出现和不断优化,使得计算机能够更好地理解自然语言的含义和上下文,进而提供更准确、更自然的语言交互和信息处理。然而,要实现真正的通用人工智能,还需要解决许多挑战和问题,例如:如何将机器学习模型从“短期记忆”转变为“长期记忆”,如何让机器具备更深入的理解和推理能力,以及如何解决数据隐私和安全等问题。

关键概念说明

  • Transformer 架构:Transformer 是 Google 于 2017 年提出的一种全新的神经网络架构,主要用于自然语言处理。它抛弃了 RNN 和 CNN,而是引入了注意力机制,实现 Encoder-Decoder 架构。Transformer 结构清晰,计算效率高,并可以进行并行计算,这使其在 NLP 任务上表现优异。

  • 编码器模型:Encoder 用于理解输入的句子表达,输出向量表示输入句子的特征信息,例如输入“I love NLP”,输出[0.1, 0.2, 0.3, 0.4]

  • 解码器模型:Decoder 则基于 Encoder 的输出以及自身的上下文信息生成输出句子。例如输入[0.1, 0.2, 0.3, 0.4],输出”I love machine learning“。编码器和解码器通过注意力机制交互。

  • 注意力机制:下面的例子演示了编码器和解码器通过注意力机制的交互过程,在这个过程中,编码器输出一次编码向量,代表输入句子信息。解码器每生成一个词,就会查询一次编码器的输出。并生成注意力分布,指出当前最重要的编码器输出内容。解码器结合注意力信息和自己的上下文,产生新的预测词。解码器每预测一个词,就将其加入到上下文,用于生成下个词。这个动态查询-生成的过程,就是编码器和解码器通过注意力机制进行交互。

    输入句子:I love NLP。
    
    编码器:
    输入:I love NLP。
    输出:向量[0.1, 0.2, 0.3, 0.4] 表示输入句子的特征信息。
    
    解码器:
    输入:[0.1, 0.2, 0.3, 0.4]  
    输出:I 
    (此时解码器只生成了第一个词 I,将其作为上下文信息。)
    
    注意力:解码器的注意力机制会查询编码器的输出[0.1, 0.2, 0.3, 0.4],并生成注意力分布[0.6, 0.2, 0.1, 0.1],表示解码器当前更关注编码器第1个输出元素。
    
    解码器:
    输入:[0.1, 0.2, 0.3, 0.4],[0.6, 0.2, 0.1, 0.1]  
    上下文:I
    输出:love  
    (解码器利用注意力分布所强调的编码器输出信息,以及自己的上下文I,生成love为当前最佳输出。)
    .....
    解码器最终生成:I love machine learning。
    
  • 自回归模型:Transformer 的 Decoder 需要每步生成一个词元,并将当前生成的词元信息加入到上下文中,用于生成下一个词元,例如模型输入“I love”,输出“I love NLP”,然后基于“I love NLP”生成“I love natural language processing”,每一步都基于前面生成的内容生成新的输出,这一生成策略被称为自回归(Auto-regressive)。典型的 autoregressive 模型有 GPT-2、GPT-3 等。

  • 掩码模型:掩码语言模型(MLM)需要对输入文本中的一些词元进行掩码,然后训练模型基于上下文来预测被掩码的词元,例如输入句子“I love [MASK] learning”,输出“I love machine learning”,模型需要填充[MASK]来预测掩码词,实现对上下文的理解。BERT 就是一种典型的掩码语言模型。

发展

大语言模型进化树追溯了 LLM 的发展历程,重点统计了相对知名的模型,同一分支上的模型关系更近。不基于 Transformer 的模型用灰色表示,decoder-only模型是蓝色分支,encoder-only模型是粉色分支,encoder-decoder模型是绿色分支。模型在时间轴的竖直位置表示其发布时间。实心方块表示开源模型,空心方块则是闭源模型。右下角的堆积条形图是指各家公司和机构的模型数量。

大语言模型进化树

encoder-only 模型

掩码语言模型是一种常用的训练方法,它基于上下文来预测句子中被遮掩的词,使得模型能够更深刻地理解词与其上下文之间的关系。这些模型使用 Transformer 架构等技术在大型文本语料上训练,并在许多 NLP 任务中取得了最佳表现,如情感分析和命名实体识别。著名的掩码语言模型有 BERT、RoBERTa 和 T5。由于其在多种任务上的成功表现,掩码语言模型已成为自然语言处理领域的一种重要工具,但这些方法需要基于具体下游任务的数据集进行微调。在 LLM 的早期发展阶段,BERT 为仅编码器模型带来了初始的爆发式增长。(BERT主要用于自然语言理解任务:双向预训练语言模型+fine-tuning(微调))

decoder-only 模型

扩增语言模型的规模就能显著提升其在少样本或零样本时的表现,最成功的模型是自回归语言模型,它的训练方式是根据给定序列中前面的词来生成下一个词。这些模型已被广泛用于文本生成和问答等下游任务。自回归语言模型包括 GPT-3、PaLM 和 BLOOM。变革性的 GPT-3 首次表明通过提示和上下文学习能在少 / 零样本时给出合理结果,并由此展现了自回归语言模型的优越性。另外还有针对具体任务优化的模型,比如用于代码生成的 CodeX 以及用于金融领域的 BloombergGPT。在 2021 年GPT-3 的出现之后,仅解码器模型经历了爆发式的发展,仅编码器模型却渐渐淡出了视野。(GPT主要用于自然语言生成任务:自回归预训练语言模型+Prompting(指示/提示))

适用方向

  • 自然语言理解:当实际数据不在训练数据的分布范围内或训练数据非常少时,可利用 LLM 那出色的泛化能力。
  • 自然语言生成:使用 LLM 的能力为各种应用创造连贯的、上下文相关的和高质量的文本。
  • 知识密集型任务:利用 LLM 中存储的广博知识来处理需要特定专业知识或一般性世界知识的任务。
  • 推理能力:理解和利用 LLM 的推理能力来提升各种情形中制定决策和解决问题的能力。

参考链接

  1. 大型语言模型的实用指南:如果想了解在自己的业务中使用大语言模型,这里是一些最佳实践

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生物群落(生态)数据统计分析与绘图

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来自经典…

Vue Router 相关理解 基本路由 多级路由

6.1.相关理解 6.1.1.vue-router 的理解 vue的一个插件库,专门用来实现SPA应用 6.1.2.对SPA应用的理解 单页Web应用(single page web application,SPA)整个应用只有一个完整的页面点击页面中的导航链接不会刷新页面&#xff0c…

2023.6.27宝塔面板无法正常进入

解决访问宝塔面板提示404 Not Found 情况说明:访问宝塔面板提示404,或者忘记外网面板地址 大概率访问路径不够全 输入以下内容查看 /etc/init.d/bt default 如果还是不行再重启宝塔面板,执行上面步骤 /etc/init.d/bt stop /etc/init.d/b…

初识mysql数据库之mysql数据库安装(centos)

目录 一、卸载不需要的环境 二、安装mysql yum源 三、安装mysql 四、登录mysql 1. 直接登录 2. 设置免密码登录 五、配置my.cnf 六、mysql登录时的一些选项介绍 一、卸载不需要的环境 要注意,在安装mysql数据库时,最好将用户切换为root&#xf…

git介绍和安装/git,github,gitee,gitlab区别/git使用流程/ git常用命令/git忽略文件

git介绍和安装 # 版本管理软件-1 对代码版本进行管理---》首页功能完成---》课程功能完成---》可以回退到某个版本-2 协同开发--》多人开发--》合并代码---》可能会有冲突,解决冲突# 版本管理软件:主流就两个-git:现在用的最多(学…

IMX6ULL系统移植篇-镜像烧写方法

一. 烧录镜像简介 本文我们就来学习:windows 系统下烧录镜像的方法。 如何使用 NXP 官方提供的 MfgTool 工具通过 USB OTG 口来 烧写系统。 二. windows下烧录镜像 1. 烧录镜像前准备工作 (1)从开发板上拔下 SD卡。 (2…

fatal error: ‘type_traits‘ file not found错误解决

错误如下 In file included from ../test_opencv_qt/main.cpp:1: In file included from ../../Qt/6.5.1/android_x86_64/include/QtGui/QGuiApplication:1: In file included from ../../Qt/6.5.1/android_x86_64/include/QtGui/qguiapplication.h:7: In file included from .…

springDatajpa动态sql根据时间范围将数据导出为excel并使用vue的按钮去触发

用到的技术点&#xff1a; 1.springDatajpa 2.EasyExcel 3.数据库 4.vue 前端实现&#xff1a; 1.创建按钮&#xff08;点击此按钮弹出填写导出条件的弹出框&#xff09; <el-button type"primary" round click"dialogVisible true"><svg-icon …

什么是Session

1、web中什么是会话 &#xff1f; 用户开一个浏览器&#xff0c;点击多个超链接&#xff0c;访问服务器多个web资源&#xff0c;然后关闭浏览器&#xff0c;整个过程称之为一个会话。 2、什么是Session &#xff1f; Session:在计算机中&#xff0c;尤其是在网络应用中&…

MySQL数据同步到ES的4种解决方案

一、背景 大家应该都在各种电商网站检索过商品&#xff0c;检索商品一般都是通过什么实现呢&#xff1f;搜索引擎Elasticsearch。那么问题来了&#xff0c;商品上架&#xff0c;数据一般写入到MySQL的数据库中&#xff0c;那么用于检索的数据又是怎么同步到Elasticsearch的呢&…

分布式定时任务框架 PowerJob

业务背景 1.1 为什么需要使用定时任务调度 &#xff08;1&#xff09;时间驱动处理场景&#xff1a;整点发送优惠券&#xff0c;每天更新收益&#xff0c;每天刷新标签数据和人群数据。 &#xff08;2&#xff09;批量处理数据&#xff1a;按月批量统计报表数据&#xff0c;批…

使用nodejs操作postgresql

环境准备 1 navicat premium 2 postgresql 14 装完上述软件后&#xff0c;远程连接上之后如下&#xff1a; 自己建立一个用户表users,然后随机生成一些数据即可 步骤 这里我将项目放到了gticode里&#xff0c;可以下载下来使用 https://gitcode.net/wangbiao9292/nodejs-p…

数据技术在金融行业有哪些应用_光点科技

随着信息技术的迅猛发展&#xff0c;大数据技术逐渐成为金融行业的重要工具。大数据技术的应用&#xff0c;不仅可以提高金融机构的运营效率&#xff0c;还能够提供更准确的风险评估和预测&#xff0c;从而为投资者和决策者提供更好的决策依据。 那么&#xff0c;大数据技术在…

Keil MDK编程环境下的 STM32 IAP下载(学习笔记)

IAP的引入 不同的程序下载方式 ICP ICP(In Circuit Programing)。在电路编程&#xff0c;可通过 CPU 的 Debug Access Port 烧录代码&#xff0c;比如 ARM Cortex 的 Debug Interface 主要是 SWD(Serial Wire Debug) 或 JTAG(Joint Test Action Group)&#xff1b; ISP ISP(I…

【VUE】ElementUI实现表格拖拽功能及行大图预览

一. 背景 elementui没自带的拖拽排序功能&#xff0c;所以需要借助第三方插件sortablejs 二. 步骤 安装 npm install sortablejs --save 引入 import Sortable from ‘sortablejs’ template文件应用 row-key填写唯一标识 id"dragTable"是为了通过document找到…

C++——命名空间(namespace)

目录 1. C语言命名冲突 2. 命名空间定义 3. 命名空间使用 可能大家在看别人写的C代码中&#xff0c;在一开始会包这个头文件&#xff1a;#include<iostream> 这个头文件等价于我们在C语言学习到的#include<stdio.h>&#xff0c;它是用来跟我们的控制台输入和输出…

利用Django路由项的别名(name)对路由进行反向解析

在Django的函数path()中&#xff0c;可以给一条路由进行命名&#xff0c;然后在视图函数或模板HTML文件中进行调用&#xff0c;这样的好处是&#xff1a;只要路由的name不变&#xff0c;那么修改了URL具体的路由&#xff0c;也不用去更改视图函数或模板HTML中的相关代码&#x…

LNMP服务搭建

目录 一、安装Nginx 1.关闭防火墙和安全机制 2.安装依赖包 3.创建运行用户 4.编译安装并安装 5.优化路径 6. 添加 Nginx 系统服务 7.赋权并重启服务 二、安装Mysql数据库 1、安装Mysql环境依赖包 2.创建运行用户 3.编译安装 4.修改mysql 配置文件 5.更改mysql安装目录和…

Linux服务器同步Windows目录同步-rsync

前言 最近需要&#xff0c;Linux的服务器同步Windows的一个目录。查了下&#xff0c;大概有三种方法&#xff1a;网盘同步&#xff1b;rsync同步&#xff1b;挂载目录。 网盘同步&#xff0c;可以选择搭建一个Nextcloud 。但是问题在于&#xff0c;我需要的是&#xff0c;客户…

前端开发两年半,我裸辞了

☀️ 前言 一晃两年半过去了&#xff0c;我离开了我的第一份前端开发工作&#xff0c;当你看到这篇文章&#xff0c;我已经离职两个月了&#xff0c;目前仍在艰难求职中&#xff0c;想记录分享一下我的经历&#xff0c;感兴趣的可以继续往下看&#xff0c;希望能给大家一些启示…