什么是小样本学习
模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是few shot learning 要解决的问题。
对比学习拉近同类样本的距离,拉远异类样本的距离。
GPT3 基于transformer的encoder的模型。1600亿的参数。bert-base 一亿参数。
无法部署GPT3,但是可以借鉴思想。
- GPT3的零样本学习实际上做的是续写的任务,只不过这个续写的任务可以看作是翻译任务。先告诉你我要做什么事,再给你续写任务。
- GPT3的单样本,不光告诉你我要做什么事情,还告诉你了一个例子,你再接着做续写任务。
- GPT3的小样本,多了几个例子。
- 可以看到GPT提供了一种prompt的方法,先预先提供一个模板,然后让模型去预测后面的内容,这就是典型的Autoregressive的思想。
- T5效果没有GPT3好
- Autoregressive:单向的 从左往右的结构
- AutoEncoding:用上下文预测中间 是双向的
基于prompt的小样本学习
预训练的时候做的任务是MLM,那么我做预测任务的时候我仍然做MLM。
让P(sports | News:xxxxxx)概率值越大越好。
输入输出是这样的,完形填空。
prompt帮你节省很多人力成本
prompt实战演练
情感分类的例子 二分类 正类or负类
transformer这个库是预训练语言模型用的比较多的,比较成熟的库。
- 加载roberta的参数
- 初始化trainer
- 构造模板
- 需要mask的位置是2这个位置(因为有cls标志位,所以是2)
- 正例下标
- 负例下标
- - 读取训练数据
- 读取测试数据
- 对数据进行预处理pattern_data
- -100 就是如果这个值是-100 crossentropyloss有一个ignore_index不会计算,节省算力
- 如果你的lable是-100 那它不会计算
- 配置模型优化器
- output forword方法的返回值
- output.logits 就是下面这个logits
-targets_ids是下标
output的维度[batch_sieze, seq_len, vocab_size]
“好”和“坏”在词典中的位置