ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
12345678910
2
(a)
3
(b)
4
5
6
One-cold encoding
7
一維二維三維四維五維六維七維八維九維十維十一維
8
9
(a)11111111011
10
(b)11111110111
11
12
1
13
need to do:
我們找個方法來表示 (a) (b) 的不同吧!
14
Idea two:
把這些 {1, 0} 按順序記下來吧。
15
(a)
[1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1]
16
(b)
[1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1]
17
18
problem:
這個表示法儲存起來很不經濟,而且遇到「人類的沒有最長的句子」時,會寫不完。
19
20
21
2
22
need to do:
我們找另一個方法來表示 (a) (b) 的不同吧!
23
idea two:
把這些數字連乘,或是連加起來,是不是就能呈現「不同長度」的句子了?
24
(a)連加: (a) = 10連乘: (a) = 0
25
(b)連加: (b) = 10連乘: (b) = 0
26
27
problem:都是 1 0 這樣分不出來。
28
29
30
3
31
need to do:
我們再找另一個方法來表示 (a) (b) 的不同吧!
32
idea three:
如果把每個 {1, 0} 都變成一個小數,而且每個位置的小數都能呈現:(1) 它的位置;(2) 它是 1 還是 0 ,那麼就能凸顯 (a) (b) 的不同了。
33
(a)0.10.20.30.40.50.60.70.8011.1 總合為:5.7
34
(b)0.10.20.30.40.50.60.700.911.1 總合為:5.8
35
36
findings:
於是,我們得到了「(a) (b) 的句子,各有一個小數代表它的意義」的結論。
37
可以想像,4.6 4.7 只差 0.1,如果有其它的句子,和 4.6 4.7 相差更遠的話,那表示它和這兩個句子的意義差得更大!
38
*
於是,我們可以推論「這」和「那」在語言中的意義,只差了一點點!
39
*
原來!模型學會了什麼是「限定詞 (determiner)」的概念!
40
41
我不認識這個人0.1我不認識那個人0那個人不認識我
42
43
4
44
need to do:
但我們永遠不知道兩個字最遠可以差多遠,因為我們還沒解決「句子愈長,那麼它的值就可能愈大」的問題!
45
idea four:
如果我們有一個特別的函數,可以像 idea three 一樣,把每個 {1, 0} 都變成一個小數,而且是介於 0 ~ 1 之間,這樣就不會有「句子愈長,它的值就可能愈大」的問題了!因為無論如何,它都會介於 0~1 之間!
46
出門時遇到雨天的統計 = 出門時遇到下雨的次數 / (所有出門次數的總合);這個「統計」結果,因為剛好是介於 0 ~ 1 之間,所以以下 47行、48 行就拿來當做機率使用。
47
(a)0.096451738820.17593430770.24256381330.29922472130.34799846560.39042471820.42766688410.46062042450.24873684330.5163187860.5400660403總合為:3.746006743
48
(b)0.096451738820.17593430770.24256381330.29922472130.34799846560.39042471820.42766688410.22738371710.48998579440.5163187860.5400660403總合為:3.754018987
49
50
findings:
我們解決了在 idea three 裡的問題!現在還可以用更簡單的方式來呈現「這」和「那」的向量。
51
*
假設每個字的意義,都是由它的上下文決定的,那麼我們先直觀地以「前二後二」來表示一個字的意義。
52
*
那麼「這」的意義就會是:這 = [0.4276668841, 0.4606204245, 0.516318786, 0.5400660403]
53
*
同理「那」的意義就會是:那 = [0.3904247182, 0.4276668841, 0.4899857944, 0.516318786]
54
*
我們就能得到「這」和「那」的向量真的非常非常接近,可見「這」的語意和「那」一定具有某種相似性。
55
*
可見,詞向量可以表達語意,而且詞向量內含上下文的關係,因此它也懂了語言的結構,就是句法!
56
*
看來!詞向量既懂了語意,也懂了句法!詞向量就是語言的終極答案!
57
*把idea two的每個 {1, 0} 都變成介於0~1的小數
58
59
60
注意!紅色字體,表示過度推論的幻想!
61
62
Peter Comments: 一般常見的 word2vec 的說明,其實就是第 4 講的內容。這個講義從第 1 講開始一路推演思考,是要凸顯三個重點:
63
[1]
word2vec 的公式並不是絕對的,exp() 並不是什麼高大上的東西,它只是一個可以保證得出的值是『正數』的函式而已。只要可以滿足「保存順序資訊」和「凸顯差異字符/詞彙」的目標,其實什麼函式都可以用。只是因為我們最後要在第 4 講裡計算機率。
64
[2]
這整個「數字遊戲」搞得像是某種人為制定規則的桌遊一樣,最後其實也並沒有抓到什麼是語意,什麼是句法,它只是把「一開始無法解釋那個字符/詞彙是什麼意思」,改為「用一組數字來代表」而已。
65
[3]
這一組數字,好像賦予了它「可以被計算」的特性,但這組數字真正代表的,只是那個「字符/詞彙」在訓練資料中的「分佈情形」,如此而已。
66
67
68
*我知道exp()這裡指的是期待函數,也就是算出來的機率,但是突然寫到這個,我怕大家會不懂。
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100