Estou tentando treinar uma rede neural para classificação, mas os rótulos que tenho são bastante barulhentos (cerca de 30% deles estão errados).
A perda de entropia cruzada realmente funciona, mas eu queria saber se existem alternativas mais eficazes nesse caso. ou a perda de entropia cruzada é a ideal?
Não tenho certeza, mas estou pensando em "recortar" a perda de entropia cruzada, de modo que a perda de um ponto de dados não seja maior que um limite superior, isso funcionará?
Obrigado!
Atualização
De acordo com a resposta de Lucas, obtive o seguinte para as derivadas da saída de previsão entrada da função softmax z . Então eu acho que basicamente ele está adicionando um termo de suavização 3 para os derivados. pi=0,3/N+0,7yil=-Σtilog(pi)∂l
Atualização
Acabei de ler um artigo do Google que aplica a mesma fórmula da resposta de Lucas, mas com interpretações diferentes.
Na Seção 7, Regularização do modelo via suavização de etiquetas
Mas, em vez de adicionar o termo suavizado às previsões, eles o acrescentaram à verdade básica , que acabou sendo útil.
Respostas:
A coisa certa a fazer aqui é mudar o modelo, não a perda. Seu objetivo ainda é classificar corretamente o maior número possível de pontos de dados (o que determina a perda), mas suas suposições sobre os dados foram alteradas (que são codificadas em um modelo estatístico , a rede neural nesse caso).
em vez disso e otimizar
fonte
Reconheço que este é um fórum de estatísticas e a expectativa é um foco em derivações matemáticas, mas se puder ser útil e você estiver usando Python, há um pacote de classificação com rótulos barulhentos chamado
cleanlab
: https://github.com/ cgnorthcutt / cleanlab / .O
cleanlab
pacote Pythonpip install cleanlab
, do qual sou autor, encontra erros de rótulo nos conjuntos de dados e suporta classificação / aprendizado com rótulos barulhentos. Funciona com o scikit-learn, PyTorch, Tensorflow, FastText, etc.Para aprender com etiquetas barulhentas.
Para encontrar erros de etiqueta no seu conjunto de dados.
Alguns exemplos com FastText (NLP) e PyTorch (MNIST AlexNet).
Documentação: https://l7.curtisnorthcutt.com/cleanlab-python-package
fonte