A compreensão do Ranking de Perda, Contrastiva Perda, a Margem de Perda, Trio de Perda, Dobradiça e Perda de todos aqueles confuso nomes

Após o sucesso do meu post Compreensão Categórica Cross-Entropy Perda, Binário Cross-Entropy Perda, Softmax Perda de Logística, Perda, Perda Focal e todos aqueles confuso nomes, e depois de verificar que o Trio de Perda supera Cross-Entropy Perda em meu principal tema de pesquisa (Multi-Modal de Recuperação), eu decidi escrever um semelhante post explicando Ranking de Perdas de funções.

as perdas de classificação são usadas em diferentes áreas, tarefas e configurações de redes neurais (como redes siamesas ou redes Tripletas). É por isso que eles recebem nomes diferentes, como perda contrastiva, perda de margem, perda de dobradiça ou perda de trigêmeos.

funções de perda de classificação: aprendizado métrico

ao contrário de outras funções de perda, como perda de entropia cruzada ou perda média de erro quadrado, cujo objetivo é aprender a prever diretamente um rótulo, um valor ou um conjunto ou valores dados uma entrada, o objetivo de classificar as perdas é prever distâncias relativas entre as entradas. Esta tarefa, se muitas vezes chamado de aprendizagem métrica.

as funções de classificação de Perdas são muito flexíveis em termos de dados de treinamento: precisamos apenas de uma pontuação de similaridade entre os pontos de dados para usá-los. Essa pontuação pode ser binária (semelhante / diferente). Como exemplo, imagine um conjunto de dados de verificação de rosto, onde sabemos quais imagens de rosto pertencem à mesma pessoa (semelhante) e quais não (diferentes). Usando uma função de perda de classificação, podemos treinar uma CNN para inferir se duas imagens de rosto pertencem à mesma pessoa ou não.

para usar uma função de perda de classificação, primeiro extraímos recursos de dois (ou três) pontos de dados de entrada e obtemos uma representação incorporada para cada um deles. Em seguida, definimos uma função métrica para medir a semelhança entre essas representações, por exemplo distância euclidiana. Por fim, treinamos os extratores de recursos para produzir representações semelhantes para ambas as entradas, caso as entradas sejam semelhantes, ou representações distantes para as duas entradas, caso sejam diferentes.
nem nos importamos com os valores das representações, apenas com as distâncias entre elas. No entanto, essa metodologia de treinamento demonstrou produzir representações poderosas para diferentes tarefas.

classificação de Perdas formulação

nomes diferentes são usados para classificação de Perdas, mas sua formulação é simples e invariante na maioria dos casos. Distinguimos dois tipos de Perdas de classificação para duas configurações diferentes: quando usamos pares de pontos de dados de treinamento ou trigêmeos de pontos de dados de treinamento.
ambos comparam distâncias entre representações de amostras de dados de treinamento.

se você preferir o formato de vídeo, fiz um vídeo deste post. Também disponível em espanhol:

perda de classificação em pares

exemplo de uma configuração de perda de classificação em pares para treinar uma rede para verificação de rosto de imagem. Nesta configuração, os pesos dos CNNs são compartilhados. Chamamos-lhe redes siamesas. Mas uma perda de classificação em pares pode ser usada em outras configurações ou com outras redes.

Para positivos pares, a perda vai ser \(0\) somente quando o líquido produz representações para os dois elementos do par com nenhuma distância entre eles, e a perda (e, portanto, o líquido correspondente parâmetros de atualização) vai aumentar com a distância.

para pares negativos, a perda será \(0\) quando a distância entre as representações dos dois elementos do par for maior que a margem \(m\). Mas quando essa distância não for maior que \(m\), a perda será positiva e os parâmetros líquidos serão atualizados para produzir uma representação mais distante para esses dois elementos. O valor de perda será no máximo \(m\), quando a distância entre \(r_a\) e \(r_n\) for \(0\). A função da margem é que, quando as representações produzidas para um par negativo estão distantes o suficiente, nenhum esforço é desperdiçado em aumentar essa distância, então o treinamento adicional pode se concentrar em pares mais difíceis.

perda de classificação Triplet

exemplo de uma configuração de perda de classificação triplet para treinar uma rede para verificação de rosto de imagem. Nesta configuração, os pesos dos CNNs são compartilhados. Chamamos-lhe redes triplas.

Vamos analisar 3 situações de perda:

Fonte: https://omoindrot.github.io/triplet-loss. Representação de três “tipos de negativos” para uma âncora e um par positivo.

seleção de negativos

uma decisão importante de um treinamento com perda de classificação de trigêmeos é a seleção de negativos ou mineração de trigêmeos. A estratégia escolhida terá um alto impacto na eficiência do treinamento e no desempenho final. Uma apreciação óbvia é que o treinamento com trigêmeos fáceis deve ser evitado, uma vez que sua perda resultante será \(0\).

as primeiras estratégias usaram mineração de trigêmeos offline, o que significa que os trigêmeos são definidos no início do treinamento ou em cada época. Posteriormente, a mineração de trigêmeos on-line, o que significa que os trigêmeos são definidos para cada lote durante o treinamento, foi proposta e resultou em melhor eficiência e desempenho do treinamento.
a maneira ideal para a seleção de negativos é altamente dependente da tarefa. Mas não vou entrar neste post, já que seu objetivo é apenas analisar os diferentes nomes e abordagens para classificar as perdas. Consulte a postagem do blog de Oliver moindrot para uma análise mais profunda sobre mineração de trigêmeos.

a perda de trigêmeos no deep learning foi introduzida no Learning fine-grained Image Similarity with Deep Ranking and FaceNet: a unified Embedding for Face Recognition and Clustering.

este github contém algumas tramas interessantes de um modelo treinado em MNIST com perda de entropia cruzada, perda de classificação em pares e perda de classificação tripleto e Código Pytorch para esses treinamentos.

outros nomes usados para classificar perdas

as perdas de classificação são essencialmente as explicadas acima e são usadas em muitas aplicações diferentes com a mesma formulação ou variações menores. No entanto, nomes diferentes são usados para eles, o que pode ser confuso. Aqui eu explico por que esses nomes são usados.

  • perda de classificação: Esse nome vem do campo recuperação de informações, onde queremos treinar modelos para classificar itens em uma ordem específica.
  • perda de Margem: este nome vem do fato de que essas perdas usam uma margem para comparar amostras representações distâncias.
  • perda contrastiva: contrastiva refere-se ao fato de que essas perdas são calculadas contrastando duas ou mais representações de pontos de dados. Este nome é frequentemente usado para perda de classificação em pares, mas nunca vi usá-lo em uma configuração com trigêmeos.
  • perda de trigêmeos: frequentemente usada como nome de perda quando pares de treinamento de trigêmeos são empregados.
  • perda de dobradiça: também conhecido como objetivo de margem máxima. É usado para treinar SVMs para classificação. Tem uma formulação semelhante no sentido de que otimiza até uma margem. É por isso que esse nome às vezes é usado para classificar as perdas.

redes siamesas e tripletas

redes siamesas e tripletas são configurações de treinamento onde a perda de classificação em pares e a perda de classificação em trigêmeos são usadas. Mas essas perdas também podem ser usadas em outras configurações.
nessas configurações, as representações para as amostras de treinamento no par ou tripleto são calculadas com redes idênticas com pesos compartilhados (com a mesma CNN).

redes siamesas

são construídas por dois CNNs idênticos com pesos compartilhados (ambos os CNNs têm os mesmos pesos). Cada uma dessas redes processa uma imagem e produz uma representação. Essas representações são comparadas e uma distância entre elas é calculada. Em seguida, uma perda de classificação em pares é usada para treinar a rede, de modo que a distância entre as representações produzidas por imagens semelhantes é pequena e a distância entre as representações de imagens semelhantes é grande.

que, em um siamês configuração de rede representações para ambos os elementos do par são calculados pela mesma CNN, ser \(f(x)\) que a CNN, podemos escrever o Par de Classificação de Perda:

Trio de Redes

a ideia é semelhante A um siamês net, mas um trio net tem três ramos (três CNNs partilhada com pesos). O modelo é treinado dando simultaneamente uma imagem positiva e negativa à imagem âncora correspondente e usando uma perda de classificação tripleto. Isso permite que a rede aprenda melhor quais imagens são semelhantes e diferentes da imagem âncora.

no caso de redes tripletas, uma vez que o mesmo CNN \(f(x)\) é usado para calcular as representações para os três elementos tripletos, podemos escrever a perda de classificação tripleto como :

perda de classificação para recuperação multimodal

em minha pesquisa, tenho usado a perda de classificação Triplet para recuperação multimodal de imagens e texto. Os dados de treinamento consistem em um conjunto de dados de imagens com texto associado. O objetivo é aprender incorporações das imagens e das palavras no mesmo espaço para recuperação multimodal. Para fazer isso, primeiro aprendemos e congelamos palavras embeddings de apenas o texto, usando algoritmos como Word2Vec ou GloVe. Então, nosso objetivo é treinar uma CNN para incorporar as imagens nesse mesmo espaço: A ideia é aprender a incorporar uma imagem e sua legenda associada no mesmo ponto no espaço de incorporação multimodal.

a primeira abordagem para fazer isso foi treinar uma CNN para prever diretamente incorporações de texto de imagens usando uma perda de entropia cruzada. Os resultados foram bons, mas depois descobrimos que o uso de resultados de perda de classificação tripleto foi melhor.

a configuração é a seguinte: usamos embeddings de texto fixo (luva) e aprendemos apenas a representação da imagem (CNN). Portanto, a amostra âncora \(A\) é a imagem, a amostra positiva \(p\) é o texto associado a essa imagem e a amostra negativa \(n\) é o texto de outra imagem “negativa”. Para escolher o texto negativo, exploramos diferentes estratégias de mineração negativa on-line, usando as distâncias no espaço das luvas com a incorporação do texto positivo. A mineração de trigêmeos é particularmente sensata neste problema, uma vez que não existem classes estabelecidas. Dada a diversidade das imagens, temos muitos trigêmeos fáceis. Mas temos que ter cuidado com os negativos difíceis de mineração, já que o texto associado a outra imagem também pode ser válido para uma imagem âncora.

treinamento de perda de classificação Triplet de um pipeline de recuperação multimodal. As incorporações Da Luva de texto são fixas e treinamos a CNN para incorporar a imagem mais perto de seu texto positivo do que ao texto negativo.

usando essa configuração, calculamos alguns resultados quantitativos para comparar o treinamento de perda de classificação tripleto com o treinamento de perda de entropia cruzada. Não vou explicar os detalhes do experimento aqui, mas a configuração é a mesma usada em (paper, blogpost). Basicamente, fazemos algumas consultas textuais e avaliamos a imagem por desempenho de recuperação de texto ao aprender com dados de mídia Social de forma auto-supervisionada. Os resultados usando uma perda de classificação Triplet são significativamente melhores do que usar uma perda de entropia cruzada.

recuperação de Imagem por texto precisão média em InstaCities1M.

outra vantagem de usar uma perda de classificação tripleto em vez de uma perda de entropia cruzada ou perda de erro quadrado médio para prever incorporações de texto, é que podemos deixar de lado incorporações de texto pré-calculadas e fixas, que no caso de regressão usamos como verdade básica para modelos externos. Isso permite usar RNN, LSTM para processar o texto, que podemos treinar junto com a CNN, e que levam a melhores representações.

abordagens semelhantes são usadas para treinar sistemas de recuperação multimodais e sistemas de legenda em COCO, por exemplo aqui.

camadas de perda de classificação em estruturas de aprendizagem profunda

Caffe

  • camada de perda construtiva. Limitado ao cálculo de perda de classificação em pares. Pode ser usado, por exemplo, para treinar redes siamesas.

  • Pycaffe Triplet Classificação Camada De Perda. Por David Lu para treinar redes triplet.

PyTorch

  • CosineEmbeddingLoss. É uma perda de classificação em pares que usa a distância do cosseno como a métrica de distância. As entradas são as características dos elementos de par, o rótulo indicando se é um par positivo ou negativo e a margem.

  • MarginRankingLoss. Semelhante ao primeiro, mas usa distância euclidiana.

  • TripletMarginLoss. Uma perda de classificação tripleto usando distância euclidiana.

TensorFlow

  • contrastive_loss. Perda De Classificação Em Pares.

  • triplet_semihard_loss. Perda de trigêmeos com mineração negativa semi-dura.

Deixe uma resposta

O seu endereço de email não será publicado.