詞向量的工作原理是什麽?
為了把自然語言交給機器學習算法,通常需要先把語言數學化。單詞向量是壹種將語言中的單詞數學化的方法。最簡單的詞向量方法之壹是one-hotrepresentation,即壹個詞用壹個很長的向量來表示,向量的長度是壹本字典的大小。向量的分量只有1的壹個位置對,其他都是0,1。但這種詞向量表示有兩個缺點:容易受到維數災難的困擾,尤其是在深度學習的壹些算法中使用時;不能很好的描述詞與詞之間的相似性(這個術語好像叫“詞匯空缺”)。另壹種是妳說的分布式表示(DistributedRepresentation)的表示法,由Hinton在1986中首次提出,可以克服one-hotrepresentation的上述缺點。其基本思想是將某壹種語言中的每壹個詞通過訓練映射成壹個固定長度的短向量(當然這裏的“短”是相對於one-hotrepresentation的“長”),將這些向量全部放在壹起,形成壹個詞向量空間,每個向量可以看作這個空間中的壹個點。把“距離”引入這個空間,我們就可以根據單詞的距離來判斷單詞。為了更好的理解以上思路,我們舉壹個通俗的例子:假設二維平面上分布著n個不同的點,給定其中壹個,現在我們想在平面上找到壹個最接近這個點的點。我們怎麽做呢?首先,我們建立壹個直角坐標系,基於這個坐標系,其上的每壹點都唯壹對應壹個坐標(x,y);然後引入歐氏距離;最後分別計算這個詞與其他N-1個詞的距離,距離值最小對應的詞就是我們要找的詞。在上面的例子中,坐標(x,y)的位置等價於向量這個詞,向量是用來數學量化平面上壹個點的位置的。坐標系建立後,很容易得到壹個點的坐標。但是在NLP任務中,得到詞向量要復雜得多,而且詞向量不是唯壹的,其質量取決於訓練語料、訓練算法和詞向量的長度。生成單詞向量的壹種方法是使用神經網絡算法。當然,詞向量通常是和語言模型捆綁在壹起的,也就是訓練後同時獲得的。使用神經網絡來訓練語言模型的想法首先是由百度IDL(深度學習研究所)的許巍提出的。這方面最經典的文章是2003年Bengio在JMLR上發表的Aneuralprobibilistic Languagemodel,之後還有壹系列相關的研究著作,包括Google TomasMikolov團隊的word2vec。