One-Shot 學(xué)習(xí)
在人臉識(shí)別的任務(wù)中囊颅,首要解決的問(wèn)題就是僅僅需要一張圖片或者一個(gè)樣本實(shí)現(xiàn)識(shí)別蝎宇,而利用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)這一功能時(shí),由于只有一個(gè)樣本叮姑,所以很難實(shí)現(xiàn)這樣的效果。一種有效的解決方案是實(shí)現(xiàn)一個(gè)Similarity函數(shù),這個(gè)函數(shù)可以用如下的表達(dá)式表示:
即用兩張圖片作為輸入传透,輸出兩張圖片的差異值耘沼,當(dāng)這兩張圖片的差異值小于某個(gè)閾值時(shí),預(yù)測(cè)輸出是同一個(gè)人朱盐,反之則不是群嗤。
Siamese 網(wǎng)絡(luò)
實(shí)現(xiàn)One-Shot功能的一個(gè)方式就是使用Siamese網(wǎng)絡(luò),該網(wǎng)絡(luò)的架構(gòu)如下如下圖所示:
輸入一張圖片兵琳,經(jīng)過(guò)卷積狂秘,池化和全連接層之后,得到一個(gè)向量躯肌,將這個(gè)向量作為輸入圖片的編碼者春,并命名為。而實(shí)現(xiàn)人臉識(shí)別系統(tǒng)的方法就是利用同樣的網(wǎng)絡(luò)比較輸出的向量清女,假設(shè)第二張圖片的向量為
钱烟,則有如下表達(dá):
- 如果輸入
是同一個(gè)人,
足夠小嫡丙。
- 如果輸入
b不是同一個(gè)人拴袭,
較大。
Triple損失
利用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)參數(shù)并應(yīng)用于人臉識(shí)別曙博,一種有效的方法是定義三元組損失函數(shù)然后利用梯度下降稻扬。如下圖所示:
定義三元組損失就是利用一張anchor(用A表示)圖片,一個(gè)正例(Positive羊瘩,表示和anchor是同一個(gè)人泰佳,用P表示),一個(gè)反例(Negative尘吗,表示和anchor不是同一個(gè)人逝她,用N并表示),則將其寫(xiě)成公式形式就是:
對(duì)于以上公式睬捶,如果出現(xiàn)出現(xiàn)某個(gè)函數(shù)的輸出為0黔宛,則會(huì)有,那么就會(huì)難以區(qū)分正例和反例,網(wǎng)絡(luò)可能會(huì)失效擒贸,為了避免這種情況臀晃,以上表達(dá)式可以改為如以下所示:
表示間隔(margin),是神經(jīng)網(wǎng)絡(luò)的一個(gè)超參數(shù)介劫。
Triple損失基于三元圖片組徽惋,則其基于三元圖片組的損失函數(shù)如下所示:
以上損失函數(shù)表達(dá)式保證了,損失函數(shù)能取得最小值是0.
假設(shè)有10000張圖片數(shù)據(jù)集座韵,這些數(shù)據(jù)集中有1000個(gè)人不同的照片险绘,為了訓(xùn)練一個(gè)人臉識(shí)別的神經(jīng)網(wǎng)絡(luò)踢京,需要利用10000張圖片生成三元組,然后利用三元組數(shù)據(jù)集和梯度下降算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)宦棺。
人臉驗(yàn)證與二分類
實(shí)現(xiàn)人臉識(shí)別卷積網(wǎng)絡(luò)學(xué)習(xí)參數(shù)的另外一種方法將人臉識(shí)別當(dāng)作一個(gè)二分類問(wèn)題瓣距。如下圖所示:
利用Siamese網(wǎng)絡(luò),得到兩組向量(假設(shè)是一個(gè)128維的向量)代咸,將這兩組向量輸入到邏輯回歸單元蹈丸,然后進(jìn)行預(yù)測(cè),如果是相同的人呐芥,則輸出為1逻杖,否則,輸出為0.如下公式所示:
除了以上公式外贩耐,還有一個(gè)公式實(shí)現(xiàn)二分類效果弧腥,稱之為平方相似度,如下所示:
與邏輯回歸相比潮太,輸入是一對(duì)圖片管搪。
注:以上所有圖片來(lái)自于吳恩達(dá)老師deeplearning.ai 課件