Могу ли я построить cnn одного класса в keras?

Могу ли я создать cnn в keras только с одним классом (class - 0), чтобы он мог предсказать, принадлежит ли данная дата этому классу? заранее спасибо

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


person zahra    schedule 05.04.2020    source источник
comment
Я думаю, у него должно быть два класса (класс-0 и класс-1). Предположим, вы обучаете модель с одним классом, а затем предоставили данные, которые не принадлежат классу-0, тогда модель должна предсказать, что она не принадлежит классу-0, верно? Так что я думаю, что здесь должно быть два класса. Пожалуйста, дайте мне знать, какой у вас вариант использования. Спасибо!   -  person Vishnuvardhan Janapati    schedule 06.04.2020
comment
Если вам нужна двухклассовая модель (двоичная классификация), проверьте ее здесь   -  person Vishnuvardhan Janapati    schedule 06.04.2020


Ответы (1)


Я считаю, что вы описываете модель обнаружения аномалий. Для этой цели существуют другие модели машинного обучения, такие как машина векторов поддержки одного класса (https://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html) и изоляционный лес (https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html). Можно реализовать нейронную сеть, но вам понадобится настраиваемая функция потерь - например, двоичная кросс-энтропия не имеет смысла для этого приложения. Один из примеров такой функции потерь описан здесь: https://arxiv.org/pdf/1802.06360.pdf, который основан на одноклассной SVM.

У меня есть реализация полностью подключенной сети одного класса здесь, в Керасе: https://github.com/danielenricocahall/One-Class-NeuralNetwork, который использует функцию потерь, основанную на той, что описана в этой статье, если это помогает.

Удачи!

person danielcahall    schedule 05.04.2020