L1Hinge

Описание

Функция потерь Pairwise Ranking Loss, применяющаяся в задачах, где требуется найти оптимальное разделение признаков в пространстве (например, в задачах идентификации по лицу или голосу).

Формула функции ошибки:

S = \begin{cases} ||x1 - x2||, & \quad \text{если } y == 1\\ max(0, 1 - ||x1 - x2||), & \quad \text{если } y == -1 \end{cases}

где

x1, x2 - вектора признаков, которые сравниваются между собой через L1-метрику;
y - лейбл из набора {-1, 1} для текущей пары векторов, отражающий, принадлежат ли вектора из пары к одному классу или нет.

Инициализация

def __init__(self):

Параметры

-

Пояснения

-

Примеры


Необходимые импорты:

import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Cost import L1Hinge

Info

gpuarray необходим для правильного размещения тензора на GPU.

Синтетические тензоры признаков:

x1 = gpuarray.to_gpu(np.random.randn(10, 5).astype(np.float32))
x2 = gpuarray.to_gpu(np.random.randn(10, 5).astype(np.float32))

Important

Не забывайте, что первым измерением тензоров является размер батча.

Important

Для L1Hinge-loss размерности сравниваемых тензоров признаков должны быть одинаковы.

Синтетический вектор соответствия тензоров признаков:

labels = gpuarray.to_gpu(np.random.randint(low=0, high=2, size=(10, )).astype(np.int32))
где 0 - вектора признаков принадлежат разным классам, 1 - вектора признаков принадлежат одному классу.

Инициализация функции ошибки:

l1Hinge = L1Hinge()

Расчёт ошибки и градиента на батче:

error, (g1, g2) = l1Hinge([x1, x2], labels)