BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力

温馨提示:
本篇文章已同步至"AI专题精讲" BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力

摘要

大语言模型(LLMs)的规模不断扩大,在自然语言处理方面取得了令人瞩目的进展,但这也带来了显著的部署挑战。权重量化已成为广泛采用的解决方案,用于降低内存和计算需求。本文提出了 BitDistiller,一个融合了量化感知训练(Quantization-Aware Training, QAT)与知识蒸馏(Knowledge Distillation, KD)的框架,用以提升超低精度(sub-4-bit)LLMs 的性能。具体而言,BitDistiller 首先引入了一个定制的非对称量化与裁剪技术,以最大程度地保留量化权重的精度;随后提出了一种新颖的置信感知 Kullback-Leibler 散度(Confidence-Aware Kullback-Leibler Divergence, CAKLD)目标函数,并以自蒸馏的方式应用于训练过程中,从而实现更快的收敛速度和更优的模型性能。实验结果表明,BitDistiller 在3-bit和2-bit配置下,在通用语言理解和复杂推理任务中均显著优于现有方法。值得注意的是,BitDistiller 在资源效率方面也更具优势,所需的数据和训练资源更少。代码开源于:https://github.com/DD-DuDa/BitDistiller。

1 引言

扩大模型规模是大语言模型(LLMs)取得成功的关键因素,使其在多种自然语言处理任务中展现出前所未有的性能(Brown et al., 2020;Touvron et al., 2023;Kaplan et al., 2020)。然而,模型规模的不断增长也带来了部署方面的重大挑战,尤其是在资源受限的设备上,由于模型的内存占用和计算需求极为庞大。

权重量化作为一种提高 LLM 效率和可部署性的常用策略,能够在尽量不牺牲性能的前提下大幅压缩模型体积(Gholami et al., 2022)。在实际应用中,4-bit 量化因其在压缩比与性能保留之间的良好平衡,被广泛采用(Lin et al., 2023;Frantar et al., 2022;Liu et al., 2023a)。
在这里插入图片描述

然而,sub-4-bit 量化会显著降低模型权重的保真度,进而导致模型性能下降,尤其是在小模型或需要复杂推理的任务中更为明显(Dettmers 和 Zettlemoyer,2023)。为应对这一问题,研究者提出了多种后训练量化(Post-Training Quantization, PTQ)和量化感知训练(Quantization-Aware Training, QAT)方法(Chee 等,2023;Shao 等,2023)。PTQ 的优势在于无需重新训练模型,但在极低比特精度下很难维持模型性能。相比之下,QAT 将量化过程融入训练环节,使模型能动态适应精度降低,从而更好地保留精度(Liu 等,2023b;Kim 等,2023a)。尽管早期成果令人鼓舞,但要在极低比特的 QAT 场景中实现优异的模型性能,仍需解决两个核心难题:如何在量化中最大限度保留权重精度,以及如何在训练中有效学习低比特表示。

在本文中,我们提出了 BitDistiller —— 一个将 QAT 与知识蒸馏(Knowledge Distillation, KD)有机融合的新型框架,旨在显著提升 sub-4-bit 量化 LLM 的性能。为尽量减少量化误差,BitDistiller 采用了定制的非对称量化与裁剪策略,以尽可能保留全精度模型的能力,尤其是在超低比特设定下。为了有效且高效地学习低比特表示,BitDistiller 采用了一种简洁而高效的自蒸馏机制,即使用全精度模型作为教师模型,引导低比特学生模型的训练。值得一提的是,BitDistiller 创新性地引入了置信感知 Kullback-Leibler 散度(Confidence-Aware Kullback-Leibler Divergence, CAKLD)**作为目标函数,从而优化知识迁移效果,实现更快的收敛速度与更佳的模型性能。

我们在涵盖通用语言理解、数学推理与代码生成等多种任务的基准上进行了实证评估,结果表明 BitDistiller 在 sub-4-bit 量化领域显著优于现有的 PTQ 与 QAT 方法。如图 1 所示,BitDistiller 在代码推理基准上,于 3-bit 与 2-bit 配置下均取得了最优的扩展性能表现(scaling law)。此外,BitDistiller 在资源效率方面也表现突出,对训练数据与资源的需求更低,标志着在资源受限设备上部署强大 LLMs 迈出了重要一步。

2 背景与相关工作

2.1 面向 LLM 的权重量化

PTQ 与 QAT
后训练量化(Post-Training Quantization, PTQ)直接应用于预训练模型,无需额外训练。LLM 的 PTQ 方法通常依赖于误差调整策略(Frantar 等,2022;Chee 等,2023)或优先保留关键权重(Dettmers 等,2023b;Lin 等,2023;Kim 等,2023b)。然而,由于缺乏重新训练过程,PTQ 在极低比特精度下容易导致模型性能大幅下降。相比之下,量化感知训练(Quantization-Aware Training, QAT)将量化过程整合到训练阶段,使模型能学习更适用于低比特权重的表示方式。已有的 QAT 方法如 LLM-QAT(Liu 等,2023b)、OmniQuant(Shao 等,2023)、PB-LLM(Shang 等,2023)和 BitNet(Wang 等,2023)在提升模型性能方面已取得显著成效。尽管如此,QAT 依然面临对大量训练数据与资源的高度依赖,仍有较大优化空间。在本研究中,我们结合 QAT 与知识蒸馏(Knowledge Distillation, KD),以增强在 sub-4-bit 场景下量化 LLM 的性能。

量化粒度与格式优化
大量研究表明,采用更细粒度的量化策略(如分组量化)相比于逐层(layer-wise)或通道级(channel-wise)量化方法能获得更高精度(Shen 等,2020;Frantar 等,2022)。此外,在 LLM 的量化中,浮点数格式(如 FP8、FP4、NF4)被证明比整数格式(如 INT8、INT4)具有更好的精度表现(Kuzmin 等,2022;Dettmers 和 Zettlemoyer,2023;Zhang 等,2023b)。尤其值得注意的是,非对称量化(asymmetric quantization)在浮点格式中优于对称量化,因为它能更好地适应模型权重的分布特性(Zhang 等,2023a)。BitDistiller 遵循这些经验,采用更细粒度的分组方式与非对称量化策略来提升性能。

2.2 面向 LLM 的知识蒸馏

在大语言模型领域,白盒知识蒸馏(white-box KD)因教师模型的可访问性而愈发流行,这种方式可以更有效地将教师模型的知识表示传递给学生模型(Hinton 等,2015;Zhu 等,2023)。例如,MINILLM(Gu 等,2023)使用反向 KL 散度(KLD)来保证语言生成的准确性与保真性。GKD(Agarwal 等,2023)则探索了更广义的 Jensen-Shannon 散度(JSD),并通过从学生模型中采样输出缓解分布失配的问题。

为了实现极高的压缩比,将 KD 与模型量化相结合是一种有前景的策略,KD 能有效缓解量化后模型的精度损失(Zhang 等,2020;Kim 等,2022)。在应用 QAT 与 KD 结合的前沿研究中,TSLD(Kim 等,2023a)考虑了过拟合风险,并结合了 logit 蒸馏与真实标签损失;LLM-QAT 则利用教师模型生成的随机数据进行无数据蒸馏(data-free distillation)。与 TSLD 和 LLM-QAT 不同,我们的方法在极低比特量化精度下实现了更优的性能表现与更高的资源效率

3 方法

在这里插入图片描述

在本节中,我们介绍 BitDistiller ——一个面向大语言模型(LLMs)的量化感知训练(QAT)与自蒸馏框架,如图 2 所示。为了在量化过程中最大程度地保留权重的保真性,我们首先提出一种非对称量化与截断方法(见第 3.1 节)。其次,为了抵消因精度降低而带来的性能下降,我们引入知识蒸馏(Knowledge Distillation),并提出一种新的 置信度感知 KL 散度(Confidence-Aware KL Divergence,CAKLD)作为目标函数,在该目标中,全精度模型作为教师模型,而低精度模型则作为学生模型(见第 3.2 节)。

算法 1 概述了 BitDistiller 的整体流程。给定全精度权重 ww,BitDistiller 首先对 ww 应用非对称截断操作,以缓解异常值的影响(第 1 行),该步骤在训练循环之前进行。随后,在每一个训练步骤中,BitDistiller 使用量化后的权重 wQtw_{Qt} 进行前向传播(forward),并通过所提出的 CAKLD 损失函数 计算损失值(第 4-5 行),然后更新全精度权重(第 6-7 行)(Bengio 等人,2013)。当训练结束后,BitDistiller 输出最终的量化权重。

3.1 非对称量化与截断

在大语言模型(LLMs)的权重量化中,采用更细粒度(即更小的分组规模)通常会导致权重分组呈现非对称分布,并且伴随离群值的出现。在低比特的后训练量化(PTQ)场景中,若要维持模型性能,恰当处理这种非对称性是至关重要的。

我们的研究发现:在极低比特的量化感知训练(QAT)中(如 3 比特和 2 比特配置),非对称性带来的影响更为显著,因此需要定制的策略加以应对。

因此,在 BitDistiller 中,我们引入了非对称量化技术,并结合非对称截断策略,以提升量化权重的表达保真度,最大限度地保留全精度模型的能力。
在这里插入图片描述
非对称量化
已有研究表明,在 LLM 量化中,浮点格式(如 FP、NF)通常优于整数格式(INT)(Dettmers 等,2023a;Liu 等,2023a)。然而,当量化精度降低至 2-bit 时,我们观察到 FP/NF 格式的效果明显下降。FP/NF 格式之所以在高比特位中表现良好,是由于其非均匀分布特性,能够捕捉更广泛的数值范围,这种非均匀分布与 LLM 中权重张量的自然分布更加契合。

但在 2-bit 场景中,由于其仅能表示四个离散值,表示能力受限,导致非均匀分布的优势无法有效发挥,从而阻碍了每个数值的有效利用。基于以上观察,我们在 2-bit 以上的量化中采用 NF 格式,而在 2-bit 场景下则改用 INT 格式。

  • 对于 NF 格式(如 NF3),我们采用 AFPQ 方法(Zhang 等,2023a)实现非对称量化:为正权重 w_posw\_{pos}w_pos 和负权重 w_negw\_{neg}w_neg 分别设定独立的缩放因子 s_poss\_{pos}s_poss_negs\_{neg}s_neg,如公式 (1) 所示。
  • 对于 INT 格式(如 INT2),我们则采用传统的非对称方法:使用一个单一的缩放因子和一个指定的零点(zero point),如公式 (2) 所示。

NF−Asym:Q(w)={⌊wposspos⌉,ifw>0⌊wnegsneg⌉,ifw≤0(1)N F { - } A s y m : Q ( w ) = { \left\{ \begin{array} { l l } { { \lfloor { \frac { w _ { p o s } } { s _ { p o s } } } \rceil } , } & { { \mathrm { i f ~ } } w > 0 } \\ { { \lfloor { \frac { w _ { n e g } } { s _ { n e g } } } \rceil } , } & { { \mathrm { i f ~ } } w \leq 0 } \end{array} \right. }\quad(1) NFAsym:Q(w)={sposwpos,snegwneg,if w>0if w0(1)

INT⋅Asym:Q(w)=⌊w−zs⌉(2)I N T { \cdot } A s y m : Q ( w ) = \lfloor \frac { w - z } { s } \rceil\quad(2) INTAsym:Q(w)=swz(2)

非对称剪枝(Asymmetric Clipping)
剪枝(clipping)是一种通过限制权重数值范围来提高量化后模型精度的策略,已有研究证实了其在保持量化精度方面的重要作用(Sakr 等,2022;Shao 等,2023)。然而,朴素的剪枝方法通常效果有限,而更先进的剪枝技术又存在高计算成本的问题,不适用于实际的 QAT 训练过程(Li 等,2019;Jung 等,2019)。

为克服这一难题,我们提出仅在 QAT 初始化阶段使用非对称剪枝策略。在训练开始之前进行非对称剪枝,能够为模型提供良好的初始点,在不引入迭代剪枝优化的高昂成本的前提下,显著提升最终量化模型的精度。

具体而言,为了在 QAT 初始化中实现非对称剪枝,我们利用从一小部分校准数据中缓存得到的输入特征 XXX,为模型的每一层自动搜索两个最优的剪枝阈值 α\alphaαβ\betaβ。这两个值的目标是最小化量化前后的输出差异。形式上,我们优化以下目标函数:
α∗,β∗=argmin⁡α,β∣∣Q(wc)X−wX∣∣\alpha ^ { * } , \beta ^ { * } = \operatorname * { a r g m i n } _ { \alpha , \beta } \lvert \lvert Q ( w _ { c } ) X - w X \rvert \rvert α,β=α,βargmin∣∣Q(wc)XwX∣∣

wc=Clip(w,α,β){α∈[min_val,0)β∈(0,max_val](3)w_c = \text{Clip}(w, \alpha, \beta) \begin{cases} \alpha \in [\text{min\_val}, 0) \\ \beta \in (0, \text{max\_val}] \end{cases}\quad(3) wc=Clip(w,α,β){α[min_val,0)β(0,max_val](3)

为了展示非对称量化和裁剪的有效性,我们进行了张量级别的分析。我们从 LLaMa-2-7B 模型中随机选取了一个权重张量,重点关注其中的一个输出通道。如图 3 所示,我们采用的非对称量化和裁剪方法相比对称量化能够更好地保持高保真度。关于非对称量化和裁剪对模型性能影响的更详细消融研究,见第 4.4 节的表 3。

在这里插入图片描述

3.2 带有 CAKLD 的自我蒸馏

为更好地抵消精度降低带来的性能下降,我们提出在量化感知训练(QAT)中采用知识蒸馏(KD),其中全精度模型作为教师,量化后的模型作为学生:

L=D(PT∥PS)(4)L = D(P_T \parallel P_S)\quad(4) L=D(PTPS)(4)

式中,DDD 表示两个分布之间的散度度量,PTP_TPTPSP_SPS 分别代表全精度模型和量化模型。

知识蒸馏(KD)的直觉可以从两个方面理解。首先,学习 token 级别的概率分布有助于量化模型更好地模仿其全精度对应模型(Hinton 等,2015),从而重新获得强大的下游任务性能。其次,鉴于大型语言模型(LLM)的生成特性,利用全精度模型来扩展用于量化感知训练(QAT)的数据规模变得十分容易。

用于蒸馏的散度度量 DDD 选择至关重要。Agarwal 等(2023)发现,反向 KL 散度(即 DKL(PS∥PT)D_{KL}(P_S \| P_T)DKL(PSPT))所倡导的“模式寻求”行为在指令调优(Chung 等,2022)任务中表现优于正向 KL 散度(即 DKL(PT∥PS)D_{KL}(P_T \| P_S)DKL(PTPS)),而正向 KL 散度促进“模式覆盖”,在摘要等通用文本生成任务(Narayan 等,2018)中表现更好。为了给 QAT 提供一种通用方案,我们旨在自动权衡“模式寻求”与“模式覆盖”的行为,而不是基于对下游任务的经验理解手动选择。
在这里插入图片描述
为此,我们提出了一种新颖的置信感知 KL 散度,简称 CAKLD。它通过一个由平均 token 概率估计的系数 γγγ,将反向 KL 和正向 KL 混合起来,从而使得“模式寻求”和“模式覆盖”的行为能够根据全精度模型对训练数据的置信度自动权衡:
DCAKLD(PT∥PS)=γDKL(PS∥PT)+(1−γ)DKL(PT∥PS)D_{\text{CAKLD}}(P_T \parallel P_S) = \gamma D_{KL}(P_S \parallel P_T) + (1 - \gamma) D_{KL}(P_T \parallel P_S) DCAKLD(PTPS)=γDKL(PSPT)+(1γ)DKL(PTPS)

DKL(PT∥PS)=E(x,y)∼D[1∣y∣∑i=1∣y∣Ec∼PT(⋅∣x,y<i)[log⁡PT(c∣x,y<i)PS(c∣x,y<i)]](5)D_{KL}(P_T \parallel P_S) = \mathbb{E}_{(x,y) \sim D} \left[ \frac{1}{|y|} \sum_{i=1}^{|y|} \mathbb{E}_{c \sim P_T(\cdot | x, y_{<i})} \left[ \log \frac{P_T(c | x, y_{<i})}{P_S(c | x, y_{<i})} \right] \right]\quad(5) DKL(PTPS)=E(x,y)Dy1i=1yEcPT(x,y<i)[logPS(cx,y<i)PT(cx,y<i)](5)

γ=E(x,y)∼D[1∣y∣∑i=1∣y∣PT(yi∣x,y<i)]\gamma = \mathbb{E}_{(x,y) \sim D} \left[ \frac{1}{|y|} \sum_{i=1}^{|y|} P_T(y_i | x, y_{<i}) \right] γ=E(x,y)Dy1i=1yPT(yix,y<i)

直观来看,当全精度模型对训练数据较为自信时,CAKLD 会更倾向于“模式寻求”的行为;反之,当全精度模型对数据不确定时,CAKLD 会更倾向于“模式覆盖”的行为,因为仅仅建模单一模式并非最优。图 4 展示了在高斯分布拟合高斯混合分布时,反向 KL 散度、正向 KL 散度与 CAKLD 之间的差异。显然,CAKLD 能够通过系数有效权衡“模式寻求”和“模式覆盖”的行为。有关详细的性能对比和深入分析,请参见图 6 及附录 A.2。

温馨提示:
阅读全文请访问"AI深语解构" BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力

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

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

相关文章

JavaScript 的 `querySelector` 方法详解

querySelector 是 JavaScript 中用于选择 DOM 元素的最强大方法之一&#xff0c;它允许你使用 CSS 选择器语法来查找元素。 基本语法 // 返回文档中第一个匹配指定 CSS 选择器的元素 element document.querySelector(selectors);// 从指定元素后代中查找 element parentEle…

第九讲:C++中的list与forward_list

目录 1、list的介绍及使用 1.1、构造及赋值重载 1.2、迭代器 1.3、空间 1.4、访问 1.5、修改 1.6、操作 2、迭代器失效 3、list的模拟实现 4、forward_list介绍与使用 4.1、构造及赋值重载 4.2、迭代器 4.3、容量 4.4、访问 4.5、修改 4.6、操作 5、迭代器的分…

华为云数据库 GaussDB的 nvarchar2隐式类型转换的坑

bigint 与 nvarchar2比较时发生隐式类型转换的坑 1. 案例分析 假设&#xff1a; table1有下面两个字段&#xff1a;id:bigint&#xff0c; source_id nvarchar2(50)数据库中id 的值一定大于 int4 的最大值&#xff0c;例如存在一条单据&#xff1a; id1947854462980792321&…

spring boot 集成netty,及其一些基本概念

一、基本概念 1、channel:通道&#xff0c;入站或者出站数据的载体 2、ChannelHandler&#xff1a;通道处理器&#xff0c;业务逻辑写在这里面&#xff0c;netty 5版本将入战和出站合并成了ChannelHandler 3、ChannelPipeline&#xff1a;通道里的管道&#xff0c;是一个或者多…

7月23日华为机考真题第一题100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 bishipass.com 01. 创业投资收益优化 问题描述 K小姐刚刚大学毕业,手头有 m m m 元资金想要进行创业投资。她发现了 k k

HTML5 跨文档通信机制:postMessage API 详解与应用

postMessage 是 HTML5 规范中定义的跨文档通信&#xff08;Cross-Document Messaging&#xff09;API&#xff0c;其设计目的是解决不同源&#xff08;协议、域名、端口任一存在差异&#xff09;的窗口&#xff08;如 iframe 嵌入的文档、window.open 创建的新窗口&#xff09;…

Kafka——Kafka中的位移提交

引言&#xff1a;为什么位移提交至关重要&#xff1f;在Kafka的分布式消息系统中&#xff0c;消费者组&#xff08;Consumer Group&#xff09;通过分区分配机制实现负载均衡和容错&#xff0c;但如何准确记录每个消费者的消费进度&#xff0c;是保证消息不丢失、不重复的关键。…

java设计模式 -【装饰器模式】

装饰器模式的定义 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;允许向一个现有对象动态添加新功能&#xff0c;同时不改变其结构。它通过创建包装对象&#xff08;装饰器&#xff09;来包裹原始对象&#xff0c;并在保持原始对象方法…

手写字体生成器:一键模拟真实笔迹

软件介绍 在自媒体创作领域&#xff0c;手写体文案因其独特的艺术感而备受青睐。然而&#xff0c;真实的手写往往效率低下且效果难以保证。今天为大家推荐一款专业的手写模拟软件&#xff0c;能够一键生成逼真的手写字体效果&#xff0c;完美解决创作效率与质量的双重需求。…

【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换

文章目录【Android】用 ViewPager2 Fragment TabLayout 实现标签页切换一、引入&#xff1a;什么是 ViewPager2 &#xff1f;二、ViewPager2 的基础使用1. 在布局文件 (activity_main.xml)中添加 ViewPager22. 制作一个 Fragment2.1 创建一个布局文件2.2 创建一个 Fragment 类…

嵌入式学习-土堆目标检测(4)-day28

Pytorch中加载自定义数据集 - VOC其中需要pip install xmltodict#voc_dataset.pyimport os import torch import xmltodict from PIL import Image from torch.utils.data import Dataset import torchvision.transforms as transformsclass VOCDataset(Dataset): def __init_…

Spring MVC上下文容器在Web容器中是如何启动的(源码深入剖析)?

文章目录一、双容器架构&#xff1a;MVC容器与根容器的关系二、启动全流程解析1. 启动流程全景图2. 初始化根容器&#xff08;Root WebApplicationContext&#xff09;2.1 Tomcat 中启动入口源码解析2.2 Spring 根上下文启动源码解析3. 初始化 MVC 容器&#xff08;DispatcherS…

【iOS】编译和链接、动静态库及dyld的简单学习

文章目录编译和链接1️⃣核心结论&#xff1a;一句话区分2️⃣编译过程&#xff1a;从源代码到目标文件&#xff08;.o&#xff09;2.1 预处理&#xff08;Preprocessing&#xff09;&#xff1a;“替换变量复制粘贴”2.2 编译&#xff08;Compilation&#xff09;&#xff1a;…

金山办公WPS项目产品总监陈智新受邀为第十四届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会珠海金山办公软件有限公司WPS项目产品总监 陈智新先生 受邀为“PMO评论”主办的2025第十四届中国PMO大会演讲嘉宾&#xff0c;演讲议题为&#xff1a;中小团队PMO的成长之路&#xff0c;敬请关注&#xff01;议题简要&#xff1a;在竞争激烈、需求多变的…

web安全 | docker复杂环境下的内网打点

本文作者&#xff1a;Track-syst1m一.前言本文涉及的相关漏洞均已修复、本文中技术和方法仅用于教育目的&#xff1b;文中讨论的所有案例和技术均旨在帮助读者更好地理解相关安全问题&#xff0c;并采取适当的防护措施来保护自身系统免受攻击。二.大概流程1. 外网打点• 漏洞利…

iTwin 几何属性获取

面积体积半径获取几何属性&#xff0c;如面积&#xff0c;体积&#xff0c;半径&#xff0c;可以使用getMassProperties这个接口async onGetMassProperty(){const vp IModelApp.viewManager.selectedView;const iModel vp?.iModel;if (!iModel) return;console.log("iM…

OpenLayers 快速入门(九)Extent 介绍

看过的知识不等于学会。唯有用心总结、系统记录&#xff0c;并通过温故知新反复实践&#xff0c;才能真正掌握一二 作为一名摸爬滚打三年的前端开发&#xff0c;开源社区给了我饭碗&#xff0c;我也将所学的知识体系回馈给大家&#xff0c;助你少走弯路&#xff01; OpenLayers…

LeetCode 121. 买卖股票的最佳时机 LeetCode 122. 买卖股票的最佳时机II LeetCode 123.买卖股票的最佳时机III

LeetCode 121. 买卖股票的最佳时机尝试一&#xff1a;暴力解决方法常用两个指针去遍历prices数组&#xff0c;dp[i]用于记录在第i天所获得的最大利润。时间复杂度是O(N^2)&#xff0c;超出时间限制。Codeclass Solution(object):def maxProfit(self, prices):"""…

【LeNet网络架构】——深度学习.卷积神经网络

目录 1 MLP 2 LeNet简介 3 Minst数据集 3.1 MINST数据集简介 3.2 MNIST数据集的预处理 4 LeNet手写数字识别 LeNet由Yann Lecun 提出&#xff0c;是一种经典的卷积神经网络&#xff0c;是现代卷积神经网络的起源之一。Yann将该网络用于邮局的邮政的邮政编码识别&#xff…

Python笔记完整版

常用pip源 &#xff08;1&#xff09;阿里云 http://mirrors.aliyun.com/pypi/simple/&#xff08;2&#xff09;豆瓣 http://pypi.douban.com/simple/&#xff08;3&#xff09;清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/&#xff08;4&#xff09;中国科学技术大学…