Многозадачная классификация с функцией softmax - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь обучить нейронную сеть многозадачной классификации, используя softmax в качестве выходной функции.

Идея взята из статьи «За пределами обмана: глубокие нейронные сети превосходят установленные методы с использованием набора тестов биоактивности ChEMBL», где авторы описали MT-NN с 3 скрытыми слоями ([4000, 2000, 1000]) и ОДИН выходной слой с количеством узлов, равным количеству задач (т.е. 1227).Набор данных состоял из молекул, протестированных с различными белковыми мишенями, и метки «1» и «0» описывали их как активные / неактивные.Кроме того, одна молекула может быть классифицирована как активная в нескольких мишенях.

В работе авторы использовали пользовательскую функцию softmax на выходном слое, которая вместо получения вектора o вероятностей, которые составляют 1,дает НЕЗАВИСИМЫЕ вероятности для каждого узла / задачи.Это довольно странно для меня, так как я узнал, что сумма вероятностей функции softmax равна единице.

Вот код, который они использовали как реализованный в lassagna:

    def custom_softmax(x):
        num_groups = num_outputs # number of tasks
        probabilities = softmax(x[:, 0:2])
        for i in range(2, 2 * num_groups, 2):
            p_y_given_x = softmax(x[:, 2 * i:2 * i + 2])
            probabilities = T.concatenate([probabilities, p_y_given_x], axis=1)
        return probabilities

Поскольку они не ответили на мое письмо, я хотел бы спросить, может ли кто-нибудь объяснить мне, что делает этот пользовательский softmax,Я наивно полагал, что следует использовать сигмовидную функцию.Мне кажется, что каждый узел в выходном слое обрабатывается независимо.

Другое дело, как я могу реализовать это на Keras?Я протестировал вышеупомянутую функцию, и она работает, когда я передаю ей тензор, но обучение не удается из-за неправильной формы входов.Например, моя целевая переменная имеет форму (10000,154), но когда я подгоняю модель с размером партии 128, она поднимается и выдает ошибку, говоря, что она ожидала форму (128,78).

Оригинальная бумага: https://link.springer.com/article/10.1186/s13321-017-0232-0

...