目前,知识图谱(Knowlege Graph)在医疗、金融等领域都取得了广泛的应用。我们将知识图谱定义为\(\mathcal{g}=\{\mathcal{E}, \mathcal{R}, \mathcal{T}\}\),这里\(\mathcal{E}=\left\{e_{i}\right\}_{i=1}^{n}\)是由\(n\)个实体(entity)组成的集合,\(\mathcal{R}=\left\{r_{i}\right\}_{i=1}^{m}\)是由\(m\)个关系(relation)组成的集合。元组集合\(\mathcal{T}=\{(h, r, t) \in \mathcal{E} \times \mathcal{R} \times \mathcal{E}\}\)则建模了不同实体之间的关系。知识图谱嵌入是知识图谱在应用中非常重要的一步。我们先通过知识图谱嵌入将知识图谱中的实体和关系嵌入到embeddings向量,然后再在下游进行元组分类(triple classfication)或者链接预测(link prediction)的任务。
对于知识图谱嵌入任务我们常采用基于负采样的交叉熵函数[1]:
这里\((h,r,t)\)即知识图谱中存在的元组,其对应的负样本\((h,r,t^{-})\)即图谱中不存在的元组;\(\sigma\)为sigmoid函数;\(P_{h}^{-}(\mathcal{E})\)为实体集\(\mathcal{E}\)的负采样分布(可能是关于\(h\)的),最简单的设置为均匀分布(不过易造成“假阴性结果”,即采样实际上存在于图谱中的负样本,一种改进方法参见[2]);超参数\(\gamma>0\)。
这里\(f_r(h, t)\)称为Score function,定义为元组\((h, r, t)\)存在于知识图谱的可能性。适用于常见经典知识图谱的Score function \(f_r(h, t)\)可以参见下图。
这里\(\textbf{h}, \textbf{r}, \textbf{t}\)是\(h, r, t\)对应的embeddings。\(\text{Re}(\cdot)\)表示复值向量的实值部分。\(\circ\)表示逐项乘积(即Hadamard乘积)。
在实际应用中我们常常面临一系列来自不同数据持有方的知识图谱,我们将其称为多源知识图谱(Multi-Source KG)。我们将来自\(K\)个不同数据持有方的知识图谱集合记为\(\mathcal{G}=\left\{g_{k}\right\}_{k=1}^{K}=\left\{\left\{\mathcal{E}_{k}, \mathcal{R}_{k}, \mathcal{T}_{k}\right\}\right\}_{k=1}^{K}\),如果能让在多个知识图谱间进行知识共享,那么很可能提高实体的嵌入质量与下游任务的表现。目前多源知识图谱融合(cross source knowlege graph fusion)领域的工作大都是需要先将多个知识图谱集中起来的。然而,在现实场景中,不同部门之间由于数据隐私的问题,共享数据是很困难的,那么联邦学习在这里就成为了一个很好的解决方案,我们称这种情况下的知识图谱为联邦多源知识图谱。
我们将联邦多源知识图谱按照数据异构程度可分为以下两种形式:
联邦同领域知识图谱
这种类型中各知识图谱的领域(domain)相同,比如都是来自不同银行的用户知识图谱。这些知识图谱中也可能有实体重叠(overlapped),因为在日常生活中,一个用户很可能在不同银行都产生有相关的数据(元组)[2]。
对于这种情况情况,我们可以采用传统FedAvg的思想,训练一个让多方共享的嵌入模型。
联邦跨领域知识图谱
这种情况下数据更具有异构性,各个知识图谱之间是跨领域(cross domain)的 ,如下图中所示的大学(university)、文学(literature)和宾夕法尼亚州(pennsylvania)这三个不同领域的知识图谱[3]。这种知识图谱中也有可能出现实体重叠,比如CMU实体在大学知识图谱和宾夕法尼亚州知识图谱中就同时出现(当然在两个知识图谱中的嵌入向量是不同的)。
对于这种情况,不同的知识图谱就应当使用不同的嵌入模型。
不过,不论是在同领域和不同领域的情况下,都需要涉及对某些知识图谱间重叠(也称为对齐的,aligned)实体的embeddings进行统一(unify),以提高整体的学习效果,类似于分布式优化算法中聚合的意思。
这篇论文属于多源同领域的类型。该问题的靓点在于首次采用FedAvg的框架对知识图谱嵌入模型进行训练,其解决方案非常直接:所有client共享一份所有实体的嵌入(在本文中关系的嵌入不共享),然后在本地进行优化时通过查表的方式获得元组\((h, r, t)\)对应的嵌入向量。
本篇论文算法的每轮通信描述如下:
(1) 第\(k\)个client节点执行
(此处将局部元组数据\(\mathcal{T}_k\)划分为多个批量\(\mathcal{b}\))
(2) server节点执行
从\(N\)个client接收\(\{\textbf{P}_k \textbf{E}_k\}_{k=1}^N\)。
进行参数聚合:
这里\(\textbf{E}_k\in \mathbb{R}^{n_k\times d_e}\)表示本地实体的embeddings,\(d_e\)为实体嵌入维度;\(\textbf{P}_k\in \{0, 1\}^{n\times n_k}\)用于将客户端\(k\)的本地embeddings映射到服务端的全局embeddings中,\((\textbf{P}_k)_{ij}=1\)意为全局embeddings中的第\(i\)个实体对应client中的第\(j\)个实体,若\((\textbf{P}_k)_{ij}=0\)则意为全局embeddings中的第\(i\)个实体在client \(j\)中并没有对应;\((\textbf{v}_k)_{i}=1\)意为第\(i\)个实体在client \(k\)中存在,\(\oslash\)表示逐元素除,\(\left(\mathbb{1} \oslash \sum \mathbf{v}_k\right)\)表示给前面对各client实体embeddings的求和结果进行平均 ;\(\otimes\)表示带广播的逐元素乘,\([\textbf{v} \otimes \textbf{M}]_{i,j}=\textbf{v}_i \times \textbf{M}_{i,j}\)。
这里有必要举个例子来说明参数聚合过程。假设一共编号为\(1, 2 , 3\)的三个实体,client1中有实体\(1\)和\(3\),本地编号为\(1\_1\)和\(1\_2\),client2中有实体\(2\)和\(3\),本地编号为\(2\_1\)和\(2\_2\),则对两个client的embeddings进行聚合的过程可表示如下:
然后有
整个算法流程如下图所示:

该算法本地优化采用的损失函数为论文[2]中提出的标准损失函数的变种,写为如下形式(考虑本地数据集\(\mathcal{T}_k\)的一个批量\(b\)):
这里\(\gamma\)是一个间隔超参数;\((h, r, t_i^{-})\)是\((h, r, t)\)对应的负样本,\((h, r, t_i^{-})\notin \mathcal{T}_k\);\(n^{-}\)为负样本的数量。\(p\left(h, r, t_{i}^{-}\right)\)为对应负样本的权重,这种非均匀的负采样叫做自对抗负采样(self-adversarial negative sampling),权重定义如下:
这里\(\alpha\)是温度。
最后,作者还设计了一种模型融合(model fusion)策略来对每个client中在使用/不使用联邦情形下学得的模型进行权衡,以求获得更好的学习效果(类似于个性化联邦学习里的全局和本地模型权衡的思想)。对元组\((ℎ,r,t)\),首先将其score \(f_r^s(ℎ, t)\)(本地)和 \(f_r^f(ℎ, t)\)(联邦)拼接做为特征向量。之后使用线性分类器将向量做为输入,并输出元组的最终分数:
该线性分类器的参数使用验证集来训练,注意该训练必须在embeddings嵌入训练完毕之后进行,且训练过程中只更新线性分类器的参数,而之前学得的embeddings需要固定住。线性分类器训练的损失函数采用margin ranking loss,使正元组获得比负元组更高的分数,对\(G_c\)中\((ℎ,r,t)\)模型融合损失定义如下:
在使用测试集的预测阶段,则直接使用该线性分类器的分数做为输出。作者在实验中证明,模型融合策略可以使模型在链接预测任务上达到更好的效果。
这篇论文考虑的是各知识图谱之间跨领域的情况。这种情况下因为数据更加异构,就不能单纯地对重叠实体的embeddings进行平均了。本文的靓点在于提出了一种隐私保护的对抗转换网络(privacy-preserving adversarial translation, PPAT),可以在隐私保护的前提下完成两两知识图谱间重叠实体及关系embeddings的统一。
如上图就展示了使用了论文提出的PPAT网络后的整个去中心化异步训练流程。图中\(\text{Train}\)表示本地训练知识图谱嵌入模型;\(\text{PPAT}(g_k, g_l)\)表示用PAPAT网络生成的\(g_k\)和\(g_l\)之间重叠部分的embeddings;\(\text{KGEmb-Update}\)表示更新之前PAPAT网络所生产的embeddings并再对client中所有embeddings进行训练(同\(\text{Train}\))。如果在\(\text{KGEmb-Update}\)之后的本地评估结果没有提升,则会对client进行回退(backtrack),也即舍弃新训练得到的embeddings并使用训练前的旧版本。
接下来我们来看PPAT网络是怎么实现的。该网络利用GAN结构来辅助重叠实体embeddings的统一。给定任意两个图\((g_k,g_l)\),论文将生成器设置于client \(k\)上,判别器设置与client \(j\)上。生成器的目标是将\(g_k\)中重叠实体的embeddings转换到\(g_l\)的嵌入空间;判别器负责区分生成器生成的人工embeddings和\(g_l\)中的基准embeddings。在GAN训练完毕后,生成器产生的人工embeddings能够学得两个知识图谱的特征,因此可以做为\(\mathcal{E}_{k} \cap \mathcal{E}_{l}\)与\(R_{k} \cap R_{l}\)的原始embeddings的有效替代(此时即完成了对embeddings的统一)。
这里需要注意的是,论文将原始GAN的判别器改为了多个学生判别器和一个教师判别器。论文在多个教师判别器的投票表决结果上加以Laplace噪声,得到带噪声的标签来训练学生判别器,这样学生判别器具有差分隐私性。而生成器又由学生判别器训练,则同样具有了差分隐私性。最终促使生成器产生带有差分隐私保护的embeddings。设生成器为\(G\)(参数为\(\theta_G\)),学生判别器为\(S\)(参数为\(\theta_S\)),多个教师判别器为\(T=\{ T_1,T_2,\cdots, T_{|T|}\}\)(参数为\(\theta_{T}^{1}, \theta_{T}^{2}, \ldots, \theta_{T}^{|T|}\)。这里使用\(X=\left\{x_{1}, x_{2}, \ldots, x_{n}\right\}\)来表示\(g_k\)中\(\mathcal{E}_{k} \cap \mathcal{E}_{l}\)与\(R_{k} \cap R_{l}\)的embeddings,用\(Y=\left\{y_{1}, y_{2}, \ldots, y_{n}\right\}\)来表示\(g_l\)中\(\mathcal{E}_{k} \cap \mathcal{E}_{l}\)与\(R_{k} \cap R_{l}\)的embeddings,则整个PPAT网络流程可描述如下:
如上图所示,生成器\(G\)的目标是产生与\(Y\)相似的对抗样本\(G(X)\),以求学生判别器\(S\)不能够识别它们。下面这个式子是生成器的损失函数:
这里\(G(X)=WX\);\(S\)是一个参数为\(\theta_S\)的学生判别器,它同时将\(G(X)\)和\(Y\)做为输入。
教师判别器\(T=\{ T_1,T_2,\cdots, T_{|T|}\}\)的学习目标和原始GAN中判别器相似,也即区分伪造样本\(G(X)\)与真样本\(Y\)。唯一的不同是各个教师判别器会使用划分好的数据集来训练,第\(t\)个教师判别器的损失函数如下:
这里\(D^t\)是\(T^t\)对应的数据集\(X\)和\(Y\)的子集,满足\(|D_t|=\frac{n}{T}\)且子集之间无交集。
而学生判别器\(S\)的学习目标则是在给定带噪声标签的情况下,对生成器产生的真假样本进行分类。这里所谓的带噪声标签是在教师判别器的投票结果的基础上,加以随机的Laplace噪声来生成。下面的式子描述了在带噪声标签的生成机制(即所谓PATE机制):
这里\(V_0, V_1\)为用于引入噪声的IID的Laplace分布随机变量。\(n_j(x)\)表示对于输入\(x\)预测类别为\(c\)的教师数量:
(此处符号不严谨,\(T_t(x)\)应该是个概率值,但意会意思即可)
学生判别器则利用带有上述标签的生成样本来训练自身。学生判别器的损失函数定义如下:
这里\(\gamma_{i}=P A T E_{\lambda}\left(x_{i}\right)\)即生成的带噪声标签。
这样学生判别器\(S\)由带噪声的标签训练,则具有差分隐私性。而生成器又由学生判别器训练,则同样具有了差分隐私性。最终促使生成器产生带有差分隐私保护的embeddings。
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk=Var(yt)Cov(yt,yt−k)其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c