论文笔记 A theory of learning from different domains

domain adaptation 领域理论方向的重要论文. 这篇笔记主要是推导文章中的定理, 还有分析定理的直观解释. 笔记中的章节号与论文中的保持一致.

1. Introduction

domain adaptation 的设定介绍:
有两个域, source domain 与 target domain.
source domain: 一组从 source dist. 采样的带有标签的数据.
target domain: 一组从 target dist. 采样的无标签的数据, 或者有很少的数据带标签.
其中 source dist. ≠ \neq = target dist.
目标: 学习一个能在 target domian 上表现得好的模型.
(第二节跳过)

3. A rigorous model of domain adaptation

首先关注二分类问题. 这节主要是给出了本文中用到的一些notations.

  • < D S , f S > <\mathcal{D}_S, f_S> <DS,fS> 表示 source domain, 前者是 source dist, 后者是 source dist. 上的 ground truth function.
  • < D T , f T > <\mathcal{D}_T, f_T> <DT,fT> 表示 target domain, 同上.
  • h : X → { 0 , 1 } h:\mathcal{X}\rightarrow \{0,1\} h:X{0,1} 表示一个从输入空间映射到二分类集合的 hypothesis.
  • 在分布 D S \mathcal{D}_S DS 上, 两个 hypotheses h h h f f f 的平均差异定义为:
    ϵ S ( h , f ) = E x ∼ D S [ ∣ h ( x ) − f ( x ) ∣ ] \epsilon_S(h,f)=\mathbf{E}_{x\sim \mathcal{D}_S}[|h(x)-f(x)|] ϵS(h,f)=ExDS[h(x)f(x)]
    由于 h h h f f f 的输出是 0 或 1, 所以只有它们输出不同时, 期望中间的部分为 1, 所以上式为两个hypotheses之间的平均差异(或 disagreements).
  • source error of h h h: ϵ S ( h ) = ϵ S ( h , f S ) \epsilon_S(h)=\epsilon_S(h,f_S) ϵS(h)=ϵS(h,fS), 也就是 h h h 在source domain 上的错误率 (generalization error).
  • empirical source error of h h h: ϵ ^ S ( h ) \hat{\epsilon}_S(h) ϵ^S(h), 也就是 h h h 在source domain 上的经验错误率 (empirical error).
  • 相同的, 在 target domain 上的 notations: ϵ T ( h , f ) , ϵ T ( h ) , \epsilon_T(h,f),\epsilon_T(h), ϵT(h,f),ϵT(h), ϵ ^ T ( h ) \hat{\epsilon}_T(h) ϵ^T(h).

4. A bound relating the source and target error

现在, 想要分析一个在 source domian 上训练的分类器在 target domian 上的 generalization error (即 ϵ T ( h ) \epsilon_T(h) ϵT(h)) 是多少. 这个值肯定无法计算出来, 所以最直观的想法就是用 source error (即 ϵ S ( h ) \epsilon_S(h) ϵS(h)) 和 两个域之间的差异来 bound target error.
那么用什么来表示两个域之间的差异呢? 文章首先用 L 1 L^1 L1 Divergence 表示这个差异, 并给出了用 L 1 L^1 L1 Divergence 的 bound.
但是 L 1 L^1 L1 Divergence 有很多缺点, 所以作者提出了第二种方法来表示域之间的差异 – H \mathcal{H} H Divergence, 为了给出相应的 bound, 又将 H \mathcal{H} H Divergence 扩展成 H Δ H \mathcal{H}\Delta\mathcal{H} HΔH Divergence.

a) L 1 L^1 L1 Divergence

也叫 Variation Divergence, Variation Distance, TV Distance.
d 1 ( D , D ′ ) = 2 sup ⁡ B ∈ B ∣ Pr ⁡ D [ B ] − Pr ⁡ D ′ [ B ] ∣ d_1(\mathcal{D}, \mathcal{D}')=2\sup_{B\in\mathcal{B}}|\Pr_\mathcal{D}[B]-\Pr_{\mathcal{D}'}[B]| d1(D,D)=2BBsupDPr[B]DPr[B]
其中 B \mathcal{B} B 是在 D \mathcal{D} D D ′ \mathcal{D}' D 上所有可测子集的集合.
用两个很简单的一维分布来表示一下:
L1 divergence
上面两个: B = [ x 1 , x 3 ] ∨ [ x 2 , x 4 ] = [ x 1 , x 4 ] \mathcal{B}=[x_1,x_3] \vee [x_2,x_4]=[x_1,x_4] B=[x1,x3][x2,x4]=[x1,x4]. 红色区域和蓝色区域的面积是相等的, 因为面积就是概率. 很明显, 对于这两种情况而言, d 1 ( D , D ′ ) d_1(\mathcal{D},\mathcal{D}') d1(D,D) 就等于2倍蓝色区域面积=2倍红色面积=蓝色面积+红色面积.
下面两个: 两个分布没有重合区域, d 1 ( D , D ′ ) d_1(\mathcal{D},\mathcal{D}') d1(D,D) 等于2倍的 D \mathcal{D} D 的面积=2倍的 D ′ \mathcal{D}' D 的面积=2. 这里很容易发现, 无论 D \mathcal{D} D D ′ \mathcal{D}' D 相隔多远, 差异多大, 只要它们没有重合部分, d 1 ( D , D ′ ) d_1(\mathcal{D},\mathcal{D}') d1(D,D) 永远等于2.
从上图还能得出一个公式:
d 1 ( D , D ′ ) = ∣ ∣ D − D ′ ∣ ∣ 1 = ∫ ∣ D ( x ) − D ′ ( x ) ∣ d x d_1(\mathcal{D},\mathcal{D'}) = ||\mathcal{D}-\mathcal{D'}||_1=\int |\mathcal{D}(x)-\mathcal{D'}(x)| dx d1(D,D)=∣∣DD1=D(x)D(x)dx
其中 D ( x ) \mathcal{D}(x) D(x) 表示 D \mathcal{D} D 的 pdf.

Thm1. 对于任意一个 hypothesis h h h,
ϵ T ( h ) ≤ ϵ S ( h ) + d 1 ( D S , D T ) + min ⁡ { E D S [ ∣ f S ( x ) − f T ( x ) ∣ ] , E D T [ ∣ f S ( x ) − f T ( x ) ∣ ] } \epsilon_T(h)\leq \epsilon_S(h) + d_1(\mathcal{D}_S, \mathcal{D}_T)+\min \{\mathbf{E}_{\mathcal{D}_S}[|f_S(x)-f_T(x)|],\mathbf{E}_{\mathcal{D}_T}[|f_S(x)-f_T(x)|]\} ϵT(h)ϵS(h)+d1(DS,DT)+min{EDS[fS(x)fT(x)],EDT[fS(x)fT(x)]}
证明:
在这里插入图片描述
上图是文章给的证明, 前四行很好理解, 解释下最后一行:
∫ ∣ ϕ S ( x ) − ϕ T ( x ) ∣ ∣ h ( x ) − f T ( x ) ∣ d x ≤ ∫ ∣ ϕ S ( x ) − ϕ T ( x ) ∣ d x = d 1 ( D , D ′ ) \int |\phi_S(x)-\phi_T(x)| |h(x)-f_T(x)|dx \leq \int |\phi_S(x)-\phi_T(x)| dx=d_1(\mathcal{D},\mathcal{D'}) ϕS(x)ϕT(x)∣∣h(x)fT(x)dxϕS(x)ϕT(x)dx=d1(D,D)
其中 ∣ h ( x ) − f T ( x ) ∣ ≤ 1 |h(x)-f_T(x)| \leq 1 h(x)fT(x)1, ∫ ∣ ϕ S ( x ) − ϕ T ( x ) ∣ d x = d 1 ( D , D ′ ) \int |\phi_S(x)-\phi_T(x)| dx=d_1(\mathcal{D},\mathcal{D'}) ϕS(x)ϕT(x)dx=d1(D,D) 在前面讲过. 这里再一次体现了前面提到的缺点, 只要不同, 无论 h , f T h,f_T h,fT 有多远 ∣ h ( x ) − f T ( x ) ∣ |h(x)-f_T(x)| h(x)fT(x)都等于1.
L 1 L^1 L1 Divergence 来做 bound 有以下两个缺点: 1) 无法从有限的样本来估计; 2) bound 很松.

b) H \mathcal{H} H Divergence

Def. 1 给定在输入空间 X \mathcal{X} X 上的两个概率分布 D \mathcal{D} D D ′ \mathcal{D'} D, H \mathcal{H} H 表示 X \mathcal{X} X上的hypothesis space, I ( h ) I(h) I(h) 为指示函数(即 x ∈ I ( h ) ⇔ h ( x ) = 1 x\in I(h)\Leftrightarrow h(x)=1 xI(h)h(x)=1). 那么, D \mathcal{D} D D ′ \mathcal{D'} D 之间的 H \mathcal{H} H divergence 为:
d H ( D , D ′ ) = 2 sup ⁡ h ∈ H ∣ Pr D [ I ( h ) ] − Pr D ′ [ I ( h ) ] ∣ d_{\mathcal{H}}(\mathcal{D},\mathcal{D}')=2\sup_{h\in\mathcal{H}}|\text{Pr}_\mathcal{D}[I(h)]-\text{Pr}_{\mathcal{D}'}[I(h)]| dH(D,D)=2hHsupPrD[I(h)]PrD[I(h)]
I ( h ) I(h) I(h) 可以理解为 h h h 将输入空间分类成 1 1 1 的那部分集合, i.e. I ( h ) = { x ∣ h ( x ) = 1 } I(h)=\{x|h(x)=1\} I(h)={xh(x)=1}. 所以 d H d_{\mathcal{H}} dH 就是 I ( h ) I(h) I(h) 在分布 D \mathcal{D} D D ′ \mathcal{D}' D 上的概率之差, 其中注意 sup ⁡ \sup sup over all h ∈ H h \in \mathcal{H} hH, 也就是选取令概率之差最大的那个假设 h h h.
H \mathcal{H} H Divergence 的好处是: 1) 可以使用有限的样本来估计, 也就是 d H d_{\mathcal{H}} dH 可以用 d ^ H \hat{d}_{\mathcal{H}} d^H 来近似. 文章给出了 Lemma 2 和 Lemma 1, 分别为 d ^ H \hat{d}_{\mathcal{H}} d^H 的计算公式和使用 VC dimension 作为复杂度计算 d H d_{\mathcal{H}} dH d ^ H \hat{d}_{\mathcal{H}} d^H 的 bound . 2) d H ≤ d 1 d_{\mathcal{H}} \leq d_{1} dHd1.
这里 empirical 版本的计算与估计并不重要, 使用不同的复杂度可以得到不同的 bound 方式, 所以跳过 Lemma 1,2.

c) H Δ H \mathcal{H}\Delta\mathcal{H} HΔH Divergence

首先给出一个定义:
Def. 2: h ∗ h^* h 为 ideal joint hypothesis, 它最小化了源域和目标域的联合误差(combined error). 用 λ \lambda λ 表示相对应的combined error:

h ∗ = arg ⁡ min ⁡ h ∈ H { ϵ S ( h ) + ϵ T ( h ) } λ = ϵ S ( h ∗ ) + ϵ T ( h ∗ ) h^* = \arg\min_{h\in\mathcal{H}} \{\epsilon_S(h)+\epsilon_T(h)\}\\ \lambda =\epsilon_S(h^*)+\epsilon_T(h^*) h=arghHmin{ϵS(h)+ϵT(h)}λ=ϵS(h)+ϵT(h)
然后给出一个新的 hypothesis space: H Δ H \mathcal{H}\Delta\mathcal{H} HΔH
Def.3 对于一个 hypothesis space H \mathcal{H} H, 它相对应的 H Δ H \mathcal{H}\Delta\mathcal{H} HΔH 空间为:
g ∈ H Δ H ⇔ g ( x ) = h ( x ) ⊕ h ′ ( x ) for some  h , h ′ ∈ H g \in \mathcal{H}\Delta\mathcal{H} \Leftrightarrow g(x)=h(x)\oplus h'(x) \text{ for some } h, h'\in\mathcal{H} gHΔHg(x)=h(x)h(x) for some h,hH
举个一维输入空间的简单例子: 考虑这样的一个 hypothesis class:
H : = { h α : α ∈ R } . h α ( x ) = { 1 , α ≥ α 0 , α < α \mathcal{H}:=\{h_\alpha: \alpha\in \mathbb{R}\}.\\ h_\alpha(x)=\left\{\begin{matrix} 1, & \alpha \geq \alpha \\ 0, & \alpha < \alpha \end{matrix}\right. H:={hα:αR}.hα(x)={1,0,ααα<α
那么, 它相应的 H Δ H \mathcal{H}\Delta\mathcal{H} HΔH 空间就是:
H Δ H = { g α 1 , α 2 : α 1 , α 2 ∈ R } . g α 1 , α 2 = { 1 , x ∈ ( α 1 , α 2 ) 0 , o . w . \mathcal{H}\Delta\mathcal{H}=\{g_{\alpha_1,\alpha_2}:\alpha_1,\alpha_2\in\mathbb{R}\}.\\ g_{\alpha_1,\alpha_2}=\left\{\begin{matrix} 1, & x\in(\alpha_1,\alpha_2)\\ 0, & o.w. \end{matrix}\right. HΔH={gα1,α2:α1,α2R}.gα1,α2={1,0,x(α1,α2)o.w.
这时, 将 H \mathcal{H} H Divergence 中的假设空间换成 H Δ H \mathcal{H}\Delta\mathcal{H} HΔH 空间, 就得出了 H Δ H \mathcal{H}\Delta\mathcal{H} HΔH Divergence. 如果按照定义从头推算一遍就是:
d H Δ H ( D S , D T ) = 2 sup ⁡ g ∈ H Δ H ∣ Pr ⁡ D S [ I ( g ) ] − Pr ⁡ D T [ I ( g ) ] ∣ = 2 sup ⁡ h , h ′ ∈ H ∣ Pr ⁡ x ∼ D S [ h ( x ) ≠ h ′ ( x ) ] − Pr ⁡ x ∼ D T [ h ( x ) ≠ h ′ ( x ) ] ∣ = 2 sup ⁡ h , h ′ ∈ H ∣ ϵ S ( h , h ′ ) − ϵ T ( h , h ′ ) ∣ d_{\mathcal{H}\Delta\mathcal{H}}(\mathcal{D}_S,\mathcal{D}_T)=2\sup_{g \in \mathcal{H}\Delta\mathcal{H}} |\Pr_{\mathcal{D}_S}[I(g)]-\Pr_{\mathcal{D}_T}[I(g)]|\\ =2\sup_{h,h' \in \mathcal{H}} |\Pr_{x\sim\mathcal{D}_S}[h(x)\neq h'(x)]-\Pr_{x\sim\mathcal{D}_T}[h(x)\neq h'(x)]|\\ =2\sup_{h,h' \in \mathcal{H}} |\epsilon_S(h,h')-\epsilon_T(h,h')| dHΔH(DS,DT)=2gHΔHsupDSPr[I(g)]DTPr[I(g)]=2h,hHsupxDSPr[h(x)=h(x)]xDTPr[h(x)=h(x)]=2h,hHsupϵS(h,h)ϵT(h,h)
其中第二行是因为, I ( g ) I(g) I(g) 即为 g ( x ) = 1 g(x)=1 g(x)=1 的那部分输入空间的集合, 由 Def.3 可知, g ( x ) = 1 g(x)=1 g(x)=1 等价于 h ( x ) ≠ h ′ ( x ) h(x)\neq h'(x) h(x)=h(x), 虽然不知道具体哪个 h , h ′ h,h' h,h, 但只关心在假设空间中令概率差值最大的那两个.

这同时也十分直观的得到了 Lemma 3:
对任意两个 hypotheses h , h ′ h,h' h,h,
∣ ϵ S ( h , h ′ ) − ϵ T ( h , h ′ ) ∣ ≤ 1 2 d H Δ H ( D S , D T ) |\epsilon_S(h,h')-\epsilon_T(h,h')|\leq\frac{1}{2} d_{\mathcal{H}\Delta\mathcal{H}}(D_S,D_T) ϵS(h,h)ϵT(h,h)21dHΔH(DS,DT)
有了以上信息, 我们可以用 d H Δ H d_{\mathcal{H}\Delta\mathcal{H}} dHΔH给出 ϵ T \epsilon_T ϵT 的上界:
Thm.2: H \mathcal{H} H 为 VC-dim = d 的假设空间, U S , U T \mathcal{U}_S, \mathcal{U}_T US,UT 为来自于 D S , D T \mathcal{D}_S, \mathcal{D}_T DS,DT 的, 大小为 m ′ m' m 的样本. 那么对于任意的 δ ∈ ( 0 , 1 ) \delta\in(0,1) δ(0,1) 和任意的 h ∈ H h\in\mathcal{H} hH , 以下不等式至少 1 − δ 1-\delta 1δ 的概率成立:

ϵ T ( h ) ≤ ϵ S ( h ) + 1 2 d H Δ H ( D S , D T ) + λ ≤ ϵ S ( h ) + 1 2 d ^ H Δ H ( U S , U T ) + 4 2 d log ⁡ ( 2 m ′ ) + log ⁡ ( 2 δ ) m ′ + λ \epsilon_T(h)\leq\epsilon_S(h)+\frac{1}{2}{d}_{\mathcal{H}\Delta\mathcal{H}}(\mathcal{D}_S,\mathcal{D}_T)+\lambda\\ \leq\epsilon_S(h)+\frac{1}{2}\hat{d}_{\mathcal{H}\Delta\mathcal{H}}(U_S,U_T)+4\sqrt{\frac{2d\log(2m')+\log(\frac{2}{\delta})}{m'}}+\lambda ϵT(h)ϵS(h)+21dHΔH(DS,DT)+λϵS(h)+21d^HΔH(US,UT)+4m2dlog(2m)+log(δ2) +λ
同样的, 先忽略 empircal 的那部分, 也就是看不等式的第一行. d H Δ H ( D S , D T ) {d}_{\mathcal{H}\Delta\mathcal{H}}(\mathcal{D}_S,\mathcal{D}_T) dHΔH(DS,DT) 表示了两个域的分布之间的差异, 同时与 H \mathcal{H} H 有关. λ \lambda λ 表示的是 H \mathcal{H} H 在两个域上最小的联合错误率, 其实也蕴含了两个域分布之间的关系, 同时又与 H \mathcal{H} H 有关. 所以 ϵ T ( h ) − ϵ S ( h ) \epsilon_T(h)-\epsilon_S(h) ϵT(h)ϵS(h) d H Δ H ( D S , D T ) {d}_{\mathcal{H}\Delta\mathcal{H}}(\mathcal{D}_S,\mathcal{D}_T) dHΔH(DS,DT) λ \lambda λ 进行 bound 很合理.
证明十分简单, 主要就是用到 triangle inequality, 文章中也给出了完整的证明过程, 这里就不粘贴了.

5. A learning bound combining source and target training data

现在考虑这样的学习模式:
训练集为 S = ( S T , S S ) S=(S_T,S_S) S=(ST,SS), 其中 S T S_T ST β m \beta m βm 个从分布 D T \mathcal{D}_T DT 中独立抽取的实例, S S S_S SS ( 1 − β ) m (1-\beta)m (1β)m 个从分布 D S \mathcal{D}_S DS 中独立抽取的实例. 学习的目标是寻找一个 h h h 以最小化 ϵ T ( h ) \epsilon_T(h) ϵT(h). 这里考虑使用 ERM, 但 Domain adaptation 任务中 β \beta β 往往很小, 所以直接最小化 target error 不合适. 作者考虑在训练过程中, 最小化 source error 和 target error 的和:
ϵ ^ α ( h ) = α ϵ ^ T ( h ) + ( 1 − α ) ϵ ^ S ( h ) \hat{\epsilon}_\alpha(h)=\alpha\hat{\epsilon}_T(h)+(1-\alpha)\hat{\epsilon}_S(h) ϵ^α(h)=αϵ^T(h)+(1α)ϵ^S(h)
其中 α ∈ [ 0 , 1 ] \alpha\in[0,1] α[0,1]. 接下来, 文章给出了两个 定理, 分别为 ϵ T ( h ) \epsilon_T(h) ϵT(h) ϵ α ( h ) \epsilon_\alpha(h) ϵα(h) 之间的bound (Lemma 4) 和 ϵ α ( h ) \epsilon_\alpha(h) ϵα(h) ϵ ^ α ( h ) \hat{\epsilon}_\alpha(h) ϵ^α(h) 之间的 bound (Lemma 5).

Lemma. 4:
对于任意一个 h ∈ H h\in\mathcal{H} hH,
∣ ϵ α ( h ) − ϵ T ( h ) ∣ ≤ ( 1 − α ) ( 1 2 d H Δ H ( D S , D T ) + λ ) |\epsilon_\alpha(h)-\epsilon_T(h)|\leq(1-\alpha)\left(\frac{1}{2} d_{\mathcal{H}\Delta\mathcal{H}}(D_S,D_T)+\lambda \right) ϵα(h)ϵT(h)(1α)(21dHΔH(DS,DT)+λ)
证明同样依赖于 用到 triangle inequality:
在这里插入图片描述
而且如果把 Lemma 4 左边的 ϵ α \epsilon_\alpha ϵα 展开, 再左右两边消掉 ( 1 − α ) (1-\alpha) (1α), 此时 Lemma 4 与 Thm.2 其实是等价的.

Lemma 5: 对于一个 hypothesis h h h, 如果训练样本是由 β m \beta m βm 个从分布 D T \mathcal{D}_T DT 中独立抽取的实例和 ( 1 − β ) m (1-\beta)m (1β)m 个从分布 D S \mathcal{D}_S DS 中独立抽取的实例构成的, 且这些实例被 f S , f T f_S, f_T fS,fT 打上标签. 那么, 对于任何的 δ ∈ ( 0 , 1 ) \delta\in(0,1) δ(0,1), 下式至少有 1 − δ 1-\delta 1δ 的概率成立:
Pr ⁡ [ ∣ ϵ ^ α ( h ) − ϵ α ( h ) ∣ ≥ ϵ ] ≤ exp ⁡ [ − 2 m ϵ 2 α 2 β + ( 1 − α ) 2 1 − β ] \Pr[|\hat{\epsilon}_\alpha(h)-\epsilon_\alpha(h)|\geq \epsilon]\leq\exp[\frac{-2m\epsilon^2}{\frac{\alpha^2}{\beta}+\frac{(1-\alpha)^2}{1-\beta}}] Pr[ϵ^α(h)ϵα(h)ϵ]exp[βα2+1β(1α)22mϵ2]
证明依赖于 Hoeffding Inequality, 我在这篇博客中给了 2) Chernoff bound, Hoeffding’s Lemma, Hoeffding’s inequality 定理的介绍和推导.
证明:
ϵ ^ α \hat{\epsilon}_{\alpha} ϵ^α 的定义和 empirical error 的定义展开, 有:
在这里插入图片描述
这个形式就很容易观察了.
X 1 , . . . , X β m X_1,..., X_{\beta m} X1,...,Xβm 表示值为 α β ∣ h ( x ) − f T ( x ) ∣ \frac{\alpha}{\beta}|h(x)-f_T(x)| βαh(x)fT(x) 的随机变量.
X β m + 1 , . . . , X m X_{\beta m + 1},..., X_{m} Xβm+1,...,Xm 表示值为 1 − α 1 − β ∣ h ( x ) − f S ( x ) ∣ \frac{1-\alpha}{1-\beta}|h(x)-f_S(x)| 1β1αh(x)fS(x) 的随机变量.
那么, 很容易计算出 ϵ ^ α ( h ) = 1 m ∑ i = 1 m X i \hat{\epsilon}_{\alpha}(h)=\frac{1}{m}\sum_{i=1}^m X_i ϵ^α(h)=m1i=1mXi , 且 E [ ϵ ^ α ( h ) ] = ϵ α ( h ) \mathbf{E}[\hat{\epsilon}_{\alpha}(h)]=\epsilon_{\alpha}(h) E[ϵ^α(h)]=ϵα(h), 所以直接应用 Hoeffding Inequality 就得到 Lemma 5 的不等式.

未完待续.

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

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

相关文章

Java 面向对象的三大特性

面向对象编程有三大特征: 封装、继承和多态。 1.封装 1&#xff09;封装介绍 封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起数据被保护在内部.程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。 2&#xff09;封装的理解和好处 隐…

Springboot使用ProcessBuilder创建系统进程执行shell命令备份数据库

文章目录 概要1、查看mysql版本2、相关依赖3、具体代码技术细节 概要 Springboot执行shell命令备份数据库。 1、查看mysql版本 mysql --version2、相关依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

【力扣-每日一题】901. 股票价格跨度

暴力解法&#xff1a; class StockSpanner { private:vector<int> pri; public:StockSpanner() {}int next(int price) {pri.emplace_back(price);int count0;for(int ipri.size()-1;i>0;i--){if(pri[i]<price)count;else break;}return count;} };/*** Your Stoc…

Perforce发布《2023游戏开发与设计现状报告》,为游戏开发行业提供参考

近期&#xff0c;Perforce发布了《2023游戏开发与设计现状报告》。此报告调查了来自全球各地的游戏开发专业人士&#xff0c;了解他们面临的主要开发挑战、使用的工具和流程&#xff0c;以及目前最让他们对这个行业感到兴奋的方面。 龙智作为Perforce授权合作伙伴&#xff0c;…

第85步 时间序列建模实战:CNN回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍CNN回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome i…

【JavaEE重点知识归纳】第6节:数组

目录 一&#xff1a;数组的基本概念 1.什么是数组 2.数组的创建和初始化 3.数组的使用 ​编辑二&#xff1a;数组是引用类型 1.了解JVM的内存分布 2.基本类型变量和引用类型变量的区别 3.认识null 三&#xff1a;数组的应用场景 1.保存数据 2.作为函数的参数 3.作为…

BUUCTF Basic 解题记录--BUU XXE COURSE

1、XXE漏洞 初步学习&#xff0c;可参考链接&#xff1a; 一篇文章带你深入理解漏洞之 XXE 漏洞 - 先知社区 2、了解了XXE漏洞&#xff0c;用burpsuite获取到的url转发给repeater&#xff0c;修改XML的信息&#xff0c;引入外部实体漏洞&#xff0c;修改发送内容&#xff0c;…

ubuntu系统开机黑屏(只显示logo、左上角光标闪烁)问题

问题背景 在使用pycharm的时候&#xff0c;我使用了pycharm的快捷键ctrlaltF7&#xff0c;结果进入了ubuntu的ttf界面&#xff0c;由于之前不知道这个东西&#xff0c;百度一顿乱搜&#xff0c;以为显卡驱动出问题了&#xff0c;就把驱动删了&#xff0c;其实我完全可以ctrlal…

Library <iconv2.4.0> not found 解决方法

1、升级到Xcode15之后&#xff0c;跑到C的库出现了这个问题。 2、于是去Xcode里面搜了一下&#xff0c;这个库已经搜不到了&#xff0c;但是项目里还是配置的&#xff0c;于是接下意识把它删掉了&#xff0c;就不报错了&#xff0c;顺手还把类似的这个库给加进去了 3、而且跑起…

[JAVAee]SpringBoot-AOP

目录 Spring AOP ​编辑AOP适用场景 AOP的组成 连接点(Join Point) 切点(Pointcut) 通知(Advice) Spring AOP的实现 添加依赖 定义切面与切点 切点表达式的说明 定义相关的通知 Spring AOP AOP(Aspect Oriented Programming)是面向切面编程,是一种设计思想.对某一类…

termius mac版无需登录注册直接永久使用

1. 下载地址&#xff1a;termius下载 2. 解压安装 3. 当出现 “termius”已损坏,无法打开 则输入以下命令即可&#xff1a;sudo xattr -r -d com.apple.quarantine /Applications/Termius.app 最后去 系统设置-> 隐私与安全性-> 仍要打开 4. 删除app-update.yml文件&…

竞赛选题 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

Android Camera FW 里的requestId和frameId

安卓相机frameworks里面经常出现requestId和frameId&#xff0c;最近简单看了一下代码&#xff0c;发现相关流程还是很复杂的&#xff0c;总结来看requestId 就是上层&#xff08;java&#xff09;发送的repeating(capture)请求的id&#xff0c;是从0开始递增的。 这是CameraD…

jira 浏览器插件在问题列表页快速编辑问题标题

jira-issueTable-quicker 这是一个可以帮助我们在问题表格页快速编辑问题的浏览器插件 github 地址 功能介绍 jira 不可否认是一个可以帮助有效提高工作效率的工具&#xff0c;但是我们在使用 jira 时使用问题表格可以让我们看到跟多的内容而不用关注细节&#xff0c;但是目…

简单两步实现离线部署ChatGPT,ChatGPT平替版,无需GPU离线搭建ChatGPT

文末附主程序安装包和大模型参数文件~ 演示效果如下图所示&#xff1a; 一、使用方法 软件主要分为两个部分&#xff1a;GPT4ALL软件主体&#xff08;主程序&#xff09;模型参数&#xff08;离线模型&#xff09;&#xff0c;如果使用API Key的话则不需要下载模型参数。 可以…

Linux和Hadoop的学习

目录 1. Linux的常用快捷键2. Hadoop集群部署问题汇总 1. Linux的常用快捷键 复制&#xff1a;CtrlshiftC 粘贴&#xff1a;CtrlshiftV TAB&#xff1a;补全命令 编写输入&#xff1a;i 退出编写&#xff1a;esc 保存并退出&#xff1a;shift&#xff1a; 2. Hadoop集群部署问…

mariadb 错误日志中报错:Incorrect definition of table mysql.column_stats:

数据库错误日志出现此错误原因是因为系统表中字段类型或者数据结构有变动导致&#xff0c;一般是因为升级数据库版本后未同步升级系统表结构。 解决方法&#xff1a; 1.如果错误日志过大&#xff0c;直接删除。 2.执行 mysql_upgrade -u[用户名] -p[密码];&#xff0c;这一步…

Redis-数据过期策略

数据过期策略 惰性删除策略优点&#xff1a;对cpu比较友好&#xff0c;在用到该key的时候才去进行判断&#xff0c;对于很多用不到key不用浪费时间去检查是否过期缺点&#xff1a;对内存不友好&#xff0c;如果一个key过期了&#xff0c;但是我们又一直没有用到该key&#xff0…

一张图搞定英文星期、月份、季节总也搞不定的星期,月份,季节,一张图搞定,还有必用的常见搭配,再也不担心用错介词了~

一张图搞定英文星期、月份、季节 总也搞不定的星期&#xff0c;月份&#xff0c;季节&#xff0c;一张图搞定&#xff0c;还有必用的常见搭配&#xff0c;再也不担心用错介词了~

使用vite+npm封装组件库并发布到npm仓库

组件库背景&#xff1a;使用elementplusvue封装了一个通过表单组件。通过JSX对el-form下的el-input和el-button等表单进行统一封装&#xff0c;最后达到&#xff0c;通过数据即可一键生成页面表单的功能。 1.使用vite创建vue项目 npm create vitelatest elementplus-auto-form…