矩阵分解

GloVe学习:Global Vectors for Word Representation

不羁岁月 提交于 2019-12-20 10:34:26
GloVe: Global Vectors for Word Representation 什么是GloVe? 正如 GloVe: Global Vectors for Word Representation 论文而言,GloVe的全称叫Global Vectors for Word Representation,它是一个基于 全局词频统计 (count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。 模型目标:进行词的向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息。 输入:语料库 输出:词向量 方法概述:首先基于语料库构建词的共现矩阵,然后基于共现矩阵和GloVe模型学习词向量。 统计共现矩阵 设共现矩阵为 X X X ,其元素为 X i , j X_{i,j} X i , j ​ 。 X i , j X_{i,j} X i , j ​ 的意义为:在整个语料库中,单词i和单词j共同出现在一个窗口中的次数。 举个例子: 设有语料库: i love you but you

面试题-螺旋矩阵

拥有回忆 提交于 2019-12-19 01:55:08
小弟不才,若有高手路过,请多指点,不胜荣幸! 话说,今日参加一家公司面试,要求实现如上如这种矩阵,初一看 ,就一矩阵,信誓旦旦的以为很简单呢,结果开始写代码的时候才发现这不是一般的矩阵,而是一只蜗牛呀,直接昏倒!老实说,小弟当时被这只蜗牛吓到了,然后果断放弃了,答了剩下的题。至于面试结果如何,且听有机会的时候分解! 面试受挫,但我不能停止前进的脚步,归来之后仔细研究了一下,发现了如下 规律: 如此图所示,最外层的规律便是红线所示的四组数组成的,哈 ,既然发现了规律 ,那么繁琐的工作就交给计算机来完成了,那么,我就先咽下第一口芥末喽: Step1:实现红线1 实现结果 首先,做些准备工作吧 1: int num=0; 2: Console.WriteLine("请输入矩阵的长度:"); 3: string getKeys= Console.ReadLine(); 4: int.TryParse(getKeys, out num); //输入数组长度 5: int[,] dataArray =new int[num,num]; 6: int y=0; //设置初始值,线一开始位置 坐标 x,y 7: int x=0; 8: int number=1; //蜗牛的起点 线1的实现就很简单了,简单的一个循环 1: 2: int startX = x; 3: int startY = y;

线性方程组求解

眉间皱痕 提交于 2019-12-17 22:36:34
1.矩阵基本知识 (1)正交矩阵相乘仍然是正交矩阵 A、B是正交矩阵,那么AA'=E BB'=E (AB)*(AB)'=AB*B'A'=A(BB')A'=AEA'=AA'=E (2)一个矩阵乘以正交矩阵,范数不变 ||Ux||^2=(Ux)^T(Ux)=x^TU^TUx=x^Tx=||x||^2 (3)一个矩阵乘以可逆矩阵秩不变 (4)初等变换只是不影响矩阵的秩,其他的特性都改变了。对于计算矩阵的行列式,不能进行初等变换,但是可以做行列的进 加减,不能乘以系数。 (5)矩阵的迹:矩阵的主对角线上各个元素的总和,是矩阵所有特征值的和 (6)对角矩阵的特征值是其对角线上的各个元素 (7)矩阵的秩等于非零奇异值的个数,等于非零特征值的个数 (8)任意矩阵都能进行奇异值分解,只有方阵才可以进行特征值分解 特征值分解: 如果一个向量 v 是方阵 A的特征向量,将可以表示成下面的形式: Av= λv,λ 称为特征向量 v 对应的特征值,并且一个矩 阵的 一组特征向量是一组正交向量。 特征值分解:Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值 奇异值分解: 假设A是一个N * M的矩阵,U是一个N * N的方阵(正交矩阵),Σ 是一个N * M的矩阵(对角线上的元素为奇异值),VT是 一个M * M的矩阵(正交矩阵) 特征值和奇异值的关系: (1)U

Kaggle spooky NLP

只愿长相守 提交于 2019-12-17 18:54:41
https://www.kaggle.com/arthurtok/spooky-nlp-and-topic-modelling-tutorial 介绍 在本笔记本中,我将对这个Spooky Author数据集的主题建模进行非常基本的尝试。主题建模是我们尝试根据基础文档和文本语料库中的单词来发现抽象主题或“主题”的过程。我将在这里介绍两种标准的主题建模技术,第一种是称为潜在Dirichlet分配(LDA)的技术,第二种是非负矩阵分解(NMF)。我还将借此机会介绍一些自然语言处理基础知识,例如原始文本的标记化,词干化和向量化,这些也有望在用学习模型进行预测时派上用场。 该笔记本的概述如下: 探索性数据分析(EDA)和Wordclouds-通过生成简单的统计数据(例如,不同作者的词频)以及绘制一些词云(带有图像蒙版)来分析数据。 带有NLTK(自然语言工具包)的自然语言处理(NLP)-引入了基本的文本处理方法,例如标记化,停止单词删除,通过术语频率(TF)和反向文档频率(TF-IDF)提取文本和对向量进行矢量化 使用LDA和NNMF进行主题建模-实现潜在狄利克雷分配(LDA)和非负矩阵分解(NMF)的两种主题建模技术。 根据比赛页面,我们已经提供了三种不同的作者姓名缩写,这些姓名缩写与实际作者的映射如下: (如果单击其名称,则指向其Wikipedia页面配置文件的链接) EAP-埃德加

【Python学习之路】Numpy 从 Matlab 到 Numpy

老子叫甜甜 提交于 2019-12-15 23:42:21
从 Matlab 到 Numpy ##Numpy 和 Matlab 比较 Numpy 和 Matlab 有很多相似的地方,但 Numpy 并非 Matlab 的克隆,它们之间存在很多差异,例如: MATLAB® Numpy 基本类型为双精度浮点数组,以二维矩阵为主 基本类型为 ndarray ,有特殊的 matrix 类 1-based 索引 0-based 索引 脚本主要用于线性代数计算 可以使用其他的 Python 特性 采用值传递的方式进行计算 切片返回复制 采用引用传递的方式进行计算 切片返回引用 文件名必须和函数名相同 函数可以在任何地方任何文件中定义 收费 免费 2D,3D图像支持 依赖第三方库如 matplotlib 等 完全的编译环境 依赖于 Python 提供的编译环境 array 还是 matrix? Numpy 中不仅提供了 array 这个基本类型,还提供了支持矩阵操作的类 matrix ,但是一般推荐使用 array : 很多 numpy 函数返回的是 array ,不是 matrix 在 array 中,逐元素操作和矩阵操作有着明显的不同 向量可以不被视为矩阵 具体说来: *, dot(), multiply() array : * -逐元素乘法, dot() -矩阵乘法 matrix : * -矩阵乘法, multiply() -逐元素乘法 处理向量

Word2Vec详解

亡梦爱人 提交于 2019-12-14 19:59:42
原文地址:https://www.cnblogs.com/guoyaohua/p/9240336.html 2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。 Statistical Language Model 在深入word2vec算法的细节之前,我们首先回顾一下自然语言处理中的一个基本问题: 如何计算一段文本序列在某种语言下出现的概率?之所为称其为一个基本问题,是因为它在很多NLP任务中都扮演着重要的角色。 例如

Eigen(6)-Linear algebra and decompositions(线性代数和分解)

孤人 提交于 2019-12-13 15:50:14
线性代数、分解 介绍如何求解线性系统,计算几种分解,比如LU,QR,SVD等。 基本线性求解 问题:假设有一个系统方程写成如下矩阵的形式 A x = b Ax=b A x = b 其中A,b是矩阵,b也可以是向量,当想要求解x时,可以选择多种分解方式,取决于矩阵A的形式以及考虑的速度和精度,下面是一个简单的例子 # include <iostream> # include <Eigen/Dense> using namespace std ; using namespace Eigen ; int main ( ) { Matrix3f A ; Vector3f b ; A << 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 10 ; b << 3 , 3 , 4 ; cout << "Here is the matrix A:\n" << A << endl ; cout << "Here is the vector b:\n" << b << endl ; Vector3f x = A . colPivHouseholderQr ( ) . solve ( b ) ; cout << "The solution is:\n" << x << endl ; } 解出的结果: Here is the matrix A: 1 2 3 4 5 6 7 8 10

奇异值分解SVD

可紊 提交于 2019-12-13 00:45:46
在介绍奇异值分解(SVD)之前我们先来回顾一下关于矩阵的一些基础知识。 矩阵基础知识 方阵 给定一个$ n×m $的矩阵$ A $,若n和m相等也就是矩阵的行和列相等那矩阵$ A $就是一个方阵。 单位矩阵 在线性代数中,n阶单位矩阵,是一个$ n×n $的方阵,其主对角线元素为1,其余元素为0。单位矩阵以$ mathbf { I } _ { n } $表示。 单位矩阵性质: $$ text { 1. } I _ { n } B _ { n times m } = B _ { n times m } $$ $$ text { 2. } B _ { n times m } I _ { m } = B _ { n times m } $$ $$ text { 3. } A _ { n } I _ { n } = I _ { n } A _ { n } = A _ { n } $$ $$ text { 4. } I _ { n } I _ { n } = I _ { n } $$ 转置 矩阵的转置是最简单的一种矩阵变换。简单来说若$ n×m $的矩阵$ A $的转置为$ A ^ { mathrm { T } } $,则$ A ^ { mathrm { T } } $是一个$ m×n $的矩阵并且有$ mathbf { A } _ { i j } = mathbf { A } _ { j

论文解读:(TranSparse)Knowledge Graph Completion with Adaptive Sparse Transfer Matrix

社会主义新天地 提交于 2019-12-12 06:27:25
论文解读:(TranSparse)Knowledge Graph Completion with Adaptive Sparse Transfer Matrix   先前的基于深度学习的知识表示模型TransE、TransH、TransR(CTransR)和TransD模型均一步步的改进了知识表示的方法,在完善知识图谱补全工作上逐渐提高效果。通过先前的模型,我们基本掌握了知识表示的学习方法:首先通过投影策略将实体和关系映射到对应的语义空间,其次均使用得分函数 f ( h , t ) = ∣ ∣ h + r − t ∣ ∣ f(h,t)=||h+r-t|| f ( h , t ) = ∣ ∣ h + r − t ∣ ∣ 表示实体对的评分。另外使用负采样生成错误样本进行训练,使得正确的样本得分函数值降低,错误样本的得分函数值升高。然而这些模型均忽略了图谱的两个重要特性: 异质性(heterogeneity) 和 不平衡性(imbalance) 。图谱中的异质性是指不同关系对应的实体对数量不一致,例如对于关系 r r r 链接的所有实体对数量可能非常多,而对于 r ′ r' r ′ 链接的所有实体对数量可能只有1个。不平衡性是指头尾实体的数量不一致,例如形如对于(地名,local,洲名)的三元组,地名可能成千上万个,而洲名只有七个。由于数量的不对等

奇异值分解(SVD)与主成分分析(PCA)

给你一囗甜甜゛ 提交于 2019-12-11 18:14:30
奇异值分解(SVD)与主成分分析(PCA) 1 算法简介 奇异值分解(Singular Value Decomposition),简称SVD,是线性代数中矩阵分解的方法。假如有一个矩阵A,对它进行奇异值分解,可以得到三个矩阵相乘的形式,最左边为m维的正交矩阵,中间为m*n 的对角阵,右边为n维的正交矩阵: A = U Σ V T A=U\Sigma V^{T} A = U Σ V T 这三个矩阵的大小如下图所示: 矩阵 Σ \Sigma Σ 除了对角元素其他元素都为0,并且对角元素是从大到小排列的,前面的元素比较大,后面的很多元素接近0。这些对角元素就是奇异值。( u i u_i u i ​ 为m维行向量, v i v_i v i ​ 为n维行向量) Σ \Sigma Σ 中有n个奇异值,但是由于排在后面的很多接近0,所以我们可以仅保留比较大的前r个奇异值,同时对三个矩阵过滤后面的n-r个奇异值, 奇异值过滤之后,得到新的矩阵: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Y9zuN9s-1576054984887)(./Img/fig2.png)] 在新的矩阵中, Σ \Sigma Σ 只保留了前r个较大的特征值: 实际应用中,我们仅需保留三个比较小的矩阵,就能表示A,不仅节省存储量,在计算的时候更是减少了计算量。SVD在信息检索(隐性语义索引