Triplet Loss
前言
透過定義Triplet Loss,才能評估Siamese Network是否有正確的學習similarity function。
內容
Learning Objective
- anchor跟positive的的距離要比anchor跟negative的小。
- 導入margin的原因:
- 避免模型乾脆不學,模型都判斷距離為0,導入margin後,模型就必須進行學習。
Loss function
- 將上面的公式轉化成我們Loss function的核心部分。
當核心公式小於0,則loss會取0(max)
- 在反向傳遞時,就會強化目前的parameters。
當核心公式大於0,則loss會取核心公式(max)
- 在反向傳遞時,就會弱化目前的parameters。
Choosing the triplets A,P,N
- 訓練時,每個不同的人必須要有多張圖片,否則就沒有A,P的對應,模型就無法有效訓練。
- 測試時,一個人只一張圖是沒有問題。
Training set using triplet loss
- 訓練時,也不能對A,P,N做隨機選擇。
- 因為即是A,P確保時同一人,但A,N若差異很大,則核心公式很容易就被滿足了。之後如果遇到P,N很相似的圖片,模型則毫無辨識能力。
- 盡量選擇d(A,P)接近d(A,N),讓模型必須認真學習更新其參數。
該學到的
- loss function為何要有margin。
- 為何訓練時,數據樣本要多人數 ?
- 為何訓練時,不能隨機進行挑選 ?