Heteroscedasti c мультиклассовая классификация с помощью GPflow? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь выполнить мультиклассовую классификацию с набором обучающих данных, который имеет неопределенность членства в классе для каждого класса для каждой точки. Я хотел бы распространить эти неопределенности через GP C аналогично тому, что можно сделать с Heteroscedasti c Regression.

Я считаю, что это потребует некоторой модификации встроенного GPflow Классы. Я использую модуль gpflow.likelihoods.multiclass, который (косвенно) содержит класс gpflow.likelihoods.RobustMax. В RobustMax есть несколько строк:

class RobustMax(Module):

    def __init__(self, num_classes, epsilon=1e-3, **kwargs):
        """
        `epsilon` represents the fraction of 'errors' in the labels of the
        dataset. This may be a hard parameter to optimize, so by default
        it is set un-trainable, at a small value.
        """
        super().__init__(**kwargs)
        transform = tfp.bijectors.Sigmoid()
        prior = tfp.distributions.Beta(to_default_float(0.2), to_default_float(5.0))
        self.epsilon = Parameter(epsilon, transform=transform, prior=prior, trainable=False)
        self.num_classes = num_classes
        self._squash = 1e-6


    def __call__(self, F):
        i = tf.argmax(F, 1)
        return tf.one_hot(
            i, self.num_classes, tf.squeeze(1.0 - self.epsilon), tf.squeeze(self.eps_k1)
        )

    @property
    def eps_k1(self):
        return self.epsilon / (self.num_classes - 1.0)

Как лучше всего адаптировать определение epsilon и eps_k1, чтобы учесть разные значения для каждого класса для каждой точки данных?

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