三元组

TransE算法的整理

不羁岁月 提交于 2019-12-10 22:09:00
TransE 1 TransE的作用 TransE 作用 就是把三元组翻译成embedding词向量的方法 三元组,也就是(头实体,关系,尾实体)的形式,头实体和尾实体统称为实体。为了简化起见,我们用(h,r,t)来表示三元组。其中 h表示头实体 r表示关系 t表示尾实体 我们的目标是将知识库中所有的实体、关系表示成一个低维的向量。我们把三元组(h,r,t)对应的向量表示为(h,r,t)。 h 表示头实体对应的向量 r 表示关系对应的向量 t 表示尾实体对应的向量 这样,“姚明”这个实体就不再是一个孤立的符号了,而是一个低维的稠密的向量。它看起来就像下面这样: [0.01, 0.04, 0.8, 0.32, 0.09, 0.18] 上面这个向量的维度是6维,真实情况下向量的维度会比这个大,但具体取多大并没有一个统一的标准,一般取为50~200左右。 2 TransE的基本思想 TransE模型认为一个正确的三元组的embedding向量 ( h , r , t ) (h,r,t) ( h , r , t ) 会满足公式: h + r = t h+r=t h + r = t (头实体embedding加上关系embedding会等于尾实体embedding) 如果是一个错误的三元组,那么它们的embedding之间就不满足这种关系。 3.TransE的目标函数

《Deep Attention Neural Tensor Network for Visual Question Answering》视觉问答的深度注意神经张量网络论文理解

陌路散爱 提交于 2019-12-10 02:20:32
一、介绍 在本文中,我们提出了一种新颖的深度关注神经张量网络(DA-NTN)用于视觉问题回答,它可以发现基于张量表示的图像,问题和答案之间的联合相关性。 首先,我们通过双线性特征对成对交互(例如,图像和问题)中的一个建模,进一步用三维(例如,答案)将其编码为双线性张量积的三元组。 其次,我们通过不同的答案和问题类型分解不同的三元组的相关性,并进一步在张量上提出一个切片式注意模块,以选择最具判别力的推理过程进行推理。 第三,我们通过学习带有 KL 散度损失的标签回归来优化建议的 DA-NTN。这样的设计使得可扩展的训练和在大量答案集上的快速收敛成为可能。 在这篇论文中我们将答案嵌入学习引入到我们的方法中,有三个目的。首先,我们希望对问题答案三元组之间的关系进行建模,以帮助推理。其次,答案嵌入可能会纠正问题的误解,尤其是对于复杂的句法结构的问题。第三,答案嵌入可以帮助确定问题的类型并决定使用哪种推理过程。 二、模型 2.1开放式可视问答框架的体系结构 红色框中的结构是生成问题表示Vq和图像与问题特征向量Vqi融合的基本模型,两个蓝盒中的结构是我们提出的深层关注神经张量网络,利用蓝盒神经张量网络来度量图像-问题-答案三元组之间的相关性。 VQA任务的目标是提供一个给出图像 I ∈ I(张量)和相应的问题 q ∈ Q(张量),先前的大部分工作都把开放的VQA看作是一项分类任务:

论文笔记(一)SecureML: A System for Scalable Privacy-Preserving Machine Learning

风格不统一 提交于 2019-12-08 20:57:38
SecureML:A system for Scalable Privacy-Preserving Machine Learning 1 摘要及介绍 1.1 模型的大致架构 首先,主要模型中主要有客户端和两台服务器,假设这两台服务器不会恶意合作。   整个训练过程大致分为在线和离线两个阶段,在线阶段的主要任务就是利用本文提出的安全算数技术在共享的十进制数上进行模型的更新,根据混淆电路的思想,除了最后能得到的模型,什么数据也不会暴露出来;离线阶段的主要任务是服务于在线阶段的乘法运算——利用线性同态加密或者不经意传输生成必要的三元组,因为这个开销比较大,后期还提出了一种改进,用客户端来辅助生成三元组; 1.2 主要贡献 为线性回归、逻辑回归、神经网络这三种机器学习算法开发出了新型的隐私保护的深度学习协议 开发出了支持在共享的十进制数上的安全算数操作的技术 对于那些非线性激活函数,如sigmoid softmax,提出了一种支持安全多方计算的替代方案 以上提出的所有技术相较于目前的技术,在保证安全的前提下,速度上都有很大的提升 1.2.1 为三种机器学习算法开发出的隐私保护的协议 线性回归、逻辑回归和神经网络这三种机器学习方案非常简单但也非常常用,而且他们之间思想类似且一种递进的趋势。 所谓思想类似指的是他们都是有监督的机器学习算法,思路都是先前馈,算出交叉熵之后,在利用随机梯度下降

matlab中colormap

 ̄綄美尐妖づ 提交于 2019-12-06 10:13:50
来源:https://ww2.mathworks.cn/help/matlab/ref/colormap.html?searchHighlight=colormap&s_tid=doc_srchtitle#buc3wsn-1-map 查看并设置当前颜色图 全页折叠 语法 colormap map colormap(map) colormap(target,map) cmap = colormap cmap = colormap(target) 说明 示例 colormap map 将当前图窗的颜色图设置为预定义的颜色图之一。如果您为图窗设置了颜色图,图窗中的坐标区和图将使用相同的颜色图。新颜色图的长度(颜色数)与当前颜色图相同。当您使用此语法时,不能为颜色图指定自定义长度。有关颜色图的详细信息,请参阅 什么是颜色图? 。 示例 colormap( map ) 将当前图窗的颜色图设置为 map 指定的颜色图。 示例 colormap( target , map ) 为 target 指定的图窗、坐标区或图形设置颜色图,而不是为当前图窗设置颜色图。 示例 cmap = colormap 返回当前图窗的颜色图,形式为 RGB 三元组组成的三列矩阵。 示例 cmap = colormap( target ) 返回 target 指定的图窗、坐标区或图的颜色图。 示例 全部折叠

微调(Fine-tune)原理

◇◆丶佛笑我妖孽 提交于 2019-12-05 15:28:02
一、MTCNN的原理   搭建人脸识别系统的第一步是 人脸检测 ,也就是在图片中找到人脸的位置。在这个过程中,系统的输入是一张可能含有人脸的图片,输出是人脸位置的矩形框,如下图所示。一般来说,人脸检测应该可以正确检测出图片中存在的所有人脸,不能用遗漏,也不能有错检。         获得包含人脸的矩形框后,第二步要做的就是 人脸对齐(Face Alignment) 。原始图片中人脸的姿态、位置可能较大的区别,为了之后统一处理,要把人脸“摆正”。为此,需要检测人脸中的 关键点(Landmark) ,如眼睛的位置、鼻子的位置、嘴巴的位置、脸的轮廓点等。根据这些关键点可以使用 仿射变换 将人脸统一校准,以尽量消除姿势不同带来的误差,人脸对齐的过程如下图所示。       这里介绍一种基于深度卷积神经网络的人脸检测和人脸对齐方法----MTCNN,它是基于卷积神经网络的一种高精度的实时人脸检测和对齐技术。MT是英文单词Multi-task的缩写,意思就是这种方法可以同时完成人脸检测的人脸对齐两项任务。相比于传统方法,MTCNN的性能更好,可以更精确的定位人脸,此外,MTCNN也可以做到实时的检测。   MTCNN由三个神经网络组成,分别是 P-Net、R-Net、O-Net 。在使用这些网络之前,首先要将原始图片缩放到不同尺度,形成一个“图像金字塔”,如下图所示。      

关系抽取 ---远程监督 ---《Ranking-Based Automatic Seed Selection and Noise Reduction for Weakly Supervised Relation Extraction》

空扰寡人 提交于 2019-12-05 02:41:58
先说看完本文的一个收获吧:   文章创造性地将关系提取中的自动选种和数据降噪这两个重要任务转换为排序问题。然后,借鉴 HITS、K-means、LSA 和 NMF 等传统算法策略,按照对实例-模式三元组排序的思路,构建出了兼具自动选种和数据降噪功能的算法。实验结果显示,文章提出的算法能够有效完成自动选种和数据降噪任务,并且其性能同基线算法相比也有较大提升。   这篇文章的启发作用在于:对于关系提取中的不同子任务通过问题转换归结为本质相同的同一问题,而后借鉴已有的成熟算法设计出可以通用的解决策略。这种思路上的开拓创新能否应用于其他 NLP 任务,是一个值得思考和探索的方向。 文章的贡献主要有以下几点:    1. 创造性的将关系提取中的自动选种和数据降噪任务转换成排序问题;   2. 提出多种既可用于 Bootstrapping 关系提取自动选种,又能用于远程监督关系提取降噪的策略; 这篇文章主要对弱监督关系提取中两个相关的任务展开研究:   Bootstrapping 关系提取(Bootstrapping RE)的自动选种任务;   远程监督关系提取(Distantly Supervise RE)的降噪任务。   文章受到 Web 结构挖掘中最具有权威性、使用最广泛的 Hypertext-induced topic search(HITS)算法,以及 K-means、潜在语义分析

HGOI 20191101am 题解

时间秒杀一切 提交于 2019-12-03 04:21:49
  Problem A awesome   给出一个序列$A_i$,任取序列中三个数组成三元组$(a_i , a_j , a_k)$。   输出本质不同的且$abc \equiv 1 (mod \@ P)$且满足$a \leq b \leq c$的三元组$(a,b,c)$的组数。   对于$100\%$的数据满足$n \leq 2333 , P \in Prime$ Soltuion :   本题显然会卡常数,并且出了非常暧昧的数据范围。   设$n$不去重前的数据规模,而$m$是去重前的数据规模。   我们可以使用$O(n)$的暴力处理三元组中三个数都相同的情况。    我们可以使用$O(n^2)$暴力处理三元组中两个数的情况。   我们可以使用$O(n^2 log_2 n)$暴力处理三元组中所有数都不同的情况。   我们将数组中每个数以其模$P$的余数为键值插入到hash表中。   然后对于去重后的数组$O(m^2)$枚举两个不同的数,然后通过逆元从hash表中取出对应的数集即可。   可以通过一个$lower_bound$来计数。   时间复杂度为$O(n^2 log_2 n)$。    来源: https://www.cnblogs.com/ljc20020730/p/11776841.html

数据挖掘学习(三)――文本挖掘

匿名 (未验证) 提交于 2019-12-03 00:38:01
对情感进行分析,对评论数据进行相应的分析。 可以用结巴进行分词,主要是划分各文本之间的关系,进行分词操作。 Dict.txt是指结巴使用的分词,也可以自己定义相应的结巴词典,也可以下载一些好用的词典。 第一个参数:我们的词汇; 第二个参数:词频(即重要的程度); 第三个参数:词性 1)使用jieba进行分词: #!/usr/bin/env python # _*_ UTF-8 _*_ import jieba sentence = " 我喜欢东方明珠 " # cut_all=True :为全模式。 # cut_all=FALSE :精准模式。 words = jieba.cut(sentence , cut_all = True ) print (words) # 全模式分词,用的是循环才能获取相应的结果,如果直接 print 则显示不成功。 for item in words: print (item) print ( "----------------" ) # 精准模式分词。 words2 = jieba.cut(sentence , cut_all = False ) for item in words2: print (item) print ( "----------------" ) # 搜索引擎分词: words3 = jieba.cut_for_search

35-稀疏矩阵的三元组表示方式

匿名 (未验证) 提交于 2019-12-03 00:38:01
1.存储非零元素 2.同时存储该非零元素所对应的行下标和列下标 3.稀疏矩阵中的每一个非零元素需由一个三元组(i, j, aij)唯一确定,稀疏矩阵中的所有非零元素构成三元组线性表,三元组中的i就是行下标,j是列下标,aij是对应的元素值。 图1-稀疏矩阵的压缩存储 图2-定义存储结构 #define MaxSize 100 //定义三元组线性表中的数据元素存储结构 typedef struct { int row ; //行号 int col ; //列号 ElemType d ; //元素值,ElemType为数据元素类型 } TupNode ; //三元组定义 //定义三元组线性表存储结构 typedef struct { int rows ; //行数值 int cols ; //列数值 int nums ; //非零元素个数 TupNode data [ MaxSize ]; //data数据域 } TSMatrix ; //三元组顺序表定义 算法:以行序方式扫描二维矩阵A,将其非零的元素加入到三元组t。 要求为data域以行序为主序顺序排列 图中是采用6行7列的稀疏矩阵作为说明,但是在下面的算法中以3行4列说明 //以行序方式扫描二维矩阵A,将其非零的元素加入到三元组t //以3行4列的稀疏矩阵为例 void CreatMat ( TSMatrix * t , int

稀疏矩阵三元组模板

匿名 (未验证) 提交于 2019-12-03 00:34:01
稀疏矩阵三元顺序组模板 typedef struct { int i,j; int elem; }Triple;//一个点的三元组。 typedef struct { Triple Data[MAXN]; int m,n,len; //m,n记录的是这个矩阵的行与列;但本题没用到整个矩阵的行与列,因为是稀疏矩阵 }TripleMatrix; //一个矩阵的三元组 稀疏矩阵三元顺序组的创建 void CreateTriple(TripleMatrix *p,int n) //因为有->,所以用指针传方便 { int cnt; for(cnt=0;cnt<n;cnt++) //i从0开始,是因为addtriple这个函数while跳出的小于号决定的 { scanf("%d%d%d",&p->Data[cnt].i,&p->Data[cnt].j,&p->Data[cnt].elem); //因为不是链表存储结构,所以不用malloc构建空间 } p->len=cnt; //for里不要再习惯i了 } 稀疏矩阵三元组顺序的相加 void AddTriple(TripleMatrix *a,TripleMatrix *b,TripleMatrix *c) { int k,l; int temp; c->len=0; k=0,l=0; while(k<(a->len)&&l<(b->len)