多任务学习用于多模态生物数据分析
目前的生物技术可以同时测量来自同一细胞的多种模态数据(例如RNA、DNA可及性和蛋白质)。这需要结合不同的分析任务(如多模态整合和跨模态分析)来全面理解这些数据,推断基因调控如何驱动生物多样性。然而,目前的分析方法被设计为执行单个任务,并且大部分仅提供多模态数据的部分图谱(比如单模态和双模态)。因此,作者提出了UnitedNet,这是一种可解释的多任务深度神经网络,能够整合不同的任务来分析单细胞多模态数据。应用于各种多模态数据集(如patch-seq、multiome ATAC+gene expression和空间转录组),与最先进的方法相比,UnitedNet在多模态整合和跨模态预测方面表现出类似或更好的准确性。此外,通过使用可解释的机器学习算法对经过训练的UnitedNet进行剖析,可以直接量化基因表达与其他具有细胞类型特异性的模式之间的关系。UnitedNet是一个全面的端到端框架,可广泛应用于单细胞多模态生物学。该框架有可能促进跨转录组学和其他模态的细胞类型特异性调节发现。
来自:Explainable multi-task learning for multimodality biological data analysis
目录
- 背景概述
- 方法
- 聚类损失
- 预测损失
- 生成损失和判别损失
- 对比损失
- 分类损失
- 训练步骤
- 使用SHAP进行特征相关性分析
- 评价指标
- 数据集
- 多任务数据集
- 空间组学数据
- 结果
- 特征与特征相关性
- 空间组学上的应用
背景概述
单细胞生物技术的最新进展使同时测量同一细胞的基因表达和其他模态成为可能。例如,patch-seq技术同时测量细胞基因表达和细胞内电活性(intracellular electrical activity),而multiome ATAC+gene expression技术联合测量细胞基因表达和DNA可及性。这种多模态组学数据同时提供了细胞的全面状态。然而,为分析单模态生物数据而开发的方法不能直接应用于多模态数据。与单模态分析相比,最近的研究确定了更多的多模态分析任务,例如:
- 从不同模态中识别具有生物学意义的簇,使人们能够更深入地了解不同生物系统的细胞特性和功能。
- 不同模态之间的跨模态预测,推断出不能容易或同时测量的模态数据。此外,为同一类型的细胞生成的多模态数据提供了发现基因表达和其他模态之间的细胞类型特异性关系的机会,有助于揭示感兴趣的生物学调控机制。
目前已经开发了几种多模态分析方法。对于joint group识别任务,已经开发了多模态数据整合方法,以将不同的模态融合到联合表示中,然后将其用于无监督或有监督分类,以识别细胞类型。对于跨模态预测任务,已经开发了基于自编码器的神经网络来预测不同模态。对于跨模态的相关性发现,Schema代表了最先进的多模态整合方法,可以识别用户定义的主模态中对其他模态重要的特征。
与上述方法相比,一种可以在统一的框架内处理所有任务、量化细胞类型特异性,跨模态相关性,并在没有先验知识的情况下,这样的方法可以简化数据分析,潜在提高每个任务的性能,并有助于从单细胞多模态数据中获得生物学见解。
尽管如此,由于以下两个原因,将多个任务组合到一个框架中可能具有挑战性:
- 首先,每个模态测量都具有独特的统计特征,需要不同的统计假设。虽然已经为不同的模态开发了几个统计模型,但仍然缺乏能够适应多模态未知分布的方法。
- 其次,joint group识别和跨模态预测通常代表单独的目标。具体而言,joint group识别的目的是惩罚错误的细胞群分配,而跨模态预测的目的是最小化重建数据和GT之间的差距。
- 此外,在没有先验知识的情况下,在特定细胞类型中寻找基因表达和其他模态之间的相关关系仍然是一个重大挑战。如果简单地迭代特征集的所有可能组合,对于高维数据来说,在计算上将是困难的。需要一种有效的方法来首先从对感兴趣的特定生物条件(例如细胞类型)中识别一组特征,然后量化这些特征之间的关系。
在这里,作者提出了一种可解释的多任务深度神经网络,以解决多模态数据分析的挑战。该网络具有编码器-解码器-判别器结构,并通过在两个任务之间交替进行训练:joint group识别和跨模态预测。具体而言,这种编码器-解码器-判别器结构并不假设数据分布是已知的,而是隐含地近似每个模态的统计特征。
在joint group识别和跨模态预测之间的交替训练保持并提高了这两项任务的性能。此外,应用可解释的机器学习来剖析网络,可以量化细胞类型特异性、跨模态特征与特征的相关性。作者已经将该网络应用于各种多模态数据集(图1a),包括:
- 带有GT标签的模拟多模态数据;
- 同时测量转录组和细胞内电活性(multi-sensing数据);
- 同时分析转录组学和DNA可访问性(multi-omics数据);
- 空间分辨转录组与蛋白质组(多模态spatial-omics数据);
- 图1:利用联合网络对多模态生物数据进行多任务学习。
- a:具有代表性的多模态生物学数据示意图。
- b:共享隐空间的示意图。编码器可以将来自同一细胞的不同模态测量作为隐编码投影到共享空间。隐编码可以通过解码器投影回模态特定空间。在隐空间中,表示来自同一细胞的不同模态的隐编码可以被整合为用于joint group识别的单模态编码。
- c:显示了基于b中设计的共享潜在空间的联合网络结构示意图。
- d和e显示了联合网络在联合组识别和跨模态预测之间的多任务学习,用于分析多模态数据。
- f和g显示了可解释的应用,以剖析经过训练的UnitedNet,用于识别组与特征的相关性(f)和跨模态特征与特征的关联(g)。
方法
联合网络应用于联合测量数据。联合网络UnitedNet具有跨模态预测和joint group识别的特点,这两个任务是基于学习到的不同模态的联合低维表示完成的,其包含了细胞的潜在信息。假设有 V V V种不同的模态。令 n n n表示细胞数, p ( v ) p^{(v)} p(v)表示第 v v v模态的特征维数, X ( v ) ∈ R n × p ( v ) X^{(v)}\in R^{n\times p^{(v)}} X(v)∈Rn×p(v)为第 v v v模态的数据, x i ( v ) x_{i}^{(v)} xi(v)为数据中的第 i i i个细胞,对于从 v 1 v_1 v1到 v 2 v_2 v2的模态预测,联合网络从 x i ( v 1 ) x_{i}^{(v_1)} xi(v1)的隐空间预测 x i ( v 2 ) x_{i}^{(v_2)} xi(v2)。对于group识别,联合网络首先混合 x i ( 1 ) , . . . , x i ( V ) x_{i}^{(1)},...,x_{i}^{(V)} xi(1),...,xi(V),然后,基于共享的隐空间,返回group类别 k i ∈ { 1 , . . . , K } k_{i}\in\left\{1,...,K\right\} ki∈{1,...,K}。
UnitedNet由编码器、解码器、判别器和组识别模块组成。它是基于模态内预测损失、跨模态预测损失、生成器损失、鉴别器损失、对比损失、聚类损失(用于无监督的组识别)和分类损失(用于有监督的组识别)来训练的。关于联合网络的组成部分和损失的详细信息如下。
对于每个模态 v = 1 , . . . , V v=1,...,V v=1,...,V,UnitedNet有一个编码器 E n c ( v ) ( ⋅ ) Enc^{(v)}(\cdot) Enc(v)(⋅)用于将细胞 i i i对应的 x i ( v ) x_{i}^{(v)} xi(v)映射到模态特定的隐空间编码 z i ( v ) z_{i}^{(v)} zi(v): z i ( v ) = E n c ( v ) ( x i ( v ) ) z_{i}^{(v)}=Enc^{(v)}(x_{i}^{(v)}) zi(v)=Enc(v)(xi(v))其中,来自不同模态的低维表示需要具有相同数量的特征数。
解码器 D e c ( v ) ( ⋅ ) Dec^{(v)}(\cdot) Dec(v)(⋅)以模态特定的隐编码作为输入,并映射到模态 v v v的特征上,以下表示模态 v 1 v_{1} v1到 v 2 v_{2} v2的预测: x ~ i ( v 1 , v 2 ) = D e c ( v 2 ) ( z i ( v 1 ) ) \widetilde{x}_{i}^{(v_1,v_2)}=Dec^{(v_2)}(z_{i}^{(v_1)}) x i(v1,v2)=Dec(v2)(zi(v1))对于同一个模态 v v v下的预测,则为: x ~ i ( v ) = D e c ( v ) ( z i ( v ) ) \widetilde{x}_{i}^{(v)}=Dec^{(v)}(z_{i}^{(v)}) x i(v)=Dec(v)(zi(v))
判别器有助于训练编码器和解码器。模态 v v v的判别器 D i s ( v ) ( ⋅ ) Dis^{(v)}(\cdot) Dis(v)(⋅)以模态内预测 x ~ i v \widetilde{x}_{i}^{v} x iv或原始输入 x i v x_{i}^{v} xiv为输入,输出二元分类结果,旨在区分 x ~ i v \widetilde{x}_{i}^{v} x iv和 x i v x_{i}^{v} xiv。
组的数量为 K K K,组识别模块从所有模态中获取模态特定的编码 ( z i ( 1 ) , . . . , z i ( V ) ) (z_{i}^{(1)},...,z_{i}^{(V)}) (zi(1),...,zi(V)),并将其分配给 K K K个组中的一个,首先融合数据: z i = ∑ v = 1 V η v z i ( v ) z_{i}=\sum_{v=1}^{V}\eta_{v}z_{i}^{(v)} zi=v=1∑Vηvzi(v)其中, η 1 , . . , η V \eta_{1},..,\eta_{V} η1,..,ηV为非负的可训练权重,并且满足 ∑ v = 1 V η v = 1 \sum_{v=1}^{V}\eta_{v}=1 ∑v=1Vηv=1。然后,令 z i z_{i} zi通过全连接层: h i = l a y e r 1 ( z i ) h_{i}=layer_{1}(z_{i}) hi=layer1(zi)。然后再进行softmax分配: α i = l a y e r 2 ( h i ) = ( M 1 ( h i ) , . . . , M K ( h i ) ) T M k ( h ) = e x p ( W k h ) ∑ t = 1 K e x p ( W t h ) \alpha_{i}=layer_{2}(h_{i})=(M_{1}(h_{i}),...,M_{K}(h_{i}))^{T}\\ M_{k}(h)=\frac{exp(W_{k}h)}{\sum_{t=1}^{K}exp(W_{t}h)} αi=layer2(hi)=(M1(hi),...,MK(hi))TMk(h)=∑t=1Kexp(Wth)exp(Wkh)其中, W k ( k = 1 , . . . , K ) W_{k}(k=1,...,K) Wk(k=1,...,K)是系数向量。组识别模块将索引 k i = a r g m a x k = 1 , . . . , K M k ( h i ) k_{i}=argmax_{k=1,...,K}M_{k}(h_{i}) ki=argmaxk=1,...,KMk(hi)为细胞 i i i的簇类型。
聚类损失
聚类损失由三个部分组成。前两个组件来自基于深度散度聚类(DDC)。它们保证了所得到的组是可分离的和紧致的。第三个组成部分是基于自熵。
对于第一部分:组件1将不同组的聚类概率分配(软分配)之间的二乘二的相关性减小。它增加了组的可分性,因为这些相关性与不同组之间的相似性呈正相关。定义矩阵 S ∈ R n × n S\in R^{n\times n} S∈Rn×n,元素 s i , j = e x p ( − ∣ ∣ h i − h j ∣ ∣ 2 2 / ( 2 σ 2 ) ) s_{i,j}=exp(-||h_{i}-h_{j}||_{2}^{2}/(2\sigma^{2})) si,j=exp(−∣∣hi−hj∣∣22/(2σ2)),其中 σ \sigma σ是一个超参数。该矩阵测量了不同细胞之间的相似性。用 α ~ k \widetilde{\alpha}_{k} α k记 ( M k ( h 1 ) , . . . , M k ( h n ) ) T (M_{k}(h_{1}),...,M_{k}(h_{n}))^{T} (Mk(h1),...,Mk(hn))T,这是细胞从 1 1 1到 n n n并分配为组 k k k的概率。组件1损失为: L c 1 = ( K 2 ) − 1 ∑ k = 1 K − 1 ∑ l > k K α ~ k T S α ~ l α ~ k T S α ~ k α ~ l T S α ~ l L_{c1}=\begin{pmatrix} K \\ 2 \end{pmatrix}^{-1}\sum_{k=1}^{K-1}\sum_{l>k}^{K}\frac{\widetilde{\alpha}_{k}^{T}S\widetilde{\alpha}_{l}}{\sqrt{\widetilde{\alpha}_{k}^{T}S\widetilde{\alpha}_{k}\widetilde{\alpha}_{l}^{T}S\widetilde{\alpha}_{l}}} Lc1=(K2)−1k=1∑K−1l>k∑Kα kTSα kα lTSα lα kTSα l其中, α ~ k T S α ~ l \widetilde{\alpha}_{k}^{T}S\widetilde{\alpha}_{l} α kTSα l被最小化代表 M k ( h ) M_{k}(h) Mk(h)和 M l ( h ) M_{l}(h) Ml(h)趋近正交。
对于第二部分:组件2将不同组的软分配值推送到 R K R^{K} RK中的单纯形的不同角,这也增加了组的可分性。令 e k ∈ R K e_{k}\in R^{K} ek∈RK表示其第 k k k个元素为1,其它元素为0的向量。因此, e k e_k ek是单纯形的第 k k k个角。由于 α i \alpha_{i} αi是组识别模块中的第二层输出,令 m k ∈ R n m_k\in R^{n} mk∈Rn,其第 i i i个元素为 e x p ( − ∣ ∣ α i − e k ∣ ∣ 2 2 ) exp(-||\alpha_{i}-e_{k}||_{2}^{2}) exp(−∣∣αi−ek∣∣22),其测量了软分配 α i \alpha_i αi和 e k e_k ek之间的距离。组件2损失为: L c 2 = ( K 2 ) − 1 ∑ k = 1 K − 1 ∑ l > k K m k T S m l m k T S m k m l T S m l L_{c2}=\begin{pmatrix} K \\ 2 \end{pmatrix}^{-1}\sum_{k=1}^{K-1}\sum_{l>k}^{K}\frac{m_{k}^{T}Sm_{l}}{\sqrt{m_{k}^{T}Sm_{k}m_{l}^{T}Sm_{l}}} Lc2=(K2)−1k=1∑K−1l>k∑KmkTSmkmlTSmlmkTSml该损失加强了 e x p ( − ∣ ∣ α i − e k ∣ ∣ 2 2 ) exp(-||\alpha_{i}-e_{k}||_{2}^{2}) exp(−∣∣αi−ek∣∣22)和 e x p ( − ∣ ∣ α i − e l ∣ ∣ 2 2 ) exp(-||\alpha_{i}-e_{l}||_{2}^{2}) exp(−∣∣αi−el∣∣22)的正交,因此,软分配输出 ( M 1 ( h ) , . . . , M K ( h ) ) T (M_{1}(h),...,M_{K}(h))^{T} (M1(h),...,MK(h))T会倾向于一个单纯形角,而不是同时接近多个单纯形角。因此,同一组中的低维表示将是紧凑的,而来自不同组的低维表示将被分离。
对于第三部分:组件3旨在避免大多数细胞被分配给所有组中的一小部分。令 α ‾ ∈ R K \overline{\alpha}\in R^{K} α∈RK表示 α i \alpha_{i} αi( i = 1 , . . . , n i=1,...,n i=1,...,n)求平均,其第 k k k个元素为 α ‾ k \overline{\alpha}_{k} αk。组件3损失为: L c 3 = ∑ k = 1 K α ‾ k l o g α ‾ k L_{c3}=\sum_{k=1}^{K}\overline{\alpha}_{k}log \overline{\alpha}_{k} Lc3=k=1∑Kαklogαk其目的是以相等的概率分配每个组索引,比如 α ‾ 1 = , . . . , α ‾ K = 1 / K \overline{\alpha}_{1}=,...,\overline{\alpha}_{K}=1/K α1=,...,αK=1/K。
预测损失
模态内预测损失定义为: L W p r e d i c t = 1 n V ∑ i = 1 n ∑ v = 1 V ∣ ∣ x ~ i ( v ) − x i ( v ) ∣ ∣ 2 L_{Wpredict}=\frac{1}{nV}\sum_{i=1}^{n}\sum_{v=1}^{V}||\widetilde{x}_{i}^{(v)}-x_{i}^{(v)}||_2 LWpredict=nV1i=1∑nv=1∑V∣∣x i(v)−xi(v)∣∣2跨模态预测损失为: L C p r e d i c t = 1 n ( V 2 ) ∑ i = 1 n ∑ v 1 < v 2 ∣ ∣ x ~ i ( v 1 , v 2 ) − x i ( v 2 ) ∣ ∣ 2 L_{Cpredict}=\frac{1}{n\begin{pmatrix} V \\ 2 \end{pmatrix}}\sum_{i=1}^{n}\sum_{v_1<v_2}||\widetilde{x}_{i}^{(v_1,v_2)}-x_{i}^{(v_2)}||_2 LCpredict=n(V2)1i=1∑nv1<v2∑∣∣x i(v1,v2)−xi(v2)∣∣2其测量模态 v 1 v_1 v1到 v 2 v_2 v2的跨模态预测与模态 v 2 v_2 v2的原始值之间的距离。
生成损失和判别损失
生成器和判别器通过最小二乘损失训练,将模态内预测特征 x ~ i ( v ) \widetilde{x}_{i}^{(v)} x i(v)分配给标签1,将原始特征 x i ( v ) x_{i}^{(v)} xi(v)分配给标签0。生成损失为: L G e n = 1 n V ∑ i = 1 n ∑ v = 1 V ∣ ∣ D i s ( v ) ( x ~ i ( v ) ) − 1 ∣ ∣ 2 2 L_{Gen}=\frac{1}{nV}\sum_{i=1}^{n}\sum_{v=1}^{V}||Dis^{(v)}(\widetilde{x}_{i}^{(v)})-1||_{2}^{2} LGen=nV1i=1∑nv=1∑V∣∣Dis(v)(x i(v))−1∣∣22判别损失为: L D i s = 1 n V ∑ i = 1 n ∑ v = 1 V ∣ ∣ D i s ( v ) ( x ~ i ( v ) ) ∣ ∣ 2 2 + 1 n V ∑ i = 1 n ∑ v = 1 V ∣ ∣ D i s ( v ) ( x i ( v ) ) − 1 ∣ ∣ 2 2 L_{Dis}=\frac{1}{nV}\sum_{i=1}^{n}\sum_{v=1}^{V}||Dis^{(v)}(\widetilde{x}_{i}^{(v)})||_{2}^{2}+\frac{1}{nV}\sum_{i=1}^{n}\sum_{v=1}^{V}||Dis^{(v)}(x_{i}^{(v)})-1||_{2}^{2} LDis=nV1i=1∑nv=1∑V∣∣Dis(v)(x i(v))∣∣22+nV1i=1∑nv=1∑V∣∣Dis(v)(xi(v))−1∣∣22其目的是使鉴别器将模态内预测特征分类为0,将原始特征分类为1。这组最小二乘损失提高了训练生成器的质量,因为它符合生成器的基本目标,即生成具有与原始特征相似分布的特征数据。
对比损失
应用对比损失来对齐来自不同模态的潜在编码,定义余弦相似度为: s i , j ( v 1 , v 2 ) = ( z i ( v 1 ) ) T z j ( v 2 ) ∣ ∣ z i ( v 1 ) ∣ ∣ 2 ⋅ ∣ ∣ z j ( v 2 ) ∣ ∣ 2 s_{i,j}^{(v_1,v_2)}=\frac{(z_{i}^{(v_1)})^{T}z_{j}^{(v_2)}}{||z_{i}^{(v_1)}||_2\cdot||z_{j}^{(v_2)}||_2} si,j(v1,v2)=∣∣zi(v1)∣∣2⋅∣∣zj(v2)∣∣2(zi(v1))Tzj(v2)令: l i ( v 1 , v 2 ) = − l o g e x p ( s i , j ( v 1 , v 2 ) τ ) ∑ s ′ ∈ N e g ( z i ( v 1 ) , z i ( v 2 ) ) e x p ( s ′ τ ) l_{i}^{(v_1,v_2)}=-log\frac{exp(\frac{s_{i,j}^{(v_1,v_2)}}{\tau})}{\sum_{s'\in Neg(z_{i}^{(v_1)},z_{i}^{(v_2)})}exp(\frac{s'}{\tau})} li(v1,v2)=−log∑s′∈Neg(zi(v1),zi(v2))exp(τs′)exp(τsi,j(v1,v2))其中, N e g ( z i ( v 1 ) , z i ( v 2 ) ) Neg(z_{i}^{(v_1)},z_{i}^{(v_2)}) Neg(zi(v1),zi(v2))通过从集合 N i = { s i j ( v 1 , v 2 ) : j = 1 , . . . , n , j ≠ i , v 1 , v 2 = 1 , . . . , V , a r g m a x α i ≠ a r g m a x α j } N_{i}=\left\{s_{ij}^{(v_1,v_2)}:j=1,...,n,j\neq i,v_1,v_2=1,...,V,argmax\alpha_i\neq argmax\alpha_j\right\} Ni={sij(v1,v2):j=1,...,n,j=i,v1,v2=1,...,V,argmaxαi=argmaxαj}采样固定数量的元素获得, τ \tau τ为超参数。对比损失为: L C o n = δ ⋅ 1 n ( V 2 ) ∑ i = 1 n ∑ v 1 < v 2 l i ( v 1 , v 2 ) L_{Con}=\delta\cdot\frac{1}{n\begin{pmatrix} V \\ 2 \end{pmatrix}}\sum_{i=1}^{n}\sum_{v_1<v_2}l_{i}^{(v_1,v_2)} LCon=δ⋅n(V2)1i=1∑nv1<v2∑li(v1,v2)其中, δ \delta δ为超参数。
分类损失
定义向量 b i b_{i} bi,其第 k k k个元素为1,其余为0,其中, k k k是细胞 i i i的观测类别标注。令 g i = n k ( i ) / n g_i=n_{k(i)}/n gi=nk(i)/n,其中, n k n_k nk为类别为 k k k的细胞数量。通过交叉熵评估分类准确率: L e n t r o p y = − 1 n ∑ i = 1 n g i ⋅ ( l o g ( M 1 ( h i ) ) , . . . , l o g ( M K ( h i ) ) ) T b i L_{entropy}=-\frac{1}{n}\sum_{i=1}^{n}g_{i}\cdot (log(M_1(h_i)),...,log(M_K(h_i)))^{T}b_i Lentropy=−n1i=1∑ngi⋅(log(M1(hi)),...,log(MK(hi)))Tbi
训练步骤
作者首先提出了在没有细胞标签的情况下训练UnitedNet用于跨模态预测和无监督组识别的过程。它由两个步骤迭代训练:组识别更新步骤和预测更新步骤。在组标识更新步骤中,编码器输出模态特定编码并将其送到组识别模块。然后,组识别模块将模态特定编码融合为共享潜在代码,并获得 K K K-dimensional 软聚类分配。解码器基于模态特定编码输出模态内预测特征 x ~ i ( v ) \widetilde{x}_{i}^{(v)} x i(v)。接下来,编码器和聚类模块通过聚类损失进行更新: L g r o u p = L c 1 + L c 2 + L c 3 L_{group}=L_{c1}+L_{c2}+L_{c3} Lgroup=Lc1+Lc2+Lc3在预测更新步骤中,编码器从不同模态输出低维表示,将它们送到解码器,并获得跨模态预测特征 x ~ i ( v 1 , v 2 ) \widetilde{x}_{i}^{(v_1,v_2)} x i(v1,v2)和模态内预测特征 x ~ i ( v ) \widetilde{x}_{i}^{(v)} x i(v)。然后,将预测的特征输入到鉴别器中。鉴别器由鉴别器损失 L D i s L_{Dis} LDis更新。接下来,通过模态内预测损失、跨模态预测损失、生成器损失和对比损失之和来更新编码器和解码器: L P G C = L W p r e d i c t + L C p r e d i c t + L G e n + L C o n L_{PGC}=L_{Wpredict}+L_{Cpredict}+L_{Gen}+L_{Con} LPGC=LWpredict+LCpredict+LGen+LCon以上两个训练步骤分别总结在算法1和2中。
- 算法1
- 算法2
对于有监督学习,为了训练UnitedNet进行监督分类,通过以下方式修改组识别损失: L g r o u p = L e n t r o p y L_{group}=L_{entropy} Lgroup=Lentropy
使用SHAP进行特征相关性分析
为了深入了解不同特征的重要性,UnitedNet应用了常用于解释机器学习模型的SHAP(SHapley Additive exPlanations)。这种方法的思想是在固定其他特征的同时,通过线性函数近似特征对输出的影响,并且该函数的系数对应于Shapley值。SHAP的优点包括:
- 基于理论的可解释性
- 广泛的应用范围
- 不需要扰动模型或数据的计算过程,这是许多其他特征重要性方法所要求的。
下面将首先介绍Shapley值的计算过程,然后解释它如何应用于UnitedNet。
假设想评估特征 x j x_j xj对函数 f ( x ) f(x) f(x)( x = ( x 1 , . . . , x Q ) T x=(x_1,...,x_Q)^{T} x=(x1,...,xQ)T, j ∈ { 1 , . . . , Q } j\in\left\{1,...,Q\right\} j∈{1,...,Q})的重要性。令 F F F为 x x x的特征集, S S S为 F F F的子集。 ∣ F ∣ |F| ∣F∣和 ∣ S ∣ |S| ∣S∣为集合元素数。Shapley值计算为: ϕ j ( x ) = ∑ S ⊆ F − { j } ∣ S ∣ ! ( ∣ F ∣ − ∣ S ∣ − 1 ) ! ∣ F ∣ ! [ f S ∪ { j } ( x S ∪ { j } ) − f S ( x S ) ] \phi_{j}(x)=\sum_{S\subseteq F-\left\{j\right\}}\frac{|S|!(|F|-|S|-1)!}{|F|!}[f_{S\cup\left\{j\right\}}(x_{S\cup\left\{j\right\}})-f_{S}(x_{S})] ϕj(x)=S⊆F−{j}∑∣F∣!∣S∣!(∣F∣−∣S∣−1)![fS∪{j}(xS∪{j})−fS(xS)]其中, F − { j } F-\left\{j\right\} F−{j}表示从 F F F中删除特征 j j j。 f S ( x S ) f_{S}(x_S) fS(xS)通过对 f ( x S , x F − S ( i ) ) f(x_{S},x^{(i)}_{F-S}) f(xS,xF−S(i))求样本均值得到, x F − S ( i ) x^{(i)}_{F-S} xF−S(i)为不在 S S S中的特征的第 i i i个观测值。Shapley值通过计算去除第 j j j个特征后 f ( x ) f(x) f(x)变化的加权平均值来衡量该特征的重要性。
对于神经网络 f ( x ) = f ( 1 ) ⊙ f ( 2 ) ⋅ ⋅ ⋅ f ( L ) f(x)=f^{(1)}\odot f^{(2)}\cdot\cdot\cdot f^{(L)} f(x)=f(1)⊙f(2)⋅⋅⋅f(L),令第 l l l层的输出维度为 L ( l ) L^{(l)} L(l),第 l l l层的第 q q q个输入特征为 e q ( l ) e_{q}^{(l)} eq(l),其样本均值为 e ‾ q ( l ) \overline{e}_{q}^{(l)} eq(l)。可以用以下递归公式通过Deep SHAP以高效的方式估计模型的Shapley值: ϕ q , r ( f ( l − 1 ) ⊙ f ( l ) , e ( l − 1 ) ) = ( e q ( l − 1 ) − e ‾ q ( l − 1 ) ) ⋅ ∑ r ( l − 1 ) = 1 L ( l − 1 ) m ( l − 1 ) ( r ( l − 1 ) , q ) ⋅ m ( l ) ( r , r ( l − 1 ) ) \phi_{q,r}(f^{(l-1)}\odot f^{(l)},e^{(l-1)})=(e^{(l-1)}_{q}-\overline{e}^{(l-1)}_{q})\cdot \sum_{r^{(l-1)}=1}^{L^{(l-1)}}m^{(l-1)}(r^{(l-1)},q)\cdot m^{(l)}(r,r^{(l-1)}) ϕq,r(f(l−1)⊙f(l),e(l−1))=(eq(l−1)−eq(l−1))⋅r(l−1)=1∑L(l−1)m(l−1)(r(l−1),q)⋅m(l)(r,r(l−1))其中, ϕ q , r ( f ( l − 1 ) ⊙ f ( l ) , e ( l − 1 ) ) \phi_{q,r}(f^{(l-1)}\odot f^{(l)},e^{(l-1)}) ϕq,r(f(l−1)⊙f(l),e(l−1))衡量了 e q ( l − 1 ) e_{q}^{(l-1)} eq(l−1)相对于 f ( l − 1 ) ⊙ f ( l ) f^{(l-1)}\odot f^{(l)} f(l−1)⊙f(l)的输出的第 r r r个元素的重要性。 m ( l ) ( r , r ( l − 1 ) ) = ϕ r ( l − 1 ) , r ( f ( l ) , e ( l ) ) / ( e r ( l − 1 ) ( l ) − e ‾ r ( l − 1 ) ( l ) ) m^{(l)}(r,r^{(l-1)})=\phi_{r^{(l-1)},r}(f^{(l)},e^{(l)})/(e^{(l)}_{r^{(l-1)}}-\overline{e}^{(l)}_{r^{(l-1)}}) m(l)(r,r(l−1))=ϕr(l−1),r(f(l),e(l))/(er(l−1)(l)−er(l−1)(l)) m ( l − 1 ) ( r ( l − 1 ) , q ) = ϕ q , r ( l − 1 ) ( f ( l − 1 ) , e ( l − 1 ) ) / ( e q ( l − 1 ) − e ‾ q ( l − 1 ) ) m^{(l-1)}(r^{(l-1)},q)=\phi_{q,r^{(l-1)}}(f^{(l-1)},e^{(l-1)})/(e^{(l-1)}_{q}-\overline{e}^{(l-1)}_{q}) m(l−1)(r(l−1),q)=ϕq,r(l−1)(f(l−1),e(l−1))/(eq(l−1)−eq(l−1))为了识别与特定组具有高度相关性的特征,对于每个细胞,需要计算每个输入特征相对于该组的软分配的Shapley值。然后,将来自被分类为该组的细胞的所有Sharpley值作为绝对值,并用于计算平均值。具有最高平均值的前 n n n个特征被解释为与该组具有高度相关性(Patch-seq GABAergic数据集的 n = 7 n=7 n=7,multiome ATAC+Gene expression BMMCs数据集的 n = 20 n=20 n=20)。
为了量化组内跨模态特征与特征的相关性,作者考虑了在前一步中选择的该组的高相关性特征。接下来,计算每个特征相对于来自另一模态的每个其他特征的Shapley值。然后,通过平均来聚集来自不同细胞的Sharpley值的绝对值。值相对较大的特征被认为是重要的。
评价指标
无监督和有监督组识别用ARI(adjusted rand index),预测性能用 R 2 R^2 R2(coefficient of determination)和AUC(area under the ROC curve),两个任务之间的关系用Pearson’s correlation评估。
对于ARI:
将从模型中获得的簇与从细胞类型标签中获得的簇进行比较。令 a k 1 a_{k_1} ak1( k 1 = 1 , . . . , K k_1=1,...,K k1=1,...,K)表示来自模型的第 k 1 k_1 k1个簇中的细胞数, b k 2 b_{k_2} bk2( k 1 = 1 , . . . , K k_1=1,...,K k1=1,...,K)表示来自细胞类型标签的第 k 2 k_2 k2个簇的细胞数。 n k 1 , k 2 n_{k_1,k_2} nk1,k2表示来自模型的第 k 1 k_1 k1个簇和来自细胞类型标签的第 k 2 k_2 k2个簇中的观测次数。当来自模型的聚类结果接近于来自观察到的细胞类型标签的聚类结果时,ARI接近于1,并且对于随机猜测接近于0。
对于 R 2 R^2 R2:
令 y y y和 y ~ \widetilde{y} y 表示观测数据和预测数据, y ‾ \overline{y} y被定义为与 y y y长度相同的向量,并且每个元素都是 y y y的样本均值。 R 2 R^{2} R2为: R 2 = 1 − ∣ ∣ y ~ − y ∣ ∣ 2 2 ∣ ∣ y ‾ − y ∣ ∣ 2 2 R^{2}=1-\frac{||\widetilde{y}-y||_{2}^{2}}{||\overline{y}-y||_{2}^{2}} R2=1−∣∣y−y∣∣22∣∣y −y∣∣22它将来自模型的预测 y ~ \widetilde{y} y 的均方误差(MSE)与以常数值 y ‾ \overline{y} y作为预测的基线的MSE进行比较。值在负无穷到1之间,当预测等于观测时, R 2 = 1 R^2=1 R2=1。
对于Pearson’s correlation:
令 y ^ \widehat{y} y 表示与 y ~ \widetilde{y} y 等长度的向量,其每个元素为 y ~ \widetilde{y} y 的样本均值。因此, y y y与 y ~ \widetilde{y} y 之间的Pearson’s correlation为: r = < y ~ − y ^ , y − y ‾ > ∣ ∣ y ~ − y ^ ∣ ∣ 2 ⋅ ∣ ∣ y − y ‾ ∣ ∣ 2 r=\frac{<\widetilde{y}-\widehat{y},y-\overline{y}>}{||\widetilde{y}-\widehat{y}||_{2}\cdot||y-\overline{y}||_{2}} r=∣∣y −y ∣∣2⋅∣∣y−y∣∣2<y −y ,y−y>当预测与观测数据分别具有正或负线性关系时,它取[-1,1]中的值,比如等于1或负1。当预测和观测数据没有线性关系时,它等于零。
对于AUC:
为了对multiome ATAC+Gene expression数据集进行建模,作者对DNA可及性数据进行了二值化。因此,为了评估这些数据的预测,我们采用了ROC曲线下的面积。设 n 0 n_0 n0和 n 1 n_1 n1分别表示来自观测数据的0和1的数目。 p 0 , i p_{0,i} p0,i( i = 1 , . . , n 0 i=1,..,n_0 i=1,..,n0)和 p 1 , j p_{1,j} p1,j( j = 1 , . . , n 1 j=1,..,n_1 j=1,..,n1)分别表示两组观测值的模型预测。AUC针对于二分类问题,AUC取0到1之间的值,1对应于完美的预测。
数据集
多任务数据集
Dyngen:
作者用Dyngen来模拟4-modality数据集。具体而言,生成500个具有模拟DNA、pre-mRNA、mRNA和蛋白质模态的细胞,每个模态包含100个维度的特征。同时,Groundtruth细胞类型注释与数据集一起生成。对于Dyngen模拟器的参数,使用Dyngen教程中线性主干模型的默认设置,函数包括backline_linear、initialize_mode和generate_dataset。
MUSE:
作者将MUSE中的模拟器应用于模拟2-modality输入,以评估具有一个低质量模态的UnitedNet的稳健性。作者模拟了11个具有1000个细胞和10种细胞类型的双模态数据集。每个模态包含500个模态特定特征。对于11个数据集中的每一个,用可控的衰减系数模拟其中一个。当与其他方法进行基准测试时,使用0.01、0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9和1作为不同的衰减系数。
Patch-seq GAVAergic neuron 数据集:
作者使用Patch-seq数据集,该数据集同时表征了从小鼠视觉皮层中GABAergic interneurons获得的形态学(M)、电生理学(E)和转录组学(T)特征。在进行质量控制后,使用了相同的数据集,其中3395个神经元用于E-T分析,448个神经元用于M-E-T分析。作者对每个模态的输入矩阵进行标准化,使每个细胞中所有特征的平均值和标准差分别为0和1。
Multiome ATAC + gene expression BMMCs数据集:
作者使用了一个多组学ATAC+基因表达数据集,该数据集同时结合了从10个受试者和4个组织位点在BMMC(骨髓单核细胞)组织中获得的基因表达和全基因组DNA可及性。除了先前研究中的质量控制外,还使用了多组ATAC+基因表达BMMC数据集的标准预处理程序。对于基因表达模态的预处理,作者使用中值标准化和log1p变换和标准化,并通过Scanpy选择前4000个高变基因。对于DNA可及性模态的预处理,通过将所有非零值替换为1来对数据进行二值化,并通过Scanpy选择前13634个高变的DNA可及性特征。作者使用ChIPseeker和scanpy.var_names_make_unique来注释DNA可及性峰值。
空间组学数据
生成niche表达模态:
使用测量的细胞或spots的RNA表达,作者整合了每个细胞或spots的空间信息,并生成RNA的加权平均表达。在二维空间坐标 ( s i 1 , s i 2 ) (s_{i}^{1},s_{i}^{2}) (si1,si2)和模态 v v v的第 i i i行 x i ( v ) x_{i}^{(v)} xi(v)对应于细胞或spots i i i 的情况下,可以计算模态 v v v的niche模态,用 x ( v n i c h e ) x^{(v\thinspace niche)} x(vniche)( v = 1 , . . , V v=1,..,V v=1,..,V)。对于细胞 i i i, x i ( v n i c h e ) x^{(v\thinspace niche)}_{i} xi(vniche)为: x i ( v n i c h e ) = ∑ j = 1 J x j ( v ) ⋅ w i j x^{(v\thinspace niche)}_{i}=\sum_{j=1}^{J}x^{(v)}_{j}\cdot w_{ij} xi(vniche)=j=1∑Jxj(v)⋅wij其中, j ∈ { 1 , . . . , J } j\in\left\{1,...,J\right\} j∈{1,...,J}表示属于cell或spot i i i 的 J J J-nearest的cells或spots, w i j w_{ij} wij为: w i j = 1 / d i s t a n c e { ( s i 1 , s i 2 ) , ( s j 1 , s j 2 ) } ∑ j = 1 J 1 / d i s t a n c e { ( s i 1 , s i 2 ) , ( s j 1 , s j 2 ) } w_{ij}=\frac{1/distance\left\{(s_{i}^{1},s_{i}^{2}),(s_{j}^{1},s_{j}^{2})\right\}}{\sum_{j=1}^{J}1/distance\left\{(s_{i}^{1},s_{i}^{2}),(s_{j}^{1},s_{j}^{2})\right\}} wij=∑j=1J1/distance{(si1,si2),(sj1,sj2)}1/distance{(si1,si2),(sj1,sj2)}其中 d i s t a n c e distance distance表示两个向量之间的欧几里得距离。
DBiT-seq embryo数据集:
作者使用DBiT-seq embryo(胚胎)数据集,其中采用了DBiT-seq 936个spots的以下三种模态:mRNA表达、蛋白质表达和niche mRNA表达。
- 对于mRNA表达模态,使用scanpy的函数scanpy.pp.normalize_total对原始计数矩阵进行归一化,并选择前568个差异表达基因。
- 对于蛋白质表达,对原始计数矩阵进行了归一化,并使用了22种蛋白质。
- niche模态是基于标准化的mRNA表达产生的。
对于组织区域表征的第一项任务,从原始研究中提取真实组织区域标签,这是基于H&E图像的主要组织区域的解剖学注释。作者将UnitedNet的聚类结果与其他最先进方法的聚类结果进行了比较。通过ARI来验证它们的性能。对于跨模态预测的并行任务,尽管有三种模态被用作UnitedNet模型的输入,但作者专注于第一种和第二种模态之间的预测:mRNA表达和蛋白质表达。由于DBiT-seq公共数据集中只有一个批次,作者将DBiT-seq embryo数据集中的936个spots分为用于预测任务的训练数据集(80%,748个spots)和测试数据集(20%,188个spots)。
DLPFC数据集:
作者使用了12个批次的成人背外侧前额叶皮层(DLPFC)数据集。使用以下三种模式:mRNA表达、从H&E染色图像中提取的形态学特征和 niche mRNA。对于mRNA表达的模态,对原始计数矩阵进行归一化,并选择前2365个差异表达基因。使用预先训练的卷积神经网络从stLearn实现的H&E染色图像中提取形态学特征。50维形态特征被用作每个spots的第二模态。对于有监督组识别任务,使用11个批次及其组织区域注释来训练UnitedNet模型。然后,将训练后的模型应用于剩余批次,以识别组织区域注释,并在H&E图像特征和mRNA表达之间进行跨模态预测。作者将UnitedNet的识别性能与来自原始DLPFC论文的SpatialDE PCA和 pseudobulk PCA进行了比较。在识别任务之后,作者对最近邻居中具有35个spots的SpaGCN之后的聚类结果应用了细化步骤。
结果
特征与特征相关性
作者使用事后可解释学习(SHAP)对训练的UnitedNet进行剖析,以表明Patch-seq GABAergic数据集中的特征相关性。具体而言,使用SHAP将重要性值(称为Shapley值)分配给关于任何给定模型输出的每个输入特征,例如特定识别的细胞组或特定特征的跨模态预测。根据定义,具有高Shapley值的特征是有影响力的。因此,可以根据特征对Shapley值的排名来选择特征。
以Pvalb神经元类型(一种细胞大类)为例,作者定性地验证了SHAP选择的相关性(图2)。对于组与特征的相关性,SHAP成功地选择了Pvalb神经元差异表达的基因、电生理特征和形态学特征的子集(图2a,d–f)。
对于Pvalb神经元特异性跨模态特征与特征相关性(图2b,c),发现在使用长方电流步长的膜片钳电刺激过程中(long square current steps),基因Lrrc38与Pvalb神经细胞平均放电率的电生理特征(average firing rate)表现出更高的相关性。这一结果与之前的研究一致,表明Lrrc38相关蛋白是大钾(BK)通道最关键的调节剂之一,大钾通道对神经元放电动力学和神经递质释放至关重要。这些结果表明,UnitedNet可以潜在地用于促进Patch-seq数据的细胞类型特异性基因功能相关性的鉴定。
- 图2:特征相关性解释(Patch-seq GABAergic数据集)。
然后,作者探索了UnitedNet中可解释学习对ATAC+基因表达数据集的生物学价值。以CD8+T主要细胞类型(CD8+T和CD8+T naive细胞)为例(图3a),结果首先鉴定了CD8+T主细胞类型差异表达的基因亚群(例如,CD8A、A2M、LEF1和NELL2)和DNA可及性位点(例如,D8A、DPP8、KDM2B和KDM6B)(图3b、d、e)。在这些基因和DNA可及位点中,DNA可及性位点PROS1、KDM2B和KDM6B与CD8+T细胞特异性基因表现出更强的相关性,表明它们在CD8+T功能中的关键作用(图3c)。该结果与先前的研究一致,即CD8+T细胞中PROS1表达水平的升高是防止免疫反应过度活跃的关键调节信号。同时,KDM2B表达的缺乏启动了T细胞白血病的发生。值得注意的是,最近的一项研究发现,与KDM2B属于同一基因家族的KDM6B通过诱导效应相关基因中的DNA可及性直接调节CD8+T细胞的产生。结果进一步表明,KDM2B也可能在调节CD8+T细胞的产生中发挥重要作用(这是模型发现的,这一点是重要的)。
- 图3:特征相关性解释(ATAC+Gene表达数据集)。
空间组学上的应用
空间组学是一种重要的模态技术,可以测量完整组织中的空间分辨多组学信息。然而,在分析用于组识别任务的空间组学数据时,空间信息往往没有被充分利用。联合网络可以灵活地整合不同的模态作为输入,包括空间信息。UnitedNet可以利用细胞niche信息(每个细胞的邻域基因表达信息)作为额外的模态来识别具有生物学意义的群体,并增强跨模态预测(图4a)。
作者首先将UnitedNet应用于单批次的DBiT-seq embryo数据集,该数据集同时映射了胚胎组织上的整个转录组和22种蛋白质。具体而言,作者生成了编码空间信息的细胞niche信息(RNA表达的加权平均值),作为第三种分析模态。然后,联合网络将基因表达、蛋白质和niche模态相结合,用于组织区域的无监督联合识别以及基因表达和蛋白质之间的跨模态预测。通过将原始报告中的组织区域的解剖注释视为Ground Truth,对组织区域识别的准确性进行了基准测试。与最先进的方法相比,UnitedNet实现了更高的无监督组识别精度(图4b)。此外,联合网络使几个代表性基因和蛋白质表达之间的空间分辨跨模态预测成为可能(图第4c)。
- 图4:无监督组识别,joint注释转移,空间组学跨模态预测。联合网络的空间组学数据分析管道示意图。空间组学同时测量完整组织网络中的空间分辨多组学数据。UnitedNet提取细胞邻域信息作为附加模态以及用于无监督或有监督群组识别和跨模态预测的其他模态。
接下来,作者将UnitedNet应用于一个带注释的多批次空间组学数据集,用于同时有监督的联合组识别和跨模态预测。作者使用了人类背外侧前额叶皮层(DLPFC)数据集,该数据集在空间上绘制了12批次DLPFC脑切片的基因表达和H&E染色。同样,使用基因表达、基于H&E染色的形态学特征和细胞niche模态作为UnitedNet的输入。UnitedNet可以成功地注释看不见的DLPFC切片,并实现比其他基准测试方法和未使用交替训练方案或细胞小众模式的消融版UnitedNet更高或相当的精度(图4d)。
此外,作者探讨了UnitedNet是否可以减少空间DLPFC数据集中的批次效应,其方式与ATAC+基因表达BMMC数据集的分析类似。结果表明,与其他消融研究相比,UnitedNet在潜在空间中保持了良好的可分性和减少批次效应的能力,使其在组识别任务中具有更高或可比的性能。此外,UnitedNet使几个代表性基因和H&E形态特征之间的跨模态预测成为可能(图4e)。
相关文章:

多任务学习用于多模态生物数据分析
目前的生物技术可以同时测量来自同一细胞的多种模态数据(例如RNA、DNA可及性和蛋白质)。这需要结合不同的分析任务(如多模态整合和跨模态分析)来全面理解这些数据,推断基因调控如何驱动生物多样性。然而,目…...

使用less命令搜索文件中的关键字
目录 介绍常用搜索技巧实例 介绍 less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。 语法 less [参数] 文件 参数说明: -b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后ÿ…...

【kubernetes系列】Kubernetes之Taints和tolerations
概述 节点亲和性是pod的一种属性(优先选择或硬性要求),它使 pod 被优先分配到一类特定的节点上。而Taint则相反,它使节点能够排斥一类特定的 pod。 Taints(污点)与tolerations(容忍度…...

宝剑锋从磨砺出 梅花香自苦寒来(高考志愿篇)
各省高考成绩已出,又到一年高考季。张雪峰提到:“普通家庭不要光谈理想,也要谈落地。”志愿怎样填报、选专业还是选学校、什么专业好就业、高考志愿主要看什么?针对这些疑问,你对正在选志愿的毕业生们有什么建议吗&…...

Jtti:怎样进行sql server2000 日志传送
在 SQL Server 2000 中,日志传送是指将事务日志从一个主服务器传送到一个或多个备份服务器的过程。这个过程确保备份服务器上的数据库保持与主服务器上的数据库同步。 要进行 SQL Server 2000 的日志传送,需要进行以下步骤: 配置主服务器&…...

MyBatis-Plus:条件构造器Wrapper
目录 1.Wrapper概述 1.1.Wrapper的继承关系 1.2.Wapper介绍 1.3.各个构造器使用区别 1.4.构造器常用方法 2.Wrapper常用构造器介绍 2.1.QueryWrapper 2.2.UpdateWrapper 2.3.LambdaQueryWrapper 2.4.AbstractWrapper 3. Lambda条件构造器 3.1.示例 4.鸣谢 MyBati…...

SNMP 计算机网络管理 实验1(二) 练习与使用Wireshark抓取SNMP数据包抓包之 任务三分析并验证TCP三次握手建立连接时三次握手工作过程
⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…...

【UE5 Cesium】03-Cesium for Unreal 添加本地数据集
上一篇:【UE5 Cesium】02-Cesium for Unreal 添加在线数据集 步骤 1. 在官网(Adding Datasets – Cesium)上下载一个示例 下载的是一个名为“Tileset.zip”的压缩文件 解压后文件内容如下 2. 打开虚幻编辑器,点击“Blank 3D Tiles…...

数通王国历险记之地址分析协议(ARP)
系列文章目录 数通王国历险记(4) 目录 前言 一,什么是地址解析协议(ARP) 二,封装和解封装 三,为什么需要地址解析协议(ARP) 四,ARP的验证实验 4.1&#x…...

Mac端显示服务器上show的内容
Mac端显示服务器上show的内容 1. 需求描述 在Mac端(终端和PyCharm中)编写代码,在服务器端运行程序。需要在Mac端显示服务器端运行的内容,比如,运行的视频等。 2. 常见报错 SSH 运行命令时报错示例。 (cv) czjing…...

【SQL】每类视频近一个月的转发量/率
【问题】 统计在有用户互动的最近一个月(按包含当天在内的近30天算,比如10月31日的近30天为10.2~10.31之间的数据)中,每类视频的转发量和转发率(保留3位小数)。 【数据】 用户-视频互动表 tb_user_video…...

chatgpt读论文
在当今的数字化时代,人工智能(AI)正在颠覆我们的生活方式。 OpenAI的GPT系列模型——尤其是最新一代的GPT-4和它的聊天机器人版本ChatGPT——是最近AI进步的显著代表。通过深度学习和海量数据训练,这些模型已经可以生成出色的人类般的文本。它们可以被用…...

关于visual studio 2010 及以上版本 引入boost库的最新解决方法
之前没有怎么用到boost库,出来实习需要去编译一些代码,需要引入boost第三方库,在这过程中,一直出现 LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc100-mt-gd-x3 错误, 但是也确实是跟其他教程学过…...

SpringBoot+ Dubbo + Mybatis + Nacos +Seata整合来实现Dubbo分布式事务
1.简介 “ 本文主要介绍SpringBoot2.1.5 Dubbo 2.7.3 Mybatis 3.4.2 Nacos 1.1.3 Seata 0.8.0整合来实现Dubbo分布式事务管理,使用Nacos 作为 Dubbo和Seata的注册中心和配置中心,使用 MySQL 数据库和 MyBatis来操作数据。 ” 如果你还对SpringBoot、Dubbo、Nacos…...

MongoDB使用
文档连接: link 创建表 不需要创建表的语句,当插入表的第一条语句时,会隐式的创建表。 增 插入一条 db.people.insertOne({ user_id: "bcd001", age: 45, status: "A" } )插入多条 db.collection.insertMany([ <document 1&g…...

C#文件安全管理解析
在实际的项目开发中,我们经常需要使用到文件的I/O操作,主要包含对文件的增改删查等操作,这些基本的操作我们都是很熟悉,但是较少的人去考虑文件的安全和操作的管理等方面,例如文件的访问权限管理,文件数据的…...

基于Dubbo分布式学校信息管理系统设计与实现
一、引言 1.1 课题背景 随着时代的发展与进步,计算机网络也随之日益完善,渐渐覆盖了我们生活的各个方面。在信息化和数字化的时代背景下,使用计算机管理学校信息来提升教育工作的质量和效率,是大势所趋,所以近年来,随着网络技术的不断发展,使用信息管理系统的学校越来…...

oracle面试问题和笔记整理
oracle面试笔记 ORACLE 面试问题-技术篇(2) 如何判断数据库的时区? 解答:SELECT DBTIMEZONE FROM DUAL; 解释GLOBAL_NAMES设为TRUE的用途 解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE, 在建立数据库链接时就必须用相同的名字连结远程数据库 23。如何…...

Hadoop_Yarn实践 (三) => (Yarn的基础架构、原理、容量/公平调度器、Tool接口、Yarn常用命令、核心参数)
目录 Hadoop_HDFS、Hadoop_MapReduce、Hadoop_Yarn 实践 (三)一、Hadoop_HDFS二、Hadoop_MapReduce三、Hadoop_Yarn1、Yarn资源调度1.1、基础架构1.2、Yarn的工作调度机制(Job提交过程)1.3、Yarn 调度器和调度算法1.3.1、先进先出调度器(FIFO…...

postgresql 从应用角度看快照snapshot使用,事务隔离控制不再神密
专栏内容:postgresql内核源码分析 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 快照使用 快照是事务中使用,配合事务的隔离级别,体现出不同的可见性。…...

mysql(mariadb)读写分离部署
目录 一、原理 二、准备环境 三、部署mysql主从复制 1.五台服务器下载mariadb 2.修改master配置文件,重启数据库 3.登录mysql创建replication 4.从服务器登录验证 5.获得master服务器 DB的相关信息 6.备份master原有数据 7.修改slave1、slave2配置 8. 进入…...

ES-工作原理
前言 搜索引擎是对数据的检索,而数据总体分为两种:结构化数据和非结构化数据。而对于结构化数据,因为他们具有特定的结构,所以一般都是可以通过关系型数据库MySQL/oracle的二维表的方式存储和搜索,也可以建立索引。…...

C++小结(4)
C 字符串 C 提供了两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字…...

Java框架之spring 的 messaging
写在前面 本文看下spring message相关的内容。 1:Message?Messaging? Message是消息的意思,是一个名词。而Messaging是一个动名词,是将消息发送出去的意思,因此,我们的消息系统是messaging s…...

linux使用grep命令查询nginx的进程情况时总是出现 grep --color=auto nginx
问题: 每次使用ps aux | grep 服务名 命令查询某个服务的进程时,总会出现一条grep --colorauto 服务名 例如: ps aux | grep nginx # 会出现图片中的情况解答: 这是因为grep 也是一条命令,它在输出时,会…...

FFmpeg音视频开发知识点(二)
系列文章目录 FFmpeg音视频开发知识点(一) 文章目录 系列文章目录前言一、AAC音频编码1. ffmpeg编译第三方的libfdk_aac2. S16重采样FLTP 二、AAC音频解码总结 前言 该篇讲解一下,音频编解码中的难点,以及开发过程中遇到问题&am…...

【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~
Java可执行命令之jarsigner 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法3.1.1 可选参数:jarsigner -keystore < url>3.1.2 可选参数:jarsigner -storepass <口令>3.1.3 可选参数:jarsigner -keypass <口令>3.1.4 可选参…...

c#调用c++ dll,Release版本内存访问错误
最近遇到个比较经典的案例,在c#中调用yara进行文件检测,yara是c编写的一个非常强大库,github有个大佬用c#对其进行了封装,使其能在跨平台下,只需编译yara的so或dll就能直接跑。但总是在Release版本下时不时就崩溃&…...

内网安全:Cobalt Strike 与 MSF 联动( 会话 相互转移 )
内网安全:Cobalt Strike 与 MSF 联动( 会话 相互转移 ) 在渗透中,有时候 Cobalt Strike 会话可能会受限制,所以我们需要把 Cobalt Strike 会话转移到 MSF 上进行后面的渗透。也有的时候会话在 MSF 上,但是…...

性能测试讲解超详细Jmeter
目录 什么是性能 性能测试的目的 功能测试和性能测试 基准测试 负载测试 稳定性测试 压力测试 并发测试 总结 性能测试指标 响应时间 并发数 吞吐量 点击数 错误率 资源使用率 总结 性能测试流程 性能测试需求分析 性能测试计划和方案 编辑性能测试用例编辑 性…...