Redes de cápsula:
O que é Capsule Networks? É basicamente uma rede de um conjunto de camadas neurais aninhadas.
Eu recomendo que você consulte os blogs abaixo também:
Estou assumindo isso, vocês conhecem Redes Neurais Convolucionais (CNN). Aqui, farei uma pequena introdução sobre o mesmo, para que possa discutir as limitações das CNNs.
Você também pode consultar o vídeo abaixo sobre Rede Neural Convolucional.
Redes Neurais Convolucionais (CNN)
Redes Neurais Convolucionais, são basicamente pilhas de várias camadas de neurônios artificiais, que são usadas para visão computacional. Abaixo, mencionei essas camadas:
Camada convolucional: Quando usamos Redes Neurais Feedforward (Multi Layer Perceptron) para classificação de imagens, existem muitos desafios. O desafio mais frustrante é que, ele introduz uma série de parâmetros, considere o vídeo tutorial na CNN.
Para superar este desafio Camada de Convolução foi introduzido. presume-se que os pixels que estão espacialmente mais próximos irão “cooperar” na formação de um determinado recurso de interesse muito mais do que aqueles em cantos opostos da imagem. Além disso, se um determinado recurso (menor) for considerado de grande importância ao definir o rótulo de uma imagem, será igualmente importante se esse recurso for encontrado em qualquer lugar da imagem, independentemente da localização.
Camada ReLU: A função de transformação da Unidade Linear Retificada (ReLU) só ativa um nó se a entrada estiver acima de uma certa quantidade, enquanto a entrada está abaixo de zero, a saída é zero, mas quando a entrada sobe acima de um certo limite, ela tem uma relação linear com o variável dependente.
- Nesta camada, removemos todos os valores negativos das imagens filtradas e os substituímos por zeros
- Isso é feito para evitar que os valores totalizem zero
Camada de pooling: Isso é usado para realizar a redução da resolução, que consome pedaços pequenos e (geralmente) desconexos da imagem e os agrega em um único valor. Existem vários esquemas possíveis para a agregação - o mais popular é Max-Pooling , onde o valor máximo de pixel em cada pedaço é obtido. Isso torna a rede invariante a pequenas transformações, distorções e translações na imagem de entrada (uma pequena distorção na entrada não mudará a saída do Pooling - uma vez que tomamos o valor máximo / médio em uma vizinhança local).
Camada totalmente conectada: Esta camada irá computar a pontuação da turma, onde cada um dos números corresponde a uma pontuação da turma. Tal como acontece com as redes neurais comuns e como o nome indica, cada neurônio nesta camada será conectado a todos os neurônios no volume anterior. Em suma, realiza a classificação final.
Desta forma, ConvNets transformam a imagem original camada por camada dos valores de pixel originais para as pontuações finais da classe.
Esta foi uma introdução muito curta às Redes Neurais Convolucionais. Ainda assim, recomendo que você dê uma olhada no vídeo da CNN que incluí neste post.
Neste blog da Capsule Networks, discutirei agora algumas limitações das redes neurais convolucionais
Limitações das redes neurais convolucionais:
Bem, deixe-me explicar isso com uma analogia.
Suponha que haja um humano cujos olhos podem detectar as características de várias imagens. Vamos considerar o rosto de um humano como exemplo. Então, esse infeliz pode identificar várias características como olhos, nariz, etc., mas não consegue identificar as relações espaciais entre as características (perspectiva, tamanho, orientação). Por exemplo, a imagem a seguir pode enganar aquele cara ao classificá-la como um bom esboço de um rosto humano.
Este é o problema das Redes Neurais Convolucionais também. A CNN é boa em detectar recursos, mas ativará erroneamente o neurônio para detecção de rosto. Isso ocorre porque é menos eficaz na exploração das relações espaciais entre recursos.
como converter uma string binária em decimal em java
Um modelo simples da CNN pode extrair os recursos para nariz, olhos e boca corretamente, mas ativará erroneamente o neurônio para a detecção de rosto. Sem perceber a incompatibilidade na orientação espacial e no tamanho, a ativação da detecção de rosto será muito alta.
Bem, essa limitação é por causa da camada Max Pooling.
O pool máximo em uma CNN lida com a variação translacional. Mesmo um recurso é ligeiramente movido, se ainda estiver dentro da janela de pool, ainda pode ser detectado. No entanto, essa abordagem mantém apenas o recurso máximo (o mais dominante) e joga fora os outros.
Portanto, a foto do rosto mostrada acima será classificada como um rosto normal. A camada de pooling também adiciona esse tipo de invariância.
Essa nunca foi a intenção da camada de pool. O que o pooling deveria fazer é introduzir invariâncias posicionais, orientacionais e proporcionais.
Na realidade, essa camada de agrupamento adiciona todos os tipos de invariância posicional. Como você pode ver no diagrama acima, isso leva ao dilema de detectar o rosto corretamente.
Vamos ver qual é a solução proposta por Geoffrey Hinton .
Como resolver este problema?
Agora, imaginamos que cada neurônio contém a probabilidade, bem como as propriedades dos recursos. Por exemplo, ele produz um vetor contendo [probabilidade, orientação, tamanho]. Com essa informação espacial, podemos detectar a inconsistência na orientação e tamanho entre as características do nariz, olhos e orelha e, portanto, produzir uma ativação muito menor para a detecção de rosto.
No jornal divulgado por Geoffrey Hinton , esses tipos de neurônios são chamados de cápsulas. Essas cápsulas geram um vetor em vez de um único valor do scaler.
Deixe-me colocar algumas luzes sobre o que são Redes Capsule.
O que são redes Capsule?
A cápsula é basicamente um conjunto de camadas neurais aninhadas. O estado dos neurônios dentro de uma cápsula captura as várias propriedades como - pose (posição, tamanho, orientação), deformação, velocidade, textura etc, de uma entidade dentro de uma imagem.
Em vez de capturar um recurso com uma variante específica, uma cápsula é treinada para capturar a probabilidade de um recurso e sua variante. Portanto, o objetivo da cápsula não é apenas detectar um recurso, mas também treinar o modelo para aprender a variante.
De forma que a mesma cápsula possa detectar a mesma classe de objeto com diferentes orientações (por exemplo, girar no sentido horário):
Podemos dizer que funciona na equivariância e não na invariância.
Invariância: é a detecção de recursos independentemente das variantes. Por exemplo, um neurônio de detecção de nariz detecta um nariz independentemente da orientação.
Equivariância: é a detecção de objetos que podem se transformar entre si (por exemplo, detectar faces com orientações diferentes). Intuitivamente, a rede da cápsula detecta que a face é girada 31 ° para a direita (equivariância) em vez de perceber que a face corresponde a uma variante que é girada 31 °. Forçando o modelo a aprender a variante de recurso em uma cápsula, podemos extrapolar as variantes possíveis de maneira mais eficaz com menos dados de treinamento. Além disso, podemos rejeitar adversários de forma mais eficaz.
Uma cápsula produz um vetor para representar a existência da entidade. A orientação do vetor representa as propriedades da entidade.
O vetor é enviado a todos os pais possíveis na rede neural. Para cada pai possível, uma cápsula pode encontrar um vetor de previsão. O vetor de previsão é calculado com base na multiplicação de seu próprio peso e uma matriz de peso. O pai que tiver o maior produto de vetor de previsão escalar aumenta a ligação da cápsula. O restante dos pais diminui seu vínculo. Isso é chamado de Encaminhamento por acordo .
Esta é definitivamente uma abordagem melhor do que o pooling máximo, em que o roteamento é baseado no recurso mais forte detectado na camada inferior.
Depois disso, há uma função de esmagamento que é adicionada. Isso é feito para introduzir a não linearidade. Esta função de esmagamento é aplicada à saída do vetor de cada cápsula.
Deixe-me dizer como funcionam as redes Capsule.
Como funcionam as redes Capsule?
Vamos dar um passo para trás. Em uma rede totalmente conectada, a saída de cada neurônio é a soma ponderada das entradas.
Agora, vamos ver o que acontece na Capsule Networks.
Rede Neural de Cápsula:
Vamos considerar uma rede neural de cápsula em que vocêEu'É o vetor de atividade para a cápsula'Eu'na camada abaixo.
Etapa - 1: Aplicar uma matriz de transformaçãoDENTROeu jpara a saída da cápsula uEu da camada anterior. Por exemplo, com uma matriz m × k, transformamos um k-DvocêEu para um m-Du ^j | eu. ((m × k) × (k × 1) = m × 1).
É a previsão ( voto ) da cápsula 'i' na saída da cápsula 'j' acima. ‘Vj'É o vetor de atividade para a cápsula'j ’na camada acima
Etapa - 2: calcular uma soma ponderadajcom pesosceu j.ceu jsão os coeficientes de acoplamento. A soma desses coeficientes é igual a um. É o parâmetro real que funciona na relação de grupo de cápsulas que falamos anteriormente.
Passo - 3: Em Redes Neurais Convolucionais usamos a função ReLU. Aqui, aplicaremos uma função de esmagamento para dimensionar o vetor entre 0 e comprimento unitário. Ele reduz vetores pequenos para zero e vetores longos para vetores unitários. Portanto, a probabilidade de cada cápsula é limitada entre zero e um.
É a previsão ( voto ) da cápsula 'i' na saída da cápsula 'j' acima. Se o vetor de atividade tiver semelhança próxima com o vetor de previsão, concluímos que a cápsula 'Eu'está altamente relacionado com a cápsula 'j ’. (Por exemplo, a cápsula nasal é altamente relacionada à cápsula facial.) Tal similaridade é medida usando o produto escalar do vetor de predição e atividade. Portanto, a similaridade leva em consideração tanto a probabilidade quanto as propriedades do recurso. (em vez de apenas probabilidade nos neurônios).
Etapa - 4: Calcule a pontuação de relevância ‘beu j‘. Será o produto escalar do vetor de atividade e do vetor de previsão. Os coeficientes de acoplamentocEujé calculado como o softmax debEuj:
O coeficiente de acoplamento ceu jé calculado como o softmax de beu j.
Este Beu jé atualizado iterativamente em várias iterações.
Isso é chamado de Encaminhamento por acordo .
O diagrama abaixo é um exemplo:
Depois deste blog na Capsule Networks, estarei criando um blog sobre a implementação da Capsule Neural Network usando TensorFlow.
Espero que você tenha gostado de ler este blog sobre redes cápsula, dê uma olhada no pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka Deep Learning with TensorFlow Certification Training ajuda os alunos a se tornarem especialistas em treinamento e otimização de redes neurais básicas e convolucionais usando projetos e atribuições em tempo real, juntamente com conceitos como função SoftMax, Redes Neurais de Codificador Automático, Máquina Boltzmann Restrita (RBM).
Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.