InstructGPT数据标注问题
1 背景介绍
ChatGPT的训练过程与InstructGPT相近,大致分为三步:
SFT:收集描述型数据,对GPT3.5有监督微调
RM:收集对比型数据,训练一个奖励型模型(RM)
PPO:使用PPO算法,用RM继续微调GPT3.5
由上述可见,任何一个训练过程,首当其冲的是获取到每个任务阶段所需要的标注型数据,因此本文将对ChatGPT可能使用到的数据及其标注方法进行介绍。
2 标记员筛选
由于在ChatGPT微调的过程中,对数据极为敏感,人们所希望的语言对话模型所生成的回答应该是真实、无害、有帮助的,并且在模型评估时,真实、无害是基本要素。在这样的需求下,openAI在挑选标记员时进行了一系列的筛选测试,从而保证结果的可靠性。
2.1 标记员筛选标准
对敏感言论的看法。敏感言论指的是能够引起人的强烈负面情绪的言论,openai要求标记者对其看法应尽量一致;
答案排名能力。要求标记员与研究人员,就模型给出的问题回答排序应一致;
识别不同领域的敏感内容的能力。
3 数据集及其标注
3.1 预训练
由于无论是ChatGPT所采用的GPT3.5,还是InstructGPT所采用的 ...
Transformer理论及源码理解
提出背景
改进了RNN的训练慢的缺点,利用self-attention机制实现并行计算。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。同时使用注意力机制更容易关注序列的全局特征,解决了RNN不善处理长距离依赖的问题
本质上是一个seq2seq的模型,因此可用于机器翻译,语音辨识,语音合成等问题
总体结构
整体结构由编码器与解码器组成,一个编码器中可有若干个编码层
注意,Encoder中的参数各不相同
Encoder
编码器的作用在于,输入一个向量,输出一个等长的向量
要点:
使用多头注意力机制,关注全局输入向量的资讯
使用了残差及layer normalization,避免出现梯度消失问题
使用前向神经网络,每个位置的单词对应的前馈神经网络都完全一样
Self Attention
query,key,value全由输入向量自身计算得到的一种注意力机制。每一个输入向量分别对应了查询、键、值权重矩阵,用于生成查询、键、值向量,权重矩阵为训练参数
Decoder
输入有两部分
编码器最后一层的输出作为key ...
hai-AcWing计划
前言
很高兴同学们能够加入hai-AcWing!如果你是计算机专业的新生,想要锻炼实操能力,提高自己的写代码水平,感受计算机的魅力;或者准备找工作,在刷leetcode题;或者正在准备保研,准备参加算法比赛加分,加入AcWing算法社区学习一定可以帮到你!
先修知识
学过先修知识的同学,可直接跳过此部分
想要开始算法竞赛的学习,需要先完成两门先修课程,即《C++程序设计》(可用其它语言代替)和《数据结构》。经过验证,未学习这两门课直接上手做算法题效果并不理想。
而这里所提到的C++,本质上就是C + STL,并不包括面向对象的知识。因为算法竞赛属于面向过程编程,所以主要的任务就是掌握C语言及STL容器的使用。
C++推荐学习:
【浙江大学】C语言程序设计 翁恺
C Primer Plus(见群文件,可供查阅 )
C2C++(见群文件,在原有C语言的基础上过渡到C++)
STL(见群文件,可供查阅 )
数据结构推荐学习:
【浙江大学】数据结构 陈越+何钦铭(视频总时长不多不少 )
《大话数据结构》(大白话讲数据结构,更容易理解 )
掌握以上的知识后,就有了写算法题的能力。但理 ...
从卷积到卷积神经网络
前言
本文记录了在跟随李沐老师的动手学深度学习课程中,CNN部分的要点
“卷积神经网络(convolutional neural network,CNN)是一类强大的、为处理图像数据而设计的神经网络。 基于卷积神经网络架构的模型在计算机视觉领域中已经占主导地位,当今几乎所有的图像识别、目标检测或语义分割相关的学术竞赛和商业应用都以这种方法为基础。”——李沐
数学上的卷积
在数学中,两个函数(比如f,g:Rd→Rf, g: \mathbb{R}^d \to \mathbb{R}f,g:Rd→R)之间的“卷积”被定义为
(f∗g)(x)=∫f(z)g(x−z)dz.(f * g)(\mathbf{x}) = \int f(\mathbf{z}) g(\mathbf{x}-\mathbf{z}) d\mathbf{z}.
(f∗g)(x)=∫f(z)g(x−z)dz.
卷积是当把一个函数“翻转”并移位x\mathbf{x}x时,测量fff和ggg之间的重叠。
当为离散对象时,积分就变成求和。例如:对于由索引为Z\mathbb{Z}Z的、平方可和的、无限维向量集合中抽取的向量,我们得到以下定义 ...
如何启动操作系统?不要只回答按电源键啦
前言
为了准备秋招及春招,现阶段的任务是将所学过的知识进行复习,并串联起来。而操作系统中,最为重要的就是进程、线程、内存、文件
还有一些很常问的一些技术点,堆和栈、内存分区、虚拟内存 + 物理内存、进程 + 线程 + 协程、死锁、分片机制、五大组件、中断和系统调用 、同步和异步等等问题。
对于操作系统的理解,对于这些基础的计算机知识的掌握是必须深入学习,要花很大的功夫去理解清楚这些,工作中,对于真实线上系统的稳定性、对于底层技术的理解是有帮助的,操作系统是面试中常见问题之一。
OS概述
操作系统(Operating System)
控制和管理整个计算机系统的硬件和软件资源,并合理组织和调度资源分配(系统资源的管理者)
为用户和应用软件提供接口和服务(向上层提供方便易用的服务)
最基本的系统软件,对硬件机器功能进行拓展(最接近硬件的一层软件)
指令:CPU能识别、执行的最基本的指令,二进制机器代码
操作系统提供的服务、功能?
GUI,图形用户界面
命令接口:联机(交互式)命令接口windows中的cmd,脱机(批处理)命令接口.bat文件
系统调用,需通过程序间接使用prin ...
各种网络协议捋不清?一文带你解决
前言
为了准备秋招及春招,现阶段的任务是将所学过的知识进行复习,并串联起来。计算机网络为后续开展网络编程提供支撑,其中的要点包括了IP、UDP、TCP等
具体的还包括了:OSI 七层模型和 TCP/IP 四层体系结构,TCP 三次握手与四次挥手,常见的网络协议(网桥、ARP、IP、ICMP、TCP、UDP、DHCP、DNS)、TCP 粘包、流量控制 + 拥塞控制、数字签名原理、http + https,http 的状态码,https 的安全机制,网络安全、输入 www.baidu.com 背后发生了什么等等问题。
其实工作中,有时就会出现,网络抖动、网络延迟,网络拥塞的情况,此时就需要具备一定的网络知识,及时的解决问题,计算机网络是面试中常见问题之一。
网络层
把分组从源端传递到目的端,为分组交换网上的不同主机提供通信服务。
传输单位:数据报(由分组组成)
功能:
路由选择与分组转发
路由选择:根据选定的路由选择协议,构造出路由表,并不定期更新和维护该路由表
分组转发:根据转发表(由路由表得出),对分组进行转发,从路由器的某个端口发送出去
异构网络互联
拥塞控制
所要掌 ...
三道题带你复习C++和Java
前言
前段时间有一个面试要考Java,在翻复习资料时,发现了三道题(谢谢张老师)基本上概括了一个语言的常用语法。特此记录,围绕这三道题用不同的语言编写,以便后续进行快速地复习。如果想要详细复习,请看C/C++要点复习
问题一
问题描述
请从控制台输入一个三角形的三条边长,并判断这三条边能不能构成一个三角形。
如能构成,请打印输出这个三角形的周长(要求输出宽度为8,保留两位小数),如不能构成,请打印输出具体提示。
考察点:输入、输出、if条件判断
Java
1234567891011121314151617public class TestTriangle { public static void main(String[] args) { double []a = new double[3]; Scanner scanner = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.print(" ...
C++要点复习
前言
为了准备秋招及春招,现阶段的任务是将所学过的知识进行复习,并串联起来。
首当其冲的就是编程语言的复习,C++自己平时写的也比较多,但仍有很多语法细节不太记得了,这里浅记一些平常容易忽略的要点。
C++基础入门
一维数组数组名
一维数组名称的用途:
可以统计整个数组在内存中的长度(单位:字节B)
可以获取数组在内存中的首地址
已知一个数组的数组名,求数组元素的个数,如下:
1234int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;
可以通过数组名获取到数组 ...
计算机转专业学习计划
为帮助转入计算机专业的同学以更短的时间,从原先专业过渡到计算机专业的学习,所以写下这篇文章。如有不恰当需要纠正的地方,可在下方评论区提出(毕竟只是个人见解,可能有失偏颇)。学习的方法也是偏向于读研深造,准备直接工作的同学,可能不太适合。下面让我们正式开始吧!^_^
能够转入计算机专业的同学,必定都是原专业中的佼佼者,首先欢迎你们加入计算机学院这个大家庭!不过在这里,要先给大家打一剂预防针:对于计算机学科的学习,不可只停留于学校里,课堂上所学习的知识;也不可只重应试的学习,而忽略对自己编程能力的培养。 计算机专业的学习,很大程度上靠的是自己,需要极强的自学能力。而在自学的过程中,难免会陷入很多误区,所以写这篇文章的目的,也是让大家避免重复走博主走过的弯路,从而白白浪费时间。尤其对我们转专业的学生来说,最缺的是Time
编程语言
编程语言的学习不是全部,不要在编程语言上花了好几个月,多用用它,自然而然就会了(大坑,写前头)
刚转入计算机专业的你们,肯定会纠结,到底哪门语言才是最好的语言,甚至会把对编程语言的学习,当作计算机专业的全部。在这里强调一下,编程语言只是门语言,就像英语一样,是自己 ...
红黑树学习笔记
点击此链接进行红黑树模拟
前言
所有的红黑树的插入删除操作都与二叉搜索树(BST)的操作类似,只不过红黑树在BST的基础上,多出了维护红黑树性质的操作。而红黑树的性质有以下5条:
所有的结点要么红,要么黑
根结点必为黑
叶子结点(NULL结点)全为黑
任意两个红色结点必不相邻
任意结点往下到任意叶子结点的简单路径上所包含的黑点个数相同
插入
(看叔叔结点的脸色)
待插入的结点默认是红色。因为如果是黑色,每插入一个结点,由于路径上的黑色结点数会发生改变,就要进行调整;如果默认是红色的话,只有当出现两个相邻连续的红色结点时,才要进行调整
待插入的结点是树的根结点,则染成黑色
待插入的结点的父结点是黑色,则此时满足红黑树的性质,不用做出任何改变
待插入的结点的父结点是红色(爷结点必然为黑色),此时要考虑其叔叔结点的颜色
如果叔叔结点也是红色,则把父结点和叔叔结点染成黑色,爷结点染成红色;再把当前结点设置为爷结点,继续上述操作,直至根结点,相当于往上递归
如果叔叔结点是黑色,则需要进行旋转操作。如果待插入的结点是父结点的右孩子,则要先进行左旋,转换为是左孩子的情况(如果在右边,则孩 ...