4.2 One-Shot 学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
| 4.1 什么是人臉識別? | 回到目錄 | 4.3 Siamese 網絡 |
One-Shot 學習 (One-Shot Learning)
人臉識別所面臨的一個挑戰就是你需要解決一次學習問題,這意味著在大多數人臉識別應用中,你需要通過單單一張圖片或者單單一個人臉樣例就能去識別這個人。而歷史上,當深度學習只有一個訓練樣例時,它的表現并不好,讓我們看一個直觀的例子,并討論如何去解決這個問題。
假設你的數據庫里有4張你們公司的員工照片,實際上他們確實是我們deeplearning.ai的員工,分別是Kian,Danielle,Younes和Tian。現在假設有個人(編號1所示)來到辦公室,并且她想通過帶有人臉識別系統的柵門,現在系統需要做的就是,僅僅通過一張已有的Danielle照片,來識別前面這個人確實是她。相反,如果機器看到一個不在數據庫里的人(編號2所示),機器應該能分辨出她不是數據庫中四個人之一。
所以在一次學習問題中,只能通過一個樣本進行學習,以能夠認出同一個人。大多數人臉識別系統都需要解決這個問題,因為在你的數據庫中每個雇員或者組員可能都只有一張照片。
有一種辦法是,將人的照片放進卷積神經網絡中,使用softmax單元來輸出4種,或者說5種標簽,分別對應這4個人,或者4個都不是,所以softmax里我們會有5種輸出。但實際上這樣效果并不好,因為如此小的訓練集不足以去訓練一個穩健的神經網絡。
而且,假如有新人加入你的團隊,你現在將會有5個組員需要識別,所以輸出就變成了6種,這時你要重新訓練你的神經網絡嗎?這聽起來實在不像一個好辦法。
所以要讓人臉識別能夠做到一次學習,為了能有更好的效果,你現在要做的應該是學習Similarity函數。詳細地說,你想要神經網絡學習這樣一個用 ddd 表示的函數, d(img1,img2)=degree of difference between images ,它以兩張圖片作為輸入,然后輸出這兩張圖片的差異值。如果你放進同一個人的兩張照片,你希望它能輸出一個很小的值,如果放進兩個長相差別很大的人的照片,它就輸出一個很大的值。所以在識別過程中,如果這兩張圖片的差異值小于某個閾值 τττ ,它是一個超參數,那么這時就能預測這兩張圖片是同一個人,如果差異值大于 τττ ,就能預測這是不同的兩個人,這就是解決人臉驗證問題的一個可行辦法。
要將它應用于識別任務,你要做的是拿這張新圖片(編號6),然后用 ddd 函數去比較這兩張圖片(編號1和編號6),這樣可能會輸出一個非常大的數字,在該例中,比如說這個數字是10。之后你再讓它和數據庫中第二張圖(編號2)片比較,因為這兩張照片是同一個人,所以我們希望會輸出一個很小的數。然后你再用它與數據庫中的其他圖片(編號3、4)進行比較,通過這樣的計算,最終你能夠知道,這個人確實是Danielle。
對應的,如果某個人(編號7)不在你的數據庫中,你通過函數 ddd 將他們的照片兩兩進行比較,最后我們希望 ddd 會對所有的比較都輸出一個很大的值,這就證明這個人并不是數據庫中4個人的其中一個。
要注意在這過程中你是如何解決一次學習問題的,只要你能學習這個函數 ddd ,通過輸入一對圖片,它將會告訴你這兩張圖片是否是同一個人。如果之后有新人加入了你的團隊(編號5),你只需將他的照片加入你的數據庫,系統依然能照常工作。
現在你已經知道函數 ddd 是如何工作的,通過輸入兩張照片,它將讓你能夠解決一次學習問題。那么,下節視頻中,我們將會學習如何訓練你的神經網絡學會這個函數 ddd 。
課程板書
| 4.1 什么是人臉識別? | 回到目錄 | 4.3 Siamese 網絡 |
總結
以上是生活随笔為你收集整理的4.2 One-Shot 学习-深度学习第四课《卷积神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.1 什么是人脸识别-深度学习第四课《
- 下一篇: 4.3 Siamese 网络-深度学习第