Primeiro de tudo, temos uma tarefa de classificação.
Portanto, usamos a entropia cruzada softmax típica para classificar.
A implementação atual da aprendizagem curricular é a seguinte.
- Primeiro treinamos nossa melhor versão da rede neural
- Na última época, obtemos todas as entropias cruzadas para todas as instâncias. Portanto, entropias cruzadas menores são melhor classificadas e maiores não tão bem.
- Em seguida, classificamos as instâncias com base nas entropias cruzadas.
- Começamos a treinar as instâncias de mais fácil a mais difícil, como sugere a teoria do aprendizado do currículo
Observe que já experimentamos várias etapas e repetições. Assim, em um exemplo, pegamos os primeiros 200 lotes e os treinamos duas vezes antes de ir para o próximo lote e assim sucessivamente até que uma época seja concluída.
Em outro exemplo, pegamos os 10 primeiros lotes e os treinamos apenas uma vez e depois os 10 e 10 seguintes e assim sucessivamente até o final da época.
Todas as experiências até agora concluíram que a rede neural tem uma precisão relativamente boa no início e isso piora à medida que surgem as situações mais difíceis. A precisão final é muito pior do que o esperado e, além disso, a precisão máxima ainda é bastante ruim.
Por que esse aprendizado curricular não está funcionando? Falta alguma coisa?
fonte
Respostas:
Você precisa de muito mais informações para descobrir o que está acontecendo aqui. Algumas possibilidades incluem:
Seus exemplos "rígidos" são realmente desaprendíveis. Você pode verificar isso vendo se pode, no mínimo, superestimar os exemplos concretos e se, como humano, pode rotular os exemplos concretos corretamente.
Sua rede não é grande o suficiente para aprender os exemplos concretos. Ou seja, você tem certeza de que exemplos concretos podem ser aprendidos, mas a rede não é suficientemente complexa para isso. Novamente, você pode verificar isso vendo se você, como humano, é capaz de descobrir os rótulos corretos para as instâncias difíceis.
O aprendizado do currículo pode estar prejudicando o treinamento. No final do treinamento, sua rede está apenas vendo exemplos com os quais há mais problemas. Esses exemplos causarão as maiores alterações na rede e você poderá ter uma explosão gradiente de curto prazo. Você pode verificar se isso está acontecendo, verificando se está obtendo desempenho significativamente pior em exemplos "fáceis" no final do treinamento nos exemplos difíceis. Uma solução aqui pode ser algo como expandir lentamente o conjunto de treinamento depois que você classifica por dificuldade. Portanto, se você tem 10k exemplos fáceis e 10k exemplos concretos, treine 10k easy + 1k hard até ficar satisfeito com o desempenho da rede e aumente o conjunto de treinamento adicionando o próximo 1k mais difícil, etc.
fonte