数据对构成,此时给定 Target 中的某个元素 Query,通过计算 Query 和各个 Key 的相似性或者相关性,得到每个 Key 对应 Value 的权重系数,然后对 Value 进行加权求和,即得到了最终的Attention 数值。所以本质上 Attention 机制是对 Source 中元素的 Value 值进行加权求和,而 Query 和 Key 用来计算对应 Value 的权重系数。即可以将其本质思想改写为如下公式:
86 |
87 | $$Attention(Query, Source)=\sum _{i=1}^{L_x} Similarity(Query,key_i)*Value_i $$
88 |
89 | 其中,Lx = ||Source||代表 Source 的长度,公式含义即如上所述。上文所举的机器翻译的例子里,因为在计算Attention的过程中,Source 中的 Key 和 Value 合二为一,指向的是同一个东西,也即输入句子中每个单词对应的语义编码,所以可能不容易看出这种能够体现本质思想的结构。
90 |
91 | 当然,从概念上理解,把 Attention 仍然理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息,这种思路仍然成立。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的 Value 值上,即权重代表了信息的重要性,而Value是其对应的信息。
92 |
93 | 至于Attention机制的具体计算过程,如果对目前大多数方法进行抽象的话,可以将其归纳为两个过程:第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理;这样,可以将Attention的计算过程抽象为如下图展示的三个阶段。
94 |
95 | 
96 |
97 |
98 | 在第一个阶段,可以引入不同的函数和计算机制,根据 Query 和某个 $$key_i$$,计算两者的相似性或者相关性,最常见的方法包括:求两者的向量点积、求两者的向量Cosine相似性或者通过再引入额外的神经网络来求值,即如下方式:
99 |
100 | 点积:$$Similarity(Query,key_i) = Query \cdot key_i$$
101 |
102 | 余弦相似性:$$Similarity(Query,key_i) = \frac{Query \cdot key_i}{||Query ||\cdot ||key_i||}$$
103 |
104 | MLP 网络:$$Similarity(Query,key_i) = MLP(Query,key_i)$$
105 |
106 | 第一阶段产生的分值根据具体产生的方法不同其数值取值范围也不一样,第二阶段引入类似SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过SoftMax的内在机制更加突出重要元素的权重。即一般采用如下公式计算:
107 |
108 | $$\alpha _i = Softmax(Sim_i) = \frac{e^{Sim_i}}{\sum_{j=1} ^{L_x} e^{Sim_j}}$$
109 |
110 | 第二阶段的计算结果 $$\alpha_i$$ 即为 $$Value_i$$ 对应的权重系数,然后进行加权求和即可得到 Attention 数值:
111 |
112 | $$Attention(Query, Source)=\sum _{i=1}^{L_x} \alpha_i \cdot Value_i$$
113 |
114 | 通过如上三个阶段的计算,即可求出针对 Query 的 Attention 数值,目前绝大多数具体的注意力机制计算方法都符合上述的三阶段抽象计算过程。
115 |
116 | ### Self Attention 机制
117 |
118 | 通过上述对 Attention 本质思想的梳理,我们可以更容易理解本节介绍的 Self Attention模型。Self Attention 也经常被称为 intra Attention(内部Attention),最近一年也获得了比较广泛的使用,比如 Google 最新的机器翻译模型内部大量采用了 Self Attention 模型。
119 |
120 | 在一般任务的 Encoder-Decoder 框架中,输入 Source 和输出 Target 内容是不一样的,比如对于英-中机器翻译来说,Source 是英文句子,Target 是对应的翻译出的中文句子,Attention 机制发生在 Target 的元素 Query 和 Source 中的所有元素之间。而Self Attention 顾名思义,指的不是 Target 和 Source 之间的 Attention 机制,而是 Source 内部元素之间或者 Target 内部元素之间发生的 Attention 机制,也可以理解为 Target=Source 这种特殊情况下的注意力计算机制。其具体计算过程是一样的,只是计算对象发生了变化而已,所以此处不再赘述其计算过程细节。
121 |
122 | 如果是常规的 Target 不等于 Source 情形下的注意力计算,其物理含义正如上文所讲,比如对于机器翻译来说,本质上是目标语单词和源语单词之间的一种单词对齐机制。那么如果是 Self Attention 机制,一个很自然的问题是:通过 Self Attention 到底学到了哪些规律或者抽取出了哪些特征呢?或者说引入 Self Attention 有什么增益或者好处呢?我们仍然以机器翻译中的 Self Attention 来说明,下面两图是可视化地表示 Self Attention 在同一个英语句子内单词间产生的联系。
123 |
124 | 
125 |
126 | 
127 |
128 | 从两张图可以看出,Self Attention 可以捕获同一个句子中单词之间的一些句法特征(比如第一个图展示的有一定距离的短语结构)或者语义特征(比如图2展示的 its 的指代对象 Law)。
129 |
130 | 很明显,引入 Self Attention 后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN 或者 LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。
131 |
132 | 但是 Self Attention 在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention 对于增加计算的并行性也有直接帮助作用。这是为何 Self Attention 逐渐被广泛使用的主要原因。
133 |
134 | ## Tensorflow 中的 Attention 实现
135 |
136 |
137 |
--------------------------------------------------------------------------------
/深度语义匹配模型系列 -- DLAS.md:
--------------------------------------------------------------------------------
1 | # 深度语义匹配模型系列 -- DLAS
2 |
3 | APPLYING DEEP LEARNING TO ANSWER SELECTION: A STUDY AND AN OPEN TASK
4 |
5 | 给定一个问题 q 和一些候选回答集合,目的是在回答集合里面挑选一个最合适的回答。如果挑选的回答 a 在正确的回答集合中,则认为是挑选对了,反之认为挑选错误;从这个定义来说,问答匹配可以认为是一个二分类问题。
6 |
7 | 训练时,每一个样本有一个问题 Q,一个正例回答 $$A^+$$ 和一个负例回答(错误回答) $$A^—$$, 深度学习框架提取问题和两个回答的向量表达:$$V_Q, V_{A^+}, V_{A^\_}$$ , 计算问题和两个回答的余弦相似度,然后比较两个相似度的 margin:$$cos(V_Q, V_{A^+})-cos(V_Q, V_{A^\_}) < m $$,当上式条件满足时,表示模型的所提取的向量表达使得正例在负例之下,表明需要更新参数;反之,不需要更新参数。损失函数定义如下:
8 |
9 | $$L = max\{0, m - cos(V_Q, V_{A^+}) + cos(V_Q, V_{A^\_})\} $$
10 |
11 | 在预测时,我们计算问题和候选答案的余弦相似度 $$cos(V_Q, V_{candidate})$$,$$V_{candidate}$$ 的维度为500维,余弦相似度最大的候选答案被选为正确答案。
12 |
13 | ### 网络结构
14 |
15 | 
16 |
17 | The hidden layer (HL) is defined as $$z = tanh(W x+B)$$. W is the weight matrix; $$B$$ is the bias vector; $$x$$ is input; $$z$$ is the output of the activation function $$tanh$$. The output then flows to the CNN layer $$CNN_Q$$, applied to extract question side features. $$P$$ is the MaxPooling layer (we always use 1-MaxPooling in this paper) and $$T$$ is the $$tanh$$ layer.
18 |
19 | ### 双层 CNN 结构
20 |
21 | 
22 | 
23 | 
24 |
25 | 表3中的相似性可以分为三类:基于L1范数的度量,其是Q的语义距离和从每个坐标轴求和的A; 基于L2范数的度量,是Q和A的直线语义距离; 测量Q和A之间角度的基于内积的度量。我们提出了两个新的度量,它们通过乘法(欧几里德距离和Sigmoid点积的GESD几何平均值)和加法(欧几里德和Sigmoid 点积的AESD算术平均值)组合L2范数和内积)。这两个指标是所有比较指标中最好的。最后,在表3的底部,很明显,使用更多过滤器,建议的度量标准可以实现更好的性能。
26 |
27 | 
28 |
29 | 框架2好于框架1的原因在于使用共享的卷积层,可以提取 Q和A 中相对应位置的语义向量都是同一个卷积核所提取的,保证了两个用来计算相似度的语义向量是在同一个语义空间。
30 |
31 |
--------------------------------------------------------------------------------
/深度语义匹配模型系列 -- DSSM.md:
--------------------------------------------------------------------------------
1 | # 深度语义匹配模型系列 -- DSSM系列
2 |
3 | Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
4 |
5 | ### 1、DSSM
6 |
7 | 
8 |
9 | - 输入的是一个 query 和这个query相关的 doc ,这里的输入特征可以是最简单的 one-hot ,而需要 train 的是这个query下各个doc的相关性( DSSM里面使用点击率来代替相关性)。
10 | - 文本以 one-hot 的方式编码作为输入,针对vocabulary 太大和 oov 问题,论文中做了 Word Hashinging 的操作。比如 good ,他可以写成 #good# ,然后按tri-grams来进行分解为 #go goo ood od# ,再将这个tri-grams灌入到 bag-of-word 中;3个字母的组合有限,容易枚举。
11 | - 忽略了文本的上下文信息和一词多意、多义词的情况。
12 |
13 | 相关性计算公式:
14 |
15 | $$P(D|Q) = \frac{exp(\gamma R(Q,D))}{\sum_{d_i \in D} exp(\gamma R(Q,D))}$$
16 |
17 | 最终他需要优化的损失函数为:
18 | $$L(\Lambda) = - \text{log} \prod_{(Q,D^+)} P(D^+|Q)$$
19 |
20 | $$D^+$$ 表示被点击的文档,这里就是最大化点击文档的相关性的最大似然。
21 |
22 | ### 2、CDSSM
23 |
24 | 
25 |
26 | CDSSM 保持了语句的局部有序性
27 |
28 | ### 3、DSSM-LSTM
29 |
30 | 既然是为了记录输入句子的上下文,这个无疑是 Lstm 这个模型更为擅长,因此又有了一种 Lstm 来构造的 DSSM 模型。
31 |
32 | 
33 |
34 |
35 |
--------------------------------------------------------------------------------
/深度语义匹配模型系列--ARC.md:
--------------------------------------------------------------------------------
1 | # 深度语义匹配模型系列 -- ARC
2 | Convolutional Neural Network Architectures for Matching Natural Language Sentences
3 |
4 | Baotian Hu, Zhengdong Lu, Hang Li, Qingcai Chen
5 |
6 | ARC 模型有两个变体,ARC-I 和 ARC-II。第一种是基于表示的方法,模型先提取两个句子的语义表达,然后使用多层感知器比较两个语义向量;第二种是基于交互的方式。
7 |
8 | ## Architecture-I (ARC-I)
9 |
10 | 
11 |
12 | 该模型具有孪生结构,因此也继承了孪生机构模型的缺点,比如在全连接层之前,两个句子所提取的语义特征没有进行任何的交互,这样可能导致在提取特征时损失了一些重要的可以用来做语义匹配的语句细节;换句话说就是,在模型的前向过程中相匹配的两个句子的语义表达彼此之间不包含对方的任何信息,这使得在后向(反向传播)过程中卷积模型不能充分提取到一些必要的特征。
13 |
14 | ## Architecture-II (ARC-II)
15 |
16 | 
17 |
18 | 基于结构 ARC-I 的缺陷,ARC-II 模型在提取句子结构的高级特征之前就让两个句子的表达向量进行交互,同时保留两个句子的特征抽象发展空间。
19 |
20 | 
21 |
22 | 模型能够保持语句中的顺序结构,实验证明 ARC-II 在三元组样本 $$(S_X,S_Y,\overline S_y)$$ ($$\overline S_y$$是在$$S_Y$$的基础上随机打乱语句顺序)中,有能力找到正确匹配句子$$S_Y$$的概率比$$\overline S_y$$高,但在模型ARC-I 中不会这样。
23 |
24 | ## 训练
25 |
26 | ### ranking-based 代价损失函数
27 |
28 | $$e(X,y^+,y^-;\theta) = max(0,1+s(X,y^-)-s(X,y^+))$$
29 |
30 | $$s(X,y)$$ 表示句子 x,y 之间的匹配分数,三元组$$(X,y^+,y^-)$$表示 X 匹配 y+ 高于 y-。
31 |
32 | 在正则化技术选择方面,作者发现,对于中型或大型数据集(50W样本以上)两种结构模型只要使用早停就行;而对于 10万样本的数据集需要结合早停和 dropout 技术以防止过拟合。
33 |
34 | We use 3-word window throughout all experiments2 , but test various numbers of feature maps (typically from 200 to 500), for optimal performance. ARC-II models for all tasks have eight layers (three for convolution, three for pooling, and two for MLP), while ARC-I performs better with less layers (two for convolution, two for pooling, and two for MLP) and more hidden nodes. We use ReLu [7] as the activation function for all of models (convolution and MLP), which yields comparable or better results to sigmoid-like functions, but converges faster.
35 |
36 | ## Experiment I: Sentence Completion
37 |
38 | This is an artificial task designed to elucidate how different matching models can capture the correspondence between two clauses within a sentence.
39 |
40 | ```
41 | S_X: Although the state has only four votes in the Electoral College,
42 | S^+_Y: its loss would be a symbolic blow to republican presidential candi
43 | date Bob Dole.
44 | S^−_Y: but it failed to garner enough votes to override an expected veto bypresident Clinton
45 | ```
46 |
47 | ## Experiment II: Matching A Response to A Tweet
48 |
49 | For each positive pair, we find ten random responses as negative examples, rendering 45 million triples for training. One example (translated to English) is given below, with $$S_X$$ standing for the tweet, $$S^+_Y$$ the original response, and $$S^−_Y$$ the randomly selected response:
50 |
51 | ```
52 | S_X: Damn, I have to work overtimethis weekend!
53 | S^+_Y: Try to have some rest buddy.
54 | S^−_Y: It is hard to find a job, better start polishing your resume.
55 | ```
56 |
57 | ## Experiment III: Paraphrase Identification
58 |
59 | 判断两句话是不是同义句。
60 |
61 | Nevertheless, our generic matching models still manage to perform reasonably well, achieving an accuracy and F1 score close to the best performer in 2008 based on hand-crafted features, but still significantly lower than the state-of-the-art (76.8%/83.6%)
62 |
--------------------------------------------------------------------------------
/深度语义匹配模型系列--Decomposable Attention Model.md:
--------------------------------------------------------------------------------
1 | # 深度语义匹配模型系列--Decomposable Attention Model
2 |
3 | 论文提出的模型为解决自然语言推理的问题,自然语言推理(NLI)指的是确定前提和假设之间的蕴涵和矛盾关系的问题。本模型的特点是,模型参数少,但是精度高。
4 |
5 | 模型输入为两个匹配的句子和标签组成的三元组,假设输入语句1为 $$a = (a_1,a_2,..,a_{l_a})$$,语句2为 $$b = (b_1,b_2,..,b_{l_b})$$,$$l_a,l_b$$ 分别是两个句子的长度。$$a_i,b_i \in R^d$$,表示词向量的维度为 d ,每个句子使用 NULL 预先填充。标签 $$y^{(n)}=(y_1^{(n)},...,y_C^{(n)})$$ 表示标签,C 表示类别数。
6 |
7 | 模型的主要结构有三部分,分别是 Attend,Compare,Aggregate ,如下图所示:
8 |
9 | 
10 |
11 | ## Attend
12 |
13 | 使用注意力机制的变体形式将两个句子 a,b进行软对齐(soft-align),然后将问题分解为对齐的子短语的比较。
14 |
15 | 首先使用$$F'$$ 函数计算未归一化的 attention 权重 $$e_{i,j}$$,可以使用 $$F$$ 函数来分解 $$F'$$ 函数 ,如下所示:
16 |
17 | $$e_{i,j} := F'(\overline a_i, \overline b_i) := F(\overline a_i)^T F(\overline b_i)$$
18 |
19 | 这种分解将避免了 $$l_a * l_b$$ 的平方次复杂度,而仅仅需要 $$l_a + l_b$$ 的复杂度。这里 $$F$$ 函数是使用 relu 激活函数的前馈神经网络。
20 |
21 | attention 权重归一化:
22 |
23 | $$\beta _i := \sum _{j=1}^{l_b} \frac{exp(e_{i,j})}{\sum _{k=1}^{l_b} exp(e_{ik})} \overline b_j$$
24 |
25 | $$\alpha _j := \sum _{i=1}^{l_a} \frac{exp(e_{i,j})}{\sum _{k=1}^{l_a} exp(e_{kj})} \overline a_i$$
26 |
27 | 这里 $$\beta _i$$ 是 $$\overline b$$ 中子短语和 $$ \overline a_i$$ 的对齐;同理 $$ \overline a_i$$。
28 |
29 | ## Compare
30 |
31 | 分别比较句子的每一个子短语和另外一个句子的子短语,使用前馈神经网络函数 G 对句子 a 生成一个向量集合 $$\{V_{1,i}\}_{i=1}^{l_a}$$,对 b 生成 $$\{V_{2,j}\}_{j=1}^{l_b}$$。每个 $$V_{1,i}$$ 指 $$a_i$$ 和它的软对齐的 b 中的短语之间的非线性组合;同理 $$V_{1,j}$$ 针对 $$b_i$$。
32 |
33 | $$V_{1,i} := G([\overline a_i, \beta _i]) \ i \in [1,2,..,l_a]$$
34 |
35 | $$V_{2,j} := G([\overline b_j, \alpha _j]) \ j \in [1,2,..,l_b]$$
36 |
37 | 这里 $$[.,.]$$ 表示向量的拼接。
38 |
39 | ## Aggregate
40 |
41 | 聚合 $$\{V_{1,i}\}_{i=1}^{l_a}$$,和 $$\{V_{2,j}\}_{j=1}^{l_b}$$,使用它们的结果作为预测标签。
42 |
43 | 得到两个向量比较集合 $$\{V_{1,i}\}_{i=1}^{l_a}$$、 $$\{V_{2,j}\}_{j=1}^{l_b}$$ 后 ,首先需要将每个集合的值进行加和:
44 |
45 | $$V_1 = \sum _{i=1}^{l_a}V_{1,i}, \ V_2 = \sum _{j=1}^{l_b}V_{2,j}$$
46 |
47 | 然后将结果输入给分类器 H ,H 是一个前馈神经网络的线性层:
48 |
49 | $$\overline y = H([V_1,V_2])$$
50 |
51 | y 表示每个类别的得分,可以通过 softmax 给出属于每个类别的概率。训练时使用多分类交叉熵损失函数,如下:
52 |
53 | $$L(\theta _F ,\theta _G,\theta _H) = \frac{1}{N}\sum _{n=1}^N \sum _{c=1}^C y_c ^{(n)} log \frac{exp(\overline y_c)}{\sum _{c'=1}^C exp(\overline y_{c'})}$$
54 |
55 | ## Intra-Sentence Attention
56 |
57 | 输入表达在普通版的设置中直接使用的是词向量,但是,我们可以通过 Intra-Sentence Attention 来改善这种输入表示,以编码每个句子中单词之间的成分关系。
58 |
59 | $$f_{ij} := F_{intra}(a_i)^T F_{intra}(a_j)$$
60 |
61 | 这里 $$F_{intra}$$ 是前馈神经网络,根据上式,我们可以得到自对齐短语:
62 |
63 | $$\alpha _i := \sum _{i=1}^{l_a} \frac{exp(f_{ij} + d_{i-j})}{\sum _{k=1}^{l_a} exp(f_{ik} + d_{i-k})} \overline a_j$$
64 |
65 | 这里 distance-sensitive 偏置项 $$d_{i-j} \in R $$ 为模型提供最少量的序列信息,同时保持可并行化。 这些词语的离散化,使得大于10个字的所有距离共享相同的偏差。输入表达由此被定义成 $$\overline a_i := [a_i, a'_i]$$,$$\overline b_i := [b_i, b'_i]$$
66 |
67 |
--------------------------------------------------------------------------------
/深度语义匹配模型系列--MatchPyramid.md:
--------------------------------------------------------------------------------
1 | # 深度语义匹配模型系列--MatchPyramid
2 |
3 | Text Matching as Image Recognition
4 |
5 | Liang Pang, Yanyan Lan, Jiafeng Guo
6 |
7 | 语义匹配算法需要捕获两个句子之中丰富的交互结构信息,比如词、短语和句子,以判断两个句子是否表达的是同一个句子。对于以下两句话,需要获取词的匹配 “down”,相似词的匹配 “famous” 和 “popular,n-gram 的匹配““down the age”,顺序不一致的 n-term 匹配 “ noodles and dumpling”和 ““dumplings and noodle”,以及语义相似的 n-gram 匹配 “were famous Chinese foo” 和 “were popular in Chin”。
8 |
9 | ```
10 | T1 : Down the ages noodles and dumplings were famous Chinese food.
11 | T2 : Down the ages dumplings and noodles were popular in China
12 | ```
13 |
14 | 
15 |
16 | 为了让文本匹配可以像图像识别的方式一样使用卷积操作,作者将文本输入形式转换成匹配矩阵 M ,M 中的每个元素 $$M_{ij}$$ 表示基本的交互,比如词$$w_i$$ 和 $$v_j$$ 之间的相似度
17 |
18 | $$M_{ij} = w_i \bigotimes v_j$$
19 |
20 | 通过这种方式 匹配矩阵 M 可以看做一张图像。$$\bigotimes $$ 可以使用不同的交互模型。比如知识函数 Indicator Function:
21 |
22 | 
23 |
24 | 这种指示函数无法表达相似词的匹配,这对这一点,作者使用词向量来对词和词之间进行计算相似度,分别有使用余弦相似度和点乘。
25 |
26 | 
27 |
28 | 由于相匹配的两个句子,在不同样本中长度不同,所以构建成的匹配矩阵 M 尺寸也不相等,因此使用动态池化操作策略来获取定长特征图。
29 |
30 | 
31 |
32 | ### Matching Score and Training
33 |
34 | $$(s_0,s_1)^T = W_2\sigma(W_1z+b_1)+b_2 $$
35 |
36 |
37 | where $$s_0$$ and $$s_1$$ are the matching scores of the corresponding
38 | class, $$z$$ is the output of the hierarchical convolution, $$W_i$$
39 | is the weight of the $$i_{th}$$ MLP layer and $$\sigma $$ denotes the activation function.
40 |
41 | 损失函数如下所示:
42 |
43 | 
44 |
45 | It performs better when we use the mini-batch strategy (32∼50 in size),
46 | which can be easily parallelized on single machine with multi-cores. For regularization, we find that some common strategies like early stopping (Giles 2001) and dropout (Hinton et al. 2012) are enough for our model.
47 |
48 | There are three versions of MatchPyramid, depending on different methods used for constructing the matching matrices, denoted as MP-IND, MP-COS, and MP-DOT, respectively. All these models use **two convolutional layers**, **two max-pooling layers**(one of which is a dynamic pooling layer for variable length) and **two full connection layers**. The number of feature maps is 8 and 16 for the first and second convolutional layer, respectively. While the kernel size is set to be **5 × 5 and 3 × 3**, respectively. Unlike ARC-II which initiates with Word2Vec trained on Wikipedia, we **initiate the word vectors in MP-COS and MP-DOT randomly** from a unit ball. Thus our model do not require any external sources.
49 |
50 | ### Experiment I: Paraphrase Identification
51 |
52 | 
53 |
54 | ### Experiment II: Paper Citation Matching
55 |
56 | 使用一些列的论文和它们的摘要,将论文的引文和摘要作为一对匹配。
57 |
58 | ```
59 | T1 : this article describes pulsed thermal time of flight ttof flow
60 | sensor system as two subsystems pulsed wire system and heat flow system
61 | the entire flow sensor is regarded system theoretically as linear.
62 |
63 | T2 : the authors report on novel linear time invariant lti modeling of
64 | flow sensor system based on thermal time of flight tof principle by
65 | using pulsed hot wire anemometry thermal he at pulses.
66 | ```
67 |
68 | 
69 |
--------------------------------------------------------------------------------
/距离度量和相似度度量公式.md:
--------------------------------------------------------------------------------
1 | # 距离度量和相似度度量公式
2 |
3 | ### 相关系数
4 |
5 | 相关系数(Correlation coefficient) 是用以反映变量之间相关关系密切程度的统计指标。依据相关现象之间的不同特征,其统计指标的名称有所不同。如将反映两变量间线性相关关系的统计指标称为相关系数(相关系数的平方称为判定系数);将反映两变量间曲线相关关系的统计指标称为非线性相关系数、非线性判定系数;将反映多元线性相关关系的统计指标称为复相关系数、复判定系数等。
6 |
7 | 协方差:$$Cov(x,y)=\frac{\sum_{i=1}^n(x_i- \overline x)(y_i - \overline y)}{n}$$
8 |
9 | 皮尔逊相关系数 $$p = \frac{Cov(x,y)}{\sigma _ x \sigma _y}$$
10 |
11 | $$p = \frac{\sum_{i=1}^n(x_i- \overline x)(y_i - \overline y)}{\sqrt{\sum_{i=1}^n(x_i- \overline x)^2}\sqrt{\sum_{i=1}^n(y_i- \overline y)^2}}$$
12 |
13 | 相关系数有一个明显的缺点,即它接近于1的程度与数据组数 n 相关,这容易给人一种假象。因为,当 n 较小时,相关系数的波动较大,对有些样本相关系数的绝对值易接近于1;当n较大时,相关系数的绝对值容易偏小。特别是当 n=2 时,相关系数的绝对值总为1。因此在样本容量 n 较小时,我们仅凭相关系数较大就判定变量 x 与 y 之间有密切的线性关系是不妥当的。
14 |
15 | ### 余弦相似度 Cosine Similarity
16 |
17 | 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
18 |
19 | 
20 |
21 | ### Jaccard Similarity
22 | Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具 体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。
23 |
24 | $$Jaccard(X,Y)=\frac{X\bigcap Y}{X\bigcup Y} = \frac{X\bigcap Y}{|X|+|Y|-X\bigcap Y}$$
25 |
26 | 
27 |
28 | ## 距离度量
29 | ### 欧几里得距离(Eucledian Distance)
30 |
31 | 欧氏距离是最常用的距离计算公式,衡量的是多维空间中各个点之间的绝对距离,当数据很稠密并且连续时,这是一种很好的计算方式。
32 |
33 | 因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。
34 |
35 | 
36 |
37 | ### 曼哈顿距离(Manhattan Distance)
38 |
39 | $$Manhattan distance = |x_1 – x_2| + |y_1 – y_2|$$
40 |
41 | p1 at (x1, y1) and p2 at (x2, y2)
42 |
43 | ### 明可夫斯基距离(Minkowski distance)
44 |
45 | 明氏距离是欧氏距离的推广,是对多个距离度量公式的概括性的表述,
46 |
47 | - 当p == 1,“明可夫斯基距离”变成“曼哈顿距离”
48 | - 当p == 2,“明可夫斯基距离”变成“欧几里得距离”
49 | - 当p == ∞,“明可夫斯基距离”变成“切比雪夫距离”
50 |
51 | $$dist(X,Y)=(\sum_{i=1}^n|x_i - y_i|^p)^{1/p}$$
52 |
53 |
--------------------------------------------------------------------------------