Redes Neurais Siamesas
Matheus Gutoski
Introdução - Redes Neurais Siamesas
●
Alguns problemas requerem uma abordagem diferente da classificação
comum (CNN);
○
Problemas com muitas classes e poucos exemplos por classe
○
Necessidade constante de incluir ou remover classes do modelo
Exemplos
●
Problema clássico:
○ 10 classes
○ Milhares de exemplos por classe
●
Como resolver?
○ Rede Neural Convolucional com ativação Softmax
Exemplos
●
Reidentificação de pessoas:
○ Comum em sistemas de segurança e controle de acesso ○ Muitas classes (centenas / milhares / milhões)
○ Pouquíssimos exemplos por classe
■ geralmente na casa das poucas dezenas ○ Necessidade de inclusão ou exclusão de classes
■ Adicionar um novo ou remover um antigo funcionário
●
Como resolver?
Porque as CNNs falham neste tipo de problema
●
Necessidade de muitos dados por classe;
●
Alto custo computacional para modificar o modelo:
○ Adicionar uma nova classe implica em retreinar o modelo
Uma solução
Redes Neurais Siamesas
●
São modelos contendo duas ou mais sub redes que compartilham seus
pesos
●
Cada sub rede recebe uma entrada diferente, e o modelo “aprende” uma
função para medir a similaridade entre as entradas
Redes Neurais Siamesas
●
Por que aprender uma medida de similaridade?
○ O modelo leva à representações robustas onde a distância entre os pontos (por ex. distância Euclidiana) corresponde a um grau de similaridade semântico
○ Uma vez que o modelo é treinado, as features geradas por ele podem ser usadas para dados ou até classes até então desconhecidas
Redes Neurais Siamesas
●
No geral, redes siamesas não são usadas como classificadores
○ São usadas como um meio para gerar features robustas em um espaço de similaridade semântica
●
Após a aquisição das features, classificadores clássicos são utilizados
○ SVM
○ KNN (One Shot Learning)
○ MLP
Redes Neurais Siamesas
●
Sumário:
○ Treinamento ○ Contrastive Loss ○ Triplet Loss ○ Seleção de pares ○ One Shot Learning ○ ExemploRedes Neurais Siamesas - Treinamento
●
Dado um par de entradas, encontrar uma
função de distância
que produza:
○
Um valor pequeno, caso as entradas sejam da mesma classe○
Um valor grande, caso as entradas pertençam a classes diferentesContrastive Loss Function
●
Definição de alguns termos:
●
Em que:
○ é um par de entradas
○ é uma função parametrizada que produz um mapeamento (neste caso a rede neural)
●
Portanto, corresponde à distância euclidiana entre os vetores de
saída das duas redes
Contrastive Loss Function
●
A função de loss final é definida como:
●
Em que:
○ Y é o label associado ao par de entradas
■ Se as entradas forem similares (mesma classe), Y = 0. Caso contrário, Y = 1 ○ m é um parâmetro que define a margem (distância mínima)
Contrastive Loss Function
●
Quando Y = 0 (mesma classe)
Este termo desaparece da eq. O loss diminui à medida
em que a distância entre as saídas diminui
Contrastive Loss Function
●
Quando Y = 1 (classes diferentes)
●
O loss se torna 0 caso a distância seja maior que a margem definida
Este termo desaparece da eq. O loss diminui à medida em que a distância entre
Triplet Loss Function
●
A Triplet Loss Function é uma alternativa para Contrastive Loss
●
Em vez de duas entradas, três entradas são utilizadas
○ A: Anchor ○ P: Positive ○ N: Negative
●
O objetivo é minimizar a distância entre A e P, e maximizar a distância entre A
e N
Triplet Loss Function
●
A função tenta satisfazer a condição
●
Em que:
○ são as representações das entradas anchor, positive e negative ○ é a margem e é o conjunto de treinamento
Triplet Loss Function
●
A função final de loss é:
Distância entre anchor e positive Distância entre anchor e negative
margem: define uma margem mínima e previne soluções triviais
Seleção de pares / triplets
●
É uma das questões mais cruciais quando se treina este tipo de modelo
●
Usar todos os pares ou triplets possíveis pode gerar problemas:
○ O número de combinações pode ser muito grande, dependendo do tamanho do dataset ○ Muitos destes pares / triplets podem não contribuir para o treinamento, por naturalmente
Seleção de pares / triplets
●
Portanto, é necessário que estes dados sejam escolhidos de uma forma mais
inteligente
○ Formar pares / triplets difíceis
●
Como?
○ A cada N iterações, usando o estado atual da rede, para um dado anchor, encontrar os
Seleção de pares / triplets
●
Problemas:
○ Calcular as distâncias entre todos os pares é muito custoso computacionalmente
●
Sugestões:
○ Selecionar anchors aleatoriamente, de modo em que haja um balanceamento de classes em cada batch
○ Usar todos os positives disponíveis para cada anchor ○ Selecionar os negatives “difíceis”
○ Calcular distâncias entre anchors e negatives apenas dentro do batch
Schroff, F., Kalenichenko, D., & Philbin, J. (2015). Facenet: A unified embedding for face recognition and clustering. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 815-823).
Seleção de pares / triplets
●
Usar apenas os pares mais difíceis pode atrapalhar o treinamento, por causa de outliers ou dados de má qualidade● Uma estratégia de seleção semi-difíceis pode ser utilizada ○ Negativos semi-difíceis ficam mais “longe” dos
One Shot Learning
●
Uma vez treinada, a Rede Siamesa permite o One-Shot Learning
○ Aprendizado com apenas 1 exemplo da nova classe ○ Geralmente utiliza KNN com K = 1
●
O novo dado passa pela rede siamesa, que gera uma representação
●
Esta representação é incluída no modelo do KNN
One Shot Learning
●
Um novo dado pode ser
classificado medindo a distância de
seu vetor de característica para
vetores pré existentes
●
É possível definir um threshold de
distância para “rejeitar” um dado
Diferenças no mapeamento (MNIST)
Rede Neural comum (softmax) Rede Neural siamesa
● O formato esférico dos clusters gerados pela rede siamesa melhora a performance de modelos baseados em distância Euclidiana, como o KNN