Um write-up da minha primeira experiência de competição kaggle
Sanyam Bhutani Segue 17 de jul · 5 min ler
Foto de Victoire Joncheray em Unsplash
Durante a minha viagem inicial de Planejamento em Minha Aprendizagem por Máquina Auto-ensinada este ano, eu havia me comprometido a chegar ao Top 25% para quaisquer competições de Kaggle (ao vivo).
Este é um resumo de como a equipe “rm-rf /” alcançou o Top 30% em nossa primeira competição de kaggle: O “Quick, Draw! Doodle Recognition Challenge ”da Google AI Team, hospedado no kaggle.
Menção Especial: A equipe "rm-rf /" era uma equipe de dois membros composta por meu parceiro de negócios e amigo Rishi Bhalodia e eu.
Experiência
Imagine isto: uma corrida que dura três meses. Não há linha de chegada, há altas pontuações. Você é um corredor experiente na sua escola.
A pegada?
Você é contra as pessoas acelerando em SuperCars (GrandMasters com muita experiência) enquanto eu estava correndo descalço. Claro, eu era muito bom contra meus amigos, mas contra um carro?
De certa forma, era como um jogo PUBG onde nós simplesmente caímos no meio da luta e pegamos qualquer arma que pudéssemos, tentamos chegar à “zona segura”.
A zona segura para nós era a área de medalha.
Então, por que todo mundo é tão viciado em Kaggle?
Pessoalmente, eu aprendi muito mais no 1 mês de competição do que qualquer MOOC de 1 mês que eu já usei.
Os “especialistas” no kaggle são sempre generosos com suas idéias. Ficamos surpresos com o fato de que muitas pessoas quase dariam suas soluções completas – estando nas posições Top LB!
Todas as noites nós faríamos uma boa apresentação, no dia seguinte você acordaria e você teria caído em 20 posições no LB! Hit Reset e trabalhar novamente para um melhor envio e, em seguida, repita todos os dias.
Finalmente, chegamos a 385/1316 em Private LB: Nossas idéias sobre o dado computador permitiram chegar exatamente a esse rank.
Foi definitivamente uma experiência incrível, eu definitivamente competir mais e tentar um melhor desempenho.
Em muitas ocasiões, quando conseguíamos chegar ao Top 100, depois de dormir tranquilamente, acordávamos com um kernel público que nos derrubaria completamente em 50 posições!
As pessoas que competem em competições são verdadeiramente apaixonadas, há sempre um estouro de ideias, sempre um excesso de talentos.
Para nós, foi apenas dar o melhor de nós e viver por algumas semanas com o mínimo de sono e quebrar e construir ambientes conda enquanto tentamos converter as idéias compartilhadas nas discussões em código.
No final, eu realmente aprendi porque Kaggle é o Lar da Ciência de Dados.
Objetivo
Sempre foi uma meta dos meus sonhos ter um bom desempenho nas competições de kaggle. Para começar, eu tinha mantido a barra em 2 submissões de 25%.
Desafio do Doodle:
Embora a competição tenha um grande número de arquivos e alguns desafios interessantes, buscamos o melhor para uma medalha.
Concorrência
Objetivo: O objetivo é identificar o (s) doodle (s) de um conjunto de dados de arquivos CSV contendo as informações para "desenhar" ou criá-los.
O desafio é: O número de arquivos no desafio foi de ~ 50 milhões!
Pessoalmente, eu já tinha feito um grande número de MOOC (s) e eu estava confiante, dado que quantas vezes eu tinha ido sobre a definição de uma CNN, seria muito fácil conseguir uma medalha de bronze. Claro, eu estava muito errado.
Coisas que não funcionaram
Somos muito gratos ao Mestre Kaggle Radek Osmulski por compartilhar seu pacote inicial Fast.ai – construímos em cima dele junto com alguns truques do Grande Mestre Beluga.
Erro 1: Como iniciante, é sempre sugestivo começar uma competição de kaggle quando a competição é nova.
Por quê?
O número de ideias que transbordam em uma competição é enorme! Mesmo os melhores marcadores do LB são muito generosos em compartilhar sua abordagem – é só uma questão de saber se poderíamos descobrir as pepitas que faltavam na informação e sermos capazes de converter suas ideias em código.
Nós começamos a competição quase no meio do caminho desde o seu lançamento.
Erro 2: Aprendemos sobre “experimentar”, validação.
O pacote inicial trabalha com 1% dos dados, tentei experimentar 5% dos dados, seguido por 10% dos dados e isso mostrou um aumento consistente no desempenho.
Em seguida: decidi jogar todos os dados no modelo, o treinamento durou ~ 50 horas na minha GPU de 8 GB. Esperávamos uma pontuação máxima com essa abordagem e, em vez disso, a precisão do modelo caiu no chão!
Lição aprendida: os experimentos são muito importantes e, portanto, a validação. O pacote inicial depende de “desenhar” as imagens na memória e depois treinar o modelo nelas. O problema com o Linux é que ele mantém um limite no número de arquivos, a menos que esteja formatado especificamente contra isso.
Não fizemos uma verificação de validação e treinamos contra uma parte dos dados. Um conjunto de validação reflexiva é certamente algo que você deve instalar ao iniciar.
Idéias que funcionaram
Treinamento progressivo e redimensionamento:
- Treinando o Modelo em 1% dos dados com 256 tamanho de imagem.
- Ajuste fino do modelo para 5% dos dados com 128 tamanho de imagem.
- Além disso, o ajuste fino do modelo para 20% dos dados com 64 tamanho de imagem.
- ResNet18 <ResNet34 <ResNet50 <ResNet 152 quando treinado na mesma parte do conjunto de dados.
Essa abordagem mostrou um aumento consistente no desempenho.
Conjunto: Nosso melhor envio foi um “Blend” de um ResNet 152 treinado com fastai (v1) em 20% do dataset e o MobileNet Kernel da Kaggle GM Beluga.
Resumo
Você encontrará muitas discussões melhores nas discussões da competição, então, por favor, desculpe esta postagem se essas ideias não lhe derem uma nota no Top LB.
Este foi realmente um resumo pessoal das coisas que aprendi competindo.
Finalmente, eu prometi competir muito mais, esperançosamente, você encontrará o time “rm-rf /” em algum lugar no LB nas recentes competições.
Eu fui mordido pelo "Kaggle Bug" e eu provavelmente preferiria competir no futuro por me inscrever para mais MOOC (s)
Vejo você no LB, Happy Kaggling!