ConFEDE: Contrastive Feature Decomposition for Multimodal Sentiment Analysis

news2024/9/29 1:28:05

文章目录

  • ConFEDE:用于多模态情感分析的对比特征分解
    • 文章信息
    • 研究目的
    • 研究内容
    • 研究方法
      • 1.总体结构
      • 2.损失函数
      • 3.Data Sampler
      • 4.数据采样算法
      • 5.Contrastive Feature Decomposition(重点)
    • 结果与讨论
    • 代码和数据集
    • 附录

ConFEDE:用于多模态情感分析的对比特征分解

总结:提出了一种对比特征分解框架 ConFEDE,基于对比特征分解,利用对比训练损失,捕捉了不同模态之间、不同样本之间的一致性和差异性。

文章信息

作者:Jiuding Yang,weidong guo

单位:University of Alberta(艾伯塔大学,加拿大)

会议/期刊:Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (ACL 2023)(CCF A)

题目:ConFEDE: Contrastive Feature Decomposition for Multimodal Sentiment Analysis

年份:2023

研究目的

不同的模态之间识别的情感可能是不同的,不同情感的模态可能完全改变整体情感的含义,整体情感不能简单地通过所有模态中的多数投票来判断。因此模态间一致性与差异性方面的多模态表征学习是非常有必要的

3

研究内容

  • 将样本间对比学习和样本内模态分解整合为一个简单统一的损失函数,该函数基于一个定制的数据采样器,对正/负数据对进行采样,以执行这两项学习任务。
  • 将每个模态分解为一个相似性特征(similarity feature)和一个相异性特征(dissimilarity feature),并以文本的相似性特征为锚,建立所有分解特征之间的对比关系。(主要贡献
  • 引入了依赖于每个分解后的模态表征的多任务预测损失,使模型能够同时从多模态预测和单模态预测中学习。

研究方法

1.总体结构

image-20240319221241287

对于数据集中的每一个样本,首先用相应的特征提取器对每种模态特征进行编码,提取相应模态的初始特征。(文本模态使用 BERT 的 [CLS] 标签对文本信息编码,视觉和音频模态使用两个 transformer 的编码器进行编码)

然后,利用不同的投影器将每个模态的初始特征( T , V , A T,V,A T,V,A)分解为相似性特征( T s , V s , A s T_s,V_s,A_s Ts,Vs,As)和相异性特征( T d , V d , A d T_d,V_d,A_d Td,Vd,Ad​)。(每个投影器都由 layer normalization,带有 Tanh 激活函数的linear layer 以及 dropout layer 构成)

最后,通过对比特征分解学习不断地更新这六个分解特征,并将其融合到 ConFEDE 模型中,利用多任务学习目标损失函数进行训练。

2.损失函数

总体损失:
L a l l = L p r e d + β u n i L u n i + β c l L c l \mathcal{L}_{\mathrm{all}}=\mathcal{L}_{\mathrm{pred}}+\beta_{\mathrm{uni}}\mathcal{L}_{\mathrm{uni}}+\beta_{\mathrm{cl}}\mathcal{L}_{\mathrm{cl}} Lall=Lpred+βuniLuni+βclLcl

符号含义
L p r e d \mathcal{L}_{\mathrm{pred}} Lpred多模态预测损失
L u n i \mathcal{L}_{\mathrm{uni}} Luni单模态预测损失
L c l \mathcal{L}_{\mathrm{cl}} Lcl对比损失
β c l , β u n i \beta_{cl},\beta_{uni} βcl,βuni超参数

多模态预测损失 L p r e d \mathcal{L}_{\mathrm{pred}} Lpred:(平均绝对误差)

将所有6个分解的模态特征进行合并,得到分类器的输入 [ T s i ; T d i ; V s i ; V d i ; A s i ; A d i ] [\mathbf{T}_s^i;\mathbf{T}_d^i;\mathbf{V}_s^i;\mathbf{V}_d^i;\mathbf{A}_s^i;\mathbf{A}_d^i] [Tsi;Tdi;Vsi;Vdi;Asi;Adi](使用带有 ReLU 激活函数的多层感知器(MLP)作为分类器)通过分类器获取最终的分类结果 y ^ \hat{y} y^
y ^ m i = M L P ( [ T s i ; V s i ; A s i ; T d i ; V d i ; A d i ] ) , L p r e d = 1 n ∑ i = 1 n ( y m i − y ^ m i ) 2 , \begin{gathered}\hat{y}_m^i=\mathsf{MLP}([\mathbf{T}_s^i;\mathbf{V}_s^i;\mathbf{A}_s^i;\mathbf{T}_d^i;\mathbf{V}_d^i;\mathbf{A}_d^i]),\\\\\mathcal{L}_{\mathbf{pred}}=\frac1n\sum_{i=1}^n(y_m^i-\hat{y}_m^i)^2,\end{gathered} y^mi=MLP([Tsi;Vsi;Asi;Tdi;Vdi;Adi]),Lpred=n1i=1n(ymiy^mi)2,

符号含义
[ ⋅ ; ⋅ ] [\cdot;\cdot] [;]表示concatenate操作
B B B表示一个批次
y ^ m i \hat{y}_m^i y^mi多模态预测标签
y m i y_m^i ymi多模态真实标签
n n n一个批次中样本的数量

单模态预测损失 L u n i \mathcal{L}_{\mathrm{uni}} Luni:

对于每个样本 i i i,将 6 个分解的特征分别输入一个权重共享的 MLP 分类器,得到 6 个预测结果。(相似性特征 T s i , V s i , A s i T_s^i,V_s^i,A_s^i Tsi,Vsi,Asi 通过 MLP 映射来预测多模态标签 y m i y_m^i ymi,相异性特征 T d i , V d i , A d i T_d^i,V_d^i,A_d^i Tdi,Vdi,Adi 通过 MLP 映射来预测特定模态标签 y t i , y v i , y a i y_t^i,y_v^i,y_a^i yti,yvi,yai ,但是当特定模态标签没有的时候,例如MOSI与MOSEI数据集,相异性特征 T d i , V d i , A d i T_d^i,V_d^i,A_d^i Tdi,Vdi,Adi 也被用来预测多模态标签 y m i y_m^i ymi​ )

原理:让相似性特征 T s i , V s i , A s i T_s^i,V_s^i,A_s^i Tsi,Vsi,Asi 通过样本的整体多模态标签捕获不同模态之间共享的一致信息,让相异性特征 T d i , V d i , A d i T_d^i,V_d^i,A_d^i Tdi,Vdi,Adi 保留由单模态标签表示的特定模态信息。
u ^ i = M L P ( [ T s i , V s i , A s i , T d i , V d i , A d i ] ) , u i = [ y m i , y m i , y m i , y t i , y v i , y a i ] , L u n i = 1 n ∑ i = 1 n ∥ u i − u ^ i ∥ 2 2 , \begin{gathered} \hat{\boldsymbol{u}}^i=\mathrm{MLP}([\mathbf{T}_s^i,\mathbf{V}_s^i,\mathbf{A}_s^i,\mathbf{T}_d^i,\mathbf{V}_d^i,\mathbf{A}_d^i]), \\ \\ \boldsymbol{u}^i=[y_m^i,y_m^i,y_m^i,y_t^i,y_v^i,y_a^i], \\ \\ \mathcal{L}_{\mathbf{uni}}=\frac1n\sum_{i=1}^n\|\boldsymbol{u}^i-\hat{\boldsymbol{u}}^i\|_2^2, \end{gathered} u^i=MLP([Tsi,Vsi,Asi,Tdi,Vdi,Adi]),ui=[ymi,ymi,ymi,yti,yvi,yai],Luni=n1i=1nuiu^i22,

符号含义
u ^ i \hat{u}^i u^i预测标签
u i u^i ui真实标签

对比损失 L c l \mathcal{L}_{\mathrm{cl}} Lcl:

在一个简单的联合对比损失中进行对比:相似样本与相异样本进行对比;同一样本相似特征与相异特征进行对比。
L c l = 1 n ∑ i = 1 n ℓ c l i , \mathcal{L}_{cl}=\frac1n\sum_{i=1}^n\ell_{cl}^i, Lcl=n1i=1ncli,

ℓ c 1 i = ∑ ( a , p ) ∈ P i − log ⁡ exp ⁡ ( s i m ( a , p ) / τ ) ∑ ( a , k ) ∈ N i ∪ P i exp ⁡ ( s i m ( a , k ) / τ ) , \ell_{\mathbf{c}1}^i=\sum_{(\boldsymbol{a},\boldsymbol{p})\in\mathcal{P}^i}-\log\frac{\exp(\mathbf{sim}(\boldsymbol{a},\boldsymbol{p})/\tau)}{\sum_{(\boldsymbol{a},\boldsymbol{k})\in\mathcal{N}^i\cup\mathcal{P}^i}\exp(\mathbf{sim}(\boldsymbol{a},\boldsymbol{k})/\tau)}, c1i=(a,p)Pilog(a,k)NiPiexp(sim(a,k)/τ)exp(sim(a,p)/τ),

符号含义
ℓ c l i \ell_{cl}^i cli代表样本 i i i 的对比损失
( a , p ) 、 ( a , k ) (a,p)、(a,k) (a,p)(a,k)表示一对分解后的特征向量。可以是一个样本内的特征向量,如 ( T s i , V s i ) 、 ( T s i , A d i ) (T_s^i,V_s^i)、(T_s^i,A_d^i) (Tsi,Vsi)(Tsi,Adi);也可以是不同样本间的特征向量,如 ( T s i , T s j ) (T_s^i,T_s^j) (Tsi,Tsj)
注意: ( a , p ) ∈ P i (a,p) \in \mathcal{P}^i (a,p)Pi ( a , k ) ∈ P i    o r    N i (a,k) \in \mathcal{P}^i\; or\; \mathcal{N}^i (a,k)PiorNi
P i \mathcal{P}^i Pi正对集合,包括样本内正对 P i n t r a i \mathcal{P}_\mathrm{intra}^i Pintrai样本间正对 P i n t e r i \mathcal{P}_\mathrm{inter}^i Pinteri
P i = P i n t r a i ∪ P i n t e r i \mathcal{P}^i=\mathcal{P}_\mathrm{intra}^i\cup\mathcal{P}_\mathrm{inter}^i Pi=PintraiPinteri
N i \mathcal{N}^i Ni负对集合,包括样本内负对 N i n t r a i \mathcal{N}_\mathrm{intra}^i Nintrai样本间负对 N i n t e r i \mathcal{N}_\mathrm{inter}^i Ninteri
N i = N i n t r a i ∪ N i n t e r i \mathcal{N}^i=\mathcal{N}_\mathrm{intra}^i\cup\mathcal{N}_\mathrm{inter}^i Ni=NintraiNinteri

3.Data Sampler

数据采样器(Data Sampler)根据多模态特征和多模态标签检索给定样本的相似样本,从而在样本间执行有监督的对比学习。采样过程如下:

  • 首先给定包含 ∣ D ∣ |D| D个样本的数据集 D,对于 D 中的每个样本对 ( i , j ) (i,j) (i,j),计算它们之间的余弦相似度得分。

C i , j = s i n ( [ T i ; V i ; A i ] , [ T j ; V j ; A j ] ) , sim ⁡ ( w , v ) = w T v / ∣ ∣ w ∣ ∣ ⋅ ∣ ∣ v ∣ ∣ \mathcal{C}^{i,j}=\mathsf{sin}([\mathbf{T}^i;\mathbf{V}^i;\mathbf{A}^i],[\mathbf{T}^j;\mathbf{V}^j;\mathbf{A}^j]),\\ \\ \operatorname{sim}(\boldsymbol{w},\boldsymbol{v})=\boldsymbol{w}^T\boldsymbol{v}/||\boldsymbol{w}||\cdot||\boldsymbol{v}|| Ci,j=sin([Ti;Vi;Ai],[Tj;Vj;Aj]),sim(w,v)=wTv/∣∣w∣∣∣∣v∣∣

符号含义
sim ⁡ ( w , v ) \operatorname{sim}(\boldsymbol{w},\boldsymbol{v}) sim(w,v)表示向量 w w w 与向量 v v v 之间的余弦相似度
[ ⋅ ; ⋅ ] [\cdot;\cdot] [;]表示concatenate操作
T , V , A T,V,A T,V,A分别代表模态各自的初始模态特征
  • 然后,检索每个样本的候选相似/相异样本集。对于每个样本 i i i ,根据相似度得分从高到低将具有相同多模态标签 y m i y_m^i ymi 的样本排序,作为候选相似样本集 S 0 i S_0^i S0i 。将标签 y m i y_m^i ymi 以外的样本排序,作为候选相异样本集 S 1 i S_1^i S1i​​ 。

从候选相似样本集 S 0 i S_0^i S0i 中随机选取两个余弦相似度得分较高的近似样本,与样本 i i i 构成样本间正对,记为 N e i g h b o r i \mathrm{Neighbor}^i Neighbori;从候选相异样本集 S 1 i S_1^i S1i 中随机选取四个不同的样本组成样本间负对,记为 O u t l i e r i \mathrm{Outlier}^i Outlieri其中两个样本 O u t l i e r 1 i \mathrm{Outlier}^i_1 Outlier1i具有较低的余弦相似度分数,另外两个样本 O u t l i e r 2 i \mathrm{Outlier}^i_2 Outlier2i​具有较高的余弦相似度分数)。

为什么这样选择?通常倾向于选择 N e i g h b o r i \mathrm{Neighbor}^i Neighbori O u t l i e r 1 i \mathrm{Outlier}^i_1 Outlier1i中的样本分别与样本 i i i 形成正对和负对。但是由于 O u t l i e r 2 i \mathrm{Outlier}^i_2 Outlier2i中的样本与样本 i i i 具有不同的标签,并且具有相似的语义信息,所以 O u t l i e r 2 i \mathrm{Outlier}^i_2 Outlier2i中的样本很难与样本 i i i 区分开。故,将 O u t l i e r 2 i \mathrm{Outlier}^i_2 Outlier2i中的样本也添加到 O u t l i e r i \mathrm{Outlier}^i Outlieri中。通过对比学习让 O u t l i e r 2 i \mathrm{Outlier}^i_2 Outlier2i 中的样本与样本 i i i 区分开。

4.数据采样算法

Alt

5.Contrastive Feature Decomposition(重点)

使用了将样本内对比学习和样本间对比学习统一的一个 NT-Xent 对比损失框架,同时进行模态表征学习和模态分解。
ℓ c 1 i = ∑ ( a , p ) ∈ P i − log ⁡ exp ⁡ ( s i m ( a , p ) / τ ) ∑ ( a , k ) ∈ N i ∪ P i exp ⁡ ( s i m ( a , k ) / τ ) , \ell_{\mathbf{c}1}^i=\sum_{(\boldsymbol{a},\boldsymbol{p})\in\mathcal{P}^i}-\log\frac{\exp(\mathbf{sim}(\boldsymbol{a},\boldsymbol{p})/\tau)}{\sum_{(\boldsymbol{a},\boldsymbol{k})\in\mathcal{N}^i\cup\mathcal{P}^i}\exp(\mathbf{sim}(\boldsymbol{a},\boldsymbol{k})/\tau)}, c1i=(a,p)Pilog(a,k)NiPiexp(sim(a,k)/τ)exp(sim(a,p)/τ),

P i = P i n t r a i ∪ P i n t e r i , N i = N i n t r a i ∪ N i n t e r i . \begin{aligned}\mathcal{P}^i&=\mathcal{P}_\mathrm{intra}^i\cup\mathcal{P}_\mathrm{inter}^i,\\ \\ \mathcal{N}^i&=\mathcal{N}_\mathrm{intra}^i\cup\mathcal{N}_\mathrm{inter}^i.\end{aligned} PiNi=PintraiPinteri,=NintraiNinteri.


样本内的正对/负对构建:

使用六个分解特征( T s , V s , A s , T d , V d , A d \mathbf{T}_s,\mathbf{V}_s,\mathbf{A}_s,\mathbf{T}_d,\mathbf{V}_d,\mathbf{A}_d Ts,Vs,As,Td,Vd,Ad)形成样本内的正/负对。选择文本相似性特征 T s i T_s^i Tsi作为锚点,使视觉和听觉相似性特征 V s i V_s^i Vsi A s i A_s^i Asi T s i T_s^i Tsi 靠拢,同时将所有模态中的相异性特征 T d i , V d i , A d i T_d^i,V_d^i,A_d^i Tdi,Vdi,Adi 远离 T s i T_s^i Tsi​ 。

Alt

P i n t r a i = { ( T s i , V s i ) , ( T s i , A s i ) } ∪ { ( T s j , V s j ) , ( T s j , A s j ) ∣ j ∈ Neighbor i ∪ Outlier i } , N i n t r a i = { ( T s i , T d i ) , ( T s i , V d i ) , ( T s i , A d i ) } ∪ { ( T s j , T d j ) , ( T s j , V d j ) , ( T s j , A d j ) ∣ j ∈ Neighbor i ∪ Outlier i } , \begin{aligned} &\mathcal{P}_{\mathrm{intra}}^{i}= \{(\mathbf{T}_s^i,\mathbf{V}_s^i),(\mathbf{T}_s^i,\mathbf{A}_s^i)\} \cup\{(\mathbf{T}_s^j,\mathbf{V}_s^j),(\mathbf{T}_s^j,\mathbf{A}_s^j) \quad| \quad j\in\text{Neighbor}^i\cup\text{Outlier}^i\}, \\ \\ &\mathcal{N}_{\mathrm{intra}}^i= \{(\mathbf{T}_s^i,\mathbf{T}_d^i),(\mathbf{T}_s^i,\mathbf{V}_d^i),(\mathbf{T}_s^i,\mathbf{A}_d^i)\} \cup\{(\mathbf{T}_s^j,\mathbf{T}_d^j),(\mathbf{T}_s^j,\mathbf{V}_d^j),(\mathbf{T}_s^j,\mathbf{A}_d^j) \\ &\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad | \quad j\in\text{Neighbor}^i\cup\text{Outlier}^i\}, \end{aligned} Pintrai={(Tsi,Vsi),(Tsi,Asi)}{(Tsj,Vsj),(Tsj,Asj)jNeighboriOutlieri},Nintrai={(Tsi,Tdi),(Tsi,Vdi),(Tsi,Adi)}{(Tsj,Tdj),(Tsj,Vdj),(Tsj,Adj)jNeighboriOutlieri},
注意: N e i g h b o r i \mathrm{Neighbor}^i Neighbori O u t l i e r i \mathrm{Outlier}^i Outlieri分别代表样本 i i i 的相似样本和相异样本, j ∈ Neighbor i ∪ Outlier i j\in\text{Neighbor}^i\cup\text{Outlier}^i jNeighboriOutlieri​ 所起的作用是扩大对比范围。

样本间的正对/负对构建:

根据数据采样器采样得到的 N e i g h b o r i \mathrm{Neighbor}^i Neighbori O u t l i e r i \mathrm{Outlier}^i Outlieri构建样本间的正对/负对。

Alt
P i n t e r i = { ( T s i , T s j ) , ( V s i , V s j ) , ( A s i , A s j ) ∣ j ∈ Neighbor i } N i n t e r i = { ( T s i , T s k ) , ( V s i , V s k ) , ( A s i , A s k ) ∣ k ∈ Outlier i } . \begin{aligned} \mathcal{P}_{\mathrm{inter}}^i=& \{(\mathbf{T}_s^i,\mathbf{T}_s^j),(\mathbf{V}_s^i,\mathbf{V}_s^j),(\mathbf{A}_s^i,\mathbf{A}_s^j) \quad | \quad j\in\text{Neighbor}^i\} \\ \\ \mathcal{N}_{\mathrm{inter}}^i=& \{(\mathbf{T}_s^i,\mathbf{T}_s^k),(\mathbf{V}_s^i,\mathbf{V}_s^k),(\mathbf{A}_s^i,\mathbf{A}_s^k) \quad | \quad k\in\text{Outlier}^i\}. \end{aligned} Pinteri=Ninteri={(Tsi,Tsj),(Vsi,Vsj),(Asi,Asj)jNeighbori}{(Tsi,Tsk),(Vsi,Vsk),(Asi,Ask)kOutlieri}.

注意:只使用相似性特征来获得样本间的配对,因为同一类别中相似性样本的相似性特征应该很接近,而不同类别中样本的相似性特征应该相距较远。

结果与讨论

斜体是消融实验

  • 将 ConFEDE 与一些 SOTA 模型进行对比。在 CH-SIMS 数据集上 ConFEDE 的大多数性能都是 SOTA 的结果,在 CH-MOSI 与 CH-MOSEI 数据集上,ConFEDE 的性能在多个指标下也表现出了不错的效果。
  • 通过去除样本间对比学习和样本内对比学习,来进行消融研究,表明了样本间对比学习和样本内对比学习的有效性,证明了样本内对比学习可以很好的过滤视觉和音频模态中的噪声,样本间对比学习可以学习到样本之间的共同信息和不同信息。
  • 在去除了样本间对比学习的基础上(只剩下样本内对比学习),设置了三组消融实现,分别是仅使用多模态标签进行单模态预测的 Intra、不含单模态预测组件的 Intra、不含相似性-相异性学习方法的 Intra。通过实验表明了 ConFEDE 的每个组件都是有效的,所有的设置都是有必要的。
  • 通过设置使用所有相似性特征作为锚点的样本内对比学习的消融实验,表明了使用视觉模态和音频模态作为锚点,会引入更多的噪声,从而削弱了对比特征分解学习的去噪能力。证明了仅使用文本模态作为锚点的合理性。
  • 通过可视化经过 ConFEDE 的分解特征与未经过 ConFEDE 的分解特征,表明了对比特征分解是有效的,并且 ConFEDE 可以学习到模态之间的一致性与不一致性。

代码和数据集

代码:https://github.com/XpastaX/ConFEDE

数据集:CMU-MOSI,CMU-MOSEI,CH-SIMS

实验环境:NVIDIA RTX 3090(24G)

附录

余弦相似度值越大,表示两个向量越相似。

余弦相似度的值越大越好。在余弦相似度中,值的范围在-1到1之间,其中1表示完全相似,-1表示完全不相似,0表示没有相似性。因此,当余弦相似度接近1时,表示两个向量在方向上非常接近,即它们之间的夹角非常小,从而意味着它们更相似。相反,当余弦相似度接近-1时,表示两个向量在方向上完全相反,因此它们是完全不相似的。所以,余弦相似度的值越大,两个向量就越相似。

😃😃😃

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

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

相关文章

两台电脑简单的通信过程详解(经过两个路由器,不同网段)

一、eNSP拓扑图 二、配置4台电脑的IP地址、子网掩码、网关地址。 三、配置路由器 1.AR1-接口对应IP <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入0/0/0接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.1 24 #配置ip和掩码 [Huawei-GigabitEthernet0…

NacosException: http error, code=403、NacosimeException——报错解决方法【Nacos2.x】

1、NacosException报错内容为&#xff1a; NacosException: http error, code403,msguser not found!,dataIdapplication-dev.yml,groupDEFAULT_GROUP,tenant连不上是因为成功开启鉴权后&#xff0c;所使用的Spring Cloud服务被拦截&#xff0c;需要在配置中添加Nacos用户名和…

【Canvas与艺术】绘制暗绿色汽车速度仪表盘

【原型】 【成果】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>暗绿色汽车速度仪表盘</title><style type"t…

python学生作业管理系统flask-django-nodejs-php

课题主要分为三大模块&#xff1a;即管理员模块和学生、教师模块&#xff0c;主要功能包括&#xff1a;学生、教师、作业信息、学习模块、教学评价、学习情况等&#xff1b; 关键词&#xff1a;学生作业管理系统&#xff1b;作业信息 目录 摘 要 I Abstrac II 目录 III 1绪论 1…

liunx CentOS7 搭建lnmp环境 php nginx mysql

安装一些刚需软件&#xff1a;不懂请自行查询 安装一些需要的软件命令 yum install wget vim net-tools bash* lrzsz tree nmapnc lsof telnet -y 刷新命令 source /usr/share/bash-completion/bash_completion echo source /usr/share/bash-completion/bash_completion &…

键盘记录程序、间谍软件和窃取程序在 SMB 恶意软件检测中占主导地位

据 Sophos 称&#xff0c;到 2023 年&#xff0c;中小企业检测到的恶意软件中有 50% 是键盘记录程序、间谍软件和窃取程序&#xff0c;攻击者利用这些恶意软件窃取数据和凭证。 攻击者随后利用这些窃取的信息来获得未经授权的远程访问、勒索受害者、部署勒索软件等。 勒索软件…

yarn安装包时报错error Error: certificate has expired

安装教程&#xff1a; 配置镜像地址&#xff1a; npm config set registry https://registry.npmmirror.com//镜像&#xff1a;https://developer.aliyun.com/mirror/NPM 安装yarn&#xff1a; npm install --global yarn查看版本&#xff1a; yarn --version卸载&#xff…

【现代C++】统一初始化

现代C中的统一初始化&#xff08;Uniform Initialization&#xff09;是C11引入的一项特性&#xff0c;它提供了一种统一的语法来初始化任何类型的对象。统一初始化旨在增强代码的一致性和清晰度&#xff0c;减少传统初始化方式中的歧义。以下是统一初始化的几种用法及相应的示…

sqlite3 交叉编译

#1.下载源码并解压 源码路径如下&#xff0c;下载autoconf版本 SQLite Download Page 解压 tar -zxvf sqlite-autoconf-3450200.tar.gz cd sqlite-autoconf-3450200 mkdir build # 2. 配置源代码 # 假设你已经安装了交叉编译工具链&#xff0c;如gcc-arm-linux-gnueabih…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记18_竞争市场

1. 竞争市场 1.1. 算法、大数据、超级平台的风起云涌似乎预示了市场竞争机制的加速终结&#xff0c;而我们似乎也对这种市场机制的衰退见怪不怪 1.1.1. 它有效节省了消费者的搜寻成本&#xff0c;降低了市场准入壁垒&#xff0c;开辟了市场扩张与准入之间的崭新通道&#xff…

Android iOS客户端自动化UI自动化airtest从0到1搭建macos

一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads | Oracle jdk环境变量配置 找到java home qamac ~ % cd /Library/J…

ideaSSM 学员信息管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 学员信息管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff…

【数据结构】——排序之冒泡排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

eclipse中使用PlantUML plugin查看对象关系

一.背景 公司安排的带徒弟任务&#xff0c;给徒弟讲了如何设计对象。他们的思维里面都是单表增删改查&#xff0c;我的脑海都是一个个对象&#xff0c;他们相互关系、各有特色本事。稳定的结构既能满足外部功能需求&#xff0c;又能在需求变更时以最小代价响应。最大程度的记录…

简易指南:国内ip切换手机软件怎么弄

在网络访问受到地域限制的情况下&#xff0c;使用国内IP切换手机软件可以帮助用户轻松访问被屏蔽的内容&#xff0c;扩展网络体验。以下是虎观代理小二分享的使用国内IP切换手机软件的简易指南。并提供一些注意事项。 如何在手机上使用国内IP切换软件 步骤一&#xff1a;选择I…

【3D reconstruction 学习笔记】

三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…

docker 哲学 - 网络桥接器、容器网络接口 、容器间的通信方式

1、解释 docker0 veth eth 2、vethXX 和 ethXX 是肯定一一对应吗 比如 eth1 对应 veth1 3、如果 A容器使用 默认创建方式 。定义他内部网络为 eth0&#xff0c;容器B使用 --network 连上 已创建的网络 172.89.2.1 。此时假设 B的 ip是 172.89.2.2 &#xff0c;容器网络接口是 e…

DashScope - 阿里模型服务灵积

文章目录 关于 DashScope快速上手代码调用http 请求示例Python 调用 关于 DashScope 官方主页&#xff1a;https://dashscope.aliyun.comPYPI : https://pypi.org/project/dashscope/支持模型&#xff1a;https://dashscope.console.aliyun.com/model DashScope灵积模型服务建…

PointNet++论文复现(一)【PontNet网络模型代码详解 - 分类部分】

PontNet网络模型代码详解 - 分类部分 专栏持续更新中!关注博主查看后续部分! 分类模型的训练: ## e.g., pointnet2_ssg without normal features python train_classification.py --model pointnet2_cls_ssg --log_dir pointnet2_cls_ssg python test_classification.py…

JWT的实现及其适用场景

官方文档 一、什么是JWT JWT&#xff08;全称JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。此信息是经过数字签名的&#xff0c;因此可以验…