ChatGPT的原理与前端领域实践 | 京东云技术团队

news2024/11/24 19:57:43

一、ChatGPT 简介

ChatGPT的火爆

ChatGPT作为一个web应用,自22年12月发布,仅仅不到3个月的时间,月活用户就累积到1亿。在此之前,最快记录的保持者也需要9个月才达到月活1亿。

ChatGPT的反爬

https://chat.openai.com 因为各种政策&倾向性问题,ChatGPT目前在中国无法访问。而它又是如此火爆,所以就有大量用户通过代理、爬虫等形式来体验ChatGPT。

OpenAI不是专业做网络服务的公司,因此把反爬交给第三方公司CloudFlare去做。

CloudFlare目前全球最大CDN服务商,占比16%;而OpenAI的流量在CloudFlare中占比已经占据前二。

ChatGPT的打字效果

可以看到ChatGPT的输出是逐字输出的打字效果,这里应用到了SSE(SeverSideEvent)服务端推送的技术。一个SSE服务的Chrome开发工具化network截图 :

SSE对比常见Websocket如下:

那么这种打字效果它是故意的还是不小心的?

二、ChatGPT核心原理

ChatGPT我们可以拆解成 Chat、G、P、T 这四个部分讲述。在后续内容前,我们先补充几个机器学习容易理解的概念:

1.模型:所谓模型,本质上就是一个程序(函数),类似 y=ax+bx^2,这里的a和b就是参数,比如GPT3的参数量就是175B说的就是1750亿参数的程序,ChatGLM-6B的参数量是60亿。

2.机器学习:我们平时写的函数,是人来控制的逻辑和参数,而机器学习指的是机器通过某种方式(训练)来确认参数。这个找特定参数的函数的过程,一般分别为3步:

  • 确定函数集合:尽可能穷尽所有参数的可能,比如文章中常见的CNN、RNN、Transform等就是函数集合;
  • 数据:通过数据集,得到评价函数好坏的方式;
  • 执行过程的参数:比如每批次对每个函数执行多少次,最大执行多少次等,这些参数一般称为“超参”,区别于函数内的参数(算法工程师一般自嘲的调参工程师,指的是这个“超参”)

Generative 文字接龙

ChatGPT本质上是个不断递归执行的生成式的函数,下面我们来看2个例子:

Case1:萝卜青菜

当你看到萝卜青菜这4个字的时候,脑海中想的是什么?

我想大概率是各有所爱。

给到GPT的时候,GPT根据这4个字和逗号,推测出下个字的大概率是各

然后GPT会再次将萝卜青菜,各输入给自己,推测出下个字的大概率是有

这就是ChatGPT在输出文字时是逐字输出的原因,这种形式最符合LLM运行的底层原理,在用户体验上也能让用户更快看到第一个字,体验上接近聊天而不是阅读。它是故意的。这里我们得到第一个结论:

ChatGPT(模型 / Fn)的运行原理是每次输入文本(包含上次返回的内容),预测输出后续1个字词。

Case2:书呆子

举个【原创】前端技术十年回顾 文章中的例子:

在这个例子中,为什么输出是“欺负一样”?

从全文中看,这里的主体应该是前端技术,单纯考虑前端技术和就像在小学被,我们可以想出“推广”、“普及。即使不考虑“前端技术”,单纯从就像在小学被,还有可能推测出后文是“教育”、“表扬”。都很难联想到“欺负”。

这里出现“欺负”,很大原因是在前文中欺负(就像,这几个关键字的影响远大于前端技术。所以我们得到第二个结论:

在生成式语言模型中,上文单词离得越远,对生成结果的影响就越小

文字接龙VS完形填空

这里补充下GPT类似的BERT,他们都是基于后面提到的Transform结构,他们的对比如下,总的来说,文字接龙更服务人类大部分情况下的语言模式,因此像马斯克也更青睐于这种第一性原理的东西。

Transform 注意力机制

Case3:绿洲

在这个Case中,绿洲的出现,反而不是因为最近的寻找新的,而是3句话之前的沙漠和骆驼。这里就不得不提到大名鼎鼎的Transform结构,这是Google在2017年在一篇论文 《Attention is all you need》首次提出的一种类神经网络结构,它和核心是自注意力机制,用来解决长距离文本的权重问题。

作者不是机器学习专业,就不展开说了,建议看相关论文和讲解的文章。

Pretrained 预训练

通过前面的文字接龙模式,用大量数据喂出来的预训练模型,使其具备通用的语言能力,这里的预训练有2层含义:

  • 能完成各种通用NLP任务(分类、排序、归纳等等)
  • 稍加微调训练,能完成特定领域的语言任务(不必从头开始)

Chat 对话(通过Finetuning实现)

因为预训练是无人类的监督,因此通用模型不一定按照聊天形式返回文本,因为它的训练素材包罗万象,比如我说今天天气差,它根据历史的经验:今天天气差的表述方式有下面几种,就会输出这句话的不同的表述,而不是像聊天一样跟我一起吐槽 。下面的OpenAI的GPT3模型对今天天气差的输出:

要让GPT3像聊天一样输出,就需要有针对性的对它就行微调(fine-tuning)训练,例如通过特定的问答结构的语料训练:

能聊天之后,想要上线,就必须给模型上枷锁,不能回答和人类价值观不符的内容,否则资本主义的铁拳也会降临

OpenAI通过人工标注和强化训练的方式提升ChatGPT回答质量并校正它的价值观倾向,想要更多了解这块内容,可以了解下ChatGPT背后的算法模型。

三、ChatGPT的应用

OpenAI官方给到了49个常见的ChatGPT应用场景:
https://openai.com/blog/chatgpt

总的来说可以分为:

  • 文案创作
  • 提炼总结
  • 代码编写
  • 语言美化/跨语言转换
  • 角色扮演

对于前端开发同学来说,最关注它的代码能力。正好在一个小程序转taro重构的项目中体验了ChatGPT的能力:

1. 能理解小程序模板语法,并转换出ts的taro组件

2. 理解小程序页面逻辑,并修正props

小程序的页面逻辑page.js是独立于index.wxml的,在得到纯wxml生成的taro组件后,把page.js的代码合并进去

3. 可以补充知识,教它举一反三特有的语法

HiBox融合ChatGPT

这么好的能力,应该如何沉淀呢?

我们首先想到了VSCode插件,刚好HiBox本身有登录态、自定义Webview、远程配置化的能力,那就将ChatGPT集成到HiBox中(太酷啦),Node端接入ChatGPT的接口,通过Webview前端实现一个聊天窗,再通过配置系统集成常用的Prompt,这样前端开发就能通过VSCode方便地用到ChatGPT的能力。整体结构如下:

数据源方面,也从爬虫版本ChatGPT,逐步切换到API代理服务中,代理服务接入GPT3.5的模型能力,整体体验非常接近ChatGPT。代理服务文档:
https://joyspace.jd.com/pages/yLnDY3B5UJ1rXP8UYrN6

HiBox的ChatGPT目前仅需erp登录即可免费使用,更多使用方式和安装方式:HiBox快速开始

私域数据集成

在使用ChatGPT的过程中,也注意到2个问题:

  • 公司敏感的代码和信息不能传给ChatGPT
  • 特定领域的非敏感知识,比如水滴模板,ChatGPT没学习过

首先想到的是,采用微调(fine-tuning)的方式,将私域数据数据集成到大语言模型(LLM)中,然后私有化部署在公司的服务器上,这样任意代码和文档都可以发送给它,我们尝试了下面2种方式:

GPT3 fine-tuning

一是通过OpenAI官网提到的GPT3的fine-tuning接口,将私域数据传给OpenAI,OpenAI在他们的服务器里微调训练,然后部署在OpenAI的服务器中,整个过程是黑盒。

ChatGLM-6B fine-tuning

二是用清华开源的ChatGLM-6B作为基础模型,在公司的九数平台上申请GPU机器,将私域数据通过LORA的方式微调得到LORA权重,然后自己部署,整个过程完全私有化。

GPT3.5 langChain

上面的两种方式总的来说,部署后的推理效果都很难达到GPT3.5-API的效果,因此我们最后尝试了embedding外挂知识库的方式。使用开源的langchain处理文档切割、向量化存储、向量化匹配等。数据还是会暴露给OpenAI。

四、LLM现状和展望

LLM大爆发

其实在20年GPT3出来之后,机器学习的大部分头部都意识到了这条路线的可行性,积极地在跟进了:

这里专门讲下百度,据公开可靠的文档,百度早在2019年就推出了Ernie(对标谷歌Bard,Ernie和bard在动画Muppet中是1对兄弟),确实是国内最早接入LLM的玩家。百度走的和谷歌一样,是BERT的完形填空的路线,因为在2018~2019年的时间点,GPT一代刚刚问世,第一代的GPT对比各方面都不如BERT,再加上百度和谷歌一样在搜索引擎方面沉淀较多,因此选择的路线是BERT。

近期羊驼系列和国内大语言模型也在大爆发:

LLM应用现状&趋势

平台化

LLM的角色扮演能力可能是下个人机交互变革的关键点,OpenAI也推出了Plugin模型,通过插件,用户可以通过一句自然语言聊天就买一张机票,搜索想看的文章。有人说这是类似AppStore发布的IPhone时刻:

自驱动、能力集成

类似Auto-GPT,langchain等,通过约定特性的模板,可以让ChatGPT返回执行特定命令的文本,例如和ChatGPT约定如果要搜索的时候,返回[search: 搜索内容],然后在客户端通过正则匹配 /[search:(.*?)]/,拿到对应的内容执行搜索,再将结果返回给ChatGPT整理最终答案。

虚拟一个例子:

1. user: 深圳明天的天气怎么样?
2. chatgpt(触发知识限制2021年,返回约定的搜索格式):[search:2023年4月27日的深圳天气]
3. user接收到正则匹配触发搜索,打开无头浏览器搜索百度并取第1条结果:2023年4月27日星期四深圳天气:多云,北风,风向角度:0°风力1-2级,风速:3km/h,全天气温22℃~27℃,气压值:1006,降雨量:0.0mm,相对湿度:84%,能见度:25km,紫外线指数:4, 日照...
4. user(将搜索的内容连带问题第二次发给ChatGPT): 深圳明天的天气怎么样?可参考的数据:2023年4月27日星期四深圳天气:多云,北风,风向角度:0°风力1-2级,风速:3km/h,全天气温22℃~27℃,气压值:1006,降雨量:0.0mm,相对湿度:84%,能见度:25km,紫外线指数:4, 日照...
5. chatgpt(根据问题和上下文,输出人类语言的表达): 深圳明天的天气还可以,整体多云为主,气温22℃~27℃

多模态

4月份发布的GPT4已经具备图像识别的能力,下面的Case是主持人用一致设计稿草图生成前端页面的过程。经典“前端已死”时刻:

LLM的局限

虽然我们看到ChatGPT的技术强大,但是也要审慎看待它的局限,它本质上是个基于历史数据的经验主义的模仿人类的文字输出函数。

例如,ChatGPT完全做不了4位数的乘法运算,它大概率会根据6乘和7等于这2块关键信息,得到答案是以2结尾,根据4和乘以3这2块关键信息,得到答案是以1开头,而中间的随机性完全收敛不到正确的答案,不管是ChatGPT和GPT4都是一样的情况:

再比如问它特别小众、普通人也容易错的专业领域知识,它也会根据大部分普通人的错误答案输出错误答案:

比如在V8 Promise源码全面解读,其实你对Promise一无所知文章中一个很奇葩的题目,下面的代码会打印什么?

Promise.resolve().then(() => {
    console.log(0);
    return Promise.resolve(4)
}).then(res => {
    console.log(res);
})

Promise.resolve().then(() => {
    console.log(1);
}).then(() => {
    console.log(2);
}).then(() => {
    console.log(3);
}).then(() => {
    console.log(5);
}).then(() => {
    console.log(6);
})

大部分人都会回答:0、1、4、2、3、5、6
GPT3.5的回答:0、1、4、2、3、5、6
GPT4的回答:0、1、2、3、4、5、6

只有GPT-4的回答正确,但是即使它的回答正确,它的具体分析也是错误,因为它可能在某个场景学习过类似答案,但是它并不“理解”,后面的分析内容也是大部分人容易错的分析

结尾

最后用流浪地球2中周喆直的台词做个结尾。

对于AI的到来,我们战略上不要高估它,AI本身有它的局限性,保持乐观,前端没那么容易死;战术重视和关注它的发展,尝试在我们的工作生活中应用,技术变革的浪潮不会随个人的意志变化。

通宵赶稿,码字不易,看到这里同学帮忙点个赞吧 Thanks♪(・ω・)ノ

作者:京东零售 陈隆德

内容来源:京东云开发者社区

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

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

相关文章

堆排序详解(Heap Sort)

本文已收录于专栏 《算法合集》 目录 一、简单释义1、算法概念2、算法目的3、算法思想4、算法性质 二、核心思想构建排序 三、图形展示宏观展示微观展示 四、算法实现实现思路代码实现客户端调用构造堆的方法元素交换的方法元素比较的方法 运行结果 五、算法描述1、问题描述2、…

如何在 Windows 10 上查找电脑型号

在Windows 10上,计算机型号在许多情况下都可以派上用场。例如,型号可以更容易地找到正确的硬件升级(如内存、存储驱动器、显示器和电源)。或者,如果你必须解决问题或联系技术支持。它还可以方便地将设备编目到库存中。 尽管制造商通常在笔记本电脑或台式机的机箱上使用贴…

Android SDK研发解决方案宝典

Android SDK研发很难整,非常烧脑,与app研发有很多不同。 遇到的问题有很多,各种崩溃,各种空指针,各种冲突需要解决。 所以开发前一定要提前规划好,做好规范。我把我这边一些问题做了记录和分享。 问题1&…

获取订单API接口系列,可接入erp系统场景

抖音和拼多多是目前国内最为火爆的社交和电商平台,为了让更多的开发者能够轻松利用其庞大的用户基础和活跃度,我们提供了相关的订单接口,可帮助开发者快速便捷地完成订单的创建、查询、调整等操作,从而更好地促进业务的发展。以下…

React项目搭建

一、项目搭建(不采用vite方式) 使用create-react-app生成项目 npx create-react-app pc 进入根目录 cd pc 启动项目 npm start 调整项目目录结构 /src/assets 项目资源文件,比如,图片 等/components 通用组件/pag…

分布式事务解决方案探讨

分布式事务解决方案 一、什么是事务?二、什么是分布式事务?三、分布式事务的理论模型3.1 X/Open 分布式事务模型3.1.1 X/Open事务执行流程3.1.2 XA 协议 3.2 两阶段提交协议3.3 三阶段提交协议 四、分布式事务场景解决方案4.1 TCC补偿方案4.2 基于可靠性…

密码学基本原理和发展——近代密码学

目录 1 密码机通信模型 2 Enigma密码机构造 3 Enigma密码机加解密过程 3.1 加密过程 3.2 解密过程 4 Enigma密码机的安全性 5 Enigma密码机破解 5.1 波兰雷耶夫斯基破解 5.2 图灵破解 近代密码一般指20世纪初~20世纪70年代期间的密码技术。20世纪初电报的出…

快速上手项目1:基于FaceNet的人脸识别项目

快速上手项目1:基于FaceNet的人脸识别项目 说明 ​ 本来想自己复现一下facenet的,但是发现facenet已经被做成了python的第三方库,于是自己用了用,发现挺简单的,然后又看了看源码,感觉模型架构实现部分很简单…

说说 HWND_TOP 和 HWND_TOPMOST 的区别

初看上去,HWND_TOP 和 HWND_TOPMOST 有点类似,但是实际上在调用 DeferWindowPos 或者 SetWindowPos时,它们之间的差别还挺大。 在同级窗口的维护机制中,有一个概念叫做 Z 序 (Z-order) 。出于此讨论的目的,顶级窗口也…

音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10)

影史经典《卡萨布兰卡》是大家耳熟能详的传世名作,那一首壮怀激烈,激奋昂扬的马赛曲,应当是通片最为激动人心的经典桥段了,本次我们基于faceswap和so-vits库让AI川普复刻美国演员保罗亨雷德高唱《马赛曲》的名场面。 配置人脸替换…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 8 Advertising on the Web

来源:《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 8 Advertising on the Web There are several factors that must be considered in evaluating ads: The position of the ad in a list has great influence on whether or not it is clicked.…

Linkage Mapper 之 Barrier Mapper 功能解析(含实际案例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 大草原松鸡"(Greater Sage Grouse)的Lek Kernals(即HCAs),以及连接、连接障碍和恢复机会效果图: 图片

python+Django音乐播放器网站系统0tr3w

音乐网站系统的后台开发目标是以信息管理系统的管理和开发方法,用目前现有的新技术进行系统开发,提供后台管理员高度友好的界面操作以及迅捷的信息处理。而前台的开发目标是以用户的需求作为主导,提供对用户而言非常友好的界面操作环境以及完…

实时频谱-1.1基本概念

RF信号 RF(射频)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率,频率范围从300KHz~30GHz之间。 中频 IF(intermediate frequency),用来在中频衡量AM或FM调谐器抑制外来干扰的能力,数…

基于springboot在线外卖系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:…

You Only Look Once: 革命性目标检测算法论文解析

You Only Look Once 全论文完整翻译 You Only Look Once: Unified, Real-Time Object Detection 摘要 我们介绍了一种名为YOLO的新型目标检测方法。在目标检测的先前工作中,人们将分类器重新应用于执行检测任务。相反,我们将目标检测视为一个回归问题&a…

ChatGPT 的议论文究竟写的怎么样?111 位高中教师告诉你答案

夕小瑶科技说 原创 作者 | 小戏、Python 在 OpenAI GPT-4 发布时发布的《GPT-4 Technical Report》中,其中很吸引人眼球的一部分是 GPT-4 应用于教育领域的出色表现,通过让 GPT-4 去完成美国的 AP 课程及考试,来评估 GPT-4 在多个学科中的性…

WIN提权补丁提权,at,sc,psexes提权

win提权分为web和本地提权 web提权就是getshell后,权限是网站权限,要进行提权 本地提权是本地用户进行提权 本地用户的权限大于网站权限,所以本地提权成功概率比web提权概率大 因为我们做渗透测试,一般都是从网站入侵。所以大…

OpenAI最新iOS版ChatGPT下载使用手册:三步快速下载,支持语音输入和历史聊天记录重新对话(免费、比网页端响应快、亲测可用)

目录 前言ChatGPT移动端与网页端相比的优势步骤一:注册美区Apple id账号步骤二:苹果手机切换appstore id步骤三:下载ChatGPT IOS移动版APP畅玩ChatGPT APP体验总结其它资料下载 ! 前言 北京时间5月19日凌晨,OpenAI重…

散点图(Scatter Plot)

目录 1、散点图 2、随机数据分布 1、散点图 散点图是数据集中的每个值都由点表示的图 Matplotlib 模块有一种绘制散点图的方法,它需要两个长度相同的数组,一个数组用于 x 轴的值,另一个数组用于 y 轴的值 x [5,7,8,7,2,17,2,9,4,11,12,9…