ChatGPT 学习与使用总结

news2024/11/26 12:01:51

ChatGPT 学习与使用总结

最近ChatGPT大火,2023有可能就是AGI元年了。近两个月使用下来,ChatGPT给我最深刻的感觉就是它所具备的理解和思维能力,第一次体验时真的是非常震撼,完全是之前各种『人工智障』智能助理所不能比拟的,第一次感觉这才是真正的『人工智能』,项目组里小伙伴也各个都玩的乐此不疲,连百度的弱智吧也跟着大火了一把,各种ChatGPT相关的自媒体文章视频纷纷出来,都要蹭上这波热度。然后各种AI创业公司也纷纷诞生,各大IT公司的AI竞争进入白热化阶段,颇有当年移动互联网大潮时的军备竞赛百花齐放的感觉。

紧随时代的热点,下面总结一下自己这段时间对ChatGPT的学习与使用。

ChatGPT是什么

ChatGPT 是 OpenAI 发布的基于 GPT(Generative Pre-training Transformer)模型的生成式AI聊天机器人,意在实现通用人工智能。

B站的这个科普视频很不错,推荐看看:

大语言模型为什么这么厉害?涌现?思维链?万字科普GPT-4

GPT 模型

GPT(Generative Pre-training Transformer) 是一种类型的大型语言模型(LLM),也是一个优秀的生成人工智能的框架,由OpenAI在2018年提出,基于Transformer架构。发展历程:

GPT-history

GPT 采用的半监督方法使得大规模生成系统成为可能,并且是首个使用Transformer模型实现这一方法。该方法包括两个阶段:

  1. 无监督的生成“预训练”阶段,使用语言建模目标来设置初始参数;
  2. 有监督的判别“微调”阶段,将这些参数适应于目标任务;

Transformer 架构由Google 2017年提出,通过在大规模无标签文本数据集上进行预训练,能够生成类似人类输出的文本。与之前NLP常用的循环神经网络(RNN)不同,具有下面的优势:

  1. Transformer 解决了RNN在处理长序列时产生的梯度消失和计算效率低下的问题。在RNN中,梯度需要通过时间步反向传播,随着序列长度的增加,梯度在传播过程中容易产生消失或爆炸的问题。这会导致RNN难以处理长序列,并且难以捕捉序列中的长距离依赖关系。而Transformer模型通过引入自注意力机制,可以在模型中直接捕捉输入序列中的长距离依赖关系,避免了需要沿时间步反向传播的问题,更有效地捕捉了输入序列的信息。
  2. Transformer 可以同时处理整个输入,而不是逐个处理。它的注意力机制为输入序列的任何位置提供上下文信息。相比于RNN,这种并行化处理方式减少了训练时间,使得在更大的数据集上进行训练成为可能;

基于RLHF(Reinforcement Learning from Human Feedback)从人类反馈中进行强化学习方法进行训练的InstructGPT,使其能够遵循人类指示并生成相应的输出。在泛化到新的指令时也显示出良好的性能。

还有下面一些概念要简单了解一下,然后才好理解什么是ChatGPT说的Token:

概念介绍
EmbeddingEmbedding, 是一种将离散变量(如词、图片等)转化为连续向量表示的技术。具体来说,Embedding通过将离散变量映射到一个低维稠密向量空间中,能够意义化处理数据,提高数据的表达能力,使得机器学习等领域中的任务(如分类、聚类、推荐等)更加精准和高效。
Few-shotFew-shot, 是指在模型只经过少量特定任务的训练,就能够对新任务进行预测或生成结果的能力。这种能力通常是通过在训练阶段使用少量的训练样本和元学习技术来实现的。
Zero-shotZero-shot, 是指在模型未经过特定任务的训练,却能够对该任务进行预测或生成结果的能力。这种能力通常是通过在训练阶段暴露模型于各种语言和任务来实现的。例如直接向ChatGPT提问,不给示例。

ChatGPT使用一种基于字节对编码(Byte Pair Encoding,BPE)的 tokenization method,可以有效处理罕见单词和超出词汇表的tokens。这种 tokenization 过程将输入文本切分成文本片段,每个片段被表示为一个token,token是文本的数值表示形式,用于在模型中进行后续处理。ChatGPT将每个单词都会转换为相应的token,然后转换成 embedding representations,embedding 是表示文本语义和上下文信息的向量。

LLM 大语言模型

LLM(Large Language Model)是NLP领域一种重要模型,于2018年左右出现,并在各种任务上表现出色,这使得自然语言处理研究的重点从以前专门针对特定任务训练专用模型的范式转变过来到通用模型上。LLM能够在已知文本的多个层面上找出规律,如识别单个词语在段落中的上下文联系,以及辨识句子在文本框架中如何承上启下等。LLM具有以下特点:

  • LLM 具有大量的参数(通常是数十亿个或更多的权重),通过使用自监督学习或半监督学习在大量无标签文本上进行训练。
  • LLM 通常在预训练数据集上进行预训练,常用的文本数据集包括Common Crawl、The Pile、MassiveText、Wikipedia和GitHub等。这些数据集的规模可达到10万亿个单词。
  • LLM 通常使用Transformer架构,这是自2018年以来成为顺序数据的标准深度学习技术(之前,循环架构如LSTM最为常见)。
  • LLM 的输出是其词汇表上的概率分布,常用的实现方式是使用softmax函数将输出向量转换为概率向量。
  • LLM 的训练通常通过生成式预训练来进行,即给定文本标记的训练数据集,模型预测数据集中的标记。通常使用平均负对数似然损失作为特定损失函数进行训练。
  • LLM 的训练成本高昂,通常需要巨大的计算资源。对于基于Transformer的LLM,在一个标记上训练每个参数需要6次浮点运算。而在推断阶段,每个参数在一个标记上的推断仅需1到2次浮点运算。

涌现 Emergent

ChatGPT的文章介绍中,很多能力是随着模型规模的扩大而涌现出来的,业界也有很多研究涌现的文章,比如:Emergent Abilities of Large Language Models。微软介绍GP4的论文也提到了这些涌向的能力,比如:

  • In-context learning, 上下文学习学习能力,一种说法是OpenAI 训练的 GPT-3时,比 GPT-2 整整用了 15倍的语料,同时模型参数量扩展了 100 多倍,使其涌现了In-context learning 能力,可以说有很大程度来自于其庞大的参数量和训练数据,但是具体能力来源仍然难以溯源。
  • Chain-of-Thought, 思维链能力,没有确定性的结论说明 CoT 特性来自于具体哪些迭代优化, 没有确定性的结论说明 COT 特性来自于具体哪些迭代优化:有些观点说是通过引入强化学习;有些观点说是通过引入了指令微调的训练方式;有些观点说是通过引入庞大的代码预训练语料;推测的方式则是根据不同时间节点上的模型版本能力差进行排除法。

深度学习从一开始就有不可解释性的特点,再加上ChatGPT很多能力说是涌现出来的,好奇宝宝就更多了,知乎还看到了一个这样的问题:

大语言模型中的涌现现象是不是伪科学?

不光是涌现,关于复杂系统的很多研究都经常被诟病是伪科学。之所以被说伪科学是因为它无法用科学里流行的还原论来解释,还原论是说“如果你理解了整体的各个部分,以及把这些部分‘整合’起来的机制,你就能够理解这个整体”。

只要数据量足够且真实,且模型没有硬错误的前提下,不断的训练说不定真的能够产生一些意想不到的效果。

总之,模型增大,是有可能产生意想不到的能力,但是现在还不可解释。

使用初体验

日常开发使用

作为一名程序员,用ChatGPT查资料和写一些短程序片段是我近阶段最常用到的场景,只要你把问题描述的足够清晰,尤其要用结构化的语言来描述你的需求或者问题效果会更好,那么ChatGPT基本会给你很满意的答案。说几个场景:

  • 开源项目中,很多关键缩写的函数或者变量名字,查缩写的全称的含义。
  • 帮助理解代码内容,直接贴上去代码,就可以给出解释。
  • 帮助生成代码片段,各种Utils接口,正则表达式等等。
  • 查询错误的信息,直接全部贴进去报错,就可以给出可用的解决方案。
  • 学习新语言新框架入门,提问+demo+练习,体验很棒。
  • 查一个领域的各种术语概念,反复提问,加配合Google与相关的AI总结插件。

文案邮件生成

还有就是一些文案的生成,比如根据主题来生成一些场景的文案,通过不断的反馈来调整具体的内容,最后再自己润色,效率比自己从头写高出很多。

使用GPT4开发游戏AI

B站UP主使用GPT4开发的AI: 格斗之王!AI写出来的AI竟然这么强!
这个真的是太强了,后面如果想学一下机器学习入门,网上看资料+练习+ChatGPT指导,效率直接起飞啊。当然,作为意在实现AGI通用人工智能,在很多领域都是如此,真是给每个人配一个超级顾问,答疑解惑,还能辅助搬砖。

五分钟开发一个留言板网站

这个是我自己突发奇想,自己现编的一个题目。使用ChatGPT 3.5, 就能5min完成这个小demo,自己一行代码不修改, 全部用AI生成的。

过程全纪录,7个Prompt就完成了这个project:

1. 编写一个留言板网站,使用python flask框架,代码尽量短,不用数据库,使用一个文本文件做后台持久化数据存储,不需要用户注册
    #ChatGPT: AI 给出了一个 app.py 的源代码,里面引用了一个 index.html 文件
2. index.html 内容呢
    #ChatGPT: AI 给出了一个 index.html 的源代码
3. 如何部署,工程的文件结构是什么
    #ChatGPT: AI 给出了工程文件结构
4. 如何启动?
    #ChatGPT: AI 给出网站启动命令
5. 我在本机访问,网址是多少呢?
    #ChatGPT: AI 给出了本机访问的URL网址
6. 上面的app.py运行报错了  // 注意:我空了一行,然后用 > 这种 Markdown 引用格式写了报错内容
    
   >    return redirect('/')
   > NameError: name 'redirect' is not defined
    #ChatGPT: 给出了bug原因
7. 修改app.py的这个bug
    #ChatGPT: 给出了bug修复方法

效果显著,我这个还是使用的免费版的ChatGPT3.5,如果是GPT4,估计效果会更好,一把就是正确的了。不过这也隐藏了一个点,你必须有一定的经验,才能把你要做的需求描述清楚,GPT4让有厉害的程序员效率翻好几倍,尤其是在平时的一些小的常见的场景上的编程。

插件与应用推荐

自从ChatGPT开放了API,各种应用和浏览器插件层出不穷,这里就只推荐两个我用的最多的:

  • chatgpt-glarity-summarize: Chrome浏览器插件,使用ChatGPT的能力来生成网页内容摘要。这个使用下来很方便,尤其是把当前搜索结果页面的多个搜索结果进行分析汇总总结。本文的很多内容就来自这个插件的总结,然后自己修改润色。
  • chatbox: 非常好用ChatGPT桌面客户端,无限制存储对话历史记录,更前大的编辑功能,以及一些有用的内置prompt模板,使用体验很好。上面的那个小网站project我就是在这个app里面实现的。

还有更多的,大家可以慢慢探索。

相关学习资料搜集

ChatGPT爆火后,网上相关资料文章也是铺天盖地,有时候资料太多反而不好筛选了。下面是我搜集的一些比较好的资料:

  1. OpenAI官网博客:https://openai.com/blog/chatgpt
  2. ChatGPT中文指南: https://github.com/yzfly/awesome-chatgpt-zh
  3. 吴恩达Prompt工程课程:https://github.com/datawhalechina/prompt-engineering-for-developers
  4. Prompt教程:https://learningprompt.wiki/
  5. Midjourney官网文档: https://docs.midjourney.com
  6. ChatGPT的前世今生: https://lipiji.com/slides/ChatGPT_ppf.pdf
  7. ChatGPT业界资料汇总: https://github.com/shawshany/ChatGPT_Project
  8. 微软GPT4论文: Sparks of Artificial General Intelligence: Early experiments with GPT-4
  9. LLM论文集合: Understanding Large Language Models – A Transformative Reading List

总结

也许ChatGPT就是AI时代的iPhone4时刻,技术的革新不知不觉就会带来社会的变革,保持一颗好奇心,感受科技带来的美好!

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

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

相关文章

Windows系统出现蓝屏怎么办?这些方法可以修复!

Windows 系统蓝屏死机(BSOD),也被称为“停止错误”,是Windows系统最常见的故障之一。 当Windows遇到严重的故障时就会显示蓝屏,系统崩溃。蓝屏上显示一个停止代码,如"MEMORY_MANAGEMENT"&#xf…

NeRF与三维重建专栏(一)领域背景、难点与数据集介绍

前言 关于该系列专栏,主要介绍NeRF在三维重建中的应用(这里我们特指MVS,multi-view stereo,也即输入带位姿的图片,输出三维结构例如点云、mesh等;并且后面的工作也都是围绕MVS with NeRF讨论的。虽然也有w…

人类与ChatGPT:互动中的共同进步

一、ChatGPT的发展历程 1. GPT模型 ChatGPT是由OpenAI推出的一款聊天机器人,其核心技术基于GPT模型。GPT模型(Generative Pre-training Transformer)是一种基于Transformer结构的预训练语言模型。它在大规模的文本语料库上进行无监督的预训…

解析 ip addr 的输出的内容含义

解读 ip addr 的输出的网络连接信息含义 一、ifconfig 与 ip addr 用过Linux的读者都知道,在Linux查看ip可以使用ifconfig,当然这个ifconfig属于net-tools 工具集,其来源于BSD,Linux从2001年就不对其进行维护了。那我们应该用什…

基于下垂控制的并网逆变器控制MATLAB仿真模型

资源地址: 基于下垂控制的并网逆变器控制MATLAB仿真模型资源-CSDN文库 主要模块: 建议使用MATLAB2021b及以上版本打开! 功率计算模块、下垂控制模块、电压电流双环控制模块、虚拟阻抗压降模块 扰动设置: 在0.5秒到2秒始端设置…

微软出品的实用小工具

微软出品的实用小工具 分享一些微软出品的实用小工具,希望对大家有所帮助。 文章目录 微软出品的实用小工具SysinternalsSuite常用工具AutorunsprocdumpProcess Explorer进程监视器 Process MonitorpsloggedonAccessChk示例 PsToolsrdcmanTcpviewVmmap Sysinternals…

数据结构_树与二叉树

目录 1. 树的基本概念 1.1 树的定义 1.2 基本术语 1.3 树的性质 1.4 相关练习 2. 二叉树的概念 2.1 二叉树的概念及其主要特性 2.2 二叉树的存储结构 2.2.1 顺序存储结构 2.2.2 链式存储结构 2.3 相关练习 3. 二叉树的遍历和线索二叉树 3.1 二叉树的遍历 3.1.1 先…

基于微信小程序校内论坛系统

开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、uniapp 服务端技术:springbootmybatis-plus 本系统分微信小程序和管理后台两部分&a…

神马网络——IP地址

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…

ChatGPT提示词技巧

自计算机问世以来,人类与计算机之间的交互方式已经经历过几个重要的阶段: 指令式交互(Command-based Interaction) 早期的计算机系统主要采用了指令式交互方式,用户需要输入特定的命令或代码来完成各种任务。这种交…

软件与硬件的联调之小程序与云平台相互通信

软件与硬件的联调之小程序与云平台相互通信 本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线。 如果觉得我讲的好就可以给我点个赞。 #mermaid-svg-xJRh48GCcG2gzlqz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…

深度学习之图像分类识别(二):ZFNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

我的第一个Electron应用

hello,好久不见,最近笔者花了几天时间入门Electron,然后做了一个非常简单的应用,本文就来给各位分享一下过程,Electron大佬请随意~ 笔者开源了一个Web思维导图,虽然借助showSaveFilePicker等api可以直接操…

【C#】接口实现多态增强版

背景 在实际的生产中,会涉及到需要对接多种相似性较高的系统。具体而言就是业务接口是相同的,但是会出现接口的参数不同的情况。这时做一个对接隔离层就显得优势很明显了。这个隔离层的作用就有了两个基本的作用: 1、单一性,保护我…

【网络】- TCP/IP四层(五层)协议 - 物理层

目录 一、概述 二、物理层的基本概念 三、OSI 参考模型  👉3.1 导引型传输媒体  👉3.1 导引型传输媒体 一、概述 TCP/IP 在最初定义时,是一个四层的体系结构,包括应用层、传输层、网络层、网络接口层。不过从实质上来讲&#xf…

Makefile基础教程(变量的高级主题,变量的拓展)

文章目录 前言一、变量值的替换1.简单替换2.模式替换1.变量的模式替换2.规则中的模式替换 二、变量值的嵌套三、命令行变量四、define和override五.环境变量六.局部变量七.模式变量 总结 前言 本篇文章将给大家讲解一下变量的高级主题,变量的拓展,这些主…

详解C++类和对象(下篇)

目录 一,再谈构造函数 1.1 构造函数体赋值 1. 2 初始化列表 1.21 自定义类型成员 1.22 const 成员变量 1.23 引用成员变量 1. 24 初始化列表的“坑” 1. 3 explicit 关键字 二,static 成员 2.1 概念 2.2 特性 三, 友元 3.…

阿里云数据库RDS MySQL Serverless测评

文章目录 1. 背景2. 概念3. 操作步骤3.1 购买产品3.2 配置RDS账号3.3 设置网络访问权限3.4 连接实例 4. 与自建数据库相比的优势4.1 弹性设置4.2 监控比较直观4.3 报警比较灵活4.4 备份更安全、更方便 5. 总结 1. 背景 作为一枚程序员,在日常工作中少不了跟云产品打…

Linux C/C++并发编程实战(0)谈谈并发与并行

作为并发编程的第一讲,比较轻松,我们先来谈谈什么是并发和并行。 并发(Concurrency)是指一个处理器同时处理多个任务。 并行(Parallelism)是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发…

git rebase的理解

首先看下图 比如提价了三次,都是同一个文件的修改,有三次commit的信息 想把提交的版本信息变的好看一点,或者变成一次提交信息 // 这个表示要查看提交的三个版本并进行合并 git rebase -i HEAD~~~// 如何要合并多个版本 git rebase -i HEA…