当前位置: 首页 > news >正文

【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation

文章目录

  • 一、文章概览
    • (一)问题提出
    • (二)文章工作
  • 二、判别比估计和密度鸿沟问题
  • 三、伸缩密度比估计
    • (一)核心思想
    • (二)路标创建
    • (三)桥梁构建
    • (四)TRE应用于互信息估计
    • (五)TRE 应用于基于能量的建模
  • 四、实验
    • (一)1维峰值比率的设置及TRE的表现
    • (二)高维度比率问题及TRE在大互信息(MI)估计中的表现
    • (三)SpatialMultiOmniglot 上的 MI 估计和表示学习
    • (四)MNIST 上基于能量的建模


一、文章概览

(一)问题提出

密度比估计:

  • 通过密度比估计进行的无监督学习是机器学习中的一个强大范例,是该领域重大进展的源泉
  • 根据数据样本估计p/q比率,而不单独估计分子和分母。

判别性密度比估计:

  • 训练神经网络分类器来区分两组样本,因为对于许多损失函数,可以从最佳分类器中提取 p/q 比值。
  • 这种判别性方法在多个领域中产生了先进的结果,是无监督学习的基石。

密度鸿沟问题:

  • 在两个密度显著不同的情况下,分类器就可以通过相对较差的密度比估计来获得几乎完美的精度。
  • 实验表明,每当 p 和 q 之间的KL散度超过几十自然单位时,这种情况尤为明显。

(二)文章工作

伸缩密度比估计(TRE) 框架:

  • 用于克服密度鸿沟问题,实现在高维空间中准确估计高度不同的密度之间的比率
  • 采用由两个步骤组成的“分而治之”策略:
    • 第一步是逐渐将 p 中的样本传输到 q 中的样本,创建中间数据集链
    • 然后估计沿着这条链的连续数据集之间的密度比,与原始比率 p/q 不同,这些“链式比率”可以通过分类准确估计
    • 最后通过伸缩乘积组合链式比率以获得原始密度比 p/q 的估计。

实验证明,TRE 相对于现有的单一比率方法在互信息估计、表示学习和能量基建模等任务中能够显著改善表现。

  • 在互信息估计的背景下,TRE 可以准确估计 30+ nat 的大 MI 值
  • 表示学习实验结果证实,TRE 比一系列现有的单比率基线提供了显着的收益
  • 基于能量的建模背景下,TRE 可以被视为噪声对比估计 的扩展,可以更有效地扩展到高维数据。

二、判别比估计和密度鸿沟问题

假设p和q是有样本的两个密度,满足 p ( x ) > 0 p(x)>0 p(x)>0 q ( x ) > 0 q(x)>0 q(x)>0,可以估计密度比 r ( x ) = p ( x ) / q ( x ) r(x)=p(x)/q(x) r(x)=p(x)/q(x) 来区分 p p p q q q中的样本。分类器的损失假设为广泛使用的逻辑损失:
L ( θ ) = − E x 1 ∼ p log ⁡ ( r ( x 1 ; θ ) 1 + r ( x 1 ; θ ) ) − E x 2 ∼ q log ⁡ ( 1 1 + r ( x 2 ; θ ) ) L(\theta)=-E_{x_1\sim p}\log (\frac{r(x_1;\theta)}{1+r(x_1;\theta)})-E_{x_2\sim q}\log (\frac{1}{1+r(x_2;\theta)}) L(θ)=Ex1plog(1+r(x1;θ)r(x1;θ))Ex2qlog(1+r(x2;θ)1)
其中 r ( x ; θ ) r(x;\theta) r(x;θ)是非负比率估计模型,为了强制非负性, r r r通常表示为无约束函数的指数。

密度鸿沟问题:

  • 可能的误差来源有很多:
    • 使用错误指定的模型
    • 不完善的优化算法
    • 上式中的期望的蒙特卡洛近似所产生的不准确性

由于样本量有限而产生的蒙特卡罗误差实际上足以引发密度鸿沟问题,如果我们使用n=10000的样本量并最小化有限样本损失,最终得到的估计值 θ ^ \hat{\theta} θ^ 就会远离渐近极小值 θ ∗ = a r g m i n L ( θ ) \theta^*=argmin L(\theta) θ=argminL(θ)
L n ( θ ) = ∑ i = 1 n − log ⁡ ( r ( x 1 i ; θ ) 1 + r ( x 1 i ; θ ) ) − log ⁡ ( 1 1 + r ( x 2 i ; θ ) ) , x i i ∼ p , x 2 i ∼ q L^n(\theta)=\sum_{i=1}^n -\log (\frac{r(x_1^i;\theta)}{1+r(x_1^i;\theta)})-\log (\frac{1}{1+r(x_2^i;\theta)}), \ x_i^i\sim p,x_2^i\sim q Ln(θ)=i=1nlog(1+r(x1i;θ)r(x1i;θ))log(1+r(x2i;θ)1), xiip,x2iq

对不同的样本量重复相同的实验,可以凭经验测量该方法的样本效率.对于绘制的情况,我们看到样本量的指数增加只会导致估计值线性下降错误。这一经验结果与理论结果一致,即基于密度比的 KL 散度下限仅对于 nats 数量呈指数级的样本大小是严格的。
在这里插入图片描述

三、伸缩密度比估计

(一)核心思想

为了方便起见,进行如下符号转换: p = = p 0 p == p_0 p==p0 q = = p m q == p_m q==pm ,并通过伸缩乘积扩展比率:
p 0 ( x ) p m ( x ) = p 0 ( x ) p 1 ( x ) p 1 ( x ) p 2 ( x ) . . . p m − 2 ( x ) p m − 1 ( x ) p m − 1 ( x ) p m ( x ) \frac{p_0(x)}{p_m(x)}=\frac{p_0(x)}{p_1(x)}\frac{p_1(x)}{p_2(x)}... \frac{p_{m-2}(x)}{p_{m-1}(x)}\frac{p_{m-1}(x)}{p_m(x)} pm(x)p0(x)=p1(x)p0(x)p2(x)p1(x)...pm1(x)pm2(x)pm(x)pm1(x)

理想情况下, p k p_k pk 能使分类器无法轻松将其与其两个相邻密度区分开。因此,该方法的两个关键组成部分是:

  • 路标创建:将样本 { x 0 1 , . . . , x 0 n } \{x_0^1,...,x_0^n\} {x01,...,x0n} p 0 p_0 p0分布逐渐转换到分布为 p m p_m pm的样本 { x m 1 , . . . , x m n } \{x_m^1,...,x_m^n\} {xm1,...,xmn}。转换的每一步会获得一个新数据集 { x k 1 , . . . , x k n } \{x_k^1,...,x_k^n\} {xk1,...,xkn},每个中间数据集都可以被视为来自隐式分布 p k p_k pk 的样本,可称为路标分布。
  • 桥梁构建:桥梁构建方法涉及学习一组参数化的密度比率,这些比率是在连续的分布对之间估算的。用数学符号表示为 r k ( x ; θ k ) ≈ p k ( x ) p k + 1 ( x ) r_k(x;\theta_k)\approx \frac{p_k(x)}{p_{k+1}(x)} rk(x;θk)pk+1(x)pk(x),其中 k = 0 , . . . , m − 1 k=0,...,m-1 k=0,...,m1,每个 r k r_k rk都是一个非负函数,被称为桥梁。

然后通过桥的乘积给出原始比率的估计:
r ( x ; θ ) = ∏ k = 0 m − 1 r k ( x ; θ k ) ≈ ∏ k = 0 m − 1 p k ( x ) p k + 1 ( x ) = p 0 ( x ) p m ( x ) r(x;\theta)=\prod_{k=0}^{m-1}r_k(x;\theta_k)\approx \prod_{k=0}^{m-1}\frac{p_k(x)}{p_{k+1}(x)}=\frac{p_0(x)}{p_m(x)} r(x;θ)=k=0m1rk(x;θk)k=0m1pk+1(x)pk(x)=pm(x)p0(x)

其中 θ θ θ 是所有 θ k θ_k θk 向量的串联。

(二)路标创建

考虑两种简单的、确定性的路标创建机制:线性组合和维度混合。

线性组合: 给定一个随机对 x 0 ∼ p 0 x_0 \sim p_0 x0p0 x m ∼ p m x_m \sim p_m xmpm,通过以下方式定义第 k k k 个路标:
x k = 1 − α k 2 x 0 + α k x m , k = 0 , . . . , m x_k=\sqrt{1-\alpha_k^2}x_0+\alpha_kx_m,\ k=0,...,m xk=1αk2 x0+αkxm, k=0,...,m
其中 α k α_k αk形成从0到1递增的序列,用于控制 x k x_k xk x 0 x_0 x0的距离。

维度混合: 将两个向量的不同维度子集进行拼接。给定一个长度为 d d d 的向量 x x x ,将其划分为 m m m 个长度为 d / m d/m d/m 的子向量,表示为 x = ( x [ 1 ] , . . . , x [ m ] ) x = (x[1], ..., x[m]) x=(x[1],...,x[m]),每个 x [ i ] x[i] x[i]的长度为 d / m d/m d/m 。使用此表示法下,可以通过以下方式定义第 k 个路标:
x k = ( x m [ 1 ] , . . . , x m [ k ] , x 0 [ k + 1 ] , . . . , x 0 [ m ] ) , k = 0 , . . . , m x_k=(x_m[1],...,x_m[k],x_0[k+1],...,x_0[m]),\ k=0,...,m xk=(xm[1],...,xm[k],x0[k+1],...,x0[m]), k=0,...,m

(三)桥梁构建

每个桥 r k ( x ; θ k ) r_k(x; θ_k) rk(x;θk) 都可以使用逻辑损失函数通过二元分类来学习。因此,解决这个分类任务集合是一个多任务学习 (MTL) 问题, MTL 中的两个关键问题是如何共享参数和如何定义联合目标函数。

参数共享:
将桥 r k ( x ; θ k ) r_k(x; θ_k) rk(x;θk) 的构造分为两个阶段:

  • 共享的隐藏向量 f k ( x ) f_k(x) fk(x)
    • 是一个深度神经网络,其参数在不同的桥梁 r k r_k rk中是共享的
    • 每个桥梁有自己的预激活尺度和偏置,用于每个隐藏单元
  • 头部映射:
    • 将隐藏向量 f k ( x ) f_k(x) fk(x)映射到标量 log ⁡ r k ( x ; θ k ) \log r_k(x;\theta_k) logrk(x;θk)
    • 映射可以是线性的或者二次的,具体的参数化根据实验的具体情况而定

TRE 损失函数:

  • TRE 损失函数由 m 个逻辑损失的平均值给出:
    L T R E ( θ ) = 1 m ∑ k = 0 m − 1 L k ( θ k ) L k ( θ k ) = − E x k ∼ p k log ⁡ ( r k ( x k ; θ k ) 1 + r k ( x k ; θ k ) ) − E x k + 1 ∼ q k + 1 log ⁡ ( 1 1 + r ( x k + 1 ; θ k ) ) L_{TRE}(\theta)=\frac{1}{m}\sum_{k=0}^{m-1}L_k(\theta_k)\\ L_k(\theta_k)=-E_{x_k\sim p_k}\log (\frac{r_k(x_k;\theta_k)}{1+r_k(x_k;\theta_k)})-E_{x_{k+1}\sim q_{k+1}}\log (\frac{1}{1+r(x_{k+1};\theta_k)}) LTRE(θ)=m1k=0m1Lk(θk)Lk(θk)=Exkpklog(1+rk(xk;θk)rk(xk;θk))Exk+1qk+1log(1+r(xk+1;θk)1)

  • 训练中的样本分配与潜在问题:

    • 在训练过程中,每个比率估计器 r k r_k rk会看到不同的样本: r 0 r_0 r0会看到接近真实数据的样本,即从 p 0 p_0 p0 p 1 p_1 p1中采样的样本;最终的比率 r m − 1 r_{m-1} rm1则会看到来自 p m − 1 p_{m-1} pm1 p m p_m pm的样本
    • 这种训练样本分配方式可能会在训练和部署之间造成不匹配的问题。因为在学习之后,我们希望在相同的输入 x x x 上评估所有的比率 r k r_k rk,然而每个比率估计器在训练期间看到的输入分布不同,这可能导致在新测试点上的泛化能力受到影响。

实验结果没有显示这种不匹配是一个问题,这表明尽管在训练期间看到不同的输入,每个比率都能够推广到新的测试点。我们推测,这种泛化是通过参数共享来促进的,这使得每个比率估计器都可以间接地受到来自所有路标分布的样本的影响。尽管如此,对这个泛化问题进行更深入的分析值得进一步开展工作。

(四)TRE应用于互信息估计

两个随机变量 u u u v v v 之间的互信息 (MI) 可以写为:
I ( u , v ) = E p ( u , v ) [ log ⁡ r ( u , v ) ] , r ( u , v ) = p ( u , v ) p ( u ) p ( v ) I(u,v)=E_{p(u,v)}[\log r(u,v)],\ r(u,v)=\frac{p(u,v)}{p(u)p(v)} I(u,v)=Ep(u,v)[logr(u,v)], r(u,v)=p(u)p(v)p(u,v)

从联合密度和边际乘积生成样本:
从联合密度 p ( u , v ) p(u,v) p(u,v)中获取样本 ( u , v ) (u,v) (u,v),通过将数据集中的 v v v 向量打乱,可以从边际乘积 p ( u ) p ( v ) p(u)p(v) p(u)p(v)中获取样本。具体来说,我们保留 u u u 不变,将 v v v 在数据集中进行随机重排。

路标样本的生成:
为了执行TRE(密度比率估计),我们需要生成路标样本:
先从联合密度 p ( u , v ) p(u,v) p(u,v)中获取一个样本 x 0 = ( u , v 0 ) x_0=(u,v_0) x0=(u,v0),从边际乘积 p ( u ) p ( v ) p(u)p(v) p(u)p(v) 中取一个样本 x m = ( u , v m ) x_m=(u,v_m) xm=(u,vm),其中 u u u 保持固定,仅 v v v 不变,然后使用路标构建机制来生成中间路标样本 x k = ( u , v k ) x_k=(u,v_k) xk=(u,vk),其中 k = 0 , . . . , m k=0,...,m k=0,...,m

(五)TRE 应用于基于能量的建模

基于能量的模型 (EBM) 是一个灵活的非负函数参数族 { ϕ ( x ; θ ) } \{\phi(x; θ)\} {ϕ(x;θ)},其中每个函数与概率密度成正比。给定密度为 p ( x ) p(x) p(x) 的数据分布样本,基于能量的建模的目标是找到一个参数 θ ∗ θ^* θ,使得 ϕ ( x ; θ ∗ ) \phi(x; θ^*) ϕ(x;θ)近似于 c p ( x ) cp(x) cp(x) ,其中 c c c为一个正常数。

本文作者考虑 ϕ ( x ; θ ) = r ( x ; θ ) q ( x ) \phi(x; θ)=r(x;\theta)q(x) ϕ(x;θ)=r(x;θ)q(x) q q q是可以从中采样的已知密度(例如高斯流或归一化流),而 r r r 是一个无约束的正函数。给定这个参数化,最优 r r r 简单地等于密度比 p ( x ) / q ( x ) p(x)/q(x) p(x)/q(x),因此学习 EBM 的问题变成了估计密度比的问题,这可以通过 TRE 来解决。由于 TRE 实际上估计比率乘积,因此最终EBM的形式为:
ϕ ( x ; θ ) = ∏ k = 0 m − 1 r k ( x ; θ k ) q ( x ) \phi(x;\theta)=\prod_{k=0}^{m-1}r_k(x;\theta_k)q(x) ϕ(x;θ)=k=0m1rk(x;θk)q(x)

四、实验

(一)1维峰值比率的设置及TRE的表现

实验设置:

  • 使用单参数二次分类器的极端峰值高斯 p (σ = 10−6) 和宽高斯 q (σ = 1) 之间的密度比估计
    在这里插入图片描述
  • 使用二次形式的桥梁,其中 b k b_k bk设置为其真实值,而 w k w_k wk被重新参数化为 e x p ( θ k ) exp(\theta_k) exp(θk)以避免出现不必要的对数尺度。
    log ⁡ r k ( x ) = w k x 2 + b k \log r_k(x)=w_kx^2+b_k logrk(x)=wkx2+bk

实验结果:

  • 样本效率:TRE在使用100个样本时就获得了比单一比率估计使用100,000个样本更好的解决方案,显示出三数量级的改进。
  • 准确性提升:通过样本效率曲线,可以清楚地看到TRE在所有样本规模下都具有显著的准确性提升。
    在这里插入图片描述

(二)高维度比率问题及TRE在大互信息(MI)估计中的表现

实验设置:

  • x ∈ R 2 d x\in R^{2d} xR2d是一个高斯随机变量,具有块对角协方差矩阵。每个块是2x2的矩阵,对角线上为1,非对角线上为0.8,目标是估计这个高斯分布与标准正态分布之间的比率。
  • 使用二次形式桥梁,其中 W k W_k Wk是对称矩阵, b k b_k bk是偏置项
    log ⁡ r k ( x ) = x T W k x + b k \log r_k(x)=x^TW_kx+b_k logrk(x)=xTWkx+bk

实验结果:
单一比率估计在MI值大于20 nats时变得非常不准确,相比之下,TRE能够准确估计高达80 nats的MI值,即使对于320维的变量也是如此。
在这里插入图片描述

(三)SpatialMultiOmniglot 上的 MI 估计和表示学习

实验设置:

  • SpatialMultiOmniglot问题源于Omniglot数据集,其中字符被空间排列成一个 n × n n \times n n×n 的网格,每个网格位置包含来自固定字母表的字符。在此设置中,每个网格位置被视为一个类别随机变量,其实现是相应字母表中的字符。我们形成的网格对 ( u , v ) (u,v) (u,v) 使得对应的网格位置包含按字母顺序排列的字符。根据这种设置,可以计算出真实的MI值。
  • 每个桥梁使用的可分离架构形式如下,其中 g g g f k f_k fk是14层卷积ResNets, f k f_k fk使用了参数共享方案。
    log ⁡ r k ( u , v ) = g ( u ) T W k f k ( v ) \log r_k(u,v)=g(u)^TW_kf_k(v) logrk(u,v)=g(u)TWkfk(v)
  • 路标构建使用按维度混合机制,其中 m = n 2 m=n^2 m=n2,即一次混合一个维度。

实验结果:

  • MI估计(左图):结果显示,只有TRE能够准确估计高达约35 nats的高MI值。
  • 表示学习(右图):随着网格中字符数量的增加(即MI的增加),所有单一密度比率基线的性能显著下降。相比之下,TRE始终获得超过97%的准确率。

在这里插入图片描述

(四)MNIST 上基于能量的建模

能量模型的形式:
ϕ ( x ; θ ) = ∏ k = 0 m − 1 r k ( x ; θ k ) q ( x ) \phi(x;\theta)=\prod_{k=0}^{m-1}r_k(x;\theta_k)q(x) ϕ(x;θ)=k=0m1rk(x;θk)q(x)
其中 q q q是预先指定的“噪声”分布,从中可以进行采样,比率的乘积由TRE给出。

实验设置:

  • 使用MNIST手写数字数据集,每个样本是28x28像素的灰度图像,代表一个手写数字。
  • 考虑三种噪声分布的选择:多变量高斯分布、高斯copula、有耦合层的有理二次神经样条流(RQ-NSF)
  • 每种噪声分布都首先通过最大似然估计拟合到数据上。

TRE中构建路标:
每种噪声分布可以表示为标准正态分布的可逆变换。也就是说每个随机变量可以表示为 F ( z ) F(z) F(z),其中 z ∼ N ( 0 , I ) z\sim N(0,I) zN(0,I)。我们可以在z-空间中通过线性组合方式生成路标,然后映射回x-空间,进而得到:
x k = F ( 1 − α k 2 F − 1 ( x 0 ) + α k F − 1 ( x m ) ) x_k=F(\sqrt{1-\alpha_k^2}F^{-1}(x_0)+\alpha_kF^{-1}(x_m)) xk=F(1αk2 F1(x0)+αkF1(xm))

能量基准模型的构建:
每个桥梁 r k ( x ) r_k(x) rk(x)的形式为:
log ⁡ r k ( x ) = − f k ( x ) T W k f k ( x ) − f k ( x ) T b k − c k \log r_k(x)=-f_k(x)^TW_kf_k(x)-f_k(x)^Tb_k-c_k logrk(x)=fk(x)TWkfk(x)fk(x)Tbkck
其中 f k ( x ) f_k(x) fk(x)是一个18层卷积ResNet, W k W_k Wk被约束为正定矩阵。这个约束确保了EBM的对数密度有一个上限。

  • 通过表格中的估计对数似然来定量评估学习到的EBM模型。
    在这里插入图片描述
  • 通过下图中从模型中随机采样的样本来进行定性评估
    在这里插入图片描述
    从上述结果可以看出,对于简单的噪声分布选择,单一比率估计在高维情况下表现不佳,只有在使用复杂的神经密度估计器(如RQ-NSF)时表现良好。相比之下,TRE在所有噪声选择中都显示出改进,这通过近似对数似然和样本的视觉保真度来衡量。特别是在高斯噪声分布下,TRE的改进尤为显著:每维比特数(bits per dimension, bpd)大约降低了0.66,对应着大约360 nats的改进。此外,生成的样本显著更加连贯,并且在视觉保真度上比RQ-NSF样本要好。

相关文章:

【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation

文章目录 一、文章概览(一)问题提出(二)文章工作 二、判别比估计和密度鸿沟问题三、伸缩密度比估计(一)核心思想(二)路标创建(三)桥梁构建(四&…...

MongoDB数据库 MQL (MongoDB Query Language)语句大全

基本命令 连接到 MongoDB mongo显示所有数据库 show dbs选择(或创建)数据库 db集合操作 显示当前数据库中的所有集合 show collections创建集合 db.createCollection("myCollection")删除集合 db.myCollection.drop()文档操作 插入文…...

Java代码基础算法练习-计算平均身高-2024.07.02

任务描述: n个同学站成一排,求它们的平均身高 解决思路: 输入的学生人数为 for 循环次数,循环中每输入一个值就添加在总数中,循环结束总数除以对应的学生人数得到平均身高 代码示例: package a4_2024_07;…...

BIOS设置与系统分区

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 一BIOS 1破解密码的前提 2B…...

linux的安装程序 与 文件 相关的命令

软件安装卸载命令 软件包介绍软件包命名格式dpkg命令apt-get命令apt-get命令 压缩和解压命令 压缩文件后缀 压缩命令打包和解包命令 tar命令 文件分割命令 split命令 文件操作相关命令 cat命令head命令tail命令more命令less命令管道命令wc 命令grep 命令find 命令cut 命令sort …...

SAP_ABAP相关日语单词

基本概念 1. プログラミング言語 (プログラミングげんご, Puroguramingu gengo) - 编程语言 2. 開発 (かいはつ, Kaihatsu) - 开发 3. システム (システム, Shisutemu) - 系统 4. モジュール (モジュール, Mojūru) - 模块 5. トランザクションコード (トランザクションコード,…...

Python中的除法操作详解

在Python编程中,除法是一个基础但极其重要的算术操作。Python提供了多种除法运算方式,以适应不同的计算需求。以下是对Python中除法操作的全面介绍,包括示例代码。 1. 普通除法 / 普通除法使用/运算符,它返回一个浮点数结果&…...

第1章 人工智能的基础概念与应用导论

亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…...

jenkins api部署时,一直提示pending-Finished waiting

问题: 调用jenkins api部署时,一直提示pending-Finished waiting 解决方案: 这个问题困扰了很久,一直没有思路,后面看到调用jenkinsAPI本身会出现一段提示,pending in the quiet period,通过搜…...

AI在创造还是毁掉音乐之论文

AI在创造还是毁掉音乐? 简介:最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要…...

C++ STL容器:序列式容器-数组string,vector,array,bitset

摘要: CC STL(Standard Template Library,标准模板库)在C编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C程序的开发效率和代码质量。 STL 容器 分为 2 大类 …...

ElementUI样式优化:el-input修改样式、el-table 修改表头样式、斑马格样式、修改滚动条样式、

效果图: 1、改变日期时间组件的字体颜色背景 .form-class ::v-deep .el-date-editor { border: 1px solid #326AFF; background: #04308D !important; } .form-class ::v-deep .el-date-editor.el-input__wrapper { box-shadow: 0 0 0 0px #326AFF inset; } // 输入…...

大数据面试题之Spark(6)

Spark输出文件的个数,如何合并小文件? Spark的driver是怎么驱动作业流程的? Spark SQL的劣势? 介绍下Spark Streaming和Structed Streaming Spark为什么比Hadoop速度快? DAG划分Spark源码实现? Spark Streaming的双流join的过程,怎么做的? …...

SpringSecurity中文文档(Servlet Anonymous Authentication)

Anonymous Authentication Overview 通常认为采用“默认拒绝”立场是良好的安全实践,您明确指定允许的内容并拒绝其他所有内容。定义未经身份验证的用户可以访问的内容是类似的情况,特别是对于 Web 应用程序。许多网站要求用户必须经过身份验证才能访问…...

【Spring Boot 事务管理】

Spring Boot 事务管理 一、Spring Boot中的事务管理1.声明式事务管理Transactional注解基本使用配置选项 2.编程式事务管理TransactionTemplatePlatformTransactionManager 二、Transactional注解深入1.基本使用基本属性 2.传播行为3.隔离级别4.事务超时设置5.回滚规则 三、事务…...

【C++】C++指针在线程中调用与受保护内存空间读取方法

引言 在C的多线程编程中,正确地管理内存和同步访问是确保程序稳定性和安全性的关键。特别是当涉及到指针在线程中的调用时,对受保护内存空间的访问必须谨慎处理,以防止数据竞争、死锁和内存损坏等问题。本文将详细探讨C指针在线程中调用时如何…...

安全隔离上网的有效途径:沙箱

在数字化浪潮日益汹涌的今天,网络安全成为了不可忽视的重要议题。沙箱技术作为一种高效的隔离机制,为企业和个人提供了一种在享受网络便利的同时,保障系统安全的解决方案。本文旨在深入探讨沙箱技术如何做到隔离上网,从而为用户提…...

jenkins下后台运行链接Jenkins服务脚本方法

为了编写一个用于在后台运行 Jenkins agent 的批处理脚本,你可以使用 start 命令来启动 Java 进程并将其设置为在后台运行。以下是一个示例批处理脚本 run_agent.bat: bat echo off setlocalREM Set the path to the Jenkins agent JAR file set AGENT…...

宠物空气净化器哪个品牌性价比高?宠物空气净器Top3品牌推荐

养猫确实给家庭带来了无尽的欢乐,但猫毛无处不在的问题确实让不少猫主人感到头疼。不论是长毛猫还是短毛猫,它们掉落的浮毛飘浮在空气中,不仅影响家居环境的整洁度,还可能成为过敏的源头。因此,如何高效地处理这些猫浮…...

苏州大厂面试题JAVA 面试集

基础知识1、强引用、软引用、弱引用、幻象引用有什么区别?(java基础) 答案参考:https://time.geekbang.org/column/article/6970 2、 对比Hashtable、HashMap、TreeMap有什么不同?(数据结构) 答案参考:https://time.geekbang.org/column/article/8053 3、一个线程调用两次…...

数据库取出来的日期格式是数组格式,序列化日期格式

序列化前,如图所示: 解决方式,序列化日期(localdatetime)格式 步骤一、添加序列化类 package com.abliner.test.common.configure;import com.alibaba.fastjson.serializer.JSONSerializer; import com.alibaba.fas…...

【Android】创建一个可以在屏幕上拖动的悬浮窗

项目需求 在界面上创建一个悬浮窗&#xff0c;可以自由的移动这个悬浮窗 需求解决 1.添加权限 <uses-permission android:name"android.permission.SYSTEM_ALERT_WINDOW"/>2.请求权限 从 Android 6.0 (API 23) 开始&#xff0c;应用需要动态请求显示悬浮窗…...

SPI NAND、SD NAND和eMMC对比—MK米客方德

目录 1. 容量: 2.封装类型&#xff1a; 3.速度: 4.性能: 5.寿命: 6. 使用方式: 7. 其他优缺点: 8.常见应用场景: 1. 容量: SPI NAND通常提供从几百MB到几GB的存储容量。 SD NAND的容量覆盖范围比SPI NAND更广&#xff0c;从几GB到几十GB不等。 eMMC的容量范围更大&a…...

“深入解析:YUM仓库、RPM包与源码编译——Linux软件安装方式全面对比“

目录 YUM 仓库安装 概念&#xff1a; 优点&#xff1a; 缺点&#xff1a; RPM 包安装 概念&#xff1a; 优点&#xff1a; 缺点&#xff1a; 源码编译安装 概念&#xff1a; 优点&#xff1a; 缺点&#xff1a; 三者区别 YUM 仓库安装 概念&#xff1a; YUM&…...

中电金信:银行业私有云何去何从

2009年&#xff0c;云计算开始从概念走向实践。在这一年&#xff0c;Gartner在预测2010十大发展趋势中&#xff0c;将云计算列在榜首。在这之后&#xff0c;谷歌、亚马逊、IBM等科技巨头纷纷加码对云计算的研发投入。2010年正式迎来云计算时代&#xff0c;这一年也被定为“云元…...

Adobe Acrobat Pro或者Adobe Acrobat Reader取消多标签页显示,设置打开一个pdf文件对应一个窗口。

Windows系统&#xff1a;Adobe Acrobat Pro或者Adobe Acrobat Reader首选项-一般-取消在同一窗口的新标签中打开文档&#xff08;需要重启&#xff09;的对勾&#xff0c;点击确定&#xff0c;彻底关闭后重启&#xff0c;这样打开的每一个PDF文件对应的是一个窗口&#xff0c;并…...

从0开始学习pyspark--pyspark的数据读取[第4节]

在PySpark中&#xff0c;读取文件型数据是一个常见的操作&#xff0c;Spark支持多种数据格式&#xff0c;如CSV、JSON、Parquet、Avro等。以下是一些常用的方法来读取不同格式的文件数据。 读取文本型数据 读取CSV文件: 使用spark.read.csv方法读取CSV文件&#xff0c;可以通…...

极速升级:MacOS系统中Pip源的切换指南

极速升级&#xff1a;MacOS系统中Pip源的切换指南 在MacOS系统中&#xff0c;Python的包管理工具Pip是我们管理和安装Python库的得力助手。然而&#xff0c;默认的Pip源在国外&#xff0c;对于国内用户来说&#xff0c;访问速度可能较慢。因此&#xff0c;更换Pip源以提高下载…...

服务器的分类,主流服务器的应用场景

一、服务器分类 服务器可以按应用层次、体系架构、用途、外形等进行分类。以下是详细说明&#xff1a; 按应用层次分类 入门级服务器&#xff1a;这些服务器一般用于小型企业或部门的简单任务&#xff0c;如文件共享和打印服务。工作组级服务器&#xff1a;适用于中小型企业&…...

Objects and Classes (对象和类)

Objects and Classes [对象和类] 1. Procedural and Object-Oriented Programming (过程性编程和面向对象编程)2. Abstraction and Classes (抽象和类)2.1. Classes in C (C 中的类)2.2. Implementing Class Member Functions (实现类成员函数)2.3. Using Classes (使用类) Ref…...

从单点到全景:视频汇聚/安防监控EasyCVR全景视频监控技术的演进之路

在当今日新月异的科技浪潮中&#xff0c;安防监控领域的技术发展日新月异&#xff0c;全景摄像机便是这一领域的杰出代表。它以其独特的360度无死角监控能力&#xff0c;为各行各业提供了前所未有的安全保障&#xff0c;成为现代安防体系中的重要组成部分。 一、全景摄像机的技…...

Java学习 -Golang开发环境+目录结构+编译+部署

开发环境 环境变量设置 GOROOT 指定 golang sdk 的安装目录GOPATH golang 工作目录&#xff0c;项目的源码放在这个目录下PATH 将 GOROOT/bin 放在 Path 路径下&#xff0c;方便命令行能直接运行 golang的命令行工具项目目录结构 |--project // 位于G…...

Redis 典型应用——缓存(缓存预热,穿透,雪崩,击穿)

一、缓存 缓存是计算机中一个很经典的概念&#xff0c;核心思路是把一些常用的数据放到访问速度更快的地方&#xff0c;方便随时读取&#xff1b; 但对于计算机硬件来说&#xff0c;往往访问速度越快的设备&#xff0c;成本越高&#xff0c;存储空间越小&#xff0c;缓存是更…...

Sharding-JDBC分库分表的基本使用

前言 传统的小型应用通常一个项目一个数据库&#xff0c;单表的数据量在百万以内&#xff0c;对于数据库的操作不会成为系统性能的瓶颈。但是对于互联网应用&#xff0c;单表的数据量动辄上千万、上亿&#xff0c;此时通过数据库优化、索引优化等手段&#xff0c;对数据库操作…...

7月信用卡新规下:信用卡欠的钱不用还了?

说到信用卡&#xff0c;现在基本上人手一张&#xff0c;大家都有使用过。但你知道吗&#xff0c;使用信用卡不是这么简单容易的事&#xff0c;比如会对你的贷款有影响&#xff0c;透支不还逾期对生活的影响&#xff0c;信用卡新规对持卡人和银行那边的影响。 一、只要不逾期&am…...

坑——python的redis库的decode_responses设置

python的redis库查询返回的值默认是返回字节串&#xff0c;可以在redis.Redis()方法中通过设置decode_responses参数&#xff0c;让返回值直接是字符串&#xff1b; 查询返回字节串是因为Redis()方法中decode_responses默认值是False&#xff1a; 设置decode_responses为True就…...

从项目中学习Bus-Off的快慢恢复

0 前言 说到Bus-Off&#xff0c;大家应该都不陌生&#xff0c;使用VH6501干扰仪进行测试的文章在网上数不胜数&#xff0c;但是一般大家都是教怎么去干扰&#xff0c;但是说如何去看快慢恢复以及对快慢恢复做出解释比较少&#xff0c;因此本文以实践的视角来讲解Bus-Off的快慢恢…...

视频参考帧和重构帧复用

1、 视频编码中的参考帧和重构帧 从下图的编码框架可以看出&#xff0c;每编码一帧需要先使用当前帧CU(n)减去当前帧的参考帧CU&#xff08;n&#xff09;得到残差。同时&#xff0c;需要将当前帧的重构帧CU*&#xff08;n&#xff09;输出&#xff0c;然后再读取重构帧进行预测…...

js修改scss变量

style.scss $color : var(--color,#ccc); // 默认值 #ccc .color{background: $color; } 定义了一个scss变量&#xff08;$color&#xff09;&#xff0c;用普通的css变量&#xff08;--color&#xff09;给他赋值&#xff0c;这里需要一个默认值&#xff0c;此时css变量(--co…...

【中霖教育怎么样】报考注册会计师有年龄限制吗?

【中霖教育怎么样】报考注册会计师有年龄限制吗? 申请参加注册会计师考试有没有年龄约束? 对于注册会计师的考试&#xff0c;不存在具体的年龄上限。而且该考试的入学门栏相对低&#xff0c;主要对考生的年龄下限规定。 在专业阶段&#xff0c;注册会计师考试要求考生具备…...

PHP验证日本手机电话号码

首先&#xff0c;您需要了解手机号码的规格。 根据 &#xff0c;手机和PHS&#xff08;个人手持电话系统&#xff09;可以理解为以“070”、“080”和“090”开头的11位数字。 此外&#xff0c;以“050”开头的11位特定IP电话号码也将包含在该目标中。 关于以“060”开头的F…...

Qt 配置ASan

Qt 配置ASan 文章目录 Qt 配置ASan摘要关于ASan&#xff08;AddressSanitizer&#xff09;在Qt中配置 ASan1. 安装必要的工具2. 修改项目的 .pro 文件3. 重新构建项目4. 运行应用程序5. 分析错误报告示例注意事项 关键字&#xff1a; Qt、 ASan、 AddressSanitizer 、 GCC …...

MySQL常用操作命令大全

文章目录 一、连接与断开数据库1.1 连接数据库1.2 选择数据库1.3 断开数据库 二、数据库操作2.1 创建数据库2.2 查看数据库列表2.3 删除数据库 三、表操作3.1 创建表3.2 查看表结构3.3 修改表结构3.3.1 添加列3.3.2 删除列3.3.3 修改列数据类型 3.4 删除表 四、数据操作4.1 插入…...

有人物联的串口服务器USR-TCP232-410S基本测试通信和使用方案(485串口和232串口)

1.将 410S(USR-TCP232-410S&#xff0c;简称 410S 下同)的串口通过串口线(或USB 转串口线)与计算机相连接&#xff0c;通过网线将 410S 的网口 PC 的网口相连接&#xff0c;检测硬件连接无错误后&#xff0c;接入我们配送的电源适配器&#xff0c;给 410S 供电。观察指示灯状态…...

二维码登录的原理

二维码登录的原理: 二维码登录是一种基于移动设备和网络技术的便捷登录方式。其原理主要依赖于以下几个关键要素: 随机生成:服务器端随机生成一个具有唯一性和时效性的二维码。编码信息:这个二维码包含了特定的登录信息,例如用户标识、会话标识、时间戳等。扫描识别:用户…...

归并排序详解(递归与非递归)

归并排序是建立在归并操作上的一种有效算法。该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序&#xff0c;再使子序列间断有序。若将两个有序表合并成一个有序表&#xff0c;成为二路归并。 一…...

计算机系统基础(二)

1.数值数据的表示 为什么采用二进制&#xff1f; 二进制只有两种基本状态&#xff0c;两个物理器件就可以表示0和1二进制的编码、技术、运算规则都很简单0和1与逻辑命题的真假对应&#xff0c;方便通过逻辑门电路实现算术运算 数值数据表示的三要素 进位记数制&#xff08;十…...

vue根据文字长短展示跑马灯效果

介绍 为大家介绍一个我编写的vue组件 auto-marquee &#xff0c;他可以根据要展示文本是否超出展示区域&#xff0c;来判断是否使用跑马灯效果&#xff0c;效果图如下所示 假设要展示区域的宽度为500px&#xff0c;当要展示文本的长度小于500px时&#xff0c;只会展示文本&…...

leetcode-21-回溯-全排列及其去重

一、[46]全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used数组&#xff0c;其实就是记录此时path里都有哪些元素…...

如何根据两个关键字查询报错日志的位置

1、查找两个关键字&#xff08;无顺序要求&#xff09; 如果你不关心这两个关键字出现的顺序&#xff0c;你可以使用egrep&#xff08;等同于grep -E&#xff09;或grep的-E选项来启用扩展正则表达式&#xff0c;并使用管道&#xff08;|&#xff09;来组合两个搜索模式。 gr…...

步进电机改伺服电机

步进电机&#xff1a; 42&#xff1a;轴径5mm 57&#xff1a;轴径8mm 86&#xff1a;轴径14mm 【86CME120闭环】// 12牛米 伺服电机&#xff1a; 40&#xff1a; 60&#xff1a; 80&#xff1a; 86&#xff1a; ECMA——C 1 0910 R S 4.25A 轴径…...

帝国CMS(EmpireCMS)漏洞复现

简介 《帝国网站管理系统》英文译为Empire CMS&#xff0c;简称Ecms&#xff0c;它是基于B/S结构&#xff0c;且功能强大而帝国CMS-logo易用的网站管理系统。 帝国CMS官网&#xff1a;http://www.phome.net/ 参考相关漏洞分析文章&#xff0c;加上更详细的渗透测试过程。 参考…...

2024攻防演练:亚信安全新一代WAF,关键时刻守护先锋

实网攻防 网络安全如同一面坚固的盾牌&#xff0c;保护着我们的信息资产免受无孔不入的威胁。而其中&#xff0c;WAF就像网络安全的守门员&#xff0c;关键时刻挺身而出&#xff0c;为您的企业筑起一道坚实的防线。 攻防不对等 防守方实时应答压力山大 在攻防对抗中&#xf…...

笔记本电脑部署VMware ESXi 6.0系统

正文共&#xff1a;888 字 18 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面我们介绍了在笔记本上安装Windows 11操作系统&#xff08;Windows 11升级不了&#xff1f;但Win10就要停服了啊&#xff01;来&#xff0c;我教你&#xff01;&#xff09;&#xff0c;也介绍了…...

深入分析 Android HTTPS 证书管理策略:设置本地证书、使用系统默认证书和忽略证书

深入分析 Android HTTPS 证书管理策略&#xff1a;设置本地证书、使用系统默认证书和忽略证书 在 Android 应用开发中&#xff0c;确保 HTTPS 请求的安全性至关重要。为实现这一目标&#xff0c;我们可以通过不同的方式来管理 HTTPS 证书。本文将详细探讨三种常见的证书管理策…...

3d里面减小模型大小的键是什么意思?---模大狮模型网

在3D建模和动画制作中&#xff0c;调整模型的大小是常见的操作&#xff0c;但这并不仅仅意味着简单地改变模型的尺寸。特别是当我们谈论到"减小模型大小的键"时&#xff0c;涉及到更深层次的技术和工作流程。让我们深入探讨这一话题&#xff0c;理解在3D环境中如何有…...

gif帧数修改怎么操作?一键掌握GIF帧数修改技巧!

gif帧数修改怎么操作&#xff1f;在数字化信息爆炸的时代&#xff0c;GIF动图因其生动有趣的特性而备受广大网友喜爱。然而&#xff0c;很多时候我们可能会遇到GIF动图帧数过多或过少&#xff0c;导致动画效果不尽如人意的情况。那么&#xff0c;如何对GIF动图的帧数进行修改呢…...

戴尔台式机win10家庭版操作系统,插上耳机之后听不到声音。(成功解决)

问题描述 戴尔台式机win10家庭版操作系统&#xff0c;外放有声音&#xff0c;插上耳机之后只有滋啦滋啦的声音&#xff0c;听不到音乐&#xff0c;耳机无损坏&#xff08;在其他台式机和手机上都能听到声音&#xff09;。尝试解决办法如下。 尝试解决 尝试一&#xff1a;更新…...

Hono 框架使用经验谈

Hono&#x1f525;是一个小型、快速并开源的 Serverless Web 框架&#xff0c;用 TypeScript 写就。它适用于任何JavaScript运行时&#xff1a;Cloudflare Workers&#xff0c;Fastly ComputeEdge&#xff0c;Deno&#xff0c;Bun&#xff0c;Vercel&#xff0c;Netlify&#x…...

【WP|3】WordPress 高级技巧与优化方法

在前两篇文章中&#xff0c;我们深入解析了 WordPress 的常用和高级函数。本篇文章将探讨一些高级技巧和优化方法&#xff0c;这些技巧和方法不仅能提升网站的性能&#xff0c;还能增强其功能性和安全性。这些策略对于那些希望将其 WordPress 网站提升到一个新水平的开发者来说…...

VPN的详细理解

VPN&#xff08;Virtual Private Network&#xff0c;虚拟私人网络&#xff09;是一种在公共网络上建立加密通道的技术&#xff0c;通过这种技术可以使远程用户访问公司内部网络资源时&#xff0c;实现安全的连接和数据传输。以下是对VPN的详细介绍&#xff1a; 选择代理浏览器…...

亚马逊自养号与机刷有何区别?

在亚马逊这一全球电商巨头中&#xff0c;买家评价的重要性如同指南针般引领着消费者的购买决策。在购买前&#xff0c;消费者们往往会驻足查看产品的评论&#xff0c;仔细比较不同产品的买家口碑&#xff0c;以确保自己的选择既明智又满意。因此&#xff0c;测评成为了各大电商…...