Eu sempre ouvi pessoas dizendo que por que as redes neurais convolucionais ainda são pouco compreendidas. Sabe-se por que as redes neurais convolucionais sempre acabam aprendendo recursos cada vez mais sofisticados à medida que avançamos nas camadas? O que os levou a criar uma pilha de recursos e isso também se aplica a outros tipos de redes neurais profundas?
machine-learning
neural-network
deep-learning
convnet
cnn
Louve o Senhor
fonte
fonte
Respostas:
Na verdade, acho que a pergunta é um pouco ampla! De qualquer forma.
Noções básicas sobre redes de convolução
O que é aprendido nas
ConvNets
tentativas de minimizar a função de custo para categorizar as entradas corretamente nas tarefas de classificação. Todos os parâmetros alterados e filtros aprendidos são para atingir o objetivo mencionado.Recursos aprendidos em diferentes camadas
Eles tentam reduzir o custo aprendendo recursos de baixo nível, às vezes sem sentido, como linhas horizontais e verticais em suas primeiras camadas e, em seguida, empilhando-os para criar formas abstratas, que geralmente têm significado, nas últimas camadas. Para ilustrar esta fig. 1, que foi usado a partir daqui , pode ser considerado. A entrada é o barramento e o gird mostra as ativações após passar a entrada por diferentes filtros na primeira camada. Como pode ser visto, a moldura vermelha que é a ativação de um filtro, cujos parâmetros foram aprendidos, foi ativada para arestas relativamente horizontais. A moldura azul foi ativada para arestas relativamente verticais. É possível que
ConvNets
aprenda filtros desconhecidos que são úteis e nós, como, por exemplo, profissionais de visão computacional, não descobrimos que eles podem ser úteis. A melhor parte dessas redes é que elas tentam encontrar filtros apropriados por conta própria e não usam nossos filtros limitados descobertos. Eles aprendem filtros para reduzir a quantidade de função de custo. Como mencionado, esses filtros não são necessariamente conhecidos.Em camadas mais profundas, os recursos aprendidos nas camadas anteriores se reúnem e criam formas que geralmente têm significado. No presente trabalho foi discutido que essas camadas podem ter ativações que são significativos para nós ou os conceitos que têm significado para nós, como seres humanos, pode ser distribuído entre outras ativações. Na fig. 2 a moldura verde mostra as atividades de um filtro na quinta camada de um
ConvNet
. Esse filtro se preocupa com os rostos. Suponha que o vermelho se importe com o cabelo. Estes têm significado. Como pode ser visto, existem outras ativações que foram ativadas na posição de faces típicas na entrada, a moldura verde é uma delas; A moldura azul é outro exemplo disso. Por conseguinte, a abstração de formas pode ser aprendida por um filtro ou por vários filtros. Em outras palavras, cada conceito, como face e seus componentes, pode ser distribuído entre os filtros. Nos casos em que os conceitos são distribuídos entre diferentes camadas, se alguém olhar para cada uma delas, elas podem ser sofisticadas. As informações são distribuídas entre eles e para entender que as informações de todos esses filtros e ativações devem ser consideradas, embora possam parecer muito complicadas.CNNs
não devem ser consideradas caixas pretas. Zeiler et all em este papel incrível ter discutido o desenvolvimento de melhores modelos é reduzida a tentativa e erro , se você não tem a compreensão do que é feito dentro dessas redes. Este artigo tenta visualizar os mapas de recursos noConvNets
.Capacidade de lidar com diferentes transformações para generalizar
ConvNets
usepooling
camadas não apenas para reduzir o número de parâmetros, mas também para ser insensível à posição exata de cada recurso. Além disso, o uso deles permite que as camadas aprendam características diferentes, o que significa que as primeiras camadas aprendem características simples de baixo nível, como arestas ou arcos, e as camadas mais profundas aprendem características mais complicadas, como olhos ou sobrancelhas.Max Pooling
por exemplo, tenta investigar se um recurso especial existe ou não em uma região especial. A idéia depooling
camadas é muito útil, mas é capaz de lidar com a transição entre outras transformações. Embora os filtros em diferentes camadas tentem encontrar padrões diferentes, por exemplo, uma face girada é aprendida usando camadas diferentes das de uma face comum,CNNs
por lá próprio não tem nenhuma camada para lidar com outras transformações. Para ilustrar isso, suponha que você queira aprender faces simples sem nenhuma rotação com uma rede mínima. Nesse caso, seu modelo pode fazer isso perfeitamente. suponha que você seja solicitado a aprender todos os tipos de faces com rotação arbitrária de faces. Nesse caso, seu modelo precisa ser muito maior do que a rede aprendida anteriormente. A razão é que deve haver filtros para aprender essas rotações na entrada. Infelizmente, essas nem todas são transformações. Sua entrada também pode estar distorcida. Esses casos deixaram Max Jaderberg e todos irritados. Eles compuseram este artigo para lidar com esses problemas, a fim de acalmar nossa raiva como deles.Redes neurais convolucionais funcionam
Finalmente, depois de se referir a esses pontos, eles funcionam porque tentam encontrar padrões nos dados de entrada. Eles os empilham para criar conceitos abstratos pelas camadas de convolução. Eles tentam descobrir se os dados de entrada têm cada um desses conceitos ou não em camadas densas para descobrir a qual classe os dados de entrada pertencem.
Eu adiciono alguns links que são úteis:
ConvNets
fonte
ConvNets funcionam porque exploram a localidade do recurso. Eles fazem isso em diferentes granularidades, podendo, portanto, modelar recursos de nível hierárquico mais alto. Eles são invariantes à tradução graças às unidades de pool. Eles não são invariantes à rotação propriamente ditos , mas geralmente convergem para filtros que são versões rotacionadas dos mesmos filtros , portanto, suportam entradas rotadas.
Não conheço outra arquitetura neural que lucre com a localização de recursos no mesmo sentido que os ConvNets.
fonte
Nunca se deve esquecer os outros componentes em um ConvNet típico. Os filtros de convolução selecionam os recursos invariantes espaciais, como arestas e círculos. Esses recursos são quantificados em uma camada de pool que segue a camada C. Finalmente, eles são alimentados em (geralmente) várias camadas totalmente conectadas (fc). Deve-se dar crédito a essas camadas totalmente conectadas que nada mais são do que as encontradas em qualquer MLP comum.
fonte
As redes neurais convolucionais funcionam porque é uma boa extensão do algoritmo padrão de aprendizado profundo.
Dados recursos e dinheiro ilimitados, não há necessidade de convolucional porque o algoritmo padrão também funcionará. No entanto, convolutional é mais eficiente porque reduz o número de parâmetros . A redução é possível porque tira proveito da localidade do recurso, exatamente o que o @ncasas escreve.
fonte
Sabe-se por que as redes neurais convolucionais sempre acabam aprendendo recursos cada vez mais sofisticados à medida que avançamos nas camadas?
Isso é pura matemática. Uma rede neural, no final das contas, é uma grande função matemática. E quanto mais profunda a rede, maior a função que ela representa. E por maior, obviamente, quero dizer alta dimensão. Os recursos aprendidos são mais sofisticados porque são resultados de funções mais sofisticadas.
O que os levou a criar uma pilha de recursos
Curiosamente, as redes neurais convencionais foram inspiradas por nossa própria biologia, na verdade de gatos. Hubel e Wiesel realizaram experimentos no córtex visual de gatos e perceberam que a luz era percebida por pilhas de campos ópticos. Foi isso que inspirou a camada convolucional e uma arquitetura mais profunda.
fonte
Com base nas respostas ncasas e horaceT , as ConvNets são muito eficientes porque:
Se você quiser saber mais sobre os convnets e os diferentes blocos que os constroem, bem como as intuições subjacentes, aqui está um post que escrevi recentemente em meu blog pessoal, que detalha os detalhes.
fonte