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 é?