Skip to content

Commit

Permalink
无监督学习-词嵌入
Browse files Browse the repository at this point in the history
  • Loading branch information
DatawhaleXiuyuan committed Jul 30, 2019
1 parent 7bb8b4c commit f285f91
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions docs/chapter25/chapter25.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 1-of-N Encoding
## 1-of-N Encoding



Expand All @@ -12,7 +12,7 @@ word embedding是dimension reduction的一个广为人知的应用。如果今

所以我们需要word Embedding:把每一个word都project到high dimension sapce上面(但是远比1-of-N Encoding的dimension要低,比如说有10w个word,那1-of-N Encoding就是10w维。但是project到high dimension,通常是100维左右)我们希望可以从这个word Embedding图上可以看到的结果是:类似同一个语义的词汇,在这个图上是比较接近的。而且在这个high dimension space里面,每一个dimension可能都有它特别的含义。假设我们做完word Embedding以后,每一个word Embedding的feature vector长这个样子,那你可能就知道说这个dimension代表了生物和其它东西之间的差别(横轴),那个dimension就代表了跟动作有关的东西(纵轴)

# 词嵌入
## 词嵌入

![image](res/chapter25-2.png)

Expand All @@ -36,7 +36,7 @@ word embedding是dimension reduction的一个广为人知的应用。如果今

举例来说:假设机器读了一段文字:“马英九520宣誓就职”,它又读了一段新文字:“蔡英文520宣誓就职”。对机器来说,它不知道马英九和蔡英文指的是什么,但是马英九和蔡英文后面有接520宣誓就职。对机器来说,它只要读了大量的文章,发现马英九和蔡英文后面有类似的context,机器就会推论说:蔡英文和马英九代表了某种有关系的物件(不知道他们是人,但机器知道说:蔡英文和马英九这两个词汇代表是同样地位的东西)

## 基于计数的词嵌入
### 基于计数的词嵌入

![image](res/chapter25-5.png)

Expand All @@ -46,15 +46,15 @@ word embedding是dimension reduction的一个广为人知的应用。如果今

这个方法的原则是这样,假设我们知道$w_i$的word vector是$V(w_i)$,$w_j$的word vector是$V(w_j)$,我们可以计算V($w_i$,)V($w_j$)它的inner product,假设$N_{i,j}$是$w_i$,$w_i$他们在同一个document的次数,那我们就希望这两件事情(内积和同时出现的次数)越接近越好。你会发现说:这个概念跟我们之前将的matrix factorozation的概念其实是一样的

## 基于预测的词嵌入
### 基于预测的词嵌入

另外一个方式是:prediction based方法,据我所知,好像没有人很认真的比较过prediction based方法跟counting based 方法有什么样非常不同的差异或者是谁优谁略。

![image](res/chapter25-6.png)



### 具体步骤
#### 具体步骤

prediction based想法是这样子的:我们来learn一个neural network,这个neural network做的就是given$w_{i-1}$(w就代表一个word),prediction下一个可能出现的word是什么。每一个word可以用1-of-N encoding表示成一个feature vector,所以我们要做prediction这件事情的话,我们就是learning一个neural network,它的input就是$w_{i-1}$的1-of-N encoding feature vector,它的output就是下一个word$w_i$是某一个word的几率。也就是说,这个model它的output dimension就是word(假设世界上有10w个word,这个model 的output就是10w维),每一维代表了某一个word是下一个word($w_i$)的几率。

Expand All @@ -72,7 +72,7 @@ prediction based的方法是怎么体现:根据一个词汇的上下文来了

所以当我们learn一个prediction model的时候,考虑word context这件事情,就自动地考虑在这个prediction model里面。所以我们把prediction model的第一个hidden layer拿出来,我们就可以得到我们想要找的这种word embedding的特性。

### 共享参数
#### 共享参数

![image](res/chapter25-8.png)

Expand Down Expand Up @@ -101,7 +101,7 @@ prediction based的方法是怎么体现:根据一个词汇的上下文来了

那我们就把$w_i$对C的偏微分减去$w_j$对C的偏微分,$w_j$对C的偏微分减去$w_i$对C的偏微分,$w_i,w_j$的update就一样了

### 训练
#### 训练

![image](res/chapter25-11.png)

Expand All @@ -111,7 +111,7 @@ prediction based的方法是怎么体现:根据一个词汇的上下文来了

比如说有一个句子是:“潮水退了就只知道谁没穿裤”。那你让你的neural network input “潮水”跟“退了”,希望output就是“就”。所以你就希望你的output跟“就”的1-of-N encoding是minimize cross entropy(“就”也是1-of-N encoding来表示的)。然后input“退了”跟“就”,希望它的output跟“知道”越接近越好。然后input“就”跟“知道”,希望它的output跟“谁”越接近越好。刚才讲的只是最基本的形态。

### Various Architectures
#### Various Architectures

![image](res/chapter25-12.png)

Expand Down Expand Up @@ -139,7 +139,7 @@ prediction based的方法是怎么体现:根据一个词汇的上下文来了

如果有人问你说:罗马来自于意大利,那柏林来自于什么呢。机器可以回答这样的问题,怎么做呢?(我们知道Germany vector会很接近于Berlin vector 减去Rome vector加上Italy vector vector)假设我们不知道答案是Germany的话,那你要做的事情就是:计算Berlin vector 减去Rome vector加上Italy vector,然后看看它跟哪一个vector最接近,你可能得到的答案是Germany

## 多语言嵌入
### 多语言嵌入

![image](res/chapter25-16.png)

Expand All @@ -149,7 +149,7 @@ prediction based的方法是怎么体现:根据一个词汇的上下文来了

图上上面是绿色,然后下面是绿色英文,代表是已经知道对应关系中文和英文的词汇。然后你做这个transform以后,接下来有新的中文词汇跟新的英文词汇,你都通过projection把他们project到同一个space上面。你就可以知道中文的降低跟英文的reduce都应该落在差不多的位置,你就可以知道翻译这样的事情

## 多域嵌入
### 多域嵌入



Expand All @@ -164,21 +164,21 @@ prediction based的方法是怎么体现:根据一个词汇的上下文来了

如果你用这个方法的话,就算有一张image,在training的时候你没有看到过的class。比如说猫这个image,从来都没有看过,但是猫这个image project到cat附近的话,你就会说,这张image叫做cat。如果你可以做到这件事的话,就好像是machine阅读了大量的文章以后,它知道说:每一个词汇它是什么意思。先通过阅读大量的文章,先了解词汇之间的关系,接下来再看image的时候,会根据它阅读的知识去match每一个image所该对应的位置。这样就算它没有看过的东西,它也有可能把它的名字叫出来。

## 文档嵌入
### 文档嵌入

![image](res/chapter25-18.png)

刚才讲的是word embedding,也可以做document embedding。也就不是把word变成一个vector,也可以把document变成一个vector

### 语义嵌入
#### 语义嵌入

![image](res/chapter25-19.png)



那咋样把一个document变成一个vector呢?最简单的方法我们之前已经讲过了,就是把一个document变成一个bag-of-word,然后用auto encoding就可以learn出document semantic embedding。但光这样做是不够

## Beyond Bag of Word
### Beyond Bag of Word

![image](res/chapter25-20.png)

Expand Down

0 comments on commit f285f91

Please sign in to comment.