Hinge

Описание

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

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

L = max(0, 1 - t \cdot y)

где

y - "сырое" предсказание классификатора;
t - лейбл из набора {-1, 1} для текущего объекта .

Important

Реальные лейблы объектов должны быть именно разнознаковыми для корректной работы функции ошибки.

Note

Возможно вычисление ошибки для нескольких классов, к которым может принадлежать объект. См. Пример

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

def __init__(self):

Параметры

-

Пояснения

-

Примеры


Бинарная классификация


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

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

Info

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

Синтетические целевой и предсказательный тензоры:

scores = gpuarray.to_gpu(np.random.randn(10, 1).astype(np.float32))
labels = gpuarray.to_gpu((np.random.randint(low=0, high=2, size=(10, 1)) * 2 - 1).astype(np.int32))

Important

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

Important

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

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

hinge = Hinge()

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

error, grad = hinge(scores, labels)


Мультиклассовая классификация бинарными флагами


Всё то же самое, что и для предыдущего примера, кроме тензоров scores и labels. Допустим, требуется определить наличие или отсутствие четырёх атрибутов у объекта. В таком случае вышеупомянутые тензора будут задаваться следующим способом:

scores = gpuarray.to_gpu(np.random.randn(10, 4).astype(np.float32))
labels = gpuarray.to_gpu((np.random.randint(low=0, high=2, size=(10, 4)) * 2 - 1).astype(np.int32))