Experimentos #74
Replies: 20 comments 25 replies
-
A diferença entre os experimentos preto e laranja foram
Os hparams de ambos experimentos (exceto por lr, que mudou)
|
Beta Was this translation helpful? Give feedback.
-
Em vermelho, um novo experimento com acumulação de gradientes. Tamanho efetivo do batch foi 50. Melhorias
|
Beta Was this translation helpful? Give feedback.
-
Tentei um experimento com classificação de família, apenas. Está abaixo em vermelho
Em roxo, o experimento anterior com acumulo de gradientes. Em verde, temos baseline++ (o (i) amarelo aqui). Tal esquema usa das features do backbone da AdaFace. Como podemos ver, a acurácia de classificação ( |
Beta Was this translation helpful? Give feedback.
-
Continuei com experimentos de classificação de família em um esquema de multi-task, e até tentei outras perdas, como ArcFace e AdaFace (essa talvez estivesse mal implementada). Ambas sem sucesso. Sinto que não vale a pena continuar essa investigação. Também tentei ajustes na lr via scheduler OneCycle, mas sem sucesso. Creio que ajustes na lr mudam apenas a demora em estabilizar o modelo. Também não continuarei esses experimentos. Vou dar continuidade às estratégias citadas aqui. |
Beta Was this translation helpful? Give feedback.
-
FaCoRNet + KinRaceO dataset KinRace tem apenas os 4 tipos principais: fd, fs, md, ms. Podemos ver que a acurácia e AUC é maior que os treinamentos no FIW tradicional, todavia isso é enviesado, dado as diferenças no conjunto de validação. Abaixo segue os resultados nos conjuntos de validação para seleção de limiar e de teste, ambos do FIW tradicional.
Comparando com o meu baseline da FaCoRNet, temos
Originally posted by @vitalwarley in #38 (comment) O único report dos autores do KFC no FIW é esse abaixo O treinamento que fiz não foi no esquema de multi-task para raça. Dessa forma, o comentário que fiz
Originally posted by @vitalwarley in #38 (comment) pode não ser a verdade, vide o experimento acima -- a maior quantidade de dados não tornou o modelo melhor no FIW. |
Beta Was this translation helpful? Give feedback.
-
KFC Full (multi-task + adversarial)Resultados com código original abaixo. Há diferenças nos resultados que indicam potenciais diferenças no meu código.
|
Beta Was this translation helpful? Give feedback.
-
FaCoRNet + KFCAttentionV2Sobre KFCAttention
research/ours/models/attention.py Lines 278 to 295 in 9f162c6 Denominei V2 porque modifiquei a implementação original. Isso é, para que fosse possível usar tal mecanismo na FaCoRNet, eu ajustei arbritariamente sua saída ao combinar f1 e f2 ( Aproveitei para registrar o
Não houve melhorias nas métricas. |
Beta Was this translation helpful? Give feedback.
-
FaCoRNet + ajustes na perda contrastivaNa linha de buscar uma nova forma de computar a temperatura baseando-se no mapa de atenção, tentei um esquema sugerido pelo ChatGPT no contexto de entropia (que tenho ressalvas e confesso ter pouco entendido) Lines 61 to 65 in a8dd2af O |
Beta Was this translation helpful? Give feedback.
-
Comparativo entre os módulos de atenção: FaCoR vs KFC
|
Beta Was this translation helpful? Give feedback.
-
KFC Full com módulo de atenção original do FaCoRFoi preciso realizar algumas modificações na arquitetura, pois o mecanismo de perda do FaCoR original retorna apenas um dos mapas -- usei um customizado que retorna ambos os mapas. As modificações no KFC foram: Lines 109 to 140 in 432488e
Os resultados não foram melhores -- azul (novo) vs amarelo (meu baseline) |
Beta Was this translation helpful? Give feedback.
-
Diferentes backbonesProcurei avaliar se backbones menores poderiam mitigar o sobreajuste, mas isso não aconteceu. Em todos os casos, a perda de validação começa a subir em intervalos de treino similares. Todos os novos experimentos são treinados em batches aleatórios, isso é, cada passo retorna um batch não sequencial, como originalmente feito pelos SOTA2021 -- SOTA2023 não fez assim. |
Beta Was this translation helpful? Give feedback.
-
Treinamentos mais longosProcurei avaliar se algo mudava em treinamentos um pouco mais longos (aumentei a paciência de 10 para 50). Também ajustei o uso do viés na amostragem do treinamento cinza. Sem tem viés, não há embaralhamento (shuffle). O treinamento em cinza não tem isso. O treinamento em rosa tem, mas como faz tempo, pode ter algo que o faça ser mais ou menos ruidoso. O treinamento em azul claro também tem, mas como é recente, tenho certeza do seu funcionamento. Interessante a estabilidade. O viés é uma forma de garantir que cada batch contenha apenas um par positivo. |
Beta Was this translation helpful? Give feedback.
-
Adição da perda de entropia cruzada (sem uso na otimização)A ideia era confirmar uma hipótese que formulei a partir de experimentos esporádicos no contexto de transformação de atributos. Como precisei alterar a perda contrastiva, notei que a implementação provinda de #26 (bem como #50 e #51) estava errada para amostras de validação. Especificamente, não respeitava a definição que dizia que no numerador deviam existir apenas amostras positivas e no denominador apenas negativas. Em verde o modelo FaCoRNet (AdaFace) sem o módulo de atenção e perda guiada. Em outras palavras, um experimento SOTA2021-like (vide #26). Como a perda de entropia cruzada binária desce continuamente (não continuou pois o experimento parou por conta de EarlyStopping com paciência 5 sobre AUC), podemos dizer que |
Beta Was this translation helpful? Give feedback.
-
Adição da perda de entropia cruzada (com uso na otimização)Resumo dos meus registros de pesquisa do dia 09/06 com ChatGPT Examinando a Configuração do Experimento
loss = (1 - self.hparams.loss_factor) * contrastive_loss + self.hparams.loss_factor * family_loss
Analisando Resultados das Imagens Fornecidas
if self.hparams.loss_factor:
loss = (1 - self.hparams.loss_factor) * contrastive_loss + self.hparams.loss_factor * family_loss
else:
loss = contrastive_loss + family_loss
Próximos PassosAjustando Pesos das Perdas
Experimentos com Camada de Projeção
Transformação de Atributos
Análise de Subgrupos
|
Beta Was this translation helpful? Give feedback.
-
Closes #81 Experiments:
|
Beta Was this translation helpful? Give feedback.
-
Experimento 0 (Baseline)
Experimento 1
Experimento 2
Experimento 3
Experimento 4
Experimento 5
Experimento 6
Experimento 7
Experimento 8
|
Beta Was this translation helpful? Give feedback.
-
Experimentos - Supervised Contrastive Learning and Feature Fusion for Improved Kinship Verification (#80)Experimento 1 - f8235ddb - Light blue
Experimento 2 - 516a10fb - Light gray
Experimento 3 - 94b84733 - Purple
Experimento 4 - aa8b9945 - Green
Experimento 5 - e0419ae1 - Orange
Experimento 6 - 80665a16 - Yellow
Experimento 7 - 753d730a - Pink
Experimento 8 - 5a10400b - Red
Experimento 9 - cb797f99 - Blue
Experimento 10 - 37bbc9eb - Brown
Observações
self.fc1 = nn.Linear(1024, 512)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(512, 1)
Próximo Experimento
Insights AdicionaisInsights adicionais
Ao implementar esses ajustes e continuar experimentando com diferentes configurações, você pode encontrar uma combinação que maximize a performance do seu modelo para o reconhecimento visual de parentesco. |
Beta Was this translation helpful? Give feedback.
-
Experimentos - Estágio 1 - Adição Sampler e Camada de Projeção - #80
self.fc1 = nn.Linear(512, 256)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(256, 128) onde a perda contrastiva as embeddings de 128D, enquanto que as métricas são feitas nas embeddings provindas do backbone (512D). A diferença entre o experimento com sampler (9ae61bff) e o baseline (f357ed93) é apenas que o baseline não tem sampler e é treinado em 100 passos por época (biased=True). Por causa do sampler, esse novo experimento é otimizado em vários batches antes da validação ser feita. Sobre os hiperparâmetros, o autor revela que
Eu não segui à risca tais hiper-parâmetros e acredito que isso não importa tanto. Abaixo os valores do hparams efetivamente usados no 9ae61bff:
Experimentos - Estágio 2 - Classificação de Parentesco - #80Nos experimentos do estágio 2 eu mudei o otimizador e avaliei diferentes valores para lr, mas nada mudou significativamente. Em todos eles as embeddings do backbone ficaram praticamente com a mesma distribuição (em 06c0f11a eu defini a similaridade como Em todos os casos houve finetuning dos pesos. O que o autor revela é
O paper não dá detalhes sobre o treinamento do estágio 1. Quantas épocas, por exemplo? Apenas é dito quantos passos foram usados no estágio 2. A partir dos passos, pressuponho que poucas épocas foram usadas. São quase 5000 relacionamentos possíveis, considerando o Bom, usando um batch de 20, temos 238 passos por época. Meu melhor experimento (9ae61bff) levou 4 épocas, menos que o reportado pelo autor (1250/1500 passos de 32 para 4777 amostras dá cerca de 8/10 épocas). Realizei os experimentos do estágio 2, agora de classificação, com os pesos de 9ae61bff e d23748dd, mas tudo ruim. É possível que em nenhum desses eu acertei o código? Sim, mas não vou me apegar nisso agora. Fico satisfeito que o sampler funcionou e que a camada de projeção é, aparentemente, inútil. Vou focar em um próximo experimento, que é adicionar aumento de base em cima do 9ae61bff.
Essa referência 17 é o SimCLR
Até onde lembro, o único SOTA que usou aumento de base foi o SOTA2020 (#24). |
Beta Was this translation helpful? Give feedback.
-
Aumento de base + Sampler - #80 augmentation_params:
color_jitter:
brightness: 0.5
contrast: 0.5
saturation: 0.5
hue: 0.1
random_grayscale_prob: 0.2
random_horizontal_flip_prob: 0.5 O autor não especificou, logo defini valores arbitrariamente. Em preto temos o novo experimento, relativo ao experimento anterior (9ae61bff), em branco, com apenas o sampler.
Esses resultados indicam áreas específicas de força e fraqueza no modelo de reconhecimento de parentesco, oferecendo pontos claros para possíveis melhorias e ajustes. |
Beta Was this translation helpful? Give feedback.
-
Aumento de base + Sampler + Hard Contrastive Loss
Se houvesse F1 score, o experimento 279536af seria aquele com maior valor. Note o equilíbrio entre precisão e cobertura. Abaixo os valores computados pelo ChatGPT -- não avaliei corretude, mas acho que está OK.
Abaixo a tabela de resultados
O melhor experimento é 279536af. Tem 0.6% de acurácia e AUC relativo ao segundo. Interessante notar a temperatura
Mais uniformidade, menos tolerância.
Ablação
Hard CLCLConsiderações
|
Beta Was this translation helpful? Give feedback.
-
A partir do baseline exposto em #38 (comment), comecei a realizar experimentos simples.
i. Adição de warmup e decaimento de LR multistep.
ii. Modificação nas taxas de aprendizado inicial, base e final
iii. Uso do AdamW
Descobertas notáveis
Houve também um atraso na queda da perda, como esperado
Beta Was this translation helpful? Give feedback.
All reactions