Многозадачное обучение с дополнением данных - PullRequest
0 голосов
/ 24 апреля 2020

Мне интересно, как обучить нейронную модель, когда у меня есть две отдельные задачи с неравным количеством данных для каждой задачи. Например, рассмотрим приведенный ниже случай:

Задача 1. Проблема классификации в одном наборе данных, в котором есть записи с двумя метками (0, 1). Количество обучающих экземпляров: 20 000

Задание 2. Проблема классификации в одном наборе данных, в котором есть записи с тремя метками (0, 1, 2). Количество обучающих экземпляров: 1,6M

Я пытаюсь разработать сеть, в которой совместно используемая сеть сначала пытается кодировать каждый экземпляр (каждой задачи), а затем проецировать закодированные экземпляры через 2 выходных слоя для решение каждой задачи в отдельности. В частности, общая сеть - это кодировщик BERT (который мне не нужно тренировать). Поэтому все, что мне нужно сделать, - это подготовить два выходных (линейных) слоя для каждой задачи и оптимизировать их с помощью функции потери нескольких задач. Но мне трудно понять, как это сделать, если для каждой задачи существует неодинаковое количество экземпляров. Есть мысли по этому поводу?

1 Ответ

0 голосов
/ 25 апреля 2020

Это можно сделать с помощью функции потерь, которая игнорирует потери, когда метка одного вида недоступна для экземпляра.

loss = i1 * loss1(pred1, label1) + i2 * loss2(pred2, label2)

Где loss1 и loss2 могут быть кросс-энтропийными потерями для прогнозирования задачи 1 и 2 соответственно. i1 и i2 являются переменными индикатора, которые равны 1, если метка для этой задачи доступна, и 0 в противном случае. Вам также может понадобиться добавить другой вес к потерям для лучшего результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...