O Deep Learning, agora um dos campos mais populares da Rede Neural Artificial, mostrou grande promessa em termos de precisão nos conjuntos de dados. Como ele se compara à Spiking Neural Network. Recentemente, a Qualcomm lança seu processador zeroth no SNN, então eu estava pensando se há alguma diferença se o aprendizado profundo for usado.
machine-learning
neural-networks
user3209559
fonte
fonte
Respostas:
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.
fonte
A maior aplicação de SNNs que conheço é a Spaun , cujas redes neurais foram construídas usando o Neural Engineering Framework e o simulador neural Nengo .
A distinção entre SNNs e Deep Learning, especialmente em Spaun, é uma área cinzenta. Spaun usa técnicas modificadas de Deep Learning em seu sistema de visão para reconhecimento de dígitos. Essencialmente, ele usa uma versão impressionante de uma Rede Neural Constitucional.
Mais recentemente, a mesma técnica de conversão de abordagens de Aprendizado Profundo para detectar neurônios para uso em hardware neuromórfico (como Spinnaker e Brainstorm para menor latência e maior eficiência de energia ) foi aplicada às Redes Neurais Convolucionais .
As diferenças vão muito mais além do que mencionei aqui (como SNNs podem aproximar sistemas dinâmicos e outras funções não lineares sem treinamento), mas, infelizmente, não há uma maneira fácil de resumi-las. Se você quiser obter mais detalhes, consulte "Como construir um cérebro", de Chris Eliasmith, para uma visão geral de como os SNNs estão sendo usados para criar Inteligência Artificial.
fonte