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

 

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

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

相关文章

springboot生成表结构和表数据sql

需求 业务背景是需要某单机程序需要把正在进行的任务导出,然后另一台电脑上单机继续运行,我这里选择的方案是同步SQL形式,并保证ID随机,多个数据库不会重复。 实现 package com.nari.web.controller.demo.controller;import cn…

有哪些常用的设计素材网站?

素材网站可以是设计师和创意人员的灵感来源。这些网站收集了各种类型的平面设计图片,包括标志、海报、网站设计、包装设计、插图等。在本文中,我将推荐15个平面设计图素材网站,以帮助您找到新的想法和灵感。 1.即时设计资源社区 即时设计资…

无涯教程-Lua - 嵌套if语句函数

在Lua编程中,您可以在另一个if or else if语句中使用一个if or else if语句。 nested if statements - 语法 嵌套if 语句的语法如下- if( boolean_expression 1) then--[ Executes when the boolean expression 1 is true --]if(boolean_expression 2)then--[ Ex…

Python 中的机器学习简介:多项式回归

一、说明 多项式回归可以识别自变量和因变量之间的非线性关系。本文是关于回归、梯度下降和 MSE 系列文章的第三篇。前面的文章介绍了简单线性回归、回归的正态方程和多元线性回归。 二、多项式回归 多项式回归用于最适合曲线拟合的复杂数据。它可以被视为多元线性回归的子集。…

Java进阶(1)——JVM的内存分配 反射Class类的类对象 创建对象的几种方式 类加载(何时进入内存JVM) 注解 反射+注解的案例

目录 引出java内存分配java内存分布概略图堆方法区常量池 创建对象内存分配 反射class文件的底层类加载顺序1.检查2.开辟静态资源空间3.常量池4.其他...5.创建一个唯一的类的对象获取Class对象的几种方式 创建对象几种方式new 看到new : new Book()反射 Class.forName(“包名.类…

Chrome开发者工具介绍

Chrome开发者工具介绍 前言1 打开DevTools2 命令菜单3 Elements面板ConsoleJavaScript调试Network 前言 Chrome开发者工具是谷歌浏览器自带的一款开发者工具,它可以给开发者带来很大的便利。常用的开发者工具面板主要包含Elements面板、Console面板、Sources面板、…

SpringBoot复习:(22)ConfigurationProperties和@PropertySource配合使用及JSR303校验

一、配置类 package cn.edu.tju.config;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component;Component ConfigurationPropertie…

代码审计-RCE命令执行漏洞审计

代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…

IMV8.0

一、背景内容 经历了多个版本,基础内容在前面,可以使用之前的基础环境: v1: https://blog.csdn.net/wtt234/article/details/132139454 v2: https://blog.csdn.net/wtt234/article/details/132144907 v3: h…

前台自动化测试:基于敏捷测试驱动开发(TDD)的自动化测试原理

一、自动化测试概述 自动化测试主要应用到查询结果的自动化比较,把借助自动化把相同的数据库数据的相同查询条件查询到的结果同理想的数据进行自动化比较或者同已经保障的数据进行不同版本的自动化比较,减轻人为的重复验证测试。多用户并发操作需要自动…

Centos7.6安装mysql8.0.20

安装前 1.安装mysql前,需将系统自带的mariadb卸载。 [rootk8s01 ~]#  rpm ‐qa|grep mariadbmariadb‐libs.x86_643[rootk8s01 ~]#  rpm ‐e ‐‐nodeps mariadb‐libs.x86_643[rootk8s01 ~]#  rpm ‐qa|grep mariadb 2. 下载mysql8.0.20 [rootk8s-01…

IPWorks S3 Delphi Edition Crack

IPWorks S3 Delphi Edition Crack IPWorksS3使集成基于云的文件存储变得容易。易于使用的组件可用于与任何S3兼容的存储提供商集成,如Amazon S3、Digital Ocean Spaces、Wasabi、Backblaze B2、IBM Cloud Object storage、Oracle Cloud、Linode等。强大的客户端加密…

【夜深人静学习数据结构与算法 | 第十二篇】动态规划——背包问题

目录 前言: 01背包问题: 二维数组思路: 一维数组思路: 总结: 前言: 在前面我们学习动态规划理论知识的时候,我就讲过要介绍一下背包问题,那么今天我们就来讲解一下背包问题。 在这…

视频怎么改成gif格式?简单几步就可以轻松视频转gif

平时我们使用的许多gif图片,其实都是视频片段,那么是怎么把视频转gif格式的呢?可以使用视频转gif工具来完成gif制作,下面就给大家分享一个简单的视频转gif在线制作(https://www.gif.cn)的方法,一…

如何离线安装ModHeader - Modify HTTP headers Chrome插件?

如何离线安装ModHeader - Modify HTTP headers Chrome插件? 1.1 前言1.2 打开Chrome浏览器的开发者模式1.3 下载并解压打包好的插件1.4 解压下载好的压缩包1.5 加载插件1.6 如何使用插件? 1.1 前言 ModHeader 是一个非常好用的Chrome浏览器插件,可以用…

webpack基础知识四:说说webpack中常见的Plugin?解决了什么问题?

一、是什么 Plugin(Plug-in)是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能 是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统下,因为其需要调用原纯净系统提供…

深度学习——常见注意力机制

1.SENet SENet属于通道注意力机制。2017年提出,是imageNet最后的冠军 SENet采用的方法是对于特征层赋予权值。 重点在于如何赋权 1.将输入信息的所有通道平均池化。 2.平均池化后进行两次全连接,第一次全连接链接的神经元较少,第二次全连…

校园跑腿小程序为什么这么受欢迎呢?

校园跑腿小程序是一种在校园内提供快递、代购、代拿快递、代办事项等服务的手机应用程序。它通常由学生或校园内的志愿者组成,通过该应用程序接受用户的委托,并且根据用户的需求完成任务。校园跑腿小程序通过与学校或社区合作,提供便利的服务…

【JVM技术指南】「GC内存诊断-故障问题排查」一文教你如何打印及分析JVM的GC日志(实战分析上篇)

一文教你如何打印及分析JVM的GC日志 JVM GC日志格式JVM GC日志含义JVM GC日志分析方法开启JVM-GC日志的启动参数GC查看案例JVM参数解析配置JVM参数对象是如何分配在Eden区内存区域分析初始化数组对象 结论 当我们在开发Java应用程序时,JVM的GC(垃圾回收&…

【PCL-6】PCL基于凹凸型的分割算法

凹凸型分割算法适用于颜色类似、棱角分明的物体场景分割。 算法流程&#xff1a; 1、基于超体聚类的过分割&#xff1b; 2、在超体聚类的基础上再聚类。 示例代码&#xff1a; //超体聚类LCCP //#include "stdafx.h"#include <stdlib.h> #include <cm…