大模型简介

news2024/12/30 1:04:56

大模型框架

大模型基于深度学习,利用大量数据和计算资源训练具有大量参数的神经网络模型。通过不断地调整模型参数,使得模型能够在各种任务中取得最佳表现。

通常说的大模型的“大”的特点体现在:参数数量庞大、训练数据量大、计算资源需求高等。很多先进的模型由于拥有很“大”的特点,使得模型参数越来越多,泛化性能越来越好,在各种专门的领域输出结果也越来越准确。

当前流行的大模型的网络架构沿用的还是Transformer结构。相比于传统的循环神经网络(RNN)和长短时记忆网络(LSTM),Transformer具有独特的注意力机制(Attention),这相当于给模型加强理解力,对更重要的词能给予更多关注,同时该机制具有更好的并行性和扩展性,能够处理更长的序列,在各类文本相关的序列任务中取得不错的效果。

主流的框架可以分为Encoder-Decoder, Encoder-Only和Decoder-Only。

1)Encoder-Only,仅包含编码器部分,主要适用于不需要生成序列的任务,只需要对输入进行编码和处理的单向任务场景,如文本分类、情感分析等,这类代表是BERT相关的模型,例如BERT,RoBERT,ALBERT等

2)Encoder-Decoder,既包含编码器也包含解码器,通常用于序列到序列(Seq2Seq)任务,如机器翻译、对话生成等,这类代表是以Google训出来T5为代表相关大模型。

3)Decoder-Only,仅包含解码器部分,通常用于序列生成任务,如文本生成、机器翻译等。这类结构的模型适用于需要生成序列的任务,可以从输入的编码中生成相应的序列。可以进行无监督预训练。在预训练阶段,模型通过大量的无标注数据学习语言的统计模式和语义信息。这种方法可以使得模型具备广泛的语言知识和理解能力。在预训练之后,模型可以进行有监督微调,用于特定的下游任务(如机器翻译、文本生成等)。这类结构的代表也就是我们平时非常熟悉的GPT模型的结构,所有该家族的网络结构都是基于Decoder-Only的形式来逐步演化。

训练方式

这里主要参考OpenAI发表的关于InstructGPT的相关训练步骤,主流的大模型训练基本形式大多也是类似的:

1、预训练(Pretraining)

预训练是大模型训练的第一步,目的是让模型学习语言的统计模式和语义信息。主流的预训练阶段步骤基本都是近似的,其中最重要的就是数据,需要收集大量的无标注数据,例如互联网上的文本、新闻、博客、论坛等等。这些数据可以是多种语言的,并且需要经过一定的清洗和处理,以去除噪音,无关信息以及个人隐私相关的,最后会以tokenizer粒度输入到上文提到的语言模型中。这些数据经过清洗和处理后,用于训练和优化语言模型。预训练过程中,模型会学习词汇、句法和语义的规律,以及上下文之间的关系。OpenAI的ChatGPT4能有如此惊人的效果,主要的一个原因就是他们训练数据源比较优质。

2、 指令微调阶段(Instruction Tuning Stage)

在完成预训练后,就可以通过指令微调去挖掘和增强语言模型本身具备的能力,这步也是很多企业以及科研研究人员利用大模型的重要步骤。

Instruction tuning(指令微调)是大模型训练的一个阶段,它是一种有监督微调的特殊形式,旨在让模型理解和遵循人类指令。在指令微调阶段,首先需要准备一系列的NLP任务,并将每个任务转化为指令形式,其中指令包括人类对模型应该执行的任务描述和期望的输出结果。然后,使用这些指令对已经预训练好的大语言模型进行监督学习,使得模型通过学习和适应指令来提高其在特定任务上的表现。

为了让模型训练更加高效和简单,这个阶段还有一种高效的fine-tuning技术,这为普通的从业者打开了通向使用大模型的捷径。

Parameter-Efficient Fine-Tuning (PEFT)旨在通过最小化微调参数的数量和计算复杂度,达到高效的迁移学习的目的,提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。在训练过程中,预训练模型的参数保持不变,只需微调少量的额外参数,就可以达到与全量微调相当的性能。

目前,很多研究对PEFT方法进行了探索,例如Adapter Tuning和Prefix Tuning等。其中,Adapter Tuning方法在面对特定的下游任务时,将预训练模型中的某些层固定,只微调接近下游任务的几层参数。而Prefix Tuning方法则是在预训练模型的基础上,添加一些额外的参数,这些参数在训练过程中会根据特定的任务进行更新和调整。

工业界现在常用的Adapter Tuning的技术是Low-Rank Adaptation(LoRA) 。通过最小化微调参数的数量和计算复杂度,实现高效的迁移学习,以提高预训练模型在新任务上的性能。

LoRA 核心思想是将预训练模型的权重矩阵分解为两个低秩矩阵的乘积。通过这种分解,可以显著减少微调参数的数量,并降低计算复杂度。该方式和机器学习中经典的降维的思想很类似,类似地,LoRA 使用了矩阵分解技术中的奇异值分解 (Singular Value Decomposition, SVD) 或低秩近似 (Low-Rank Approximation) 方法,将原始权重矩阵分解为两个低秩矩阵的乘积。

在微调过程中,LoRA 只更新这两个低秩矩阵的参数,而保持其他预训练参数固定不变。这样显著减少微调所需的计算资源和时间,并且在很多任务上取得了与全量微调相当的性能。

LoRA技术的引入使得在大规模预训练模型上进行微调更加高效和可行,为实际应用提供了更多可能性。

3、对齐微调(Alignment Tuning)

主要目标在于将语言模型与人类的偏好、价值观进行对齐,其中最重要的技术就是使用RLHF(reinforcement learning from human feedback)来进行对齐微调。

Step 1.预训练模型的有监督微调

先收集一个提示词集合,并要求标注人员写出高质量的回复,然后使用该数据集以监督的方式微调预训练的基础模型。

Step 2.训练奖励模型

这个过程涉及到与人类评估者进行对话,并根据他们的反馈来进行调整和优化。评估者会根据个人偏好对模型生成的回复进行排序,从而指导模型生成更符合人类期望的回复。这种基于人类反馈的训练方式可以帮助模型捕捉到更多人类语言的特点和习惯,从而提升模型的生成能力。

Step 3.利用强化学习模型微调

主要使用了强化学习的邻近策略优化(PPO,proximal policy optimization )算法,对于每个时间步,PPO算法会计算当前产生和初始化的KL散度,根据这个分布来计算一个状态或动作的预期回报,然后使用这个回报来更新策略,达到对SFT模型进一步优化。

但是这种算法存在一些比较明显的缺点,比如PPO是on-policy算法,每一次更新都需要收集新的样本,这就会导致算法的效率低下,并且更新是在每次训练时进行的,因此策略更新比较频繁,这就会导致算法的稳定性较差,当前有很多新的技术出来替代RLHF技术:

直接偏好优化(DPO)是一种对传统RLHF替代的技术,作者在论文中提出拟合一个反映人类偏好的奖励模型,将奖励函数和最优策略之间的映射联系起来,从而把约束奖励最大化问题转化为一个单阶段的策略训练问题。通过强化学习来微调大型无监督语言模型,以最大化这个预估的奖励。这个算法具有简单有效和计算轻量级的特点,不需要拟合奖励模型,只需要进行单阶段训练,不需要大量的超参数调节,所以在响应质量方面通常优于传统的RLHF。另外还有RLAIF从采样方式,生成训练奖励模型的评分的角度来替代原有的PPO的RLHF进行训练。

对齐微调是一个关键的阶段,这一阶段使用强化学习从人类反馈中进行微调,以进一步优化模型的生成能力。它通过与人类评估者和用户的互动,不断优化模型的生成能力,以更好地满足人类期望和需求。

Prompt

Prompt的基本思想,通过给模型提供一个或多个提示词或短语,来指导模型生成符合要求的输出。本质上是通过恰当的初始化参数激发语言模型本身的潜力。例如,在文本分类任务中,可以给模型提供一个类别标签的列表,并要求它生成与这些类别相关的文本;在机器翻译任务中,可以给模型提供目标语言的一段文本,并要求翻译文本。 

Promp常用场景

Zero-Shot Prompt: 在零样本场景下使用,模型根据提示或指令进行任务处理,不需要针对每个新任务或领域都进行专门的训练,这类一般作为训练通用大模型的最常见的评估手段。

Few-Shot Prompt: 在少样本场景下使用,模型从少量示例中学习特定任务,利用迁移学习的方法来提高泛化性能,该类prompt也是很多实际应用案例都采取来进行大模型微调训练的方式。 

Chain-of-thought prompt这类prompt常见于推理复杂任务,它通过引导模型逐步解决问题,以一系列连贯的步骤展示推理的思路和逻辑关系。通过这种逐步推理的方式,模型可以逐渐获得更多信息,并在整个推理过程中累积正确的推断。

Multimodal prompt这类prompt包含的信息就更丰富,主要是将不同模态的信息(如文本、图像、音频等)融合到一起,形成一种多模态的提示,以帮助模型更好地理解和处理输入数据。比如在问答系统中,可以将问题和相关图像作为多模态输入,以帮助模型更好地理解问题的含义和上下文背景,并生成更加准确和全面的答案。

大模型挑战

1.数据安全隐患:大模型训练需要大量的数据支持,但很多数据涉及到机密以及个人隐私问题,如客户信息、交易数据等。需要保证在训练大模型的同时保障数据安全,防止数据泄露和滥用。OpenAI在发布ChatGPT模型的时候用了数月来保证数据安全以及符合人类正常价值观标准。

2.成本高昂:大模型的训练和部署需要大量的计算资源和人力资源,成本非常高昂。对于一些中小型企业而言,难以承担这些成本,也难以获得足够的技术支持和资源。

3.无法保障内容可信:大模型会编造词句,无法保障内容真实可信、有据可查。当前使用者只能根据自己需求去验证生成的内容是否真实可信,很难具有权威说服力。

4.无法实现成本可控:直接训练和部署千亿级参数大模型成本过高,企业级应用应使用百亿级基础模型,根据不同需求训练不同的垂直模型,企业则只需要负担垂直训练成本。但如何实现高效的垂直训练,如何控制成本,仍是大模型面临的问题之一。

参考:原创 | 大模型扫盲系列——初识大模型 (qq.com)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次EasyExcel的错误使用导致的频繁FullGC

记一次EasyExcel的错误使用导致的频繁FullGC 一、背景描述二、场景复现三、原因分析四、解决方案五、思考复盘 一、背景描述 繁忙的校招结束了,美好的大学四年也结束了,作者也有10个月没有更新了。拿到心仪的offer之后也开始了苦B的打工生活。 最近接到…

Python爬取豆瓣电影+数据可视化,爬虫教程!

1. 爬取数据 1.1 导入以下模块 import os import re import time import requests from bs4 import BeautifulSoup from fake_useragent import UserAgent from openpyxl import Workbook, load_workbook1.2 获取每页电影链接 def getonepagelist(url,headers):try:r reque…

JAVA里的BigDecimal用法

public class BigDecimaldemo1 {public static void main(String[] args) {System.out.println(0.090.01);//为什么不是0.10呢?} }在使用float或者double类型的数据在进行数学运算的时候,很有可能会产生精度丢失问题。我们都知道计算机底层在进行运算的时候&#x…

SpringBoot中整合ONLYOFFICE在线编辑

SpringBoot整合OnlyOffice SpringBoot整合OnlyOffice实现在线编辑1. 搭建私有的OnlyOffice的服务2. SpringBoot进行交互2.1 环境2.2 我们的流程2.3 接口规划2.3.1 获取编辑器配置的接口2.3.2 文件下载地址2.3.3 文件下载地址 3. 总结4. 注意4.1 你的项目的地址一定一定要和only…

详细django框架+SIMPLEUI+import_export设计web管理后台(四)

目录 1.项目简介 2.搭建django框架 3.引入 SIMPLEUI插件 3.1安装simpleui 3.2 修改设置 3.3 克隆静态资源 3.4登陆测试 4.优化页面 4.1 修改后台名称显示 4.2 增加页面LOGO图标 4.3增加网址图标:目前主要的浏览器都支持favicon.ico图标 4.4 修改APP名称显…

用摄像头实现识别道路中的车道线、行人与车辆检测(级联分类器、HOG+SVM、行人检测)

基于树莓派的智能小车,用摄像头实现识别道路中的车道线识别、行人检测与车辆检测。 本项目旨在开发一套基于摄像头的智能道路环境感知系统,该系统能够实时识别道路中的车道线、行人与车辆,为自动驾驶汽车、智能交通管理以及辅助驾驶系统提供关…

Go语言数据类型--常量、iota枚举、数据类型分类

变量:程序运行期间,可以改变的量,变量声明需要var关键字。 常量:程序运行期间,不可以改变的量,变量声明需要const关键字。 自动推导 常量的自动推导不能加:; 不同类型数据的声明 可以使用…

华为OD机试 - 表演赛游戏分组 - 动态规划(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

目标检测算法讲解:从传统方法到深度学习,全面解析检测技术的演进与应用!

在计算机视觉领域,目标检测是一个基本且关键的任务,它不仅涉及图像中对象的识别,还包括确定这些对象的具体位置。这一任务通常通过算法来实现,这些算法能够识别出图像中的一个或多个目标,并给出每个目标的类别和位置。…

【面试系列】产品经理高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

4.BeanFactory

可以看出BeanFactory表面上只有getBean相关的方法。 实际上控制反转、基本的依赖注入、Bean的生命周期的各种功能,都是由BeanFactory的实现类来实现的。(DefaultListableBeanFactory) DefaultListableBeanFactory管理单例对象DefaultSinglet…

第11章 规划过程组(11.6规划进度管理)

第11章 规划过程组(二)11.6规划进度管理,在第三版教材第385页;#软考中级##中级系统集成项目管理师# 文字图片音频方式 第一个知识点:主要输出 1、进度管理计划 准确度 定义活动持续时间估算的可接受区间&#xff0…

springboot拦截器,ThreadLocal(每个线程的公共区域)

拦截器 配置信息(拦截所有请求) 其实这种可以作为springAOP作日志记录

flask数据连接池、定制命令

【 一 】数据库连接池 【 1 】flask操作mysql 基本的使用不使用连接池 from flask import Flask, jsonify import pymysqlapp Flask(__name__) app.debug Trueapp.route(/) def index():conn pymysql.connect(userroot,password"123123",host127.0.0.1,databas…

计算两个经纬度之间的球面距离(基于Mysql和PHP实现)

计算两个经纬度之间的球面距离 1、MySQL实现方式 - 基于空间函数(ST_Distance_Sphere)实现 前置条件:确保您使用的是 MySQL 8.0 或更高版本,因为较早的版本对地理空间的支持有限。 1.1 创建表和索引 说明:设置 location 为 point 类型 #…

Wireshark - tshark支持iptables提供数据包

tshark现在的数据包获取方式有两种,分别是读文件、网口监听(af-packet原始套接字)。两种方式在包获取上,都是通过读文件的形式;存在文件io操作,在专门处理大流量的情境下, 我们复用wireshark去做…

DNS访问百度

DNS,英文全称是 domain name system,域名解析系统,它的作用也很明确,就是域名和 IP 相互映射。 假设你要查询 baidu.com 的 IP 地址: 首先会查找浏览器的缓存,看看是否能找到 baidu.com 对应的IP地址,找到就直接返回&…

【NOI-题解】1326. 需要安排几位师傅加工零件1228. 排队打水问题1229. 拦截导弹的系统数量求解

文章目录 一、前言二、问题问题:1326. 需要安排几位师傅加工零件问题:1228. 排队打水问题问题:1229. 拦截导弹的系统数量求解 三、感谢 一、前言 本章节主要对贪心问题进行讲解,包括《1326. 需要安排几位师傅加工零件》《1228. 排…

【嵌入式】探索嵌入式世界:在ARM上构建俄罗斯方块游戏的奇妙之旅

文章目录 前言:1. 简介2. 总体设计思路及功能描述2.1 设计思路2.2 功能描述2.3 程序流程图 3. 各部分程序功能及详细说明3.1 游戏界面函数3.1.1 游戏界面中的图片显示3.1.2 游戏开始界面3.1.3 游戏主界面3.1.4 游戏结束广告界面3.1.5 游戏界面中的触摸反馈3.1.6 游戏…

关于 Mybatis 的开启二级缓存返回对象不一致问题

做实验报告的时候&#xff0c;跟着学习&#xff0c;发现我已经将 开启 二级缓存的 配置都配置好了&#xff0c;但是返回值地址不一致&#xff0c;说明对象不一致&#xff0c;二级缓存命中失败。 跟着流程配置&#xff1a; mybatis-config <settings><!-- 启用 myba…