Pergunta muito boa, pois ainda não existe uma resposta exata para essa pergunta. Este é um campo ativo de pesquisa.
Por fim, a arquitetura da sua rede está relacionada à dimensionalidade dos seus dados. Como as redes neurais são aproximadores universais, desde que sua rede seja grande o suficiente, ela poderá ajustar seus dados.
A única maneira de realmente saber qual arquitetura funciona melhor é tentar todas elas e escolher a melhor. Mas é claro que, com redes neurais, é bastante difícil, pois cada modelo leva algum tempo para ser treinado. O que algumas pessoas fazem é primeiro treinar um modelo "muito grande" de propósito e depois podá-lo removendo pesos que não contribuem muito para a rede.
E se minha rede for "muito grande"
Se sua rede for muito grande, ela poderá se super-ajustar ou se esforçar para convergir. Intuitivamente, o que acontece é que sua rede está tentando explicar seus dados de uma maneira mais complicada do que deveria. É como tentar responder a uma pergunta que poderia ser respondida com uma frase com um ensaio de 10 páginas. Pode ser difícil estruturar uma resposta tão longa e pode haver muitos fatos desnecessários. ( Consulte esta pergunta )
E se minha rede for "muito pequena"
Por outro lado, se sua rede for muito pequena, ela não será adequada para seus dados. Seria como responder com uma frase quando você deveria ter escrito um ensaio de 10 páginas. Tão boa quanto sua resposta, você estará perdendo alguns dos fatos relevantes.
Estimando o tamanho da rede
Se você conhece a dimensionalidade dos seus dados, pode saber se sua rede é grande o suficiente. Para estimar a dimensionalidade dos seus dados, você pode tentar calcular sua classificação. Essa é uma ideia central de como as pessoas estão tentando estimar o tamanho das redes.
No entanto, não é tão simples. De fato, se sua rede precisa ser de 64 dimensões, você cria uma única camada oculta de tamanho 64 ou duas camadas de tamanho 8? Aqui, vou lhe dar alguma intuição sobre o que aconteceria em ambos os casos.
Indo mais fundo
Ir fundo significa adicionar mais camadas ocultas. O que faz é permitir que a rede calcule recursos mais complexos. Em Redes Neurais Convolucionais, por exemplo, foi mostrado frequentemente que as primeiras camadas representam recursos de "baixo nível", como arestas, e as últimas camadas representam recursos de "alto nível", como faces, partes do corpo etc.
Normalmente, você precisa se aprofundar se seus dados estiverem muito desestruturados (como uma imagem) e precisar ser processado um pouco antes que informações úteis possam ser extraídas.
Indo mais longe
Ir mais fundo significa criar recursos mais complexos, e ir "mais amplo" significa simplesmente criar mais desses recursos. Pode ser que o seu problema possa ser explicado por recursos muito simples, mas é preciso que haja muitos deles. Geralmente, as camadas estão se tornando mais estreitas no final da rede pelo simples motivo de que recursos complexos carregam mais informações do que os simples e, portanto, você não precisa de tantas.
Resposta curta: está muito relacionado às dimensões dos seus dados e ao tipo de aplicativo.
A escolha do número certo de camadas só pode ser alcançada com a prática. Ainda não há uma resposta geral para essa pergunta . Ao escolher uma arquitetura de rede, você restringe seu espaço de possibilidades (espaço de hipóteses) a uma série específica de operações do tensor, mapeando os dados de entrada para os dados de saída. Em um DeepNN, cada camada pode acessar apenas as informações presentes na saída da camada anterior. Se uma camada soltar algumas informações relevantes para o problema em questão, essas informações nunca poderão ser recuperadas por camadas posteriores. Isso geralmente é chamado de " Gargalo de informações ".
O gargalo de informações é uma faca de dois gumes:
1) Se você usar um número pequeno de camadas / neurônios, o modelo aprenderá apenas algumas representações / características úteis dos seus dados e perderá algumas importantes, porque a capacidade das camadas intermediárias é muito limitada (menos adequada ).
2) Se você usar um grande número de camadas / neurônios, o modelo aprenderá muitas representações / características específicas dos dados de treinamento e não serão generalizadas para dados no mundo real e fora do seu conjunto de treinamento (ajuste excessivo) )
Links úteis para exemplos e mais informações:
[1] https: //livebook.manning.com#! / Book / deep-learning-with-python / chapter-3 / point-1130-232-232-0
[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/
fonte
Trabalhando com redes neurais desde dois anos atrás, esse é um problema que sempre tenho cada vez que não quero modelar um novo sistema. A melhor abordagem que encontrei é a seguinte:
A abordagem geral é tentar arquiteturas diferentes, comparar resultados e obter a melhor configuração. A experiência oferece mais intuição no primeiro palpite de arquitetura.
fonte
Além das respostas anteriores, existem abordagens em que a topologia da rede neural surge endogenamente, como parte do treinamento. O mais importante é que você tem a NEURO (Neuroevolução de Topologias Aumentadas), onde começa com uma rede básica sem camadas ocultas e, em seguida, usa um algoritmo genético para "complexificar" a estrutura da rede. O NEAT é implementado em muitas estruturas de ML. Aqui está um artigo bastante acessível sobre uma implementação para aprender Mario: CrAIg: Usando redes neurais para aprender Mario
fonte