每日筆記
前言
今天有以下幾個主題:
- 陶瓷博物館一遊
- 詞向量
陶瓷博物館
陶瓷博物館今日公休!!!!
是我事前資料收集不足,我應該會在6/8再次造訪。
明天會去捏陶體驗課,後天會去造型燈製作體驗課。
詞向量
詞向量是讓電腦看得懂人類語言的第一步,可以使用的量化技術包括:
- One-hot Encoding
- Word Embedding
相關的模型: Word2Vec、Glove
Word2Vec又有分:
- CBOW
- Skip-Gram
量化技術、模型的演進方式、理由大多和改進前一項的缺點有關,又或是對其優化。
想具體了解何為詞向量、量化技術具體做法,我認為參考資料的教學寫的都非常清楚。
特別要注意的是 Word Embedding 的 word vector 是由 One-hot encoding做加工得來的,所以就算是 word embedding,也需要先建立 one-hot encoding向量
One-hot Encoding
缺點:
- 向量維度會隨字典的大小增加而增加
- 向量含有的資訊密度很低
- 每個向量兩兩間的內積皆為零 -> 無法從內積取得詞與詞間的關聯程度
Word Embedding
結論:Word Embedding 優化了資訊密度低及向量內積的問題。
從 One-hot Encoding 到 Word Embedding 會先經過 Word Class 的概念。
Word Class 和 Dimension Reduction 裡的 Clustering 非常類似(我沒學過 Dimension Reduction,之後有機會就去了解),只做 Clustering 是不夠的,因為 Class 之間的關聯無法呈現等(Information 不夠)。
路線:One-hot Encoding -> Word Class -> Word Embedding
Word Embedding 實際作法是把 Word(詞)Project到一個 High Dimension Coordinate 上,這個 High Dimension 遠比 One-hot Encoding 的實際維度低很多(幾十萬 v.s 幾百)。
詞意較接近的 Word 在 Coordinate 裡是較相近的,因此內積有了意義,可以看出詞與詞間的關聯性。
很特別的是,在 Word Embedding 中,詞向量是經由模型訓練結果得來的。(Generating Word Vector is “Unsupervised”.)
在實際訓練模型、透過模型得出詞向量前,我們會先建立詞字典,把一個詞對應到一個整數索引,在使用整數索引經由Neural Network(可能只有一層也不一定)去得出詞向量。
在機器大量閱讀文本,試圖找出詞與詞間的關聯時,有兩個主要的做法:
- Count Based
- Prediction Based
Count Based
Count Based 的方法兩個 Word Vector 內積的結果(值)跟兩個詞出現在同一個文本中的頻率有關。(兩個詞常常 co-occur 在同樣的文本,那 inner product 的值就會高。)
Prediction Based
Prediction Based 的作法,是透過訓練 Neural Network,得到某個詞,下一個詞是誰的機率。Model’s Feature 可能是 One-of-N(One-hot Encoding) 的 Vector,Model’s Output 則是某個詞出現在某個詞後的機率。
Input and Output 都是 lexicon size,只是代表的涵意不同。
具體而言 Prediction Based 是如何得到向量的,建議大家去觀看參考資料[2] 李宏毅老師的講解。
Word Embedding 是透過模型來取得詞向量,有兩種模型常見的模型可以做到這件事:
- Word2Vec
- Glove
什麼是資訊密度(Information Density)?
截取至這篇文:
「資訊密度可以簡單理解為『自然語言文本的壓縮率』」。
資訊密度越高,代表越難用簡單的話形容跟描述。資訊密度越低,越容易用幾句話甚至一句話說明白。
除此之外還可以參考:
[1] Qlik – Information Density(這篇著中在網站頁面(或介面)、現實介面呈現的Information Density)
實作部分
實作部分已經在嘗試,會使用Pytorch, Gensim, Jieba等函式庫做詞分割、詞向量訓練、神經網絡訓練等動作。
(p.s 桌機不在身邊好難受,筆電用來「長」時間學習跟辦事好累哈哈)
