• circle loss:统一softmax CrossEntropy loss 和 triplet loss / 2020


    intro

    刚看完《Circle Loss: A Unified Perspective of Pair Similarity Optimization》,随手写了一个overview。

    一句话总结这篇paper干了什么事情---- "an unified perspective of learning with class-level labels and learning with pairwise-level labels".

    如作者所陈述,这份研究主要有两个贡献:

    • 提供了一个统一的视角,通过数学分析统一了分类问题的损失函数和配对问题的损失函数。
    • 提出circle loss。

    过去,针对class-level label,默认用softmax-CrossEntropy计算损失;针对pairswise-level label,默认用triplet loss计算损失。
    现在,针对这两种情况,都可以用一种损失函数,即circle loss。实践表明,circle loss的效果比上面两者都秀。

    circle loss API

    变量说明

    输入:

      K个类内相似度, L个类间相似度
    

    输出:

      损失值
    

    超参数:

      scale factor: $gamma$ 建议值256
      relaxation factor: m 建议值0.25
    
    • within-class相似度:(s^{i}_{p})

    • between-class相似度:(s^{j}_{n})

    • 权重(alpha^{i}_{p}) = relu((m+1-s^{i}_{p}))

    • 权重(alpha^{j}_{n}) = relu((m+s^{j}_{n}))

    • (margin_{p}) = 1 - m

    • (margin_{n}) = m

    circle loss正向计算公式

    (L_{circle} = log[ 1 + sum_{i=1}^{K}exp(- gamma * alpha^{i}_{p} * (s^{i}_{p} - Delta_{p})) * sum_{j=1}^{L}exp(gamma * alpha^{j}_{n}) * (s^{j}_{n} - Delta_{n}) ])

    为何这样设计?

    we expect (s_{p}) → 1 and (s_{n}) → 0.

    circle loss对(s^{i}_{p})(s^{n}_{j})求导公式:

    (frac{partial L_{circle}}{partial s^{i}_{p}}) = Z * (frac{exp(gamma * ((s^{i}_{p})^{2}-(m)^{2}))}{sum_{k=1}^{K}exp(gamma * ((s^{k}_{p})^{2}-(m)^{2}))}) * (gamma * (s_{p}^{i}+m))

    (frac{partial L_{circle}}{partial s^{j}_{n}}) = Z * (frac{exp(gamma * ((s^{j}_{n}-1)^{2}-(m)^{2}))}{sum_{l=1}^{L}exp(gamma * ((s^{l}_{n}-1)^{2}-(m)^{2}))}) * (gamma * (s_{p}^{j}-1-m))

    (s^{i}_{p})(s^{j}_{n})计算方法

    class labeled

    计算过程以单样本为单位

    (w_{i}) 最后一层权重矩阵的第i个向量。
    x 最后一层的输入。

    类内相似度:
    (sim_{p}) = cosine_similarity(x, (w_{y}))
    (sim_{n}) = cosine_similarity(x, (w_{i}))

    如果是n分类问题,那我们总共有n-1个(sim_{n}),1个(sim_{p})

    pair-wise labeled

    计算过程以batch为单位
    输入:
    x 目标特征向量
    y 与x同类别的特征向量 / 与x不同类别的特征向量

    输出:
    x的类内相似度,类外相似度

    相似度有两种计算方法:

    • dot_similarity 即 sim(x,y) = (x * y)

    • cosine_similarity 即 sim(x,y) = (frac{x*y}{|x|*|y|})

  • 相关阅读:
    微信小程序HTTPS
    微信商城-1简介
    va_list
    Event log c++ sample.
    EVENT LOGGING
    Analyze Program Runtime Stack
    unknow table alarmtemp error when drop database (mysql)
    This application has request the Runtime to terminate it in an unusual way.
    How to check if Visual Studio 2005 SP1 is installed
    SetUnhandledExceptionFilter
  • 原文地址:https://www.cnblogs.com/dynmi/p/14032144.html
Copyright © 2020-2023  润新知