深度学习笔记——生成对抗网络GAN

news2024/12/26 12:28:43

本文详细介绍早期生成式AI的代表性模型:生成对抗网络GAN。

在这里插入图片描述

文章目录

    • 一、基本结构
      • 生成器
      • 判别器
    • 二、损失函数
      • 判别器
      • 生成器
      • 交替优化
      • 目标函数
    • 三、GAN 的训练过程
      • 训练流程概述
      • 训练流程步骤
        • 1. 初始化参数和超参数
        • 2. 定义损失函数
        • 3. 训练过程的迭代
          • 判别器训练步骤
          • 生成器训练步骤
        • 4. 交替优化
        • 5. 收敛判别
      • GAN 训练过程的挑战
    • 四、GAN 的常见变体
      • 1. DCGAN(Deep Convolutional GAN)
      • 2. CycleGAN
      • 3. BigGAN
      • 4. StyleGAN
      • 5. cGAN(Conditional GAN)
    • 五、GAN 的应用场景
    • 六、GAN 的优势与挑战
    • 总结
  • 历史文章
    • 机器学习
    • 深度学习

生成对抗网络(Generative Adversarial Network, GAN)是一种生成模型,由 Ian Goodfellow 等人于 2014 年提出。GAN 通过两个网络——生成器(Generator)和判别器(Discriminator)之间的对抗训练,使得生成器能够生成逼真的数据,从而被判别器难以区分。GAN 已广泛应用于图像生成、图像修复、风格迁移、文本生成等任务。

论文:Generative Adversarial Nets


一、基本结构

GAN 包含两个核心部分:生成器和判别器。

生成器

  • 功能:生成器接收一个随机噪声向量(通常是高斯分布或均匀分布),并将其映射到数据空间,使生成的数据尽可能接近真实数据
  • 目标:生成器的目标是 “欺骗”判别器,使其无法区分生成数据和真实数据。
  • 网络结构:生成器通常由一系列反卷积(或上采样)层组成,以逐步生成更高分辨率的图像

判别器

  • 功能:判别器接收输入样本,并判断该样本真假
  • 目标:判别器的目标是尽可能准确地分辨出真假样本
  • 网络结构:判别器通常是一个卷积神经网络(CNN),将输入数据压缩为一个概率值,表示该样本属于真实数据的概率

二、损失函数

GAN 的训练是一个生成器判别器相互博弈的过程,通过对抗训练逐步提高生成器的生成质量。训练过程主要包括以下步骤:

判别器

  • 训练判别器时,其输入是真实数据和生成器的生成数据
  • 判别器的目标区分真实数据和生成数据,即使得判别器输出接近 1 的概率表示真实数据,接近 0 的概率表示生成数据。
  • 判别器的损失函数通常使用二元交叉熵(Binary Cross-Entropy):
    L D = − E x ∼ p data [ log ⁡ D ( x ) ] − E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] L_D = - \mathbb{E}_{x \sim p_{\text{data}}} [\log D(x)] - \mathbb{E}_{z \sim p_z} [\log(1 - D(G(z)))] LD=Expdata[logD(x)]Ezpz[log(1D(G(z)))]

参数含义

  1. x x x真实数据样本,来自于真实数据分布 p data p_{\text{data}} pdata
  2. z z z生成器输入的噪声向量,通常从均匀分布或正态分布中采样。
  3. D ( x ) D(x) D(x)判别器真实样本 x x x 的输出,表示判别器认为该样本是真实数据的概率。
  4. D ( G ( z ) ) D(G(z)) D(G(z))判别器生成数据 G ( z ) G(z) G(z) 的输出,表示判别器认为该样本为真实数据的概率

判别器损失的计算过程

  1. 第一部分
    − E x ∼ p data [ log ⁡ D ( x ) ] - \mathbb{E}_{x \sim p_{\text{data}}} [\log D(x)] Expdata[logD(x)]

    • 表示对真实样本的损失。
    • 判别器希望尽量将真实数据的输出 D ( x ) D(x) D(x) 接近 1,因此这部分的目标是最小化 log ⁡ D ( x ) \log D(x) logD(x)
  2. 第二部分
    − E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] - \mathbb{E}_{z \sim p_z} [\log(1 - D(G(z)))] Ezpz[log(1D(G(z)))]

    • 表示对生成样本的损失。
    • 判别器希望尽量将生成数据的输出 D ( G ( z ) ) D(G(z)) D(G(z)) 接近 0,因此这部分的目标是最小化 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z)))

生成器

  • 训练生成器时,其输入是一个 随机噪声向量,通常记为 z。
  • 生成器的目标是生成逼真的样本,“欺骗”判别器,使判别器无法分辨生成数据和真实数据,因此生成器希望判别器输出接近 1(让判别器以为生成的图像是真实的)
  • 生成器的损失函数与判别器的损失类似,但这里生成器希望最大化判别器对生成数据的输出,即让判别器认为生成数据为真实数据

L G = − E z ∼ p z [ log ⁡ D ( G ( z ) ) ] L_G = -\mathbb{E}_{z \sim p_z} [\log D(G(z))] LG=Ezpz[logD(G(z))]

参数含义

  1. z z z:生成器输入的噪声向量,通常从均匀分布或正态分布中采样。
  2. D ( G ( z ) ) D(G(z)) D(G(z)):判别器对生成数据 G ( z ) G(z) G(z) 的输出,表示判别器认为生成样本为真实数据的概率

生成器损失的计算过程

  • 损失形式
    − E z ∼ p z [ log ⁡ D ( G ( z ) ) ] -\mathbb{E}_{z \sim p_z} [\log D(G(z))] Ezpz[logD(G(z))]
    生成器的目标是使 D ( G ( z ) ) D(G(z)) D(G(z)) 接近 1,也就是希望判别器对生成的样本做出“真实”的判断

  • 目标
    生成器通过最大化判别器对生成样本的输出,使得判别器无法区分生成样本和真实样本。

生成器的目标是最小化该损失,即最大化判别器对生成样本的输出

交替优化

在每轮训练中:

  1. 固定生成器,训练判别器
  2. 固定判别器,训练生成器
  3. 通过交替优化两者不断改进,生成器的生成样本越来越逼真,而判别器的分辨能力也不断提高。

目标函数

GAN 的目标是找到一个平衡点,使生成器生成的样本和真实数据在分布上尽可能接近。它是一个极小极大(minimax)损失函数,表达了生成器和判别器的博弈

min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data [ log ⁡ D ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))] GminDmaxV(D,G)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]

参数含义:

  1. G G G:生成器的参数。
  2. D D D:判别器的参数。
  3. x x x:真实样本,来自真实数据分布 p data p_{\text{data}} pdata
  4. z z z:噪声输入,通常从均匀分布或正态分布中采样。
  5. D ( x ) D(x) D(x):判别器对真实样本 x x x 的输出概率。
  6. D ( G ( z ) ) D(G(z)) D(G(z)):判别器对生成样本的输出概率。

这个目标函数包含两个部分:

  • 最大化判别器的目标:判别器希望最大化 log ⁡ D ( x ) \log D(x) logD(x) log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z))),即尽可能将真实数据判断为真实样本、生成数据判断为生成样本
  • 最小化生成器的目标:生成器希望最小化 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z))),即生成器希望生成的样本尽可能接近真实样本,以欺骗判别器。

实际的 GAN 训练过程中,不会直接出现极小极大损失函数,而是通过优化生成器和判别器的各自损失函数来间接实现这个目标。
极小极大损失函数的目标通过分解判别器损失生成器损失来实现,二者的对抗优化就是对极小极大目标函数的间接实现。通过交替优化生成器和判别器的损失。伪代码实现如下:
在这里插入图片描述

三、GAN 的训练过程

训练流程概述

GAN 的训练是一个极小极大(minimax)的博弈过程

  1. 生成器的目标是生成逼真的样本来“欺骗”判别器,使得判别器无法分辨生成样本与真实样本;
  2. 判别器的目标是尽可能准确地区分真实样本和生成样本。

这种对抗关系通过两个网络交替训练来实现。

GAN 的训练过程分为以下几个主要步骤。

训练流程步骤

1. 初始化参数和超参数
  1. 初始化生成器 G G G 和判别器 D D D 的网络参数。
  2. 设定超参数,如学习率、训练轮数、批量大小、优化器等。
  3. 通常选择的优化器为 Adam 优化器,初始学习率一般设为较小值,以确保训练过程稳定。
2. 定义损失函数

GAN 的损失函数由生成器和判别器的对抗损失组成。目标是找到一个平衡点,使生成器能够生成与真实样本分布相近的样本。

  1. 判别器损失
    (参考上节)

  2. 生成器损失
    (参考上节)

3. 训练过程的迭代

训练过程的每一轮迭代中,生成器和判别器会交替优化。一般的训练过程如下:

判别器训练步骤

判别器的目标是区分真实样本和生成样本。每轮判别器训练分为以下步骤:

  1. 从真实数据分布中采样一批真实样本 x x x
  2. 生成器从随机噪声分布 z z z(通常为正态分布或均匀分布)中采样一批噪声向量,并生成对应的样本 G ( z ) G(z) G(z)
  3. 将真实样本 x x x 和生成样本 G ( z ) G(z) G(z) 分别输入判别器 D D D。判别器是一个二分类神经网络,通常由卷积层构成,以提取样本的特征输出是一个概率值,表示输入样本为真实样本的概率。计算出对真实样本的输出 D ( x ) D(x) D(x) 和生成样本的输出 D ( G ( z ) ) D(G(z)) D(G(z))
  4. 根据判别器损失函数 L D L_D LD计算判别器的损失,更新判别器的参数,使其能够更好地区分真实样本和生成样本。

判别器训练的目的是让它尽可能区分真实样本和生成样本,鼓励其将真实样本判断为 1,生成样本判断为 0。

生成器训练步骤

生成器的目标是生成能够“欺骗”判别器的样本。生成器的训练步骤如下:

  1. 随机噪声分布 z z z 中采样一批噪声向量。
  2. 将噪声向量输入生成器 G G G,得到生成的样本 G ( z ) G(z) G(z)。生成器是一个神经网络,通常由多层神经网络构成。在图像生成任务中,生成器通常采用反卷积(转置卷积)或上采样层来逐步生成高分辨率图像
  3. 将生成样本 G ( z ) G(z) G(z) 输入判别器 D D D,计算判别器对生成样本的输出 D ( G ( z ) ) D(G(z)) D(G(z))
  4. 根据生成器损失函数 L G L_G LG计算生成器的损失,通过反向传播更新生成器的参数,使生成器生成的样本更加逼真,以“欺骗”判别器。

生成器的优化目标是使得判别器的输出 D ( G ( z ) ) D(G(z)) D(G(z)) 越接近 1 越好,即让判别器认为生成样本是真实样本。生成器训练时,这里的 D D D 的参数是不可训练的

4. 交替优化

训练过程中,生成器和判别器会不断地交替优化。通常,每轮训练中会多次优化判别器(如更新判别器参数数次,再更新生成器参数一次),以确保判别器的分辨能力。这种交替优化的过程被称为 GAN 的“对抗训练”。

5. 收敛判别

GAN 的训练目标是找到生成器和判别器之间的平衡点,但收敛难以判断。通常可以通过以下方法判别 GAN 是否趋于收敛:

  1. 生成样本质量
    观察生成样本的视觉质量,当生成样本变得清晰且真实时,说明生成器已经学到了接近真实数据分布的特征。

  2. 判别器输出的均衡
    在理想的情况下,判别器真实样本和生成样本的输出概率应接近 0.5,表示判别器很难区分真假样本。

  3. 损失变化
    监控生成器和判别器的损失,若损失趋于平稳,说明两者逐渐达到平衡状态。


GAN 训练过程的挑战

GAN 的训练通常存在一些挑战,需要在训练过程中进行调试和优化。

  1. 训练不稳定
    GAN 的训练过程可能会发生梯度消失或梯度爆炸,导致生成效果不佳。可以使用 WGAN、谱归一化等方法来提升稳定性。

  2. 模式崩溃(Mode Collapse)
    生成器可能会陷入“模式崩溃”现象,即只生成相似的样本而缺乏多样性。可以通过多样性损失(如 Minibatch Discrimination)或训练策略(如添加噪声)来缓解模式崩溃。

  3. 对抗关系平衡
    判别器和生成器的能力需要平衡。若判别器太强,生成器难以改进;若生成器太强,判别器很快失去判断能力。可以适当调整判别器和生成器的训练频率,保持两者的平衡。

四、GAN 的常见变体

原始的 GAN 结构存在一些问题,例如训练不稳定、容易陷入模式崩溃(mode collapse)等。为了克服这些问题,出现了多种改进的 GAN 变体

变体主要改进应用场景优点
DCGAN使用深度卷积结构生成图像,批量归一化等改进高质量图像生成、人脸生成、艺术风格图像生成生成质量高,结构简单
CycleGAN无需配对数据,使用循环一致性损失双生成器双判别器实现图像转换图像风格迁移(照片转素描、白天转夜晚)等无需配对数据,双向转换
BigGAN标签嵌入、谱归一化、大型网络结构(更多层次的卷积)高清图像生成、超高分辨率生成生成质量极高,适合大规模数据
StyleGAN样式映射网络,自适应实例归一化(AdaIN),多尺度控制高质量人脸生成、风格迁移细节控制能力强,质量极高
cGAN在生成器和判别器中加入条件输入,实现特定属性生成根据类别标签生成图像(不同表情、年龄等)可控性高,适合特定属性生成

1. DCGAN(Deep Convolutional GAN)

DCGAN 是最早将卷积神经网络(CNN)应用于 GAN 的变体之一,被广泛应用于图像生成任务。DCGAN 的目标是提升图像生成质量,使生成器可以生成更高分辨率和更具细节的图像。

主要改进

  1. 使用卷积层替代 GAN 中传统的全连接层,生成器使用反卷积(或转置卷积)逐步生成图像,判别器使用标准的卷积层提取图像特征
  2. 移除池化层用步幅卷积(stride convolution)来减小分辨率,从而保留更多细节。
  3. 在生成器和判别器中使用批量归一化(Batch Normalization)来加速训练和提升稳定性。
  4. 生成器使用 ReLU 激活,判别器使用 Leaky ReLU 激活。

应用场景

  • 高质量图像生成、人脸生成、艺术风格图像生成等。

优点

  • 结构简单,训练稳定性较高,生成图像质量较好,是后续很多 GAN 变体的基础。

2. CycleGAN

CycleGAN 是一种专注于未配对数据集的图像到图像转换的 GAN 变体,用于解决当缺少成对样本时的风格迁移和图像转换任务。

主要改进

  1. 循环一致性损失(Cycle Consistency Loss):CycleGAN 在生成器中引入了循环一致性损失,使得图像从一种风格转换为另一种风格后,还可以还原回原始风格。这种双向映射的设计让 CycleGAN
    能够在没有配对数据的情况下进行训练。
  2. 双生成器双判别器:CycleGAN 使用两个生成器两个判别器,分别负责从源域到目标域的转换,以及从目标域到源域的逆向转换。

应用场景

  • 图像风格转换(如将马变为斑马、照片转为素描、白天转为夜晚)、图像修复和艺术创作等。

优点

  • 无需配对训练数据,即可实现高质量的图像到图像转换,特别适合风格迁移任务。

3. BigGAN

BigGAN 是一种大规模、高分辨率的 GAN 变体,主要用于生成高质量、高分辨率的图像。BigGAN 在生成效果上达到了新的高度,但其训练难度和计算资源要求也较高。

主要改进

  1. 标签嵌入(Label Embedding):在生成器和判别器中加入标签嵌入,以便在条件 GAN 中生成具有特定类别的图像
  2. 正则化和归一化技术:BigGAN 使用谱归一化(Spectral Normalization)来控制判别器的梯度,使得训练更稳定。此外,使用大批量训练、渐进式训练等手段来提高生成图像的分辨率和质量。
  3. 生成器架构调整:生成器中使用了更多层次的卷积,使得生成的图像更细腻,并利用大型网络结构提升生成质量。

应用场景

  • 高清图像生成、图像生成研究等,适用于需要超高质量和分辨率的生成任务。

优点

  • 生成质量出色,可以生成高分辨率的图像,但训练成本较高,适合有强大计算资源支持的场景。

4. StyleGAN

StyleGAN 是由 NVIDIA 提出的基于样式控制的 GAN 变体,提供了更高的图像生成质量和样式可控性。它被广泛用于高质量人脸生成和其他具有分层样式控制的生成任务中。

主要改进

  1. 样式映射网络(Style Mapping Network):StyleGAN 使用一个样式映射网络,将潜在空间中的输入向量映射到样式空间,然后将这些样式控制应用于生成器的不同层次。
  2. 自适应实例归一化(Adaptive Instance Normalization, AdaIN):生成器在每一层应用 AdaIN 操作,使样式向量可以控制每层的特征分布,实现不同分辨率下的细节和整体风格调整。
  3. 多尺度控制:通过在不同生成层次中应用样式向量,StyleGAN 可以在不同层次上控制图像的特征,从而生成更细腻、更有层次感的图像。

应用场景

  • 高质量人脸生成、艺术风格迁移、细节编辑等。

优点

  • 生成图像质量极高,具有强大的样式控制能力,能够在不同层次上调整生成样本的特征。

5. cGAN(Conditional GAN)

cGAN(条件 GAN) 是在生成器和判别器中引入条件信息(如类别标签、属性标签等)的 GAN 变体,使得 GAN 生成的图像可以带有特定的属性或类别。cGAN 的基本思想是在生成器和判别器的输入中加入条件变量。

主要改进

  1. 条件输入:在生成器的输入噪声向量上添加类别标签或其他条件变量,这使得生成器可以根据给定条件生成带有特定特征的图像。
  2. 判别器的条件输入:在判别器中引入相同的条件信息,使判别器能够更准确地判断生成样本是否符合给定条件。

应用场景

  • 根据类别生成特定属性的图像,如不同表情、服装、场景、年龄等。适用于需要生成带有特定特征的图像任务。

优点

  • 生成的图像具有更高的可控性,适合生成带有明确标签或特征的图像。

五、GAN 的应用场景

GAN 具有强大的生成能力,在多个领域中得到了广泛应用:

  1. 图像生成

    • GAN 可用于生成高分辨率图像,应用于艺术创作、广告、电影制作等领域。
  2. 图像修复

    • GAN 可用于修复有缺陷或损坏的图像,例如老照片修复、面部填补。
  3. 图像超分辨率

    • GAN 可生成清晰的高分辨率图像,用于增强低分辨率图像的细节。
  4. 图像到图像的转换

    • 例如将草图转为真实照片,黑白图像上色等。CycleGAN 在无监督图像转换任务上表现优异。
  5. 数据增强

    • 在数据集有限的情况下,GAN 可以用于生成新样本,扩展训练数据,提升模型的泛化能力。
  6. 文本生成与文本到图像生成

    • GAN 已应用于文本生成、文本到图像生成等任务,使 AI 能够根据描述生成符合语义的图像。

六、GAN 的优势与挑战

优势:

  1. 生成能力强

    • GAN 的生成器可以生成逼真的样本,不仅限于简单的噪声分布。
  2. 无监督学习

    • GAN 不需要带标签的样本,能够通过未标注数据进行无监督训练。
  3. 适用范围广

    • GAN 的生成能力在图像、音频、文本等多种数据类型上都有广泛应用。

挑战:

  1. 训练不稳定

    • GAN 的训练是生成器和判别器的对抗过程,容易陷入梯度消失或爆炸,训练过程不稳定。
  2. 模式崩溃

    • GAN 可能生成重复样本而缺乏多样性(模式崩溃),即生成器只生成某些特定样本。
  3. 超参数敏感

    • GAN 的训练对学习率、批量大小等超参数较为敏感,调优成本高。
  4. 难以衡量生成质量

    • GAN 的生成样本质量较难定量评估,目前常用的 FID(Fréchet Inception Distance)等指标也无法完全反映样本质量。

总结

GAN 是一种强大的生成模型,通过生成器和判别器的对抗训练,使得生成器能够生成接近真实的数据。GAN 的多种变体和改进版本在图像生成、数据增强、风格转换等领域取得了显著成果。尽管 GAN 面临训练不稳定、模式崩溃等挑战,但它的生成能力为多个领域的研究和应用提供了新的可能性。未来的研究将继续优化 GAN 的稳定性和多样性,扩展其在不同场景的应用。

历史文章

机器学习

机器学习笔记——损失函数、代价函数和KL散度
机器学习笔记——特征工程、正则化、强化学习
机器学习笔记——30种常见机器学习算法简要汇总
机器学习笔记——感知机、多层感知机(MLP)、支持向量机(SVM)
机器学习笔记——KNN(K-Nearest Neighbors,K 近邻算法)
机器学习笔记——朴素贝叶斯算法
机器学习笔记——决策树
机器学习笔记——集成学习、Bagging(随机森林)、Boosting(AdaBoost、GBDT、XGBoost、LightGBM)、Stacking
机器学习笔记——Boosting中常用算法(GBDT、XGBoost、LightGBM)迭代路径
机器学习笔记——聚类算法(Kmeans、GMM-使用EM优化)
机器学习笔记——降维

深度学习

深度学习笔记——优化算法、激活函数
深度学习——归一化、正则化
深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习笔记——卷积神经网络CNN
深度学习笔记——循环神经网络RNN、LSTM、GRU、Bi-RNN
深度学习笔记——Transformer
深度学习笔记——3种常见的Transformer位置编码
深度学习笔记——GPT、BERT、T5
深度学习笔记——ViT、ViLT
深度学习笔记——DiT(Diffusion Transformer)
深度学习笔记——多模态模型CLIP、BLIP
深度学习笔记——AE、VAE

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

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

相关文章

成都睿明智科技有限公司抖音电商服务的新引擎

在这个短视频风起云涌的时代,抖音不仅成为了人们休闲娱乐的首选,更是商家们竞相角逐的电商新蓝海。在这片充满机遇与挑战的海域中,成都睿明智科技有限公司如同一艘装备精良的航船,引领着众多企业向抖音电商的深水区进发。今天&…

51c视觉~YOLO~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12512597 1、Yolo8 1.1、检测PCB元件 技术世界正在以惊人的速度发展,而这种转变的核心是一个革命性的工具 — 计算机视觉。它最有趣的应用之一是电子印刷电路板 (PCB) 的检测和分析。本文…

Jenkins的使用

文章目录 一、Jenkins是什么\有什么用\与GitLab的对比二、Jenkins的安装与配置Jenkins的安装方式在Linux上安装Jenkins:在Windows上安装Jenkins:配置Jenkins: (可选)配置启动用户为root(一定要是root吗??…

图论入门教程:GTM173 Graph Theory

这是本图论的入门教材,Graph Theory Fifth Edition,隶属于著名的GTM系列,作者是Reinhard Diestel。这是本对新人友好的教材,之前本科上离散数学的课时,因为涉及到图论,而学校的课堂又太水让我心生不满&…

QT5 Creator (Mingw编译器) 调用VS2019 (阿里云 oss C++库) 报错的解决方法

方法就是不要用VS2019编译,要用MINgw32编译。 编译命令如下: cmake -G "MinGW Makefiles" ^-DCMAKE_MAKE_PROGRAMD:\qt\Tools\mingw810_32\bin\mingw32-make.exe ^-DCMAKE_C_COMPILERD:\qt\Tools\mingw810_32\bin\gcc.exe ^-DCMAKE_CXX_COMP…

反向传播、梯度下降与学习率:深度学习中的优化艺术

目录 反向传播:神经网络的学习机制 梯度下降:优化算法的基石 学习率:平衡速度与稳定性的关键 学习率的调整策略 固定学习率 学习率衰减 自适应学习率 梯度消失与梯度爆炸 结语 在深度学习的领域中,构建一个有效的神经网络…

论文笔记(五十九)A survey of robot manipulation in contact

A survey of robot manipulation in contact 文章概括摘要1. 引言解释柔顺性控制的概念:应用实例: 2. 需要接触操控的任务2.1 环境塑造2.2 工件对齐2.3 关节运动2.4 双臂接触操控 3. 接触操控中的控制3.1 力控制3.2 阻抗控制3.3 顺应控制 4. 接触操控中的…

881.救生艇

目录 题目过程 题目 给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船数 。 过程 cla…

【汇编】逻辑指令

文章目录 一、逻辑运算指令(一)各逻辑运算指令格式及操作(1)逻辑非指令 NOT(2)逻辑与指令 AND(3)逻辑或指令 OR(4)异或指令 XOR(5)测试…

网页开发的http基础知识

请求方式-GET:请求参数在请求行中,没有请求体,如:/brand/findAll?nameoPPo&status1。GET请求大小在浏览器中是有限制的请求方式-POST:请求参数在请求体中,POST请求大小是没有限制的 HTTP请求&#xf…

如何做好一份技术文档

如何做好一份技术文档 以下是本人的一些微不足道的经验,希望可以与大家互相交流学习 方向一:技术文档的规划布局 确定整体架构 创建一份优秀技术文档的第一步是规划其整体架构。一个好的架构应能引导读者理解文档的内容,同时提供一个逻辑清…

Springboot——SseEmitter流式输出

文章目录 前言SseEmitter 简介测试demo注意点异常一 ResponseBodyEmitter is already set complete 前言 最近做AI类的开发,看到各大AI模型的输出方式都是采取的一种EventStream的方式实现。 不是通常的等接口处理完成后,一次性返回。 而是片段式的处理…

Java 虚拟机:承载 Java 生态的神奇魔盒

在软件开发的世界里,Java 虚拟机(JVM)就像一位智慧的管家,默默守护着 Java 生态系统的运行。它不仅让 Java 实现了"一次编写,到处运行"的梦想,更是成为了多种编程语言的运行平台。让我们一起走进…

sqlmap详细使用

SQLmap使用详解 SQLmap(常规)使用步骤 1、查询注入点 python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id12、查询所有数据库 python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id1 --dbs3、查询当前数据库 python sqlmap.py -u htt…

【Linux】Linux2.6内核进程调度队列与调度原理

目录 一、进程管理中的部分概念二、寄存器三、进程切换四、Linux2.6内核进程调度队列与调度原理结尾 一、进程管理中的部分概念 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务&#…

Qt 详解QRubberBand

文章目录 QRubberBand 简介前言 QRubberBand 的作用QRubberBand 的主要功能QRubberBand 的常用方法QRubberBand 的典型应用场景示例代码总结 QRubberBand 简介 前言 在 Qt 中,QRubberBand 是一个非常实用的控件,它通常用于图形界面中的“选择区域”功能…

python股票数据分析(Pandas)练习

需求: 使用pandas读取一个CSV文件,文件内容包括股票名称、价格和交易量。完成以下任务: 找出价格最高的股票; 计算总交易量; 绘制价格折线图。 代码实现: import pandas as pd import matplotlib.pyplot …

Jenkins Nginx Vue项目自动化部署

目录 一、环境准备 1.1 Jenkins搭建 1.2 NVM和Nodejs安装 1.3 Nginx安装 二、Jenkins配置 2.1 相关插件安装 2.2 全局工具安装 2.3 环境变量配置 2.4 邮箱配置(构建后发送邮件) 2.5 任务配置 三、Nginx配置 3.1 配置路由转发 四、部署项目 …

JUnit介绍:单元测试

1、什么是单元测试 单元测试是针对最小的功能单元编写测试代码(Java 程序最小的功能单元是方法)单元测试就是针对单个Java方法的测试。 2、为什么要使用单元测试 确保单个方法运行正常; 如果修改了代码,只需要确保其对应的单元…

乘积求导法则、除法求导法则和链式求导法则

乘积求导法则、除法求导法则和链式求导法则 1. Constant multiples of functions (函数的常数倍)2. Sums and differences of functions (函数和与函数差)3. Products of functions via the product rule (通过乘积法则求积函数的导数)4. Quotients of functions via the quoti…