Estou muito atrasado para o jogo, mas queria postar para refletir alguns desenvolvimentos atuais em redes neurais convolucionais em relação a pular conexões .
Uma equipe de pesquisa da Microsoft venceu recentemente o concurso ImageNet 2015 e lançou um relatório técnico Deep Residual Learning for Image Recognition, descrevendo algumas de suas principais idéias.
Uma de suas principais contribuições é esse conceito de camadas residuais profundas . Essas camadas residuais profundas usam conexões de salto . Usando essas camadas residuais profundas, eles foram capazes de treinar uma rede de convecção de 152 camadas para o ImageNet 2015. Eles até treinaram uma rede de convenção de mais de 1000 camadas para o CIFAR-10.
O problema que os motivou é o seguinte:
Quando redes mais profundas são capazes de começar a convergir, um problema de degradação é exposto: com o aumento da profundidade da rede, a precisão fica saturada (o que pode ser surpreendente) e depois se degrada rapidamente. Inesperadamente, essa degradação não é causada por sobreajuste , e adicionar mais camadas a um modelo adequadamente profundo leva a um maior erro de treinamento ...
A idéia é que, se você pegar uma rede "rasa" e apenas empilhar mais camadas para criar uma rede mais profunda, o desempenho da rede mais profunda deve ser pelo menos tão bom quanto a rede rasa, pois a rede mais profunda pode aprender exatamente a profundidade rasa rede, configurando as novas camadas empilhadas para camadas de identidade (na realidade, sabemos que é provável que isso aconteça sem o uso de anteriores arquiteturais ou métodos de otimização atuais). Eles observaram que esse não era o caso e que o erro de treinamento às vezes piorava quando empilhavam mais camadas sobre um modelo mais raso.
Portanto, isso os motivou a usar conexões de salto e usar as chamadas camadas residuais profundas para permitir que sua rede aprendesse desvios da camada de identidade, daí o termo residual , residual aqui, referindo-se à diferença da identidade.
Eles implementam pular conexões da seguinte maneira:
F( X ) : = H ( x ) - xF( X ) + x = H ( x )F( X )H (x )
Dessa maneira, o uso de camadas residuais profundas por meio de conexões de salto permite que suas redes profundas aprendam camadas aproximadas de identidade, se é isso que é realmente ideal ou localmente ideal. De fato, eles afirmam que suas camadas residuais:
Mostramos por experimentos (Fig. 7) que as funções residuais aprendidas em geral têm pequenas respostas
Por que exatamente isso funciona, eles não têm uma resposta exata. É altamente improvável que as camadas de identidade sejam ótimas, mas eles acreditam que o uso dessas camadas residuais ajuda a pré-condicionar o problema e que é mais fácil aprender uma nova função, dada uma referência / linha de base de comparação com o mapeamento de identidade do que aprender uma "do zero" sem usar a linha de base da identidade. Quem sabe. Mas achei que seria uma boa resposta para sua pergunta.
A propósito, em retrospectiva: a resposta de sashkello é ainda melhor, não é?
Em teoria, as conexões de camada ignorada não devem melhorar o desempenho da rede. Porém, como as redes complexas são difíceis de treinar e fáceis de superajustar, pode ser muito útil adicioná-lo explicitamente como um termo de regressão linear, quando você souber que seus dados têm um forte componente linear. Isso indica o modelo na direção certa ... Além disso, isso é mais interpretável, pois apresenta seu modelo como perturbações lineares +, revelando um pouco de uma estrutura atrás da rede, que geralmente é vista apenas como uma caixa preta.
fonte
Minha caixa de ferramentas de rede neural antiga (hoje em dia, uso principalmente máquinas de kernel) usava a regularização L1 para remover pesos redundantes e unidades ocultas, além de ter conexões de camada de salto. Isso tem a vantagem de que, se o problema for essencialmente linear, as unidades ocultas tenderão a ser removidas e você ficará com um modelo linear, o que indica claramente que o problema é linear.
Como sugere sashkello (+1), os MLPs são aproximadores universais; portanto, as conexões de camada de salto não melhoram os resultados no limite de dados infinitos e em um número infinito de unidades ocultas (mas quando é que chegamos a esse limite?). A vantagem real é que facilita a estimativa de bons valores para os pesos se a arquitetura da rede corresponder bem ao problema, e você poderá usar uma rede menor e obter melhor desempenho de generalização.
No entanto, como na maioria das perguntas sobre redes neurais, geralmente a única maneira de descobrir se será útil ou prejudicial para um determinado conjunto de dados é experimentá-lo e vê-lo (usando um procedimento confiável de avaliação de desempenho).
fonte
Baseado no bispo 5.1. Funções de rede feed-forward: Uma maneira de generalizar a arquitetura de rede é incluir conexões de camada de salto, cada uma delas associada a um parâmetro adaptativo correspondente. Por exemplo, em uma rede de duas camadas (duas camadas ocultas), elas iriam diretamente das entradas às saídas. Em princípio, uma rede com unidades ocultas sigmoidais sempre pode imitar conexões de camada de salto (para valores de entrada limitados) usando um peso de primeira camada suficientemente pequeno que, em sua faixa de operação, a unidade oculta seja efetivamente linear e, em seguida, compensando com um grande valor do peso da unidade oculta para a saída.
Na prática, no entanto, pode ser vantajoso incluir conexões de camada de salto explicitamente.
fonte