本文章簡述了GloVe論文中較為重要的概念,部分細節並無詳細闡述,若有疑問,請參考原始論文。
Related work
- LSA (Latent Semantic Analysis)
- HAL (Hyperspace Analogue to Language)
- word2vec with CBOW
- word2vec with skip-gram
Main issue
過去的word representation的發法有些問題:
- LSA, HAL : 詞頻高的詞彙影響這些模型太嚴重,導致不重要的詞彙,例如”a, the, …”,讓模型學到一些不必要(錯誤)的詞彙關係。[Matrix Factorization Methods]
- word2vec 僅考慮一定window內,附近詞彙之間的關係。當兩詞彙有關連但相距較遠,word2vec將難以學會這些詞彙之間的關聯。[Shallow Window-Based Methods]
- 本論文希望能同時改善上述問題。
Main idea
1 | Glove希望能找到更多詞彙之間的有用關聯 |
Notations:
- $X_{ij}= word,j 出現在word,i上下文的次數$
- $X_{i}= \sum_{k}{X_{ik}}$
- $P_{ij}=P(j|i)=\dfrac{X_{ij}}{X_i}$,此公式可對應到Main idea的表格
- 找出文字之間關聯
由上圖可以發現,solid出現在ice附近的機率遠大於steam,而gas出現在steam附近的機率大於ice。而water(對於兩詞彙皆有關聯)及fashion(對於兩詞彙皆無關聯)對於ice及steam兩者間的比例則接近於1。
- 對於一字多義:則將同一字彙標註為多個,
Ex: bank1, bank2, ...
。
Main model
Process for finding cost function:
首先,Glove希望能凸顯Main idea所體現的文字關係,換句話說,對於任意三個不同的字,希望能找到function F,以計算他們之間的關係:
換句話說,也可以想成是,將兩文字之間相差多大,以及第三者當作輸入(如果想不通,建議可以想想main idea的example):
為求實際運算上方便,將公式轉換為向量間的乘法:
- Eqn. (3)
假設F是homomorphism,則可得到並推得以下:
將$log(X_{i})$以b替換掉,$\hat b_k$ 是額外加入的bias for $\hat w_k$:
最後乘上weight $f(X_{ij})$並當作cost function j:
其中$f(X_{ij})$可思考一下,他必定不會>1;但當有設置$x_{max}$時,仍需給予條件設置,另外也給予一個$\alpha$值作為模型調整:
以下為$X_{ij}$與$f(X_{ij})$之間的關係圖:
Related to other Models
就結論而言,會推導出與Main model中eq(8)一樣的cost function,詳細過程請參考GloVe原文。
complexity
總之他說他比別人快的樣子(看網路是這樣說),
好像是最差的結果是$O(|V|^2)$, 但可以證明其速度可以到$O(|C|^{0.8})$, window-base是$O(|C|)$。
詳細細節請參考GloVe原文。
Experiments
主要分為兩個部分,測量詞彙向量本身做答題作為測量(內部測量),以及將文字向量拿去訓練其他問題(外部測量)
Word similarity
- semantic questions (回答相對地名或人名)
- Athens is to Greece as Berlin is to _____ ?
- syntactic questions (找出對應詞彙型態,包含動詞及形容詞)
- dance is to dancing as fly is to _____ ?
- bad is to worst as good is to _____ ?
Named entity recognition (NER)
Dataset : CoNLL-03
Data : Reuters newswire articles with four entity types: person(人), location(地), organization(機構), and miscellaneous(其他).
Goal : 標記這些entity
Result:
More results:
他想說越多資料,模型就會越準。就我看來,這應該是拿來湊頁數用的。
如何使用Glove
這裡有篇使用教學文,歡迎大家使用看看。
Reference
- [paper] https://nlp.stanford.edu/pubs/glove.pdf
- [source code] https://nlp.stanford.edu/projects/glove/