GPT面试知识点

news2024/11/27 3:38:12

0.GPT的模型结构

GPT是一个基于Transformer的生成式预训练模型。使用Transformer中的解码器部分

它由一系列的模块化的Transformer Blocks组成。每一个Block包含一个多头自注意力机制(Multi-Head Self-Attention mechanism)以及一个位置前馈网络(position-wise feedforward network)。所有的Block都共享同样的架构,但并不共享权重。

每一个Block的输入首先会通过多头自注意力机制进行处理。自注意力机制允许模型在生成当前词元(token)时考虑到输入序列中的所有其他词元,并为这些词元分配不同的注意力权重。

处理后的输出接着会经过一个前馈神经网络,这是一个逐位置(position-wise)操作,也就是说,它会独立地处理序列中的每一个位置的信息。

除了这些主要的部分,每一个Block还包含残差连接(residual connections)和层归一化(layer normalization)以提高训练稳定性和效果。

在GPT的训练过程中,模型会以自回归(auto-regressive)的方式处理输入的文本序列,即在生成每一个词元时,只考虑它前面的词元。然后,模型会尝试预测序列中下一个词元的概率分布。

总的来说,GPT模型的结构旨在充分利用输入序列中的全局信息,并通过自回归的方式生成文本。

1.什么是自回归语言模型

GPT系列模型(如GPT-3和GPT-4)就是典型的自回归语言模型

自回归语言模型(Autoregressive Language Model)是一种基于概率的自然语言处理(NLP)技术,其主要用途在于生成和解析文本。这种模型采用自回归的原理,即根据已知的历史数据来预测未来的值。在语言建模的背景下,这意味着模型会根据已观察到的单词序列来预测接下来的单词。

GPT系列模型(如GPT-3和GPT-4)就是自回归语言模型的经典例子。

2.比较GPT和BERT的不同

BERT(Bidirectional Encoder Representations from Transformers)和GPT(Generative Pretrained Transformer)都是自然语言处理中的前沿模型,但它们在建模语言时使用了不同的方法。

BERT采用了一种被称为“掩码语言模型”的方式,也就是通过随机屏蔽文本中的一部分单词,然后训练模型去预测这些被屏蔽的单词。BERT使用的是Transformer的编码器结构,并且是双向的,可以同时考虑上下文中前后的信息。

相比之下,GPT则采用了自回归的方式,也就是给定一系列的前文,预测后续的Token。GPT使用的是Transformer的解码器结构,只能从前往后预测,也就是说,它在预测某个单词时只考虑该单词前面的上下文。

两种模型使用的目标函数(损失函数)不同。GPT的目标函数相较BERT的目标函数更为复杂,因为它需要生成整个文本序列,而不仅仅是填充被遮挡的部分。另一方面,BERT的目标函数在某种程度上可以认为是有一个更高的“下限”,因为它的任务更简单——只需要预测遮挡的单词。然而,GPT的“上限”更高,因为它具有生成完整文本的能力。

BERT更擅长理解文本(因为它同时考虑了上下文的前后信息),而GPT则更擅长生成文本(因为它从前往后生成整个文本)。

3.使用GPT进行微调

GPT是可以根据不同下游任务进行微调

GPT2可以微调,也可以用类似prompt的方式进行Few-shot和Zero-shot 的推理

GPT3在处理子任务的时候不做任何梯度更新和微调,主要原因是模型过大,微调成本过高。主要使用下面的方法进行Few-shot,Zero-shot 的推理。

Zero-shot是指我们给模型提供一个包含任务信息的输入,然后让模型直接预测答案。

Few-shot是在零次学习的基础上给模型提供少量的示例来指导其理解任务。

4.GPT局限性

(下面这段话都是GPT自己生成的。。。)

虽然GPT(包括其后续版本如GPT-2、GPT-3等)在许多自然语言处理任务中表现出卓越的性能,但它们仍存在一些局限性:

  1. 过度生成: GPT模型有时可能会生成与输入不相关或者没有根据的内容。这是因为它们是在大量文本数据上训练的,它们的主要目标是生成看似语法正确、连贯的文本,而不一定是逻辑上严谨或事实上准确的内容。

  2. 缺乏常识和深度理解: 虽然GPT可以通过训练数据学习到大量的语言模式,但它并不真正理解语言的含义。这意味着它可能会做出一些明显违反常识的错误。同样,对于需要深度理解或专门知识的问题,GPT的表现可能不佳。

  3. 易于产生偏见: GPT模型在训练过程中可能会学习到数据中的偏见,包括性别、种族、宗教等各种形式的偏见。如果这些偏见在生成的内容中得到体现,可能会引发问题。

  4. 难以控制生成内容: 控制GPT模型生成的具体内容是一项挑战。虽然我们可以通过调整参数和使用特定的输入提示来影响输出,但这通常需要大量的试错和微调。

  5. 知识更新的问题: GPT模型在训练后的知识是固定的,它不能获取或理解训练数据后发生的事件或新的知识。

  6. 计算资源消耗大: 训练GPT这样的大型模型需要大量的计算资源,这在一定程度上限制了其可接受性和普及性。

  7. 安全性和滥用的问题: 高质量的文本生成能力可能被用于不良目的,如产生虚假新闻、恶意评论等。

5 自回归模型的解码方式

Beam Search是一种在每一步保留几个最有可能的候选序列的策略,十分常见

这种采样虽然会找到语法上最通顺的句子,但是不一定是人类期待最佳答案。对于一个充分训练的生成模型,使用Beam Search找到的Top10会非常的雷同。

这时候可以采用Top-k Sampling或者Top-p Sampling 想了解更多可以看下面的链接

Nucleus Sampling与不同解码策略简介 - 知乎 (zhihu.com)

6 instructGPT

ChatGPT/InstructGPT详解 - 知乎 (zhihu.com)

直观解读KL散度的数学概念 - 简书 (jianshu.com)

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

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

相关文章

Redis - 原理篇

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github、语雀 🎉公众号:猫十二懿 Redis(原理篇) 一、数据结构 1.1 动态字符串SDS 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字…

Spring Boot如何实现分布式锁的自动释放

Spring Boot如何实现分布式锁的自动释放 在分布式系统中,为了保证数据的一致性和可靠性,常常需要使用分布式锁。在实际开发中,我们可以使用 Redis、Zookeeper 等分布式系统来实现分布式锁。本文将介绍如何使用 Spring Boot 来实现分布式锁的…

Android Input子系统 - kernel

目录 前言 数据结构 输入子系统流程 前言 上一节有展示Android Input子系统的架构图,这里我们关心Linux kernel层 可以看到kernel层分为三层: 输入子系统设备驱动:处理与硬件相关的信息,调用input API注册输入设备,并把数据往上报 输入子系统核心层:为事件处理层和设…

关于QGroundControl的软件架构的理解

首先QGC是基于QT平台开发,个人理解软件架构即为项目前后端结构,以及前后端数据交互的逻辑。下面是对QGroundControl源码的一些个人理解,写这个博客只是为了记录下来,防止时间久了忘记,过程中看了一些大佬的博客来帮助理…

服务运营 |摘要: Healthcare Management Science 近期论文汇总

推文作者:李舒湉 罗毓灵 编者按 Healthcare Management Science 近期论文汇总 Healthcare Management Science 论文精选(三月下) 1Monitoring policy in the context of preventive treatment of cardiovascular disease https://link.sprin…

SQL——视图检查选项 local

create table stue ( id int auto_increment primary key comment 客户编号, name varchar(20) comment 客户名称, mima varchar(100) comment客户密码 , phonr varchar(20) comment 客户电话, xb char(2) …

【目录】《电路》上下、《电力电子学》、《数字电路》

1、知乎----作为电力电子专业的学生,有哪些专业书籍值得反复阅读? 一门课 / 一本书 经不经典,直接去 中国大学MOOC 上搜一搜就知道了 《电路》 电路主要讲:电压、电阻、电容的一些计算公式 《电力电子学》 https://www.zhih…

Hexo 搭建博客并推送GitHub

初始Hexo npm install hexo-cli -g hexo init blog cd blog npm install hexo server浏览器访问:http://localhost:4000/ 设置GitHub 1、首先要注册一个Github账号,新建一个name.github.io的仓库,也就是new repository。 因为博主之前创建…

Sui主网升级至V1.2.0版本

升级要点 [API行为调整] — 因rpc方法导致的UserInputError、 SuiRpcInputError、SuiError::TransactionNotFound以及SuiError::TransactionsNotFound报错,现在返回错误代码为32602,取代了32000。此信息已在#11833 #11928中更正。 修复了get_coin_meta…

Python实战基础18-文件操作

1、文件的打开和关闭 1.1 操作文件的整体过程 打开文件,或者新建立一个文件读/写数据关闭文件 1.2 打开文件 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。 open(文件路径,访问模式) …

【教程】在 Visual Studio 2015 上对 C++ 进行单元测试

更新中 目录 前言环境Visual Studio 2015 提供的单元测试工具创建 C 测试框架在测试项目内测试一个函数测试另一个 Project 的函数参考 前言 本文的测试环境是 Visual Studio 2015,高级别版本(如,2017,2022)的操作略有…

SpringBoot + 规则引擎 URule,太强了!

一、背景 前段时间,在做项目重构的时候,遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决,但是当时也不清楚怎么回事,就想玩点别的。于是乎,就去调研了规则引擎。 当然,市面上有很多…

[unity]如何并行for循环

序 并行for循环 计算着色器里可以弄,但是那个得先了解一堆api,比如什么setBuffer unity 的 job system好像也可以弄,但是那个也得先了解一堆api 这些都是大而全的,有没有那种,没那么神通广大但是比较容易上手的&am…

【CocosCreator入门】CocosCreator组件 | TiledTile(地图块)组件

📢博客主页:肩匣与橘📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由肩匣与橘编写,首发于CSDN🙉📢生活依旧是美好而又温柔的,你也是✨ …

HIve技术详解(一)

第1章 Hive基本概念 1.1 Hive 1.1.1 Hive的产生背景 在那一年的大数据开源社区,我们有了HDFS来存储海量数据、MapReduce来对海量数据进行分布式并行计算、Yarn来实现资源管理和作业调度。但是面对海量数据和负责的业务逻辑,开发人员要编写MR来对数据进…

3.3 最长公共子序列

博主简介:一个爱打游戏的计算机专业学生博主主页: 夏驰和徐策所属专栏:算法设计与分析 1.什么是子序列? 我的理解: 在字符串或序列中,子序列是指从原始序列中删除零个或多个元素后得到的序列,…

Spring Boot如何实现分布式事务的协调和管理

Spring Boot如何实现分布式事务的协调和管理 在分布式系统中,事务是非常重要的一部分,可以保证多个操作在一个原子性的操作中完成,确保数据的一致性和可靠性。在分布式系统中,分布式事务需要考虑多个服务之间的数据一致性和事务提…

论文排版!

目录 Visio画图后,粘贴到word白边太宽? 【IEEE论文投稿word中双栏情况下插入单栏效果图片】 论文排版之Word双栏排版问题解决 Word公式居中,公式序号靠右(制表位实现) 请问word如何实现这种长公式的排版&#xff1…

MVCC 实现原理

💟这里是CS大白话专场,让枯燥的学习变得有趣! 💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话! 💟好记性不如烂键盘,自己总结不如收藏别人! &#x1f…

Pycharm 安装PyQt5

第一步: 新建项目文件夹 新建项目 新建一个 Pyqt5Tools 的文件夹 这里放到了 D盘 安装成功 第二步: 安装相关包 安装PyQt5 pip3 install -i https://pypi.douban.com/simple PyQt5,PyQt5-tools时间根据网速 更新下pip python.exe -m pip install --upgrade pip -i https:…