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

机器学习笔记:李宏毅ChatGPT Finetune VS Prompt

1 两种大语言模型:GPT VS BERT

 2 对于大语言模型的两种不同期待

2.1 “专才”

2.1.1 成为专才的好处 

Is ChatGPT A Good Translator? A Preliminary Study 2023 Arxiv
箭头方向指的是从哪个方向往哪个方向翻译
表格里面的数值越大表示翻译的越好
可以发现专门做翻译的工作会比ChatGPT好一些
How Good Are GPT Models at  Machine Translation? A  Comprehensive Evaluation
同样地,专项翻译任务上,ChatGPT不如一些专门做翻译的模型

 2.1.2 使用方式

对于训练模型进行改造

 bert的先天劣势就是,他是句子填空,而不是句子接龙,所以希望他进行某一项任务,需要对他进行额外的处理,以及额外的参数微调(finetune)

2.1.2.1 加head

额外地对BERT进行一定的添加,使其能够输出希望的结果

 2.1.2.2 微调 Finetune

 2.1.2.3 对训练模型做改造——加入Adapter

在语言模型里插入额外的模组,语言模型的参数不动,只更新adapter的参数
 

 2.1.2.3.1 为什么需要Adapter?

如果没有Adapter的话,100个任务就需要存放100个大模型(的参数)

 有了Adapter之后,同样的100个任务,我们只需要存一个大模型的参数,和100个任务对应Adapter的参数即可。而一般Adapter的参数量比大模型少多了

 

2.2 “通才”

 通过人类给模型下的指令(prompt)实现,

2.2.1 成为通才的好处

 2.2.2 In-context Learning

给大语言模型一个句子,让他分析句子是正面的还是负面的

 

我们需要告诉模型我们要进行情感分析。怎么告诉呢?

  • 我们给大模型一些例子,(前面那些句子+情感分析结果)
  • 把那些例子串起来,加上我们想要分析的句子,一股脑喂给大模型,让大模型输出是正面还是负面

 2.2.2.1  大模型真的能从这些例子中学到信息?

2.2.2.1.1 Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? 2022 ARXIV

故意给模型输入一些错误的情感分析标注,看模型的分析结果
  •  No demo是没有范例
  • 橙色是给了正确的范例
  • 红色是给了一些错误的范例

——>可以发现正确率并没有下降很多

并没有从范例里学到很多有用的信息? 

 

 

那么,故意给一些不在这个domain里面的,无关的输入呢?

 这种将无关domain的信息加入的结果就是紫色部分,可以看到如果是来自不同的domain的话,效果会下降

  

 

所以这篇论文中,in-context learning作用的猜测是:“唤醒”模型

 换句话说,大语言模型本身就会情感分析,in-context learning的作用是“唤醒”他,让语言模型知道接下来做的任务是情感分析

 这篇论文的另一个例子也佐证了这个观点,我们提供的句子-情感结果对增加,精度涨的不多(如果是finetune的话,精度会提升的很快)

 

 

——>说明并不是靠in-context learning提供的这几个输入来学习情感分析。大语言模型本身就已经具备了情感分析的功能了

 2.2.2.1.2 Larger language models do in-context learning differently 2023 arxiv

  •  每一个图像中,颜色越深的表示模型越大
  • 横轴表示in-context learning阶段提供给大模型的有多少比例的是错误的信息
  • 可以看到大模型受到错误范例的影响是很大的,而小模型(GPT3,这里的小是相对的小)受到错误范例的影响是不大
    • 上一篇paper考虑的是较小的模型,所以可能会觉得给了错误的范例影响不大
  • 同时我们可以看到,在大模型中,当in-context learning的错误率为100%(全是相反的结果)的时候,大模型的正确率都是低于50%的,说明他们确实从错误的资料中学到了一些知识

与此同时,我们直接让大模型进行分类任务

我们在in-context learning阶段将input和output全部作为输入提供给大模型,让大模型来进行分类任务

  

可以看到大模型确实学到了in-context learning中的信息

 

2.2.2.2 让模型学习 in-context learning

[2110.15943] MetaICL: Learning to Learn In Context (arxiv.org) 

前面的in-context learning都是没有finetune过程了,这里相当于finetune了一下 

 用别的任务的in-context learning的范例、输入、输出进行微调

 2.2.3 instruction tuninging 

大语言模型还是需要进行一定的微调,才能效果比较好,这个微调的过程就是instruction-tuning

训练(finetune)的时候, 给模型一些指令和对应的答案。测试的时候,给finetune指令之外的其他指令。让模型自己给出合理的回应。

早期模型如Multitask Prompted Training Enables Zero-Shot Task Generalization就提出了一个T0模型,来达成instruction-tuning的效果

 

 [2109.01652] Finetuned Language Models Are Zero-Shot Learners (arxiv.org)

FLAN也是一个早期做instruction tuning的work

 

首先收集大量的NLP任务和数据集

 

而由于instruction tuning是希望模型理解人类下的指令,所以FLAN每一个NLP的任务想了十种不同的描述方式(template)

  

  • 当测试任务是natrual language inference的时候,finetune训练的时候就没有这个任务
  • zero shot 是只有指令,没有in-context learning
  • few-shot就是in-context learning
  • FLAN就是进行instruction learning的结果

 

 2.2.4 Chain of Thought

[2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (arxiv.org)

另一种更详细地给机器prompting的方法

  • 如果是数学这种需要推理的问题,直接给 in-context learning 往往效果若不好

  •  而如果我们给范例的时候,同时给推导过程+答案。期望模型输出答案的时候,也先输出推导,再输出答案
    • 这就叫Chain of Thought Prompting

 

  •  从效果上来看,加了CoT之后的效果更好

 2.2.5 加一些prompting,让CoT效果更好

[2205.11916] Large Language Models are Zero-Shot Reasoners (arxiv.org)

在进行CoT的时候,范例输完了,需要模型回答的问题说完了,加一行’Let's think step by step',可以获得更好的效果

Large Language Models Are Human-Level Prompt Engineers ICLR 2023

加的那一行文字不一样,效果也不一样

2.2.6 CoT+Self=consistency

[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models (arxiv.org)

 

  • 使用CoT让模型先输出推导过程,再输出推导结果,可能每次推导过程不一样 答案也不一样
    • 这里让语言模型产生好几次推导和对应的结果,出现最多次的答案就是正确答案
    • 当然也可以每个答案 用语言模型算一个几率(信心分数)权重
      • 但这个权重论文中说没有什么帮助,所以直接根据数量投票就好

2.2.7 强化学习找Prompt

[2206.03931] Learning to Generate Prompts for Dialogue Generation through Reinforcement Learning (arxiv.org)

2.2.8 直接用LLM来找Prompt

[2211.01910] Large Language Models Are Human-Level Prompt Engineers (arxiv.org)

 

相关文章:

机器学习笔记:李宏毅ChatGPT Finetune VS Prompt

1 两种大语言模型:GPT VS BERT 2 对于大语言模型的两种不同期待 2.1 “专才” 2.1.1 成为专才的好处 Is ChatGPT A Good Translator? A Preliminary Study 2023 Arxiv 箭头方向指的是从哪个方向往哪个方向翻译 表格里面的数值越大表示翻译的越好 可以发现专门做翻…...

中电金信:逐数兴业 智启未来——“数据二十条”影响之解读 (下)

在逐数兴业 智启未来——“数据二十条”影响之解读(上)篇内容中,主要解读了有关于“数据二十条”发布的背景与意义、建立数据要素市场面临的挑战与应对。在今天的文章里,将继续解读“数据二十条”的主要内容以及对金融行业和金融科…...

54款宝藏级AIGC工具分享(claude,Midjourney,Stable Diffusion等)

随着ChatGPT的一波又一波高潮,生成式AI逐渐进入人们视野,并开始大行其道,正如人们所说:AI用的好,天天下班早! 当然,有效的利用AI不但能下班早,还能在上班时间摸鱼,就如潘…...

bigemap如何添加在线地图源?

第一步 打开浏览器,找到你要访问的地图的URL地址,并且确认可以正常在浏览器中访问;浏览器中不能访问,同样也不能在软件中访问。 以下为常用地图源地址: 天地图: http://map.tianditu.gov.cn 包含&a…...

84. 柱状图中最大的矩形

题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释:最…...

嘉楠勘智k230开发板上手记录(二)--hello world

上次成功在k230上烧录sdk,这次准备实现hello world和ssh scp远程k230 主要是按照K230 SDK 基础教程的K230_实战基础篇_hello_world.md 一、PC连接k230 1. 初步准备 首先下载串口工具PuTTY,这个我个人感觉比较方便。 准备两根USB type-C数据线&#…...

ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用全流程科研能力提升

查看原文>>>ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合能力 本文将利用ArcGIS Pro 将您的 GIS 工作组织到工程中,您可以使用 ArcGIS Pro 映射 2D 和 3D 数据。借助 ArcGIS Pro&#xff…...

学习pytorch

学习pytorch 1. 环境安装配置镜像源conda命令记录图像相关代码遇到的问题1. torch.cuda.is_available() False 1. 环境安装 B站小土堆视频 配置镜像源 conda config --show channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main…...

动态SQL实现原理一-动态SQL的使用

在介绍MyBatis动态SQL实现原理之前,我们先来了解一下MyBatis动态SQL的使用。顾名思义,动态SQL指的是事先无法预知具体的条件,需要在运行时根据具体的情况动态地生成SQL语句。 假设我们有一个获取用户信息查询操作,具体的查询条件…...

MyBatis动态sql标签帮你轻松搞定sql拼接

动态sql介绍 由于在开发过程不同的业务中会用到不同的操作条件,如果每个业务都拼接不同sql语句的话会是一个庞大的工作量;此时动态sql就能解决这个问题,可以针对不确定的操作条件动态拼接sql语句,根据提交的条件来完成业务sql的执…...

Java课题笔记~ 使用 Spring 的事务注解管理事务(掌握)

通过Transactional 注解方式,可将事务织入到相应 public 方法中,实现事务管理。 Transactional 的所有可选属性如下所示: propagation:用于设置事务传播属性。该属性类型为 Propagation 枚举, 默认值为 Propagation.R…...

UML—浅谈常用九种图

目录 概述: 1.用例图 2.静态图 3.行为图: 4.交互图: 5.实现图: 概述: UML的视图是由九种视图组成的,分别是用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、实施图。我们可以根据这9种图的功能和实现的目的…...

算法与数据结构-跳表

文章目录 什么是跳表跳表的时间复杂度跳表的空间复杂度如何高效的插入和删除跳表索引动态更新代码示例 什么是跳表 对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率…...

微信小程序nodejs+vue+uniapp校运会高校运动会报名管理系统

3.1小程序端 小程序登录页面,用户也可以在此页面进行注册并且登录等。 登录成功后可以在我的个人中心查看自己的个人信息或者修改信息等 在广播信息中我们可以查看校运会发布的一些信息情况。 在首页我们可以看到校运会具体有什么项目运动。 在查看具体有什么活动我…...

varint原理 - 负数的编码和解码

前一篇博客 varint原理 - 正数的编码和解码_YZF_Kevin的博客-CSDN博客我们讲了varint的实现原理,举例也分析对于正数的编码,解码过程 本篇博客,我们开始举例分析负数的编码和解码,因为负数有原码,反码,补码…...

大学生口才培训需求分析

标题:大学生口才培训需求分析 摘要: 本论文旨在分析大学生口才培训的需求,通过对大学生口才培训的重要性、现状和挑战进行研究,并结合相关理论和实践经验,提出相应的培训需求和解决方案。通过本论文的研究&#xff0c…...

C++:合并集合(并查集)

合并集合 一共有n个数,编号是1~n,最开始每个数各自在一个集合中。 现在要进行m个操作,操作共有2种: 1.“M a b”,将编号为a和b的两个数的所在的集合合并,如果两个数已经在同一个集合中则忽略这个操作 2.“…...

【LeetCode】数据结构题解(10)[有效的括号]

有效的括号 😉 1.题目来源👀2.题目描述🤔3.解题思路🥳4.代码展示 😘😘😘😘😘😘😘😘😘😘😘&#x1…...

5G用户逼近7亿,5G发展迈入下半场!

尽管普遍认为5G投资高峰期正在过去,但是从2023年上半年的情况来看,我国5G建设仍在衔枚疾走。 近日举行2023年上半年工业和信息化发展情况新闻发布会上,工信部人士透露,截至今年6月底,我国5G基站累计达到293.7万个&…...

分布式问题

1. 分布式系统CAP原理 CAP原理:指在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。 一致性(C…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...