Toda arquitetura de autoencoder que eu vi tem uma arquitetura semelhante, principalmente porque o decodificador é exatamente o inverso do codificador. Se o objetivo do autoencodificador é o aprendizado de recursos de baixa dimensão, por que o decodificador não é simples? Um exemplo seria uma transformação linear onde é uma observação pela matriz de recursos (ou seja, o gargalo) e é uma matriz de pesos aprendida que mapeia para o tamanho do recurso de entrada original. No caso de um autoencoder profundo com várias camadas ocultas, o decodificador no exemplo acima teria baixa capacidade em comparação com o codificador.
Minha intuição é a seguinte:
Se o decodificador for simples, o autoencoder será forçado a aprender recursos de maior qualidade no gargalo para compensar. Por outro lado, se o decodificador tiver alta capacidade de representação, ele pode mapear um gargalo pouco aprendido para as reconstruções de saída de forma eficaz. O erro de reconstrução pode ser menor nesse caso, mas isso não significa necessariamente que os recursos aprendidos sejam realmente melhores.
Em meu próprio aplicativo (aprendizado de recursos em gráficos), descobri que um decodificador simples resulta em recursos aprendidos melhor do que um decodificador que apenas espelha o codificador. No presente estudo, os autores conceber um autoencoder gráfico com um descodificador muito simples como , onde é a matriz gráfico adjacência reconstruído, é a matriz e característica aprendido é alguma transformação não linear como uma ReLU.
Estou procurando uma resposta para essa pergunta há algum tempo, mas não encontrei explicações ou resultados teóricos sobre por que um decodificador de capacidade mais alta é preferível a um decodificador de baixa capacidade (ou vice-versa). ) Se alguém puder me dar uma explicação ou me indicar a direção certa, ficaria grato.
fonte