日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

深入理解 Embedding层的本质

發布時間:2023/11/28 生活经验 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解 Embedding层的本质 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼上文https://blog.csdn.net/weixin_42078618/article/details/82999906探討了embedding層的降維效果,時隔一個月,分享一下嵌入層在NPL領域的巨大作用。

?

本文的發表建立在了解文本轉向量(如one-hot)的用法的前提上。

?

首先,繼續假設我們有一句話,叫“公主很漂亮”,如果我們使用one-hot編碼,可能得到的編碼如下:

公 [0 0 0 0 1]
主 [0 0 0 1 0]
很 [0 0 1 0 0]
漂 [0 1 0 0 0]
亮 [1 0 0 0 0]
咋一眼看過似乎沒毛病,其實本來人家也沒毛病,或者假設咱們的詞袋更大一些

公 [0 0 0 0 1 0 0 0 0 0]
主 [0 0 0 1 0 0 0 0 0 0]
很 [0 0 1 0 0 0 0 0 0 0]
漂 [0 1 0 0 0 0 0 0 0 0]
亮 [1 0 0 0 0 0 0 0 0 0]
假設吧,就假設咱們的詞袋一共就10個字,則這一句話的編碼如上所示。

這樣的編碼,最大的好處就是,不管你是什么字,我們都能在一個一維的數組里用01給你表示出來。并且不同的字絕對不一樣,以致于一點重復都沒有,表達本征的能力極強。

但是,因為其完全獨立,其劣勢就出來了。表達關聯特征的能力幾乎為0!!!

我給你舉個例子,我們又有一句話“王妃很漂亮”

那么在這基礎上,我們可以把這句話表示為

王 [0 0 0 0 0 0 0 0 0 1]
妃 [0 0 0 0 0 0 0 0 1 0]
很 [0 0 1 0 0 0 0 0 0 0]
漂 [0 1 0 0 0 0 0 0 0 0]
亮 [1 0 0 0 0 0 0 0 0 0]
從中文表示來看,我們一下就跟感覺到,王妃跟公主其實是有很大關系的,比如:公主是皇帝的女兒,王妃是皇帝的妃子,可以從“皇帝”這個詞進行關聯上;公主住在宮里,王妃住在宮里,可以從“宮里”這個詞關聯上;公主是女的,王妃也是女的,可以從“女”這個字關聯上。

但是呢,我們用了one-hot編碼,公主和王妃就變成了這樣:

公 [0 0 0 0 1 0 0 0 0 0]
主 [0 0 0 1 0 0 0 0 0 0]
王 [0 0 0 0 0 0 0 0 0 1]
妃 [0 0 0 0 0 0 0 0 1 0]
你說,你要是不看前面的中文注解,你知道這四行向量有什么內部關系嗎?看不出來,那怎么辦?

既然,通過剛才的假設關聯,我們關聯出了“皇帝”、“宮里”和“女”三個詞,那我們嘗試這么去定義公主和王妃

公主一定是皇帝的女兒,我們假設她跟皇帝的關系相似度為1.0;公主從一出生就住在宮里,直到20歲才嫁到府上,活了80歲,我們假設她跟宮里的關系相似度為0.25;公主一定是女的,跟女的關系相似度為1.0;

王妃是皇帝的妃子,沒有親緣關系,但是有存在著某種關系,我們就假設她跟皇帝的關系相似度為0.6吧;妃子從20歲就住在宮里,活了80歲,我們假設她跟宮里的關系相似度為0.75;王妃一定是女的,跟女的關系相似度為1.0;

于是公主王妃四個字我們可以這么表示:

皇 宮
帝 里 女
公主 [ 1.0 0.25 1.0]
王妃 [ 0.6 0.75 1.0]
這樣我們就把公主和王妃兩個詞,跟皇帝、宮里、女這幾個字(特征)關聯起來了,我們可以認為:

公主=1.0 *皇帝 +0.25*宮里 +1.0*女

王妃=0.6 *皇帝 +0.75*宮里 +1.0*女

或者這樣,我們假設沒歌詞的每個字都是對等(注意:只是假設,為了方便解釋):

皇 宮
帝 里 女
公 [ 0.5 0.125 0.5]
主 [ 0.5 0.125 0.5]
王 [ 0.3 0.375 0.5]
妃 [ 0.3 0.375 0.5]
這樣,我們就把一些詞甚至一個字,用三個特征給表征出來了。然后,我們把皇帝叫做特征(1),宮里叫做特征(2),女叫做特征(3),于是乎,我們就得出了公主和王妃的隱含特征關系:

王妃=公主的特征(1) * 0.6 +公主的特征(2) * 3 +公主的特征(3) * 1

于是乎,我們把文字的one-hot編碼,從稀疏態變成了密集態,并且讓相互獨立向量變成了有內在聯系的關系向量。

?

所以,embedding層做了個什么呢?它把我們的稀疏矩陣,通過一些線性變換(在CNN中用全連接層進行轉換,也稱為查表操作),變成了一個密集矩陣,這個密集矩陣用了N(例子中N=3)個特征來表征所有的文字,在這個密集矩陣中,表象上代表著密集矩陣跟單個字的一一對應關系,實際上還蘊含了大量的字與字之間,詞與詞之間甚至句子與句子之間的內在關系(如:我們得出的王妃跟公主的關系)。他們之間的關系,用的是嵌入層學習來的參數進行表征。從稀疏矩陣到密集矩陣的過程,叫做embedding,很多人也把它叫做查表,因為他們之間也是一個一一映射的關系。

更重要的是,這種關系在反向傳播的過程中,是一直在更新的,因此能在多次epoch后,使得這個關系變成相對成熟,即:正確的表達整個語義以及各個語句之間的關系。這個成熟的關系,就是embedding層的所有權重參數。

Embedding是NPL領域最重要的發明之一,他把獨立的向量一下子就關聯起來了。這就相當于什么呢,相當于你是你爸的兒子,你爸是A的同事,B是A的兒子,似乎跟你是八竿子才打得著的關系。結果你一看B,是你的同桌。Embedding層就是用來發現這個秘密的武器。
---------------------
作者:羅大黑
來源:CSDN
原文:https://blog.csdn.net/weixin_42078618/article/details/84553940
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的深入理解 Embedding层的本质的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。