É possível treinar uma rede neural de forma incremental?

23

Gostaria de treinar uma rede neural em que as classes de saída não sejam (todas) definidas desde o início. Mais e mais classes serão introduzidas posteriormente com base nos dados recebidos. Isso significa que, toda vez que eu apresentar uma nova aula, eu precisarei treinar novamente o NN.

Como posso treinar um NN de forma incremental, ou seja, sem esquecer as informações adquiridas anteriormente durante as fases de treinamento anteriores?

Fr_nkenstien
fonte

Respostas:

10

Gostaria de acrescentar ao que já foi dito que sua pergunta aborda uma noção importante no aprendizado de máquina chamada aprendizado de transferência . Na prática, poucas pessoas treinam uma rede convolucional inteira do zero (com inicialização aleatória), porque é demorado e relativamente raro ter um conjunto de dados de tamanho suficiente.

As ConvNets modernas levam de duas a três semanas para serem treinadas em várias GPUs no ImageNet. Portanto, é comum ver pessoas liberando seus pontos de verificação ConvNet finais para o benefício de outras pessoas que podem usar as redes para o ajuste fino. Por exemplo, a biblioteca Caffe tem um zoológico modelo no qual as pessoas compartilham seus pesos de rede.

Quando você precisar de um ConvNet para reconhecimento de imagem, independentemente do domínio do seu aplicativo, considere usar uma rede existente, por exemplo, o VGGNet é uma escolha comum.

Há algumas coisas a serem lembradas ao realizar o aprendizado por transferência :

  • Restrições de modelos pré-treinados. Observe que, se você deseja usar uma rede pré-treinada, pode ser um pouco limitado em termos da arquitetura que pode usar para seu novo conjunto de dados. Por exemplo, você não pode remover arbitrariamente as camadas Conv da rede pré-treinada. No entanto, algumas mudanças são simples: devido ao compartilhamento de parâmetros, você pode executar facilmente uma rede pré-treinada em imagens de diferentes tamanhos espaciais. Isso é claramente evidente no caso das camadas Conv / Pool, porque sua função de avanço é independente do tamanho espacial do volume de entrada (desde que as passadas “se ajustem”).

  • Taxas de aprendizagem. É comum usar uma taxa de aprendizado menor para pesos ConvNet que estão sendo ajustados, em comparação com os pesos (inicializados aleatoriamente) para o novo classificador linear que calcula as pontuações de classe do seu novo conjunto de dados. Isso ocorre porque esperamos que os pesos do ConvNet sejam relativamente bons, portanto não desejamos distorcê-los muito rápido e demais (especialmente enquanto o novo Classificador Linear acima deles estiver sendo treinado a partir da inicialização aleatória).

Referência adicional se você estiver interessado neste tópico: Quão transferíveis são os recursos em redes neurais profundas?

Máxima
fonte
A transferência de aprendizado não é a única maneira de realizar um aprendizado incremental.
nbro
7

Aqui está uma maneira de você fazer isso.

Após treinar sua rede, você pode salvar seus pesos em disco. Isso permite que você carregue esses pesos quando novos dados estiverem disponíveis e continue treinando praticamente de onde parou seu último treinamento. No entanto, como esses novos dados podem vir com aulas adicionais, agora você faz o pré-treinamento ou o ajuste fino na rede com os pesos salvos anteriormente. A única coisa que você precisa fazer, neste momento, é fazer com que a última camada (s) acomode as novas classes que foram introduzidas com a chegada do novo conjunto de dados, e o mais importante: inclua as classes extras (por exemplo, se sua última camada inicialmente teve 10 aulas e agora você encontrou mais 2 aulas, como parte do seu pré-treinamento / ajuste fino, substituindo-o por 12 aulas). Em resumo, repita este círculo:

Repetir

Tshilidzi Mudau
fonte
se você apenas acomodar as novas classes na última camada (classes de treinamento + novas classes), o modelo não poderá ser adequado porque queremos treinar com as novas classes (apenas) e o modelo esperará uma matriz com a forma de (treinamento + o novo classes).
Joel Carneiro