文章《Causal Inference for Knowledge Graph based Recommendation》阅读

文章《Causal Inference for Knowledge Graph based Recommendation》阅读

  • 论文概况及动机(Introduction)
  • 问题形式化
  • 方法论
    • Causal Intervention (C1)
    • Model Implementation
      • U(·)
      • f(·)
      • 协同过滤部分
      • 模型优化
    • Causal Inference (C2)
  • Experiments
  • 总结

今天带来的是一篇发表在 TKDE 上的 2022 年的一篇关于因果推荐的论文,论文聚焦于基于知识图谱(Knowledge Graph, KG)的推荐系统方向,通过后门调整和反事实推理,对 KG-based RS 进行了优化。论文提出了模型 基于知识图谱的因果推荐 (Knowledge Graph-based Causal Recommendation, KGCR)模型。论文组合使用后门调整和反事实推理,分别完成了confounder去除和对于结果的debias。论文比较完整,值得一读。

论文由Yinwei Wei等人完成。

论文地址:https://ieeexplore.ieee.org/document/9996555
代码仓库:https://github.com/weiyinwei/KGCR

论文概况及动机(Introduction)

Illustration
作者立足于基于 KG 的推荐系统,针对如图1所示的 知识图 与 用户-物品交互图 的融合,提出两个当前面临的挑战:

  1. KG 的结构阻碍了用户与属性之间的关系表示。
  2. 知识图谱中用户与属性之间存在着RS倾向于推荐包含更多属性对应的物品(例如图1中倾向于向User推荐Clockstoppers,而非Titanic。因为Clockstoppers对应两个重叠属性(图中用蓝色曲线表示),而Titanic对应一个。(图中使用红色线条表示))

作者将知识图谱中的节点分为两类,分别叫做 item entities 和 attribute entities,物品实体表示交互物品,属性实体表示物品对应的属性知识。

针对上述问题,作者分别使用 后门调整反事实推理 进行解决。

因果图如 图2 所示,下面先介绍一下其中的主要变量(作者对于这一部分的介绍有点模糊,或者说不够清晰,不需要纠结于具体代表的数学表达形式,按照下面的介绍进行区分即可,具体的数学表达会在后文中明确):

  • K K K 表示知识图谱结构,分别包括用户与物品的邻接情况和物品与属性之间的邻接关系。
  • A A A 表示属性表示(embedding)
  • U U U 表示用户表示
  • S S S 表示带预测的用户-物品交互关系
  • I I I 表示物品表示

除此以外,作者使用 G K G \mathcal{G}_{KG} GKG 表示知识图谱, U , I \mathcal{U,I} U,I 分别表示其中的用户与物品。其中,
O = ∣ U ∣ O=|\mathcal{U}| O=U M = ∣ I ∣ M=|\mathcal{I}| M=I,及 N = ∣ A ∣ N=|\mathcal{A}| N=A 分别表示用户数量、物品数量以及属性数量。
Causal Graph & Intervention
C1)如图 2(a) 所示,对于用户表示与属性表示之间,因为知识图谱的存在,插入了一条后门路径(backdoor path) A ← K → U A \leftarrow K \rightarrow U AKU,从客观上影响了用户与物品之间的表达。我们这里将其称之为Challenge 1(C1 A ← K → U A \leftarrow K \rightarrow U AKU

C2)另外,对于最终的预测 S S S,由于属性节点存在一条直接边连接 A → S A \rightarrow S AS,这带来了属性节点对于最终预测结果的bias。我们将这一问题成为Challenge 2 (C2 A → S ← U A \rightarrow S \leftarrow U ASU

这两个要点在原文中没有体现,这里主要是为了方便介绍模型引入。后续内容主要就是针对上述两块内容展开的。

下面我们正式开始。

问题形式化

作者将预测分为两部分,协同过滤部分不考虑知识图谱,用户与物品的表示也与知识图谱embedding不相关,单独进行计算如下:
S u i c f = f c f ( u c f , i c f ) . (1) S_{ui}^{cf} = f_{cf}(\mathbf{u}_{cf}, \mathbf{i}_{cf}). \tag{1} Suicf=fcf(ucf,icf).(1)

另一部分就是知识图谱部分,知识图谱是有向图,关于知识图谱的 embedding 学习过程如下:
S u , i , a = f ( u , i ) , w h e r e u = U ( O u + , G K G ) , (2) S_{u,i,a} = f(\mathbf{u}, \mathbf{i}), \mathrm{where}\ \mathbf{u} = U(\mathcal{O}_u^+, \mathcal{G}_{KG}), \tag{2} Su,i,a=f(u,i),where u=U(Ou+,GKG),(2)
其中, G K G = { ( h , r , t ) ∣ h , t ∈ E , r ∈ R } \mathcal{G}_{KG} = \{(h, r, t) \mid h, t \in \mathcal{E}, r \in \mathcal{R} \} GKG={(h,r,t)h,tE,rR} E , R \mathcal{E}, \mathcal{R} E,R 分表表示边集合与节点集合。 h h h 表示 头 (head), e e e 表示 尾(tail)。
O u + \mathcal{O}_u^+ Ou+ 表示用户的交互历史正例。
可以看出,在训练阶段,主要就是解决两个函数, U ( ⋅ ) U(\cdot) U() f ( ⋅ ) f(\cdot) f(),分别用于用户偏好学习 与 相似性计算。

因此,本文要解决的任务形式化表示为:
输入:用户历史交互与知识图谱
输出:计算 S u i c f S_{ui}^{cf} Suicf S u , i , a S_{u,i,a} Su,i,a,并预测用户的未来交互

方法论

对于因果图的介绍上面已经介绍过,这里不再赘述。这里主要明确一下数学表达:

  • 变量 U U U、变量 I I I 取值 u , i \mathbf{u}, \mathbf{i} u,i,即用户与物品的知识图谱中的embedding向量。
  • A A A 表示用户交互过的属性向量集合,i.e., a = { a 1 , a 2 , a A ′ } \mathbf{a} =\left\{ \mathbf{a}_{1}, \mathbf{a}_{2}, \mathbf{a}_{A^{\prime}} \right\} a={a1,a2,aA},其中 A ′ A^{\prime} A表示当前用户交互过的属性数量。不过这里不用在意,实际上可以直接理解为用户与所有属性的交互邻接矩阵,在后文的处理过程中也确实是这么做的。
  • K K K 表示用户所交互物品与属性之间的结构信息,形式上表现为: k = { k 1 , k 2 , k K ′ } \mathbf{k} =\left\{ \mathbf{k}_{1}, \mathbf{k}_{2}, \mathbf{k}_{K^{\prime}} \right\} k={k1,k2,kK}, 其中 K ′ K^{\prime} K 表示用户交互过的物品数量。对于任意物品 j j j k j ∈ [ 0 , 1 ] 1 × N \mathbf{k}_{j} \in [0, 1]^{1 \times N} kj[0,1]1×N 表示与 N N N 个 attribute 的连接关系。
  • S S S 即 score,预测分数

Causal Intervention (C1)

解决C1,去掉confounder,即切断 K K K A A A 之间的路径:

S u , i , a = P ( S ∣ U = u , I = i , d o ( A = a ) ) = ∑ k ∈ K P ( S ∣ U ( a , k ) , i , a ) P ( k ) , (3) \begin{aligned} S_{u, i, a}&=P(S \mid U=\mathbf{u}, I=\mathbf{i}, do(A=\mathbf{a})) \\ &=\sum_{k \in \mathcal{K}} P(S \mid U(\mathbf{a}, \mathbf{k}), \mathbf{i}, \mathbf{a}) P(\mathbf{k}), \end{aligned}\tag{3} Su,i,a=P(SU=u,I=i,do(A=a))=kKP(SU(a,k),i,a)P(k),(3)
其中, P ( k ) = { P ( k 1 ) , … , P ( k K ′ ) } P(\mathbf{k}) =\left\{P\left(\mathbf{k}_1\right), \ldots, P\left(\mathbf{k}_{K^{\prime}}\right)\right\} P(k)={P(k1),,P(kK)} 表示结构分布概率。这里不容易计算,后续会消掉。 U ( ⋅ ) U(\cdot) U() 是待计算的用户与attribute之间的传播函数,后续会介绍(使用TransE模型)。

融合 f ( ⋅ ) f(\cdot) f() 作为相似性计算函数,上式变为:
P ( S ∣ U = u , I = i , d o ( A = a ) ) = ∑ k ∈ K P ( S ∣ U ( a , k ) , i , a ) P ( k ) = ∑ k ∈ K f ( U ( a , k ) , i , a ) P ( k ) , (4) \begin{aligned}P(S \mid U &=\mathbf{u}, I=\mathbf{i}, d o(A=\mathbf{a})) \\ & =\sum_{k \in \mathcal{K}} P(S \mid U(\mathbf{a}, \mathbf{k}), \mathbf{i}, \mathbf{a}) P(\mathbf{k}) \\ & =\sum_{k \in \mathcal{K}} f(U(\mathbf{a}, \mathbf{k}), \mathbf{i}, \mathbf{a}) P(\mathbf{k}), \end{aligned} \tag{4} P(SU=u,I=i,do(A=a))=kKP(SU(a,k),i,a)P(k)=kKf(U(a,k),i,a)P(k),(4)

进一步地,套用 NWGM 进行近似,可以得到:

P ( S ∣ U = u , I = i , d o ( A = a ) ) ≈ f ( U ( a , ( ∑ k ∈ K k P ( k ) ) ) , i , a ) , (5) \begin{aligned}P(S \mid U=\mathbf{u}, I=\mathbf{i}, d o(A=\mathbf{a})) \approx f\left(U\left(\mathbf{a},\left(\sum_{k \in \mathcal{K}} \mathbf{k} P(\mathbf{k})\right)\right), \mathbf{i}, \mathbf{a}\right) \end{aligned}, \tag{5} P(SU=u,I=i,do(A=a))f(U(a,(kKkP(k))),i,a),(5)
这里就是把求和部分移到函数内部,这里注意如果需要取消掉约等号,改为等号,需要满足:
E [ f ( X ) ] = f ( E [ X ] ) \mathbb{E}[f(X)]=f(\mathbb{E}[X]) E[f(X)]=f(E[X])。因此需要 f ( ⋅ ) f(\cdot) f() U ( ⋅ ) U(\cdot) U() 都是线性函数。

尽管这里作者一直声称 f ( ⋅ ) f(\cdot) f() U ( ⋅ ) U(\cdot) U() 的实现都采用线性函数,但实际上后续在 f ( ⋅ ) f(\cdot) f() 的实现中是包含非线性函数 σ ( ⋅ ) \sigma(\cdot) σ() 的。这里作者应该包含一个约等数的误差范围声明,关于这部分的证明可参考论文《Deconfounded Recommendation for Alleviating Bias Amplification》。

作者后续处理中,将 k \mathbf{k} k 拆分成 k ~ ⋅ K \tilde{\mathbf{k}} \cdot \mathbf{K} k~K 的形式。其中 K ∈ R M × N \mathbf{K} \in \mathbb{R}^{M \times N} KRM×N 表示用户与物品之间的邻接矩阵。以图1 中例子示例, K = [ [ 1 , 1 , 0 ] , [ 1 , 1 , 1 ] , [ 0 , 0 , 1 ] ] , k ~ = [ 0 , 1 , 0 ] \mathbf{K}=[[1,1,0],[1,1,1],[0,0,1]], \tilde{\mathbf{k}}=[0,1,0] K=[[1,1,0],[1,1,1],[0,0,1]],k~=[0,1,0]。因此,继续拆分,得到:

P ( S ∣ U = u , I = i , d o ( A = a ) ) ≈ f ( U ( a , ( ∑ k ∈ K k P ( k ) ) ) , i , a ) = f ( U ( a , ∑ k ~ ∈ K ~ ( k ~ P ( k ~ ) ) , K ) , i , a ) .  (6) \begin{aligned} &P(S \mid U = \mathbf{u}, I=\mathbf{i}, do(A=\mathbf{a})) \\ & \approx f\left(U\left(\mathbf{a},\left(\sum_{k \in \mathcal{K}} \mathbf{k} P(\mathbf{k})\right)\right), \mathbf{i}, \mathbf{a}\right) \\ &= f\left(U\left(\mathbf{a}, \sum_{\tilde{\mathbf{k}} \in \tilde{\mathcal{K}}}(\tilde{\mathbf{k}} P(\tilde{\mathbf{k}})), \mathbf{K}\right), \mathbf{i}, \mathbf{a}\right) \text {. }\end{aligned} \tag{6} P(SU=u,I=i,do(A=a))f(U(a,(kKkP(k))),i,a)=f U a,k~K~(k~P(k~)),K ,i,a (6)
这里, k ~ P ( k ~ ) ) \tilde{\mathbf{k}} P(\tilde{\mathbf{k}})) k~P(k~)) 即计算变量 k ~ \tilde{\mathbf{k}} k~的期望, P ( k ~ ) = 1 M P(\tilde{\mathbf{k}}) = \frac{1}{M} P(k~)=M1 表示均匀分布,可以得到:
P ( S ∣ U = u , I = i , d o ( A = a ) ) ≈ f ( U ( a , E ( k ~ ) , K ) , i , a ) , = 1 M f ( U ( a , K ) , i , a ) ,  = 1 M f ( U ( a ~ , A , K ) , i , a ) .  (7) \begin{aligned} &P(S \mid U=\mathbf{u}, I=\mathbf{i}, d o(A=\mathbf{a})) \\ &\approx f(U(\mathbf{a}, \mathbb{E}(\tilde{\mathbf{k}}), \mathbf{K}), \mathbf{i}, \mathbf{a}), \\ & =\frac{1}{M} f(U(\mathbf{a}, \mathbf{K}), \mathbf{i}, \mathbf{a}) \text {, } \\ & =\frac{1}{M} f(U(\tilde{\mathbf{a}}, \mathbf{A}, \mathbf{K}), \mathbf{i}, \mathbf{a}) \text {. } \end{aligned} \tag{7} P(SU=u,I=i,do(A=a))f(U(a,E(k~),K),i,a),=M1f(U(a,K),i,a)=M1f(U(a~,A,K),i,a)(7)
这里的 A ∈ R N × D \mathbf{A} \in \mathbb{R}^{N \times D} ARN×D 同样是进行了拆解,以方便计算。

虽然不影响结论,但这里有个计算错误需要指出,即 公式(7) 中第三行不应该为 1 M \frac{1}{M} M1,这里求的是变量 k ~ \tilde{\mathbf{k}} k~的期望,因此 M M M 作为分母,分子应该是常数厂前用户的交互物品总数。(应该是这样吧?评论区欢迎讨论!)

Model Implementation

根据上述所有部分,现在只需要实现 f ( ⋅ ) f(\cdot) f() U ( ⋅ ) U(\cdot) U() 即完成了模型所有构造。

U(·)

首先是知识图谱上的 U ( ⋅ ) U(\cdot) U()

基于TransE得到知识图谱embedding:
L K G = ∑ ( h , r , t ) ∈ T ∑ ( h ′ , r , t ′ ) ∈ T ′ [ γ + d ( e h + e r , e t ) − d ( e h ′ + e r , e t ′ ) ] + . (8) \mathcal{L}_{K G}=\sum_{(h, r, t) \in \mathcal{T}} \sum_{\left(h^{\prime}, r, t^{\prime}\right) \in \mathcal{T}^{\prime}}\left[\gamma+d\left(\mathbf{e}_h+\mathbf{e}_r, \mathbf{e}_t\right)-d\left(\mathbf{e}_{h^{\prime}}+\mathbf{e}_r, \mathbf{e}_{t^{\prime}}\right)\right]_{+}.\tag{8} LKG=(h,r,t)T(h,r,t)T[γ+d(eh+er,et)d(eh+er,et)]+.(8)

使用得到的embedding初始化 U U U I I I,并使用图神经网络传播:
p ( l + 1 ) = ∑ q ∈ N p 1 ∣ N p ∣ ∣ N q ∣ q ( l ) . (9) \mathbf{p}^{(l+1)}=\sum_{q \in \mathcal{N}_p} \frac{1} {\sqrt{\left|\mathcal{N}_p\right|\left|\mathcal{N}_q\right|}} \mathbf{q}^{(l)}. \tag{9} p(l+1)=qNpNpNq 1q(l).(9)

f(·)

使用late fusion实现 f ( ⋅ ) f(\cdot) f()

S u , i , a = f ( u , i , a ) = g ( u , i ) σ ( h ( i , a ) ) . (10) S_{u, i, a}=f(\mathbf{u}, \mathbf{i}, \mathbf{a})=g(\mathbf{u}, \mathbf{i}) \sigma(h(\mathbf{i}, \mathbf{a})).\tag{10} Su,i,a=f(u,i,a)=g(u,i)σ(h(i,a)).(10)
g ( u , i ) = u ⋅ i ⊤ . (11) g(\mathbf{u}, \mathbf{i})=\mathbf{u} \cdot \mathbf{i}^{\top}.\tag{11} g(u,i)=ui.(11)
S i , a = h ( i , a ) = i ⋅ a ‾ ⊤ , where  a ‾ = 1 M ∑ a ∈ A a . (12) S_{i, a}=h(\mathbf{i}, \mathbf{a})=\mathbf{i} \cdot \overline{\mathbf{a}}^{\top}, \text { where } \overline{\mathbf{a}}=\frac{1}{M} \sum_{a \in A} \mathbf{a}.\tag{12} Si,a=h(i,a)=ia, where a=M1aAa.(12)

协同过滤部分

S u , i c f = u c f ⋅ i c f ⊤ . (13) S_{u, i}^{c f}=\mathbf{u}_{c f} \cdot \mathbf{i}_{c f}^{\top}. \tag{13} Su,icf=ucficf.(13)

模型优化

使用多任务学习方式,将多个loss进行拆分,分别进行训练。分别如下:

L 1 = ∑ ( u , i , j ) ∈ O − ln ⁡ σ ( S u , i , a + S u , i c f − S u , j , a − S u , j c f ) . (14) \mathcal{L}_1=\sum_{(u, i, j) \in \mathcal{O}}-\ln \sigma\left(S_{u, i, a}+S_{u, i}^{c f}-S_{u, j, a}-S_{u, j}^{c f}\right).\tag{14} L1=(u,i,j)Olnσ(Su,i,a+Su,icfSu,j,aSu,jcf).(14)
其中, O = { ( u , i , j ) ∣ ( u , i ) ∈ O + , ( u , j ) ∈ O − } \mathcal{O}=\left\{(u, i, j) \mid(u, i) \in \mathcal{O}^{+},(u, j) \in \mathcal{O}^{-}\right\} O={(u,i,j)(u,i)O+,(u,j)O},即采用BPR损失。

L 2 = ∑ ( u , i , j ) ∈ O m a x ( 0 , σ ( S i , a ) − σ ( S j , a ) − m ) . (15) \mathcal{L}_2 = \sum_{(u, i, j) \in \mathcal{O}} m a x\left(0, \sigma\left(S_{i, a}\right)-\sigma\left(S_{j, a}\right)-m\right). \tag{15} L2=(u,i,j)Omax(0,σ(Si,a)σ(Sj,a)m).(15)

损失整体:
L = L 1 + α L 2 + ∥ Θ ∥ 2 (16) \mathcal{L}=\mathcal{L}_1+\alpha \mathcal{L}_2+\| \Theta \|_2 \tag{16} L=L1+αL2+∥Θ2(16)

Causal Inference (C2)

解决 C2,即反事实推理,去偏。

去偏采用TIE方式,具体细节不再赘述,可参考论文《CausalRec: Causal Inference for Visual Debiasing Visually-Aware Recommendation》阅读 进行补充。
Counterfactual Inference

总之,根据上述 loss 训练完成模型后,在推理阶段,模型遵循
T E = S u , i , a − S u ∗ , i , a ∗ . (17) TE = S_{u, i, a} - S_{u^*, i, a^*}. \tag{17} TE=Su,i,aSu,i,a.(17)
N D E = S u ∗ , i , a − S u ∗ , i , a ∗ . (18) N D E=S_{u^*, i, a}-S_{u^*, i, a^*}. \tag{18} NDE=Su,i,aSu,i,a.(18)
T I E = T E − N D E = S u , i , a − S u ∗ , i , a ∗ − S u ∗ , i , a + S u ∗ , i , a ∗ = g ( u , i ) σ ( h ( i , a ) ) − g ( u ∗ , i ) σ ( h ( i , a ) ) = ( g ( u , i ) − s i ) σ ( h ( i , a ) ) , (19) \begin{aligned}TIE &=TE-NDE \\ &=S_{u, i, a}-S_{u^*, i, a^*}-S_{u^*, i, a}+S_{u^*, i, a^*} \\ &=g(\mathbf{u}, \mathbf{i}) \sigma(h(\mathbf{i}, \mathbf{a}))-g\left(\mathbf{u}^*, \mathbf{i}\right) \sigma(h(\mathbf{i}, \mathbf{a})) \\ &=\left(g(\mathbf{u}, \mathbf{i})-s_i\right) \sigma(h(\mathbf{i}, \mathbf{a})),\end{aligned}\tag{19} TIE=TENDE=Su,i,aSu,i,aSu,i,a+Su,i,a=g(u,i)σ(h(i,a))g(u,i)σ(h(i,a))=(g(u,i)si)σ(h(i,a)),(19)
其中, s i s_i si表示所有 g ( u , i ) g(\mathbf{u}, \mathbf{i}) g(u,i) 的平均值。

结合协同过滤部分,得到最终的去偏预测目标:
y u i = S u i c f + S u i k g = u c f ⊤ ⋅ i c f + ( g ( u , i ) − s i ) σ ( h ( i , a ) ) . (20) y_{u i}=S_{u i}^{c f}+S_{u i}^{k g}=\mathbf{u}_{c f}^{\top} \cdot \mathbf{i}_{c f}+\left(g(\mathbf{u}, \mathbf{i})-s_i\right) \sigma(h(\mathbf{i}, \mathbf{a})) .\tag{20} yui=Suicf+Suikg=ucficf+(g(u,i)si)σ(h(i,a)).(20)

需要提一嘴的是,文章的复杂度计算应该是有问题的,光是图神经网络部分就应该是 ( M + N ) 2 (M+N)^{2} (M+N)2 平方级别的,邻接矩阵嘛,起码是横着竖着都算一遍。

综上所有内容,模型整体流程为:使用TransE完成知识图谱embedding训练,并初始化 U U U I I I。通过图神经网络传播( U ( ⋅ ) U(\cdot) U())完成 S a , k S_{a, k} Sa,k,通过late fusion相乘的方式( f ( ⋅ ) f(\cdot) f())完成 f ( U ( a , k ) , i , a ) f(U(\mathbf{a}, \mathbf{k}), \mathbf{i}, \mathbf{a}) f(U(a,k),i,a),根据 loss 完成模型优化。 最后根据 TIE 完成test。
作者进行了总结,如算法所示:
Algorithm

Experiments

实验部分就不再多说了,这里贴一个 Overall Experiment Comparison 的对比结果,可见结果还是不错的。
Overall Experiment Comparison

总结

论文提出了一种针对基于知识图谱的因果推荐模型 K G C R KGCR KGCR,通过组合 后门调整 和 反事实推理,得到一个相对完整的因果推荐模型。文章条理清楚,内容详实。可能美中不足的就是存在一些typo,数学表达从前向后会稍显混乱。但整体来说,还是挺在线的。

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

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

相关文章

Kafka生产者消息异步发送并返回发送信息api编写教程

1.引入依赖&#xff08;pox.xml文件&#xff09; <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>3.6.2</version> </dependency> </depende…

伦敦金1手指的是什么?

就算没有进行过伦敦金投资&#xff0c;甚至是没有做过任何金融产品投资的朋友&#xff0c;相信也听过别人做交易决定&#xff0c;他们都是1手两手那样头买入。有些朋友就好奇了&#xff0c;这伦敦金1手指的是什么意思&#xff1f;下面我们就来讨论一下。 首先&#xff0c;如果我…

CDH6.3.2集成Flink1.12.2

一、Linux下载httpd服务并开启 yum install y httpd systemctl start httpd systemctl enable httpd 二、获取已制作好的安装包 flink-1.12.2-bin-scala_2.11.tar ​ FLINK_ON_YARN-1.12.2.jar ​ flink-shaded-hadoop-2-uber-3.0.0-cdh6.3.2-10.0.jar 三、集成CM 1.上传编…

ERV-Net:一种用于脑肿瘤分割的高效3D残差神经网络| 文献速递-深度学习肿瘤自动分割

Title 题目 ERV-Net: An efficient 3D residual neural network for brain tumor segmentation ERV-Net&#xff1a;一种用于脑肿瘤分割的高效3D残差神经网络 01 文献速递介绍 脑肿瘤在全球范围内是致命的&#xff0c;与其他类型的肿瘤相比。胶质瘤是最具侵略性的脑肿瘤类…

数据挖掘与机器学习——聚类算法

目录 无监督学习 聚类算法 概念&#xff1a; 功能&#xff1a; 应用场景&#xff1a; 评判标准&#xff1a; 划分聚类&#xff1a; K-means聚类 逻辑实现&#xff1a; 聚类方式 问题&#xff1a; 解决&#xff1a; 可能存在的问题&#xff1a; 1.初始值对K-means聚…

CANOE制造dll文件,以及应用dll文件

1、使用canoe自带的capl dll 2、然后使用Visual Studio 2022 打开项目 3、项目打开后修改下项目属性 4、修改capldll.cpp文件 4.1 添加的内容 void CAPLEXPORT far CAPLPASCAL appSum(long i, long j, long* s){*s i j;} {"sum", (CAPL_FARCALL)appSum, "…

python前端streamlit模型部署

简单介绍使用前端streamlit框架快速部署本地模型&#xff1a; 1、模型训练&#xff1a; import pandas as pd # 流程整合 from sklearn.pipeline import make_pipeline, Pipeline # 数据处理 from sklearn.impute import SimpleImputer from sklearn.preprocessing import Min…

01 - Maven入门安装

目录 1、软件下载地址 2、安装的版本 3、安装的条件 4、软件的结构 5、Maven环境配置 5.1、配置MAVEN_HOME 5.2、配置Path 5.3、命令测试&#xff08;cmd窗口&#xff09; 6、Maven的功能配置 6.1、配置本地仓库地址 6.2、配置国内阿里镜像 6.3、配置jdk8版本项目构…

鸿蒙ArkTS声明式开发:跨平台支持列表【背景设置】 通用属性

背景设置 设置组件的背景样式。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版…

设计模式22——备忘录模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 备忘录模式&#xff08;Mement…

EG2106 原装正品 贴片SOP-8 大功率MOS管栅极驱动芯片耐压600V

EG2106 在电机控制中的应用非常广泛&#xff0c;下面是一些典型的应用案例&#xff1a; 1. 无刷直流电机&#xff08;BLDC&#xff09;控制&#xff1a;EG2106 可以用于驱动无刷直流电机的功率MOSFET或IGBT。在无刷电机控制器中&#xff0c;通常会用到H桥电路来控制电机的正…

基于Java的KTV点歌系统

开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术&#xff0c;JAVA&#xff0c;B/S架构 工具&#xff1a;浏览器&#xff08;360浏览器、谷歌浏览器、QQ浏览器等&#xff09;&#xff0c;数据库管理工具&#xff08;MySQL&#xff09; 系统展示 …

HTML动态响应2-Servlet+Ajax实现HTTP前后台交互方式

作者:私语茶馆 前言 其他涉及到的参考章节: HTML动态响应1—Ajax动态处理服务端响应-CSDN博客 Web应用JSON解析—FastJson1.2.83/Tomcat/IDEA解析案例-CSDN博客 HTML拆分与共享方式——多HTML组合技术-CSDN博客 1.场景: WEb项目经常需要前后端交互数据,并动态修改HTML页…

Linux:subshell(子shell)和childprocess(子进程)

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 一、预备知识 在进行这个话题之前&#xff0c;首先要了解Linux系统中一个进程是如何创建的&#xff0c;当一个命令被执行时&#xff0c;首先会在当前进程创建一个子进程…

Vue3使用mitt进行组件通信

mitt&#xff1a;事件总线&#xff0c;是第三方插件。 Vue2.x 使用 EventBus 事件总线进行兄弟组件通信&#xff0c;而在Vue3中 EventBus 事件总线模式已经被移除&#xff0c;官方建议使用外部的、实现了事件触发器接口的库&#xff0c;例如 mitt 或 tiny-emitter。 比起 Vue…

rtos最小任务切换的实现 keil软件仿真 stm32 PendSV

最小任务切换的实现 本例子实现了一个 rtos 最小的任务切换功能&#xff0c;使用 keil 仿真功能&#xff0c;在模拟的 stm32f103 的器件上实现了使用 PendSV 中断切换线程的效果。 git 源码仓库&#xff1a;https://github.com/yutianos/rtos-little 本文链接&#xff1a;csdn…

数学函数,字符串

目录 Math类 三角函数 指数函数 取整方法 其他方法 String类 常见方法 字符串比较方法 子串和数字与字符串的转换 Math类 Math类在java.lang中&#xff0c;不用显式引入。 三角函数 private static void triangleFunc() {double degree Math.toDegrees(Math.PI / 3…

神经网络与深度学习——第4章 前馈神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第4章 前馈神经网络 前馈神经网络 神经元 Sigmoid型函数 Hard-Logistic函数和Hard-Tanh函数 ReLU函数 带泄露的ReLU 带参数的ReLU ELU函数 Softplus函数 Swish函数 GELU函数 Maxout单元 网络结构 前馈网络…

Qt图像处理技术九:得到QImage图像的灰度直方图

效果 原理 得到灰度化值&#xff0c;将灰度化的值带入0-255内&#xff0c;增加&#xff0c;得到可视化图形 源码 // 绘制直方图 QImage drawHistogram(const QImage &image) {QVector<int> histogram(256, 0);// 计算图像的灰度直方图for (int y 0; y < image…

【SpringBoot】SpringBoot整合JWT

目录 先说token单点登录&#xff08;SSO&#xff09;简介原理单点登录的优势单点登录流程分布式单点登录方式方式一&#xff1a;session广播机制实现方式二&#xff1a;使用cookieredis实现。方式三&#xff1a;token认证 JWT数字签名JWT的作用JWT和传统Session1、无状态&#…