机器学习笔记:李宏毅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)

 

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

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

相关文章

ChatGPT​保密吗?它有哪些潜在风险?如何规避?

自2022年11月公开发布以来,ChatGPT已成为许多企业和个人的必备工具,但随着该技术越来越多地融入我们的日常生活,人们很自然地想知道:ChatGPT是否是保密的。 问:ChatGPT保密吗? 答:否&#xff0…

C++11并发与多线程笔记(3)线程传参详解,detach()大坑,成员函数做线程函数

C11并发与多线程笔记(3)线程传参详解,detach 大坑,成员函数做线程函数 1、传递临时对象作为线程参数1.1 要避免的陷阱11.2 要避免的陷阱21.3 总结 2、临时对象作为线程参数2.1 线程id概念2.2 临时对象构造时机抓捕 3、传递类对象…

VR时代真的到来了?

业界对苹果的期待是,打造一台真正颠覆性的,给头显设备奠定发展逻辑底座的产品,而实际上,苹果只是发布了一台更强大的头显。 大众希望苹果回答的问题是“我为什么需要一台AR或者VR产品?”,但苹果回答的是“…

从零开始学习 Java:简单易懂的入门指南之MAth、System(十二)

常见API,MAth、System 1 Math类1.1 概述1.2 常见方法1.3 算法小题(质数)1.4 算法小题(自幂数) 2 System类2.1 概述2.2 常见方法 1 Math类 1.1 概述 tips:了解内容 查看API文档,我们可以看到API文档中关于Math类的定义如下: Math类…

每天一道leetcode:300. 最长递增子序列(动态规划中等)

今日份题目: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] …

【JavaEE进阶】SpringBoot项目的创建

文章目录 一. SpringBoot简介1. 什么是SpringBoot?2. SpringBoot的优点 二. SpringBoot项目创建1. 使用IDEA创建2. 使用网页创建SpringBoot项目 三. 运行SpringBoot项目 一. SpringBoot简介 1. 什么是SpringBoot? Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序…

Spring对象装配

在spring中,Bean的执行流程为启动spring容器,实例化bean,将bean注册到spring容器中,将bean装配到需要的类中。 既然我们需要将bea装配到需要的类中,那么如何实现呢?这篇文章,将来阐述一下如何实…

SOFABoot——基本使用(笔记)

文章目录 一、前言二、快速开始2.1 基本搭建2.2 测试是否成功2.3 其他部分日志测试异步启动 三、SOFABoot的模块化开发3.1 基于Spring上下文的隔离3.2 Root Application Context3.3 模块并行化启动3.4 JVM服务与RPC服务的发布与引用3.5 模块配置Module-NameRequire-ModuleSprin…

wsl2安装mysql环境

安装完mysql后通过如下命令启动mysql service mysql start 会显示如下错误: mysql: unrecognized service 实际上上面显示的错误是由于mysql没有启动成功造成的 我们要想办法成功启动mysql才可以 1.通过如下操作就可以跳过密码直接进入mysql环境 2.如果想找到my…

微服务与Nacos概述-5

引入OpenFeign 添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>com.alibaba.cloud</groupId>…

“记账”很麻烦,看这场竞赛中的队伍与合合信息是如何解决问题的

在我们日常生活中或多或少都会有记账的情况&#xff0c;以此来对自己的收支和消费习惯进行分析&#xff0c;来帮助自己减少不必要的开支&#xff0c;优化财务决策、合理分配资金&#xff0c;减少财务压力和不必要的浪费。 但记账这个动作本身就是一件比较麻烦的。虽然现阶段有…

数据结构入门 — 时间复杂度、空间复杂度

前言 数据结构_空间复杂度_时间复杂度讲解_常见复杂度对比 本文介绍数据结构中的时间复杂度和空间复杂度 ***文章末尾&#xff0c;博主进行了概要总结&#xff0c;可以直接看总结部分*** 博主博客链接&#xff1a;https://blog.csdn.net/m0_74014525 点点关注&#xff0c;后期…

哈夫曼树(赫夫曼树、最优树)详解

目录 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 什么是哈夫曼树 构建哈夫曼树的过程 哈弗曼树中结点结构 构建哈弗曼树的算法实现 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 路径&#xff1a;…

实验三 图像分割与描述

一、实验目的&#xff1a; &#xff08;1&#xff09;进一步掌握图像处理工具Matlab&#xff0c;熟悉基于Matlab的图像处理函数。 &#xff08;2&#xff09;掌握图像分割方法&#xff0c;熟悉常用图像描述方法。 二、实验原理 1.肤色检测 肤色是人类皮肤重要特征之一&#xff…

7.原 型

7.1原型 【例如】 另外- this指向&#xff1a; 构造函数和原型对象中的this都指向实例化的对象 7.2 constructor属性 每个原型对象里面都有个constructor属性( constructor构造函数) 作用&#xff1a;该属性指向该原型对象的构造函数 使用场景: 如果有多个对象的方法&#…

Springboot 实践(4)swagger-ui 测试controller

前文项目操作&#xff0c;完成了项目的创建、数据源的配置以及数据库DAO程序的生成与配置。此文讲解利用swagger-ui界面&#xff0c;测试生成的数据库DAO程序。目前&#xff0c;项目swagger-ui界面如下&#xff1a; 以”用户管理”为例&#xff0c;简单讲述swagger-ui测试数据库…

无涯教程-Perl - s函数

描述 这不是功能。这是正则表达式替换运算符。根据PATTERN中指定的正则表达式,将数据替换为REPLACE。与m //一样,分隔符由s后的第一个字符定义。 语法 以下是此函数的简单语法- s/PATTERN/REPLACE/返回值 如果失败,此函数返回0,如果成功,则返回替换次数。 例 以下是显示…

【Python机器学习】实验10 支持向量机

文章目录 支持向量机实例1 线性可分的支持向量机1.1 数据读取1.2 准备训练数据1.3 实例化线性支持向量机1.4 可视化分析 实例2 核支持向量机2.1 读取数据集2.2 定义高斯核函数2.3 创建非线性的支持向量机2.4 可视化样本类别 实例3 如何选择最优的C和gamma3.1 读取数据3.2 利用数…

Open3D 最小二乘拟合平面(SVD分解法)

目录 一、算法原理二、代码实现三、结果展示1、点云2、拟合结果四、优秀博客本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 本文实现矩阵奇异值分解方法的最小二乘拟合平面。原理如下: 对于得到的 n n

欧拉函数(质因子分解)

思路&#xff1a; (1)欧拉函数&#xff1a;输入n则输出1~n中与n互质的数的个数。 &#xff08;2&#xff09;计算公式&#xff1a; &#xff08;3&#xff09;证明&#xff1a;&#xff08;容斥原理&#xff09;对于n个数&#xff0c;先分别摘除所有被pi整除的数&#xff0c;…