./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
一般來說,比較喜歡用cbow , 因為模型中 cbow有向量相加的運算。##保留意見
-window 上下文窗口,是訓練詞向量的時候,取上下文的大小,感覺這個一般都是5比較好
上面這兩個參數試過很多個,感覺就是默認的比較好用。
-hs 做不做層次的softmax,是1的時候效果比較好,但是訓練會慢一點
-min-count 控制詞典大小的參數,如果只想要高頻詞的話就設置高一點。
架構:skip-gram(慢、對罕見字有利)vs CBOW(快)
· 訓練算法:分層softmax(對罕見字有利)vs 負采樣(對常見詞和低緯向量有利)
· 欠采樣頻繁詞:可以提高結果的准確性和速度(適用范圍1e-3到1e-5)
· 文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
二、LDA調參
1.文章
http://jmlr.org/proceedings/papers/v32/tang14.pdf
2.思路
1)lda模型(latent dirichlet distribution)調優,比如曾經有研究表明,直接把短文檔(比如一個微博,一個查詢)作為輸入,不如先做預處理把這些短文章聚合成一些長文章(比如把同一作者的微博合一塊)。
2)當我們選擇的主題數目k和真實主題數目k’ 一致,或者主題-詞分布區分度夠高(歐式距離衡量下)的情況下,假如我們還滿足文檔長度的限制,log d 《= n 的, 那么, 隨着n 和 d 增長,后驗分布和真實分布之間的誤差正比於 logn / n +logd / d。
3)當我們選擇的主題數目k 大於真實主題數目k‘時,如果我們仍然滿足 d》= log n, 那么誤差正比於 (log n / n + logd / d) ^ (1/(2k –1))
4)
-
文檔長度不能太短,至少是文檔數目的log,所以對於太短的文檔,我們必須把他們聚合
-
為了滿足log d 《= n, 還有一個方法是降低d,但很可惜,最終誤差大小正比於d,所以文檔數量最好也多一點。
-
當我們選擇的topic 數目k 大大超出於真實topic 數目 k‘ 時,可以從(5)的結果看到,也會減慢收斂速度,所以應該從比較小的topic數目開始,慢慢增加。
-
最好當然是我們能知道真正的主題數目k,這樣可以避開上面的試探過程,但現實很難,另外一個可能的條件是topic之間差異大,比如每個文檔可能的topic少,或者每個topic有一些特殊的詞,比如一個topic是自然語言處理,另一個topic是圖像處理,兩個各有自己獨特的詞,如像素,語法樹等等,這樣我們就可以不用太擔心試探過程。
-
當上面兩種情況發生時,可以考慮設置小一點的alpha 和beta, 以減少迭代。