關於自然語言處理的相似度計算猜想

首先我學習自然語言處理的時間也不長,也就研一到現在,不到一年。上了一節課,覺得挺無聊的,就上課時間想了一想關於自然語言處理的東西。

可以去看看前面發的那篇相似度計算的文章。本文還是結合食用更好。文章地址如下:
Pytorch相似度計算
特徵表示
不論是句子,圖像,還是現實中的事物都是有特徵這個東西的。我們使用深度學習,機器學習或者說什麼傳統方法,基本上都是在學習特徵,然後根據特徵去進行泛化模型參數,以求適應更多的情況。而這些特徵的表示就是表示成了一個個向量。
比如:一個特定的人擁有性別,長相,身高,性格等等特徵,然後我們用a1代表性別,a2代表長相,a3代表身高,a4代表性格。於是一個特定的人我們就可以表示爲[a1,a2,a3,a4]這樣一個特徵向量。而性別也可以有一些特徵來組成,比如頭髮,皮膚,生理特徵等等等。然後我們用a11代表頭髮,a12代表皮膚,a13代表生理特徵。於是我們就可以用[a11,a12,a13]來代表性別特徵.以此類推,我們也可以使用這樣的方式來表示這個特定的人,於是便有了與這個人相對應的特徵矩陣。
在這裏插入圖片描述
如果是分類問題的話,然後就再將這個特徵矩陣輸入到神經網絡模型當中,再經過一系列的降維到最後一層,最後一層的維數就是分類數量,最終經過激活層,獲取每一類的概率。

句子的特徵表示
現在理解了特徵矩陣的表示之後,你應該也知道了句子的特徵矩陣就是把上面的大特徵換成了詞語,把小特徵換成了換成了組成詞語的字(當然這麼理解,太過片面,只是這樣好理解一些),所以一個句子的特徵矩陣就是有一個個詞的表示矩陣組成的。比如“我愛代碼”,可以分成“我”,“愛”,“代碼”,而每個詞都由300維向量表示的話,這個句子的表示維度就是3300.
特徵矩陣叉乘
現在再來理解特徵矩陣之間的點乘和叉乘。(我猜的,目前還沒有驗證)
叉乘的話,我們都知道以上面的Person(x)Person(x)來舉例的話,就是a11a11,a12
a12,a13*a13.

在這裏插入圖片描述
我們可以看到上面的每個小部分與每個小部分相乘,這便進行了一個向量的交互,然而這個交互是詞向量a和詞向量b的交互,最後得到的該行詞向量表示也是隻包含了兩個詞之間的向量交互。
特徵矩陣點乘
如果我們是點乘的話,那就不一樣了。p(x)*p(x)T
在這裏插入圖片描述
我們從上圖可以看到一個詞向量便與另一個特徵矩陣的所有詞向量都有一個交互,最終得到的該行詞向量就獲取到了與另一個特徵矩陣的每個詞向量交互的信息。
如果直接一句話總結的話就是,叉乘詞對詞,點乘詞對句

相似度
餘弦相似度跳過不講
在這裏插入圖片描述
點乘相似度(我覺得叫叉乘相似度更準):
在這裏插入圖片描述
我們就能看到這個相似度計算就是詞對詞的進行交互。
雙線性相似度
在這裏插入圖片描述
在這裏插入圖片描述
如果看了我的Pytorch相似度計算那篇文章的話,就會知道我理解的其中的那個Wy是叉乘的。我想所謂的雙線性應該就是點乘和叉乘結合的雙線性吧。
皮爾遜相關係數
在這裏插入圖片描述
如果認真看的話,這會發現皮爾遜相關係數跟餘弦相似度非常的相似。只是一個直接使用的x,y,一個使用前需要先減去平均值,只保留下一個更加明顯的差異,這個差異就是在本特徵矩陣中與其他向量比較之後的差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章