Resposta curta:
A rigor, "Deep" e "Spiking" se referem a dois aspectos diferentes de uma rede neural: "Spiking" refere-se à ativação de neurônios individuais, enquanto "Deep" se refere à arquitetura geral da rede. Assim, em princípio, não há nada contraditório sobre uma rede neural profunda e espinhosa (de fato, o cérebro é sem dúvida um sistema desse tipo).
No entanto, na prática, as abordagens atuais para DL e SNN não funcionam bem juntas. Especificamente, o Deep Learning, conforme praticado atualmente, normalmente depende de uma função de ativação diferenciável e, portanto, não lida bem com trens discretos.
Detalhes adicionais:
Neurônios reais se comunicam através de discretos picos de tensão. Ao construir hardware, o spiking tem algumas vantagens no consumo de energia e você pode rotear spikes como pacotes de dados (Address Event Representation ou AER) para emular a conectividade encontrada no cérebro. No entanto, cravar é um processo barulhento; Geralmente, um único pico não significa muito, por isso é comum em software abstrair os detalhes de pico e modelar uma única taxa de pico escalar. Isso simplifica muitas coisas, especialmente se seu objetivo é aprendizado de máquina e não modelagem biológica.
A idéia principal do Deep Learning é ter várias camadas de neurônios, com cada camada aprendendo recursos cada vez mais complexos com base na camada anterior. Por exemplo, em um cenário de visão, o nível mais baixo aprende padrões simples como linhas e arestas, a próxima camada pode aprender composições de linhas e arestas (cantos e curvas), a próxima camada pode aprender formas simples e assim por diante na hierarquia . Os níveis superiores aprendem categorias complexas (pessoas, gatos, carros) ou até instâncias específicas (seu chefe, seu gato, o batmóvel). Uma vantagem disso é que os recursos de nível mais baixo são genéricos o suficiente para serem aplicados a muitas situações, enquanto os níveis superiores podem ser muito específicos.
A maneira canônica de treinar redes de spikes é alguma forma de plasticidade dependente de tempo de pico (STDP) , que reforça localmente as conexões com base em atividades correlatas. A maneira canônica de treinar uma rede neural profunda é uma forma de propagação posterior de gradiente descendente , que ajusta todos os pesos com base no comportamento global da rede. A descida do gradiente tem problemas com funções de ativação não diferenciáveis (como picos estocásticos discretos).
Se você não se importa com o aprendizado, deve ser mais fácil combinar as abordagens. Presumivelmente, é possível pegar uma rede profunda pré-treinada e implementar apenas a parte de feed-forward (sem aprendizado adicional) como uma rede neural em expansão (talvez para colocá-la em um chip). O chip resultante não aprenderia com os novos dados, mas deveria implementar qualquer função que a rede original tivesse sido treinada para executar.