Предсказания автоэнкодера для чрезвычайно простой задачи не имеют интуитивного смысла - PullRequest
0 голосов
/ 22 октября 2019

Я тренирую простой автоэнкодер в Керасе. Вход имеет длину два, где каждый элемент может быть 0 или 1. Это дает четыре различных варианта ввода: [0, 0], [0, 1], [1, 0], [1, 1]. Поскольку шум отсутствует, входными данными могут быть только эти четыре параметра.

В действительности не имеет смысла использовать здесь автоматический кодировщик, но я пытаюсь создать базовое понимание и убедиться, что мой общий подход работает для простых проблем с известными результатами, прежде чем перейти к более сложным проблемам, которые включают добавление шума. и т. д.

Я понимаю, что это применимо к изображениям, поэтому может не переводиться напрямую, но я использовал этот урок в качестве отправной точки: https://blog.keras.io/building-autoencoders-in-keras.html. Вот структура, которую я использовал (я придумал это,не тонна интуиции, стоящая за этим выбором архитектуры, но она хотела быть простой и учитывать формат данных ввода / вывода).

input_dim = 2
encoded_dim = 4
input_ = Input(shape=(input_dim,))
encoded_ = Dense(input_dim, activation='relu')(input_)
decoded = Dense(input_dim, activation='relu')(encoded_) 
output = Dense(input_dim, activation='sigmoid')(decoded) # because output should be between 0 and 1
autoencoder = Model(input_, output)

autoencoder.compile(optimizer='adam',loss='binary_crossentropy') # because each output node in the autoencoder should be a 0 or 1 corresponding to reconstructed input
autoencoder.fit(inputs, inputs, batch_size = 8, epochs=12, validation_split = 0.20)

Однако я считаю, что потери чрезвычайно велики, и чтопрогнозируемый выход не соответствует вообще входным данным. Однако я нахожу это чрезвычайно удивительным, поскольку сама проблема чрезвычайно проста и не требует, чтобы NN решались эффективно, поскольку в данных нет шума / изменчивости. Фактически, установка большинства весов в 0 и от нескольких до 1 решает проблему. Есть ли у вас какие-либо мысли о том, почему NN может быть трудно решить эту проблему или почему мой конкретный подход / выбор архитектуры не сработает для этой проблемы? Буду признателен за любые отзывы / улучшения / предложения, чтобы помочь учиться. Спасибо!

...