图神经网络学习一(浅谈embedding)
最近在做圖神經網絡(GNN)有關的項目,這個圖就是數據結構里面的那個圖。在學習的過程中接觸到了embedding。由于我以前做的比較多的都是卷積神經網絡,而embedding常用于自然語言處理(NLP),因此卡在了這個地方,并花了些時間去了解什么是embedding
從詞說起
假如我們有6個詞:男人,女人,蘋果,西瓜,腸粉,螺螄粉。
如果用one-hot編碼來表示,就是六維向量。
男人:(1,0,0,0,0,0)
女人:(0,1,0,0,0,0)
…
螺螄粉:(0,0,0,0,0,1)
用one-hot表示的話,我們就無法得知這些詞之間的關聯性,只能得到他們各自的位置。而且每個向量都是6維這么高,當詞多的時候,就維度太高了。我們能不能想一個降低維度而且又讓詞之間有關聯性的方法呢?
我們先看下面的表格
男人?? ?女人?? ?蘋果?? ?西瓜?? ?腸粉?? ?螺螄粉
性別?? ?0.99?? ?-0.99?? ?0?? ?0?? ?0?? ?0
甜度?? ?-0.2?? ?0.3?? ?0.7?? ?0.78?? ?0.3?? ?0.1
咸度?? ?0.2?? ?0.1?? ?-0.1?? ?0.2?? ?0.7?? ?0.9
我們可以發現,每一列都有3行,男人的列向量為(0.99,-0.2,0.2),這是個三維向量,同時每列的列向量之間的數值都有聯系。這就是一個embedding了!可以粗略地理解為,embedding就是一個類的特征。
那么embedding怎樣獲得呢?
embedding的獲取
方法一:用遷移學習獲取別人預訓練好的embedding
方法二:自己訓練一個embedding
這里將一個最簡單的構造embedding算法,skip-gram算法。
假定我們的神經網絡是輸入一個詞,輸出一個反面詞,比如,輸入男人,輸出女人,那么我們就構造一個含有embedding層的神經網絡。
可以把embedding想象成是神經網絡的一層,里面的參數經過不斷的前向傳播反向傳播迭代更新。損失函數可以選用交叉熵函數。
訓練完后,我們自己的embeding就構造好啦!
?
總結
以上是生活随笔為你收集整理的图神经网络学习一(浅谈embedding)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入Bert实战(Pytorch)---
- 下一篇: NLP—word2vec词向量简介