COCO loss (人臉識別損失函式)
2017年nips的一篇做分類和識別的工作,其中在人臉識別任務上也做了實驗,Rethinking Feature Discrimination and Polymerization for Large-scale Recognition.Yu Liu, Hongyang Li, XiaogangWang。提出了一個新的損失函式:congenerous cosine,本質上就是一個cosine距離版本的triplet center loss。
在做分類、識別任務的時候常見的loss就是softmax,pairwise,triplet以及最近新提出的center loss,基本的共識是既學習類內的資訊又學習類間的資訊是對識別效果最好的監督方式,所以softmax只有類間的監督是比較挫的一種loss,pairwise、triplet都是同時學習類內和類間資訊的,但是都受到取樣的問題導致訓練容易不穩定。center loss作者認為其問題在於他的center是個統計意義值,不是每次迭代update的(這個地方有問題,center loss也是每個iteration在mini-batch裡面更新的)。所以作者提出了一個coco loss,其實主要的特性在於:一是使用了cosine距離;二是用了center;三是把distance本身作為輸入構建softmax loss,使得distance具有softmax特性。具體的loss對比如下圖
基本原理:
因為主要是loss的定義,推演的過程圍繞上面的三個方面講,一是使用cosine距離的loss如下:
這個loss就是要讓同類的cosine距離相比於不同類的更大,但是這個計算複雜度太高所以把和每個樣本的計算改成和中心的計算並且寫成softmax的形式,並做feature歸一化:
最終加上交叉熵:
這裡面需要注意的是有個scale的引數alpha,之前在focal loss裡提到過對於softmax來說,如果feature歸一化,類別數固定的情況下其loss是有個上下限的,這裡面的alpha的作用也是為了對不同的任務調整loss的範圍使得能夠得到更好的效果,對於alpha作者還推導了一下算了個公式:
實驗結果
在人臉人體上都做了 實驗,這裡就只列一下人臉的結果,使用了inception-resnet模型,用了ms1M的80k ID\3M人臉圖片就把lfw搞到了99.86%應該是目前最好的結果了,不過資料上應該會有重複的可能而且官網上還沒更新不知道是為啥,會不會也overfit了錯誤lable的樣本?
megaface上的結果:
總結
是個很好的工作,結果也不錯。用歸一化的特徵把cosine距離和center loss結合起來,除了只用中心點這個資訊不夠理想之外其他的都還好,應該跟triplet做些結合或者把中心點變成多個小的中心可能會更好,從資訊的層面上還是丟掉了類之間的輪廓資訊,也就是制衡量樣本到類中心的距離沒辦法很好的表示這個類的樣本空間分佈。