Keras里Embedding層的理解

問(wèn)題描述

Embedding層在機(jī)器學(xué)習(xí)中用的非常多,不問(wèn)是NLP系統(tǒng)還是推薦系統(tǒng)剧董,都會(huì)用到這個(gè)層兔仰,而且是放在最模型的最前面使用的茫负,那么它到底有什么意義,今天我們就探討一下乎赴。

直觀感受

Embedding在keras是這樣描述的的

Turns positive integers (indexes) into dense vectors of fixed size. eg. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]

把單個(gè)整數(shù)變成固定大小的數(shù)組忍法。這件事情的意義何在潮尝?
在實(shí)際的例子中,比如用戶(hù)的id饿序,本來(lái)是單個(gè)整數(shù)表示勉失,但是這些整數(shù)之間不存在任何關(guān)系,比如你不能說(shuō)100021的用戶(hù)比100020的用戶(hù)更大嗤堰,也不能說(shuō)用戶(hù)100021-用戶(hù)100020=用戶(hù)000001戴质。但是實(shí)際項(xiàng)目中,我們需要找到用戶(hù)100021和100020之間的某種關(guān)系踢匣,所以我們需要另外一種描述方式告匠。

所用的描述方式就是通過(guò)遍歷所有用戶(hù)的數(shù)據(jù),找到這些用戶(hù)的隱藏屬性(隱藏特征值)离唬,每個(gè)人用這種隱藏特征值來(lái)描述后专,這個(gè)時(shí)候,他們之間就可以有很強(qiáng)的關(guān)系了输莺。比如相同特征值的用戶(hù)戚哎,我們認(rèn)為更加相似。

小小的例子

Keras里的Embedding層就是做這個(gè)事情的


model = Sequential()
model.add(Embedding(1000, 64, input_length=10)) 
# the model will take as input an integer matrix of size (batch, input_length). 
# the largest integer (i.e. word index) in the input should be no larger than 999 (vocabulary size). 
# now model.output_shape == (None, 10, 64), where None is the batch dimension.

input_array = np.random.randint(1000, size=(32, 10))

model.compile('rmsprop', 'mse') 
output_array = model.predict(input_array) 
assert output_array.shape == (32, 10, 64)

在這個(gè)例子中嫂用,相當(dāng)于輸入的是32行密碼型凳,每行密碼有10個(gè)數(shù)字,經(jīng)過(guò)Embedding層之后嘱函,每個(gè)數(shù)字變成64維的數(shù)組甘畅。目的是什么?是讓密碼的這十個(gè)數(shù)字之間具有某種關(guān)系往弓。

再舉個(gè)例子疏唾,輸入相當(dāng)于是32句話(huà),每句話(huà)里有10個(gè)單詞函似,經(jīng)過(guò)Embedding層槐脏,之后每個(gè)單詞用64維的數(shù)組表示了。目的是什么撇寞?是讓一句話(huà)里的10個(gè)單詞之間有某種關(guān)系顿天。他們之間的關(guān)系就是通過(guò)64維的數(shù)組表示的。

到底是怎么變換的呢蔑担?
秘密就在那個(gè)1000的數(shù)字上露氮。我們看這里的1000表示輸入整數(shù)的最大數(shù)。也就是最大能解釋的數(shù)钟沛,超過(guò)1000我就無(wú)法給你映射了。所以Embedding的本質(zhì)是定義了一個(gè)巨大的數(shù)組局扶,在此案中就是(1000, 64)恨统,你如輸入任意一個(gè)整數(shù)叁扫,我就能根據(jù)輸入的整數(shù)到這個(gè)數(shù)組里給你找出對(duì)應(yīng)的64個(gè)數(shù)。
又了這樣一個(gè)大的矩陣轉(zhuǎn)換數(shù)組畜埋,那么接下來(lái)在機(jī)器學(xué)習(xí)中莫绣,
比如輸入的是32行句子,每行句子有10個(gè)字符悠鞍,
現(xiàn)在變成
32行句子对室,每行句子有10個(gè)[64維的數(shù)組]。雖然數(shù)據(jù)量變大了咖祭,但是這里的每個(gè)句子內(nèi)的單詞都有某種特殊的關(guān)系了掩宜,這個(gè)關(guān)系是通過(guò)64個(gè)隱藏特征帶來(lái)的。

Embedding 是如何學(xué)習(xí)的

那么在Embedding中么翰,這1000x64的大矩陣是如何學(xué)習(xí)得到的呢牺汤?

按照機(jī)器學(xué)習(xí)的傳統(tǒng)。
第1步浩嫌,先定義這樣一個(gè)1000x64的矩陣檐迟,并且用隨機(jī)數(shù)來(lái)初始化它。
第2步码耐,針對(duì)一批輸入數(shù)據(jù)(32, 10)追迟,映射出(32, 10, 64)
第3步,把上一步輸出骚腥,作為輸入進(jìn)入到模型里敦间,獲得輸出結(jié)果
第4步,把上一步的結(jié)果和真實(shí)值進(jìn)行比較桦沉。從而微調(diào)各個(gè)參數(shù)每瞒,然后從第2步重復(fù)開(kāi)始。

一個(gè)特容易誤解的地方

在我剛開(kāi)始學(xué)習(xí)NLP的時(shí)候纯露,都有把字符文本剿骨,轉(zhuǎn)化成數(shù)字文本的需求,當(dāng)時(shí)看到有的程序里埠褪,把字符文本轉(zhuǎn)換成數(shù)字文本浓利,然后再把數(shù)字文本,轉(zhuǎn)化成這個(gè)矩陣文本钞速,也使用了Embedding層贷掖,當(dāng)時(shí)以為Embedding層是別人創(chuàng)建好的映射層,現(xiàn)在看來(lái)并不是這樣的渴语。最起碼在Keras里苹威,這個(gè)Embedding層的數(shù)據(jù)是需要學(xué)習(xí)得到,初始化的都是一些隨機(jī)數(shù)據(jù)驾凶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牙甫,一起剝皮案震驚了整個(gè)濱河市掷酗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窟哺,老刑警劉巖泻轰,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異且轨,居然都是意外死亡浮声,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)旋奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泳挥,“玉大人,你說(shuō)我怎么就攤上這事黄绩∠劢啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵爽丹,是天一觀的道長(zhǎng)筑煮。 經(jīng)常有香客問(wèn)我,道長(zhǎng)粤蝎,這世上最難降的妖魔是什么真仲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮初澎,結(jié)果婚禮上秸应,老公的妹妹穿的比我還像新娘。我一直安慰自己碑宴,他們只是感情好软啼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著延柠,像睡著了一般祸挪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贞间,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天贿条,我揣著相機(jī)與錄音,去河邊找鬼增热。 笑死整以,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的峻仇。 我是一名探鬼主播公黑,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帆调?” 一聲冷哼從身側(cè)響起奠骄,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎番刊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體影锈,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芹务,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸭廷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枣抱。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辆床,靈堂內(nèi)的尸體忽然破棺而出佳晶,到底是詐尸還是另有隱情,我是刑警寧澤讼载,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布轿秧,位于F島的核電站,受9級(jí)特大地震影響咨堤,放射性物質(zhì)發(fā)生泄漏菇篡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一一喘、第九天 我趴在偏房一處隱蔽的房頂上張望驱还。 院中可真熱鬧,春花似錦凸克、人聲如沸议蟆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)咐容。三九已至,卻和暖如春撞鹉,著一層夾襖步出監(jiān)牢的瞬間疟丙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工鸟雏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留享郊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓孝鹊,卻偏偏與公主長(zhǎng)得像炊琉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容