Skip to content

Commit 7613985

Browse files
committed
【add】专题-句向量
1 parent fb4e861 commit 7613985

26 files changed

+172
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
专题-句向量(Sentence Embedding)
2+
===
3+
4+
Reference
5+
---
6+
- [The Current Best of Universal Word Embeddings and Sentence Embeddings](https://medium.com/huggingface/universal-word-sentence-embeddings-ce48ddc8fc3a)
7+
8+
Index
9+
---
10+
<!-- TOC -->
11+
12+
- [基线模型](#基线模型)
13+
- [词袋模型(BoW)](#词袋模型bow)
14+
- [基于词向量的词袋模型](#基于词向量的词袋模型)
15+
- [基于 RNN](#基于-rnn)
16+
- [基于 CNN](#基于-cnn)
17+
- [无监督模型](#无监督模型)
18+
- [Skip-Thought Vector](#skip-thought-vector)
19+
- [Self-Attention](#self-attention)
20+
- [参考文献](#参考文献)
21+
22+
<!-- /TOC -->
23+
24+
25+
## 基线模型
26+
27+
### 词袋模型(BoW)
28+
- 单个词的 One-Hot 表示
29+
- 基于频数的词袋模型
30+
- 基于 TF-IDF 的词袋模型
31+
32+
### 基于词向量的词袋模型
33+
- **平均模型**
34+
<div align="center"><a href="http://www.codecogs.com/eqnedit.php?latex=\fn_jvn&space;s=\frac{1}{N}\sum_{i=1}^N&space;v_i"><img src="../_assets/公式_2018091402442.png" height="" /></a></div>
35+
36+
- **加权模型**
37+
<div align="center"><a href="http://www.codecogs.com/eqnedit.php?latex=\fn_jvn&space;s=\sum_{i=1}^N&space;\alpha_i\cdot&space;v_i"><img src="../_assets/公式_2018091402658.png" height="" /></a></div>
38+
39+
> 其中 `α` 可以有不同的选择,但一般应该遵循这样一个准则:越常见的词权重越小
40+
- **文献 [1]** 提出了一个简单但有效的**加权词袋模型** **SIF** (**Smooth Inverse Frequency**),其性能超过了简单的 RNN/CNN 模型
41+
42+
- **SIF** 的计算分为两步:<br/>
43+
**1)** 对句子中的每个词向量,乘以一个权重 `a/(a+p_w)`,其中 `a` 是一个常数(原文取 `0.0001`),`p_w` 为该词的词频;对于出现频率越高的词,其权重越小;<br/>
44+
**2)** 计算**句向量矩阵**的第一个主成分 `u`,让每个句向量减去它在 `u` 上的投影(类似 PCA);
45+
46+
- **完整算法描述**
47+
<div align="center"><img src="../_assets/TIM截图20180914010334.png" height="" /></div>
48+
49+
<!--
50+
51+
<details><summary><b>Numpy 示例(点击展开)</b></summary>
52+
53+
```python
54+
55+
```
56+
57+
</details>
58+
59+
-->
60+
61+
### 基于 RNN
62+
- 以最后一个隐状态作为整个句子的 Embedding
63+
<div align="center"><img src="../_assets/TIM截图20180914013219.png" height="" /></div>
64+
65+
- 基于 RNN 的 Sentence Embedding 往往用于特定的有监督任务中,**缺乏可迁移性**,在新的任务中需要重新训练;
66+
- 此外,由于 RNN 难以并行训练的缺陷,导致开销较大。
67+
68+
69+
### 基于 CNN
70+
- 卷积的优势在于提取**局部特征**,利用 CNN 可以提取句子中类似 n-gram 的局部信息;
71+
- 通过整合不同大小的 n-gram 特征作为整个句子的表示。
72+
73+
<div align="center"><img src="../_assets/TIM截图20180914013449.png" height="" /></div>
74+
75+
76+
## 无监督模型
77+
78+
### Skip-Thought Vector
79+
> [2]
80+
- 给定一个三元组 `s_{i-1}, s_i, s_{i+1}` 表示 3 个连续的句子。
81+
- 模型使用 Encoder-Decoder 框架;
82+
- 训练时,由 Encoder 对 `s_i` 进行编码;然后分别使用两个 Decoder 生成前一句 `s_{i-1}` 和下一句 `s_{i+1}`
83+
<div align="center"><img src="../_assets/TIM截图20180914133101.png" height="" /></div>
84+
85+
- **Encoder**
86+
<div align="center"><img src="../_assets/TIM截图20180914151435.png" height="" /></div>
87+
88+
- **Decoder**
89+
<div align="center"><img src="../_assets/TIM截图20180914151535.png" height="" /></div>
90+
91+
> 其中 `h_i` 为 Encoder 的输出,即表示 `s_i` 的 Sentence Embedding
92+
- **Decoder** 可以看作是以 **Encoder** 输出为条件的**神经语言模型**
93+
<div align="center"><img src="../_assets/TIM截图20180914151641.png" height="" /></div>
94+
95+
> 语言模型,`v` 表示词向量
96+
97+
- **目标函数**
98+
<div align="center"><img src="../_assets/TIM截图20180914152110.png" height="" /></div>
99+
100+
101+
### Self-Attention
102+
> [3]
103+
104+
- 本文提出使用**二维矩阵**作为句子表征,矩阵的行表示在句子不同位置的关注度,以解决句子被压缩成一维向量时的信息损失。
105+
<div align="center"><img src="../_assets/TIM截图20180914153455.png" height="" /></div>
106+
107+
108+
109+
## 参考文献
110+
- [1] A Simple but Tough-to-Beat Baseline for Sentence Embeddings, ICLR 2016.
111+
- [2] Skip-Thought Vectors, NIPS 2015.
112+
- [3] A Structured Self-attentive Sentence Embedding, ICLR 2017.
67.6 KB
Loading
42.2 KB
Loading
154 KB
Loading
26.1 KB
Loading
15.7 KB
Loading
20.6 KB
Loading
6.52 KB
Loading
7.77 KB
Loading
53.1 KB
Loading

0 commit comments

Comments
 (0)