【AI大模型】ChatGPT模型原理介绍(下)

目录

🍔 GPT-3介绍

1.1 GPT-3模型架构

1.2 GPT-3训练核心思想

1.3 GPT-3数据集

1.4 GPT-3模型的特点

1.5 GPT-3模型总结

🍔 ChatGPT介绍

2.1 ChatGPT原理

2.2 什么是强化学习

2.3 ChatGPT强化学习步骤

2.4 监督调优模型

2.5 训练奖励模型

2.6 使用 PPO 模型微调 SFT 模型

2.7 ChatGPT特点

🍔 小结


学习目标

🍀 了解ChatGPT的本质

🍀 了解GPT系列模型的原理和区别

🍔 GPT-3介绍

2020年5月, OpenAI发布了GPT-3, 同时发表了论文“Language Models are Few-Shot Learner”《小样本学习者的语言模型》.

通过论文题目可以看出:GPT-3 不再去追求那种极致的不需要任何样本就可以表现很好的模型,而是考虑像人类的学习方式那样,仅仅使用极少数样本就可以掌握某一个任务,但是这里的 few-shot 不是像之前的方式那样,使用少量样本在下游任务上去做微调,因为在 GPT-3 那样的参数规模下,即使是参数微调的成本也是高到无法估计。

GPT-3 作为其先前语言模型 (LM) GPT-2 的继承者. 它被认为比GPT-2更好、更大. 事实上, 与他语言模型相比, OpenAI GPT-3 的完整版拥有大约 1750 亿个可训练参数, 是迄今为止训练的最大模型, 这份 72 页的研究论文 非常详细地描述了该模型的特性、功能、性能和局限性.

下图为不同模型之间训练参数的对比:


1.1 GPT-3模型架构

实际上GPT-3 不是一个单一的模型, 而是一个模型系列. 系列中的每个模型都有不同数量的可训练参数. 下表显示了每个模型、体系结构及其对应的参数:

在模型结构上,GPT-3 延续使用 GPT 模型结构,但是引入了 Sparse Transformer 中的 sparse attention 模块(稀疏注意力)。

sparse attention 与传统 self-attention(称为 dense attention) 的区别在于:

dense attention:每个 token 之间两两计算 attention,复杂度 O(n²) sparse attention:每个 token 只与其他 token 的一个子集计算 attention,复杂度 O(n*logn)

具体来说,sparse attention 除了相对距离不超过 k 以及相对距离为 k,2k,3k,... 的 token,其他所有 token 的注意力都设为 0,如下图所示:

使用 sparse attention 的好处主要有以下两点:

  • 减少注意力层的计算复杂度,节约显存和耗时,从而能够处理更长的输入序列;

  • 具有“局部紧密相关和远程稀疏相关”的特性,对于距离较近的上下文关注更多,对于距离较远的上下文关注较少;

其中最大版本 GPT-3 175B 或“GPT-3”具有175个B参数、96层的多头Transformer、Head size为96、词向量维度为12288、文本长度大小为2048.


1.2 GPT-3训练核心思想

GPT-3模型训练的思想与GPT-2的方法相似, 去除了fine-tune过程, 只包括预训练过程, 不同只在于采用了参数更多的模型、更丰富的数据集和更长的训练的过程.

但是GPT-3 模型在进行下游任务评估和预测时采用了三种方法, 他们分别是: Few-shot、One-shot、Zero-shot.

其中 Few-shot、One-shot也被称之为情境学习(in-context learning,也可称之为提示学习). 情境学习理解: 在被给定的几个任务示例或一个任务说明的情况下, 模型应该能通过简单预测以补全任务中其他的实例. 即情境学习要求预训练模型要对任务本身进行理解.

In-context learnin核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果。


下面以从“英语到法语的翻译任务”为例, 分别对比传统的微调策略和GPT-3三种情景学习方式.

  • 下图是传统的微调策略:

  • 传统的微调策略存在问题:

    • 微调需要对每一个任务有一个任务相关的数据集以及和任务相关的微调.

    • 需要一个相关任务大的数据集, 而且需要对其进行标注

    • 当一个样本没有出现在数据分布的时候, 泛化性不见得比小模型要好


下图显示了 GPT-3 三种情景学习方法:

  • zero-shot learning

    • 定义: 给出任务的描述, 然后提供测试数据对其进行预测, 直接让预训练好的模型去进行任务测试.

    • 示例: 向模型输入“这个任务要求将中文翻译为英文. 销售->”, 然后要求模型预测下一个输出应该是什么, 正确答案应为“sell”

  • one-shot learning

    • 定义: 在预训练和真正翻译的样本之间, 插入一个样本做指导. 相当于在预训练好的结果和所要执行的任务之间, 给一个例子, 告诉模型英语翻译为法语, 应该这么翻译.

    • 示例: 向模型输入“这个任务要求将中文翻译为英文. 你好->hello, 销售->”, 然后要求模型预测下一个输出应该是什么, 正确答案应为“sell”.

  • few-shot learning

    • 定义: 在预训练和真正翻译的样本之间, 插入多个样本做指导. 相当于在预训练好的结果和所要执行的任务之间, 给多个例子, 告诉模型应该如何工作.

    • 示例: 向模型输入“这个任务要求将中文翻译为英文. 你好->hello, 再见->goodbye, 购买->purchase, 销售->”, 然后要求模型预测下一个输出应该是什么, 正确答案应为“sell”.

  • 总之: in-context learning,虽然它与 fine-tuning 一样都需要一些有监督标注数据,但是两者的区别是:

    • 本质区别】fine-tuning 基于标注数据对模型参数进行更新,而 in-context learning 使用标注数据时不做任何的梯度回传,模型参数不更新;

    • in-context learning 依赖的数据量(10~100)远远小于 fine-tuning 一般的数据量;

最终通过大量下游任务实验验证,Few-shot 效果最佳,One-shot 效果次之,Zero-shot 效果最差:


1.3 GPT-3数据集

一般来说, 模型的参数越多, 训练模型所需的数据就越多. GPT-3共训练了5个不同的语料大约 45 TB 的文本数据, 分别是低质量的Common Crawl(需要数据清洗), 高质量的WebText2, Books1, Books2和Wikipedia, GPT-3根据数据集的不同的质量赋予了不同的权值, 权值越高的在训练的时候越容易抽样到, 如下表所示.

数据集数量(TOKENS)训练数据占比
Common Crawl(filterd)4100亿60%
Web Text2190亿22%
BOOK1120亿8%
BOOK2550亿8%
Wikipedia30亿2%

不同数据的介绍:

  • Common Crawl语料库包含在 8 年的网络爬行中收集的 PB 级数据. 语料库包含原始网页数据、元数据提取和带有光过滤的文本提取.

  • WebText2是来自具有 3+ upvotes 的帖子的所有出站 Reddit 链接的网页文本.

  • Books1和Books2是两个基于互联网的图书语料库.

  • 英文维基百科页面 也是训练语料库的一部分.


1.4 GPT-3模型的特点

与 GPT-2 的区别

  1. 效果上,超出 GPT-2 非常多,能生成人类难以区分的新闻文章;

  2. 主推 few-shot,相比于 GPT-2 的 zero-shot,具有很强的创新性;

  3. 模型结构略微变化,采用 sparse attention 模块;

  4. 海量训练语料 45TB(清洗后 570GB),相比于 GPT-2 的 40GB;

  5. 海量模型参数,最大模型为 1750 亿,GPT-2 最大为 15 亿参数;

优点:

  • 整体上, GPT-3在zero-shot或one-shot设置下能取得尚可的成绩, 在few-shot设置下有可能超越基于fine-tune的SOTA模型.

  • 去除了fune-tuning任务.

缺点:

  • 由于40TB海量数据的存在, 很难保证GPT-3生成的文章不包含一些非常敏感的内容

  • 对于部分任务比如: “填空类型”等, 效果具有局限性

  • 当生成文本长度较长时,GPT-3 还是会出现各种问题,比如重复生成一段话,前后矛盾,逻辑衔接不好等等;

  • 成本太大


1.5 GPT-3模型总结

GPT系列从1到3, 通通采用的是transformer架构, 可以说模型结构并没有创新性的设计. GPT-3的本质还是通过海量的参数学习海量的数据, 然后依赖transformer强大的拟合能力使得模型能够收敛. 得益于庞大的数据集, GPT-3可以完成一些令人感到惊喜的任务, 但是GPT-3也不是万能的, 对于一些明显不在这个分布或者和这个分布有冲突的任务来说, GPT-3还是无能为力的.


🍔 ChatGPT介绍

ChatGPT是一种基于GPT-3的聊天机器人模型. 它旨在使用 GPT-3 的语言生成能力来与用户进行自然语言对话. 例如, 用户可以向 ChatGPT 发送消息, 然后 ChatGPT 会根据消息生成一条回复.

GPT-3 是一个更大的自然语言处理模型, 而 ChatGPT 则是使用 GPT-3 来构建的聊天机器人. 它们之间的关系是 ChatGPT 依赖于 GPT-3 的语言生成能力来进行对话.

目前基于ChatGPT的论文并没有公布, 因此接下来我们基于openai官网的介绍对其原理进行解析


2.1 ChatGPT原理

在介绍ChatGPT原理之前, 请大家先思考一个问题: “模型越大、参数越多, 模型的效果就越好么啊?”. 这个答案是否定的, 因为模型越大可能导致结果越专一, 但是这个结果有可能并不是我们期望的. 这也称为大型语言模型能力不一致问题. 在机器学习中, 有个重要的概念: “过拟合”, 所谓的过拟合, 就是模型在训练集上表现得很好, 但是在测试集表现得较差, 也就是说模型在最终的表现上并不能达到我们的预期, 这就是模型能力不一致问题.

原始的 GPT-3 就是非一致模型, 类似GPT-3 的大型语言模型都是基于来自互联网的大量文本数据进行训练, 能够生成类似人类的文本, 但它们可能并不总是产生符合人类期望的输出.

ChatGPT 为了解决模型的不一致问题, 使用了人类反馈来指导学习过程, 对其进行了进一步训练. 所使用的具体技术就是强化学习(RLHF) .


2.2 什么是强化学习

强化学习(Reinforcement Learning, RL), 又称再励学习、评价学习或增强学习, 是机器学习方法的一种, 用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题.

强化学习的关键信息:

  • 一种机器学习方法

  • 关注智能体与环境之间的交互

  • 目标是追求最大回报

强化学习的架构

  • 下图是强化学习的基本流程整体架构, 其中大脑指代智能体agent, 地球指代环境environment, 从当前的状态St出发, 在做出一个行为At 之后, 对环境产生了一些影响, 它首先给agent反馈了一个奖励信号Rt然后给agent反馈一个新的环境状态, 此处用Ot 表示, 进而融汇进入一个新的状态, agent再做出新的行为, 形成一个循环.


理解强化学习基本要素

  • 这里我们以一个简单小游戏flappy bird为代表为大家讲解强化学习的基本要素:

  • Agent(智能体): 强化学习训练的主体就是Agent, 统称为“智能体”. 这里小鸟就是Agent.

  • Environment(环境): 整个游戏的大背景就是环境;超级玛丽中Agent、地面、柱子组成了整个环境.

  • State(状态): 当前 Environment和Agent所处的状态, 因为小鸟一直在移动, 分数数目也在不停变化, Agent的位置也在不停变化, 所以整个State处于变化中.

  • Policy(策略): Policy的意思就是根据观测到的状态来进行决策, 来控制Agent运动. 即基于当前的State, Agent可以采取哪些Action, 比如向上或者向下. 在数学上Policy一般定义为函数π(深度学习中Policy可以定义为一个模型), 这个policy函数π是个概率密度函数:

  • Reward(奖励): Agent在当前State下, 采取了某个特定的Action后, 会获得环境的一定反馈(或奖励)就是Reward. 比如: 小鸟顺利通过柱子获得奖励R=+1,如果赢了这场游戏奖励R=+10000, 我们应该把打赢游戏的奖励定义的大一些, 这样才能激励学到的policy打赢游戏而不是一味的加分, 如果小鸟碰到柱子, 小鸟就会死, 游戏结束, 这时奖励就设R=-10000, 如果这一步什么也没发生, 奖励就是R=0, 强化学习的目标就是使获得的奖励总和尽量要高.


如何让AI实现自动打游戏?

  • 第一步: 通过强化学习(机器学习方法)学出Policy函数, 该步骤目的是用Policy函数来控制Agent.

  • 第二步: 获取当前状态为s1, 并将s1带入Policy函数来计算概率, 从概率结果中抽样得到a1, 同时环境生成下一状态s2, 并且给Agent一个奖励r1.

  • 第三步: 将新的状态s2带入Policy函数来计算概率, 抽取结果得到新的动作a2、状态s3、奖励r2.

  • 第四步: 循环2-3步骤, 直到打赢游戏或者game over, 这样我们就会得到一个游戏的trajectory(轨迹), 这个轨迹是每一步的状态, 动作, 奖励.


2.3 ChatGPT强化学习步骤

从人类反馈中进行强化学习, 该方法总体上包括三个步骤:

  • 步骤1: 有监督的调优, 预训练的语言模型在少量已标注的数据上进行调优, 以学习从给定的 prompt 列表生成输出的有监督的策略(即 SFT 模型);

  • 步骤2: 模拟人类偏好: 标注者们对相对大量的 SFT 模型输出进行投票, 这就创建了一个由比较数据组成的新数据集. 在此数据集上训练新模型, 被称为训练奖励模型(Reward Model, RM);

  • 步骤3: 近端策略优化(PPO): RM 模型用于进一步调优和改进 SFT 模型, PPO 输出结果的是策略模式.

  • 步骤 1 只进行一次, 而步骤 2 和步骤 3 可以持续重复进行: 在当前最佳策略模型上收集更多的比较数据, 用于训练新的 RM 模型, 然后训练新的策略. 接下来, 将对每一步的细节进行详述.


2.4 监督调优模型

工作原理:

  • 第一步是收集数据, 以训练有监督的策略模型.

  • 数据收集: 选择一个提示列表, 标注人员按要求写下预期的输出. 对于 ChatGPT, 使用了两种不同的 prompt 来源: 一些是直接使用标注人员或研究人员准备的, 另一些是从 OpenAI 的 API 请求(即从 GPT-3 用户那里)获取的. 虽然整个过程缓慢且昂贵, 但最终得到的结果是一个相对较小、高质量的数据集, 可用于调优预训练的语言模型.

  • 模型选择: ChatGPT 的开发人员选择了 GPT-3.5 系列中的预训练模型, 而不是对原始 GPT-3 模型进行调优. 使用的基线模型是最新版的 text-davinci-003(通过对程序代码调优的 GPT-3 模型)

由于此步骤的数据量有限, 该过程获得的 SFT 模型可能会输出仍然并非用户关注的文本, 并且通常会出现不一致问题. 这里的问题是监督学习步骤具有高可扩展性成本.

为了克服这个问题, 使用的策略是让人工标注者对 SFT 模型的不同输出进行排序以创建 RM 模型, 而不是让人工标注者创建一个更大的精选数据集.


2.5 训练奖励模型

这一步的目标是直接从数据中学习目标函数. 该函数的目的是为 SFT 模型输出进行打分, 这代表这些输出对于人类来说可取程度有多大. 这强有力地反映了选定的人类标注者的具体偏好以及他们同意遵循的共同准则. 最后, 这个过程将从数据中得到模仿人类偏好的系统.

工作原理:

  • 选择 prompt 列表, SFT 模型为每个 prompt 生成多个输出(4 到 9 之间的任意值)

  • 标注者将输出从最佳到最差排序. 结果是一个新的标签数据集, 该数据集的大小大约是用于 SFT 模型的精确数据集的 10 倍;

  • 此新数据用于训练 RM 模型 . 该模型将 SFT 模型输出作为输入, 并按优先顺序对它们进行排序.

  • 模型选择: RM模型是GPT-3的蒸馏版本(参数量为6亿), 目的是通过该训练模型得到一个预测值(得分), 模型损失函数为下图表示:

  • 公式参数解析: x代表prompt原始输入, yw代表SFT模型输出的得分较高的结果, yl代表SFT模型输出得分较低的结果, rθ代表RM模型即GPT-3模型, σ代表sigmoid函数, K代表SFT 模型为每个 prompt 生成多个输出, 这里K个任选2个来模型训练.


2.6 使用 PPO 模型微调 SFT 模型

这一步里强化学习被应用于通过优化 RM 模型来调优 SFT 模型. 所使用的特定算法称为近端策略优化(PPO, Proximal Policy Optimization), 而调优模型称为近段策略优化模型.

工作原理: (明确任务: 模型是通过RL来更新)

  • 第一步: 获取数据

  • 第二步: 将数据输入PPO模型 (这里直接也可以理解为ChatGPT模型), 得到一个输出结果

  • 第三步: 将第二步得到的结果输入到RM奖励模型中, 然后得到一个奖励分数. 如果奖励分数比较低, 代表ChatGPT模型输出结果不对, 此时需要利用PPO算法更新ChatGPT模型参数

  • 第四步: 循环上述步骤, 不断更新ChatGPT、RM模型.


2.7 ChatGPT特点

优点:

  • 回答理性又全面, ChatGPT更能做到多角度全方位回答

  • 降低学习成本, 可以快速获取问题答案

缺点:

  • ChatGPT 服务不稳定

  • 容易一本正经的"胡说八道"



🍔 小结

  • 本章节主要讲述了ChatGPT的发展历程,重点对比了N-gram语言模型和神经网络语言模型的区别,以及GPT系列模型的对比.


http://www.ppmy.cn/server/117770.html

相关文章

上海亚商投顾:沪指探底回升 华为产业链午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日探底回升,深成指、创业板指盘中跌逾1%,午后集体拉升翻红。华为产业链午后走强…

朴朴超市 签到 任务脚本

脚本主要用于自动化处理朴朴超市APP的签到和组队任务。以下是对脚本中主要方法的作用解析: 初始化和登录 - __init__: - 初始化类对象,设置用户信息和请求头,尝试获取并设置随机位置。 - get_AccessToken: - 使用`refresh_token`刷新并获取`access_token`,用于后续的A…

安卓玩机工具-----ADB与 FASTBOOT模式 图形化 多功能玩机刷机工具

工具说明 这款工具是英文版。易于使用的工具提供了用于运行 ADB 和 Fastboot 命令的图形用户界面。ADB 功能包括旁加载、安装和卸载应用程序、测试设备以及重新启动到不同的模式。可以使用 fastboot 命令进行设备管理;其中包括检查 Antirollback 和 active slots 等变…

Nginx:高性能的Web服务器与反向代理

在当今的互联网世界中,Web服务器的选择对于网站的性能、稳定性和安全性至关重要。Nginx(发音为“engine X”)凭借其卓越的性能、丰富的功能集和灵活的配置选项,成为了众多网站和应用程序的首选Web服务器和反向代理。本文将深入探讨…

Canal+RabbitMQ数据同步环境配置

Canal 是阿里巴巴开发的开源工具,主要用于解析 MySQL 的 binlog 日志,从而实现数据同步。Canal 会模拟 MySQL 从库的协议,订阅主库的 binlog,从而获取数据库的变更信息。 将 Canal 解析到的 MySQL 数据库变更消息通过 RabbitMQ 分…

详细分析Uniapp中的轮播图基本知识(附Demo)

目录 前言1. 基本知识2. Demo2.1 基本2.2 自定义分页2.3 自定义动画 3. 扩展 前言 先看代码示例&#xff1a; 实现了一个带有分页指示器的轮播图组件 <template><view class"work-container"><!-- 轮播图 --><uni-swiper-dot class"uni…

flask框架

Flask 1 flask简介 我们之所以在浏览器中输入localhost:8080然后就可以把webapps下面的项目文件以浏览器的方式打开&#xff0c;功臣在与tomcat。python语言写的项目&#xff0c;转换为web&#xff0c;Flask框架 轻量级web应用框架。 环境准备&#xff1a; pip install fl…

SSHamble:一款针对SSH技术安全的研究与分析工具

关于SSHamble SSHamble是一款功能强大的SSH技术安全分析与研究工具&#xff0c;该工具基于Go语言开发&#xff0c;可以帮助广大研究人员更好地分析SSH相关的安全技术与缺陷问题。 功能介绍 SSHamble 是用于 SSH 实现的研究工具&#xff0c;其中包含下列功能&#xff1a; 1、针…

React源码学习(一):如何学习React源码

本系列源码学习&#xff0c;是基于 v16.13.1&#xff0c;v17.x与v16.x区别并不太大&#xff01; 一、如何正确的学习React源码&#xff1f; 找到Github&#xff0c;转到React仓库&#xff0c;fork / clone源码&#xff1a;React 查看Readme&#xff0c;在Documentation中有Cont…

Gateway学习笔记

目录 介绍&#xff1a; 核心概念 依赖 路由 断言 基本的断言工厂 自定义断言 过滤器 路由过滤器 过滤器工厂 自定义路由过滤器 全局过滤器 其他 过滤器执行顺序 前置后置&#xff08;&#xff1f;&#xff09; 跨域问题 yaml 解决 配置类解决 介绍&#x…

鸿蒙 ArkUI组件一

ArkUI组件 布局 布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。在实际的开发过程中&#xff0c;需要遵守以下流程保证整体的布局效果&#xff1a; 确定页面的布局结构。分析页面中的元素构成。选用适合的布局容器组件或属性控制页面中各个元素的位置和大…

适合博客的组件库

在选择适合博客的组件库时&#xff0c;需要考虑博客的主题、内容类型以及预期的用户体验。以下是一些推荐的组件库&#xff0c;它们各自具有独特的特点和优势&#xff0c;能够帮助你提升博客的视觉效果和用户体验&#xff1a; React Markdown&#xff1a;非常适合技术博客和教…

亚信软件测试实习面试记录

一、面试问题记录 1、首先是自我介绍&#xff0c;不用多说 2、技术问题 问得不深&#xff0c;简单来说几乎等于没问&#xff0c;只问了一句会不会***。 会Linux嘛&#xff08;应该可以自己回答的时候适当拓展的&#xff0c;但是我只老老实实说了会&#xff09;&#xff1b; 会…

个人电脑可以当服务器用吗?

服务器和普通电脑的主要区别体现在以下几个方面&#xff1a; 1.CPU处理性能 服务器的CPU配置通常是多核的&#xff0c;普通电脑的CPU往往只包含单个核心&#xff0c;因此在数据处理能力上远远不如服务器。 2.安全性能 服务器具备更高的可靠性、安全性、容错能力和安全保护能…

Sui与3DOS合作推动3D打印网络的去中心化

制造业创新者3DOS宣布将其庞大的3D打印网络与Sui集成。这一集成使用户、3D打印机和制造商能够连接到全球可访问的去中心化网络。 解锁去中心化3D打印的全部潜力依赖于精确的实时协调。Sui作为通用协调层&#xff0c;将用户、3D打印机和制造商同步到一个高效、统一的网络中。通…

jmeter

Jmeter快速入门 1.安装Jmeter Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量。 1.1.下载 可以Apache Jmeter官网下载&#xff0c;地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 1.2.解压 因为下载的…

51单片机+proteus+(DS1302+DS18B20)

目录 1.温度传感器检测&#xff08;DS18B20&#xff09; 1.1基本概念 1.1.1 DS18B20的简介 1.1.2 DS18B20的框图 ​编辑 1.1.3 DS18B20的指令 1.1.4 总线时序协议 1.2代码 1.2.1DS18B20的初始化代码 1.2.2DS18B20的读代码 1.2.3DS18B20的写时序 ​编辑 1.2.4DS18B20…

在树莓派上构建和部署 Node.js 项目

探索在Raspberry Pi上构建和部署Node.js项目的最佳实践。通过我们的专业提示和技巧&#xff0c;克服常见挑战&#xff0c;使您的项目顺利运行。 去年圣诞节&#xff0c;我收到了一份极其令人着迷的礼物&#xff0c;它占据了我许多周末的时间&#xff0c;甚至让我夜不能寐。它就…

如何理解BCEWithLogitsLoss()

1.示例1 logit[0.5 -1.0 2.0] targets[1 0 1]# δsigmoid(x) pδ(logits)[δ(0.5) δ(-1.0) δ(2.0)][0.6225 0.2689 0.8808]loss1 -[1 log(0.6225) 0 log(1 - 0.6225)] ≈ 0.4744 loss2 -[0 log(0.2689) 1 log(1 - 0.2689)] ≈ 0.3133 loss3 -[1 log(0.8808) 0 …

MySQL基础作业五

1、建立触发器&#xff0c;订单表中增加订单数量后&#xff0c;商品表商品数量同步减少对应的商品订单出数量,并测试 mysql> create trigger orders_after_insert_trigger after insert on orders for each row-> update goods set numnum-new.onum-> where gidnew.g…