Triplet Loss 損失函式

SpikeKing發表於2018-04-23

Triplet Loss是深度學習中的一種損失函式,用於訓練差異性較小的樣本,如人臉等, Feed資料包括錨(Anchor)示例、正(Positive)示例、負(Negative)示例,通過優化錨示例與正示例的距離小於錨示例與負示例的距離,實現樣本的相似性計算。

Learning

資料集:MNIST

框架:DL-Project-Template

目標:通過Triplet Loss訓練模型,實現手寫影象的相似性計算。

工程:https://github.com/SpikeKing/triplet-loss-mnist


模型

Triplet Loss的核心是錨示例、正示例、負示例共享模型,通過模型,將錨示例與正示例聚類,遠離負示例。

Triplet Loss Model的結構如下:

Triplet Loss

  • 輸入:三個輸入,即錨示例、正示例、負示例,不同示例的結構相同;
  • 模型:一個共享模型,支援替換為任意網路結構;
  • 輸出:一個輸出,即三個模型輸出的拼接。

Shared Model選擇常用的卷積模型,輸出為全連線的128維資料:

Base Model

Triplet Loss損失函式的計算公式如下:

Formula


訓練

模型引數:

  • batch_size:32
  • epochs:2

超引數:

  • 邊界Margin的值設定為1

演算法收斂較好,Loss線性下降:

Loss

TF Graph:

Graph


驗證

演算法效率(TPS): 每秒48163次 (0.0207625 ms)

MNIST驗證集的效果:

[INFO] trainer - clz 0
[INFO] trainer - distance - min: -15.4567, max: 1.98611, avg: -6.50481
[INFO] acc: 0.996632996633

[INFO] trainer - clz 1
[INFO] trainer - distance - min: -13.09, max: 3.43779, avg: -6.66867
[INFO] acc: 0.99214365881

[INFO] trainer - clz 2
[INFO] trainer - distance - min: -14.2524, max: 2.49437, avg: -5.60508
[INFO] acc: 0.991021324355

[INFO] trainer - clz 3
[INFO] trainer - distance - min: -16.6555, max: 1.21776, avg: -6.32161
[INFO] acc: 0.995510662177

[INFO] trainer - clz 4
[INFO] trainer - distance - min: -14.193, max: 1.65427, avg: -5.90896
[INFO] acc: 0.991021324355

[INFO] trainer - clz 5
[INFO] trainer - distance - min: -14.1007, max: 2.01843, avg: -6.36086
[INFO] acc: 0.994388327722

[INFO] trainer - clz 6
[INFO] trainer - distance - min: -16.8953, max: 2.84421, avg: -8.43978
[INFO] acc: 0.995510662177

[INFO] trainer - clz 7
[INFO] trainer - distance - min: -16.6177, max: 3.49675, avg: -5.99822
[INFO] acc: 0.989898989899

[INFO] trainer - clz 8
[INFO] trainer - distance - min: -14.937, max: 3.38141, avg: -5.4424
[INFO] acc: 0.979797979798

[INFO] trainer - clz 9
[INFO] trainer - distance - min: -16.9519, max: 2.39112, avg: -5.93581
[INFO] acc: 0.985409652076
複製程式碼

測試的MNIST分佈:

Default

輸出的Triplet Loss MNIST分佈:

Triplet Loss

本例僅僅使用2個Epoch,也沒有特殊設定超參,實際效果仍有提升空間。


歡迎Follow我的GitHub:https://github.com/SpikeKing

By C. L. Wang @ 美圖雲事業部

That's all! Enjoy it!

相關文章