Transfer Learning — Pegando conhecimento emprestado

Source: Deep Learning on Medium


Como melhor utilizar o conhecimento aprendido por modelos já consagrados em seu projeto de Deep Learning

Photo by James Pond on Unsplash

Criar modelos de Deep Learning do zero pode se tornar uma tarefa complicada e que necessita de muitos recursos computacionais e dados para treinamento.

Transfer Learning pode ser utilizado para usufruir do conhecimento e de informações aprendidas por modelos conhecidos e treinados em milhões de dados de treinamento por pesquisadores e empresas.

Bibliotecas como PyTorch e Tensorflow disponibilizam para nosso uso modelos como VGG, ResNet, Inception, entre outros. Além de ser uma maneira rápida de criar uma arquitetura complexa como as desses modelos, eles vêm com os parâmetros pré-treinados, ou seja, tudo o que foi aprendido no treinamento dessas grandes redes neurais está à disposição para nosso uso.

Para saber como melhor utilizar esses modelos para seu projeto, devem ser levados em consideração alguns fatores:

● Seu conjunto de dados é pequeno, porém os dados são similares aos utilizados para treinamento do modelo original

Caso esta seja sua situação, você pode fazer uso de todas as camadas da rede original, alterando somente a última camada de acordo com seu número de classes. Assim, todos os parâmetros aprendidos pela rede original são congelados e você irá treinar somente a última camada que adicionou.

● Seu conjunto de dados é pequeno e os dados diferem dos aprendidos pelo modelo original

Neste caso, você ainda pode aproveitar informações aprendidas pelas primeiras camadas da rede. Por exemplo, sabe-se que as primeiras camadas convolucionais de uma Rede Neural Convolucional (CNN) contém informações sobre as bordas, texturas e cantos. Essas características podem ser utilizadas para a maioria dos casos. Ou seja, você pode fazer uso das primeiras camadas convolucionais já treinadas do modelo.

● Seu conjunto de dados é grande e similar aos originais

Para essa situação, pode-se alterar a última camada para o número correto de classes do seu projeto (como no primeiro caso). A diferença é que os pesos antigos não serão congelados, mas serão ajustados também. Isso é chamado de Fine Tunning. No treinamento, os pesos já aprendidos são levemente ajustados para sua situação, enquanto os pesos da nova camada final serão aprendidos do zero.

● Seu conjunto de dados é grande e diferente do original

Aqui, a mesma técnica usada no caso anterior pode ser utilizada. Ou ainda, fazer uso somente da arquitetura do modelo, inicializando todos os pesos aleatoriamente e re-treinando toda a rede.

Conclusão

Muitas vezes não há necessidade de reinventar o que já foi criado e comprovado que funciona. Bibliotecas de Deep Learning disponibilizam esses modelos para facilitar e incentivar a criação de novos projetos e aplicações úteis.

Tire proveito disso!

Contatos:

https://www.linkedin.com/in/vitorborbarodrigues/

https://www.instagram.com/mlmaisleve/

https://github.com/vbrodrigues/