Uma introdução suave à aprendizagem de transferência para aprendizagem profunda

Uma introdução suave à aprendizagem de transferência para aprendizagem profunda

O aprendizado por transferência é um método de aprendizado de máquina em que um modelo desenvolvido para uma tarefa é reutilizado como ponto de partida para um modelo em uma segunda tarefa.

É uma abordagem popular em aprendizagem profunda, onde modelos pré-treinados são usados ​​como o ponto de partida em tarefas de visão computacional e processamento de linguagem natural, dados os vastos recursos computacionais e de tempo necessários para desenvolver modelos de rede neural nesses problemas e a partir dos grandes saltos na habilidade que eles fornecem sobre problemas relacionados.

Nesta postagem, você descobrirá como pode usar a aprendizagem por transferência para acelerar o treinamento e melhorar o desempenho do seu modelo de aprendizagem profunda.

Depois de ler esta postagem, você saberá:

  • O que é aprendizagem por transferência e como usá-la.
  • Exemplos comuns de transferência de aprendizagem em aprendizagem profunda.
  • Quando usar o aprendizado de transferência em seus próprios problemas de modelagem preditiva.

Comece seu projeto com meu novo livro Deep Learning for Computer Vision, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

Para obter um exemplo de como usar a aprendizagem por transferência na visão computacional, consulte a postagem:

Uma introdução suave para transferir aprendizagem com aprendizagem profunda

Uma introdução suave para transferir aprendizagem com aprendizagem profunda
Foto de Mike's Birds, alguns direitos reservados.

O que é transferência de aprendizagem?

O aprendizado por transferência é uma técnica de aprendizado de máquina em que um modelo treinado em uma tarefa é reaproveitado em uma segunda tarefa relacionada.

A aprendizagem por transferência e a adaptação de domínio referem-se à situação em que o que foi aprendido em um ambiente ... é explorado para melhorar a generalização em outro ambiente

- Página 526, Deep Learning, 2016.

A aprendizagem por transferência é uma otimização que permite um progresso rápido ou melhor desempenho ao modelar a segunda tarefa.

A aprendizagem por transferência é a melhoria da aprendizagem em uma nova tarefa por meio da transferência de conhecimento de uma tarefa relacionada que já foi aprendida.

- Capítulo 11: Transfer Learning, Handbook of Research on Machine Learning Applications, 2009.

A aprendizagem por transferência está relacionada a problemas como aprendizagem multitarefa e desvio de conceito e não é exclusivamente uma área de estudo para aprendizagem profunda.

No entanto, o aprendizado de transferência é popular no aprendizado profundo devido aos enormes recursos necessários para treinar modelos de aprendizado profundo ou os grandes e desafiadores conjuntos de dados nos quais os modelos de aprendizado profundo são treinados.

O aprendizado por transferência só funciona no aprendizado profundo se os recursos do modelo aprendidos na primeira tarefa forem gerais.

Na aprendizagem por transferência, primeiro treinamos uma rede de base em um conjunto de dados e tarefa de base e, em seguida, redirecionamos os recursos aprendidos, ou os transferimos, para uma segunda rede de destino para ser treinada em um conjunto de dados e tarefa de destino. Este processo tenderá a funcionar se os recursos forem gerais, ou seja, adequados para as tarefas base e alvo, em vez de específicos para a tarefa base.

- Quão transferíveis são os recursos em redes neurais profundas?

Essa forma de aprendizagem por transferência usada na aprendizagem profunda é chamada de transferência indutiva. É aqui que o escopo dos modelos possíveis (tendência do modelo) é restringido de uma forma benéfica, usando um ajuste de modelo em uma tarefa diferente, mas relacionada.

Representação de transferência indutiva

Representação de transferência indutiva
Retirado de “Transfer Learning”

Quer melhores resultados com o aprendizado profundo?

Faça meu curso intensivo de e-mail gratuito de 7 dias agora (com código de exemplo).

Clique para se inscrever e também obter uma versão gratuita do Ebook em PDF do curso.

Baixe o seu mini-curso GRÁTIS

Como usar a aprendizagem por transferência?

Você pode usar a aprendizagem por transferência em seus próprios problemas de modelagem preditiva.

Duas abordagens comuns são as seguintes:

  1. Desenvolver Abordagem de Modelo
  2. Abordagem de modelo pré-treinado

Desenvolver Abordagem de Modelo

  1. Selecione a Tarefa de Origem. Você deve selecionar um problema de modelagem preditiva relacionado com uma abundância de dados onde há algum relacionamento nos dados de entrada, dados de saída e / ou conceitos aprendidos durante o mapeamento de dados de entrada para dados de saída.
  2. Desenvolver modelo de origem. Em seguida, você deve desenvolver um modelo habilidoso para esta primeira tarefa. O modelo deve ser melhor do que um modelo ingênuo para garantir que algum aprendizado de recurso tenha sido executado.
  3. Reutilizar modelo. O ajuste do modelo na tarefa de origem pode então ser usado como ponto de partida para um modelo na segunda tarefa de interesse. Isso pode envolver o uso de todo ou partes do modelo, dependendo da técnica de modelagem usada.
  4. Modelo de melodia. Opcionalmente, o modelo pode precisar ser adaptado ou refinado nos dados do par de entrada-saída disponíveis para a tarefa de interesse.

Abordagem de modelo pré-treinado

  1. Selecione o modelo de origem. Um modelo de origem pré-treinado é escolhido a partir dos modelos disponíveis. Muitas instituições de pesquisa lançam modelos em conjuntos de dados grandes e desafiadores que podem ser incluídos no conjunto de modelos candidatos à sua escolha.
  2. Reutilizar modelo. O modelo pré-treinado pode então ser usado como ponto de partida para um modelo na segunda tarefa de interesse. Isso pode envolver o uso de todo ou partes do modelo, dependendo da técnica de modelagem usada.
  3. Modelo de melodia. Opcionalmente, o modelo pode precisar ser adaptado ou refinado nos dados do par de entrada-saída disponíveis para a tarefa de interesse.

Este segundo tipo de aprendizagem por transferência é comum no campo da aprendizagem profunda.

Exemplos de transferência de aprendizagem com aprendizagem profunda

Vamos tornar isso concreto com dois exemplos comuns de aprendizagem por transferência com modelos de aprendizagem profunda.

Transferência de aprendizagem com dados de imagem

É comum realizar transferência de aprendizagem com problemas de modelagem preditiva que usam dados de imagem como entrada.

Esta pode ser uma tarefa de previsão que tira fotografias ou dados de vídeo como entrada.

Para esses tipos de problemas, é comum usar um modelo de aprendizado profundo pré-treinado para uma tarefa grande e desafiadora de classificação de imagens, como a competição de classificação de fotos ImageNet 1000.

As organizações de pesquisa que desenvolvem modelos para esta competição e se saem bem, muitas vezes lançam seu modelo final sob uma licença permissiva para reutilização. Esses modelos podem levar dias ou semanas para treinar em hardware moderno.

Esses modelos podem ser baixados e incorporados diretamente em novos modelos que esperam dados de imagem como entrada.

Três exemplos de modelos desse tipo incluem:

Para obter mais exemplos, consulte o Caffe Model Zoo, onde mais modelos pré-treinados são compartilhados.

Essa abordagem é eficaz porque as imagens foram treinadas em um grande corpus de fotografias e exigem que o modelo faça previsões em um número relativamente grande de classes, por sua vez, exigindo que o modelo aprenda de forma eficiente a extrair recursos de fotografias para ter um bom desempenho em o problema.

Em seu curso de Stanford sobre Redes Neurais Convolucionais para Reconhecimento Visual, os autores alertam para escolher cuidadosamente quanto do modelo pré-treinado usar em seu novo modelo.

[Convolutional Neural Networks] os recursos são mais genéricos nas camadas iniciais e mais específicos do conjunto de dados original nas camadas posteriores

- Transferência de aprendizagem, redes neurais convolucionais CS231n para reconhecimento visual

Transferência de aprendizagem com dados de linguagem

É comum realizar a aprendizagem por transferência com problemas de processamento de linguagem natural que usam texto como entrada ou saída.

Para esses tipos de problemas, uma incorporação de palavras é usada, que é um mapeamento de palavras para um espaço vetorial contínuo de alta dimensão, onde palavras diferentes com um significado semelhante têm uma representação vetorial semelhante.

Existem algoritmos eficientes para aprender essas representações de palavras distribuídas e é comum que as organizações de pesquisa liberem modelos pré-treinados treinados em grandes conjuntos de documentos de texto sob uma licença permissiva.

Dois exemplos de modelos desse tipo incluem:

Esses modelos de representação de palavras distribuídas podem ser baixados e incorporados em modelos de linguagem de aprendizado profundo na interpretação de palavras como entrada ou na geração de palavras como saída do modelo.

Em seu livro sobre Deep Learning for Natural Language Processing, Yoav Goldberg adverte:

… Pode-se baixar vetores de palavras pré-treinados que foram treinados em grandes quantidades de texto […] diferenças nos regimes de treinamento e corpora subjacentes têm uma forte influência nas representações resultantes, e que as representações pré-treinadas disponíveis podem não ser a melhor escolha para [your] caso de uso específico.

- Página 135, Métodos de redes neurais em processamento de linguagem natural, 2017.

Quando usar a aprendizagem por transferência?

A aprendizagem por transferência é uma otimização, um atalho para economizar tempo ou obter melhor desempenho.

Em geral, não é óbvio que haverá um benefício em usar a aprendizagem por transferência no domínio até que o modelo tenha sido desenvolvido e avaliado.

Lisa Torrey e Jude Shavlik em seu capítulo sobre a aprendizagem por transferência descrevem três possíveis benefícios a serem observados ao usar a aprendizagem por transferência:

  1. Começo superior. A habilidade inicial (antes de refinar o modelo) no modelo de origem é maior do que seria.
  2. Declive mais alto. A taxa de melhoria de habilidade durante o treinamento do modelo de origem é mais acentuada do que seria de outra forma.
  3. Assíntota superior. A habilidade convergente do modelo treinado é melhor do que seria de outra forma.
Três maneiras pelas quais a transferência pode melhorar o aprendizado

Três maneiras pelas quais a transferência pode melhorar o aprendizado.
Retirado de “Transfer Learning”.

Idealmente, você veria todos os três benefícios de uma aplicação bem-sucedida do aprendizado por transferência.

É uma abordagem para tentar se você pode identificar uma tarefa relacionada com dados abundantes e você tem os recursos para desenvolver um modelo para essa tarefa e reutilizá-lo em seu próprio problema, ou se houver um modelo pré-treinado disponível que você possa usar como um ponto de partida para o seu próprio modelo.

Em alguns problemas em que você pode não ter muitos dados, o aprendizado por transferência pode permitir que você desenvolva modelos habilidosos que você simplesmente não poderia desenvolver na ausência do aprendizado por transferência.

A escolha da fonte de dados ou modelo de fonte é um problema aberto e pode exigir conhecimento de domínio e / ou intuição desenvolvida por meio da experiência.

Leitura Adicional

Esta seção fornece mais recursos sobre o tópico se você deseja se aprofundar.

Tutoriais

Livros

Papéis

Modelos Pré-Treinados

Artigos

Resumo

Nesta postagem, você descobriu como pode usar a aprendizagem por transferência para acelerar o treinamento e melhorar o desempenho do seu modelo de aprendizagem profunda.

Especificamente, você aprendeu:

  • O que é a aprendizagem por transferência e como ela é usada na aprendizagem profunda.
  • Quando usar a aprendizagem por transferência.
  • Exemplos de aprendizagem por transferência usados ​​em tarefas de visão computacional e processamento de linguagem natural.

Você tem alguma pergunta?
Tire suas dúvidas nos comentários abaixo e farei o possível para responder.

Desenvolva modelos de aprendizado profundo para a visão hoje!

Aprendizado profundo para visão computacional

Desenvolva seus próprios modelos de visão em minutos

... com apenas algumas linhas de código python

Descubra como em meu novo Ebook:
Aprendizado profundo para visão computacional

Ele fornece tutoriais de auto-estudo em tópicos como:
classificação, detecção de objeto (yolo e rcnn), reconhecimento de rosto (vggface e facenet), preparação de dados e muito mais...

Finalmente, traga o aprendizado profundo para seus projetos de visão

Ignore os acadêmicos. Apenas resultados.

Veja o que há dentro

Você também pode estar interessado em