Personalização de modelos de machine learning: a maneira mais fácil

1. Introdução

2a934d0e86f14118.png

Última atualização: 2022-03-28

Machine learning

Machine learning é uma área que evolui rapidamente. Novas pesquisas e possibilidades aparecem todos os dias, o que permite casos de uso que não existiam antes.

Essas versões geralmente têm um modelo. Modelos podem ser entendidos como equações matemáticas muito longas que fornecem um resultado (por exemplo, imagem) que gera um resultado (por exemplo: classificação)

  • E se você quiser usar um desses modelos novos com seus próprios dados?
  • Como é possível se beneficiar desses modelos avançados para seu caso de uso ou no app?

Este codelab vai orientar você no processo de personalização de modelos de machine learning para seus próprios dados.

Criar e treinar modelos de machine learning tem muitos desafios:

  • Leva muito tempo.
  • Usa grandes quantidades de dados.
  • Exige experiência em áreas como matemática e estatística.
  • Recurso intensivo: alguns modelos podem levar dias para serem treinados.

Criar novas arquiteturas de modelo leva muito tempo e pode exigir muitos experimentos e anos de experiência. Mas e se você pudesse aproveitar todo esse conhecimento e usar ele nos seus próprios dados personalizando apenas a pesquisa de última geração para seu próprio problema? Isso é possível usando uma técnica chamada Aprendizado por transferência.

Neste codelab, você vai aprender a fazer o aprendizado por transferência, porque ele funciona e quando usá-lo.

O que você vai aprender

  • O que é aprendizado por transferência e quando usá-lo.
  • Como usar o aprendizado por transferência.
  • Como ajustar modelos
  • Como usar o TensorFlow Lite Model Maker.
  • Como usar o TensorFlow Hub.

Pré-requisitos

  • Como todo o código é executado com o Google Colaboratory, você não precisa instalar nada na sua máquina. Você só precisa de acesso à Internet e uma Conta do Google para fazer login no Colab.
  • Conhecimentos básicos do TensorFlow e da API Keras.
  • Conhecimentos sobre o Python.

Se você não tem conhecimentos básicos sobre o TensorFlow ou machine learning, ainda é possível aprender sobre o aprendizado por transferência. Leia a próxima etapa "O que é aprendizado por transferência" para saber sobre a teoria por trás da técnica, e depois siga para "Aprendizado por transferência com o Model Maker". Se quiser saber mais e ver o processo em detalhes, consulte as seções sobre aprendizado por transferência com o TensorFlow Hub.

2. O que é aprendizado por transferência?

Um modelo pré-treinado é uma rede salva que foi treinada anteriormente em um grande conjunto de dados, normalmente em uma tarefa de classificação de imagens em grande escala. Use o modelo pré-treinado como está ou use o aprendizado por transferência para personalizar esse modelo para uma determinada tarefa.

A intuição por trás do aprendizado por transferência para a classificação de imagens é que, se um modelo for treinado em um conjunto de dados grande e geral o suficiente, ele servirá como um modelo genérico do mundo visual. É possível aproveitar esses mapas de recursos aprendidos sem ter que começar do zero treinando um modelo grande em um grande conjunto de dados.

Há duas maneiras de personalizar um modelo de machine learning

  • Extração de recursos: use as representações aprendidas por uma rede anterior para extrair recursos significativos de novas amostras. Basta adicionar um novo classificador, treinado do zero, sobre o modelo pré-treinado para reutilizar os mapas de atributos aprendidos anteriormente para o conjunto de dados. Não é necessário treinar novamente todo o modelo. A rede convolucional base já contém recursos genéricos e úteis para classificar imagens. No entanto, a parte de classificação final do modelo pré-treinado é específica da tarefa de classificação original e, posteriormente, do conjunto de classes em que o modelo foi treinado.
  • Ajuste: descongele algumas das camadas superiores de uma base de modelo congelada e treine em conjunto as camadas do classificador recém-adicionadas e as últimas camadas do modelo base. Isso permite ajustar as representações de recursos de ordem superior no modelo base para torná-las mais relevantes para a tarefa específica.

O treinamento de recursos é mais rápido para o treinamento, mas com o ajuste, é possível alcançar resultados melhores.

Você vai testar ambos (extração de atributos e ajuste) usando duas maneiras diferentes de fazer o aprendizado de transferência:

  • A biblioteca do TensorFlow Lite Model Maker faz automaticamente a maior parte do pipeline de dados e a criação de modelos, facilitando o processo. O modelo resultante também pode ser facilmente exportado para ser usado em dispositivos móveis e no navegador.
  • Os modelos do TensorFlow Hub aproveitam o repositório vasto de modelos de machine learning disponíveis no TensorFlow Hub. Pesquisadores e a comunidade contribuem para que os modelos de última geração sejam disponibilizados muito mais rapidamente e em grande variedade.

3. Aprendizado por transferência com o Model Maker

Agora que você sabe a ideia por trás do aprendizado por transferência, vamos começar a usar a biblioteca do TensorFlow Lite Model Maker, uma ferramenta que facilita o processo.

A biblioteca do TensorFlow Lite Model Maker é uma biblioteca de código aberto que simplifica o processo de aprendizado por transferência e torna ele muito mais acessível para desenvolvedores que não usam ML, como desenvolvedores da Web e para dispositivos móveis.

O notebook do Colab orienta você nas seguintes etapas:

  • Carregar os dados.
  • Dividir dados.
  • Criar e treinar o modelo
  • Avaliar o modelo.
  • Exportar o modelo.

Após essa etapa, comece a usar o aprendizado por transferência com seus próprios dados seguindo o mesmo processo.

Colaboratory

Agora vamos acessar o Google Colab para treinar o modelo personalizado.

Leva cerca de 15 minutos para explicar e entender os conceitos básicos do notebook.

Prós:

  • Uma maneira fácil de personalizar modelos.
  • Não é preciso entender o TensorFlow ou a API Keras.
  • Ferramenta de código aberto que pode ser alterada, se o usuário precisar de algo específico ainda não implementado.
  • Exporta o modelo diretamente para execução em dispositivos móveis ou navegadores.

Contras

  • Menos possibilidades de configuração do que a criação do pipeline completo e o modelo por conta própria, como nos dois métodos anteriores
  • Mesmo ao escolher o modelo base, nem todos os modelos podem ser usados como base.
  • Não é adequada para grandes quantidades de dados, quando o pipeline é mais complexo.

4. Encontrar um modelo no TensorFlow Hub

Ao final desta seção, será possível:

  • Encontrar modelos de machine learning no TensorFlow Hub.
  • Entender as coleções.
  • Entender os diferentes tipos de modelos.

Para fazer o aprendizado por transferência, você precisa começar com dois itens:

  • Dados, por exemplo, imagens dos assuntos que você quer reconhecer.
  • Um modelo base que pode ser personalizado para seus dados.

A parte de dados geralmente depende do tipo de empresa, mas o caminho mais fácil é tirar muitas fotos do que você quer reconhecer. Mas e o modelo de base? Onde é possível encontrar um? O TensorFlow Hub pode ajudar com isso.

O TensorFlow Hub é o repositório de modelos para suas necessidades de modelos do TensorFlow.

É possível pesquisar e ler a documentação de milhares de modelos, que já estão disponíveis para uso, e muitos deles estão prontos para o aprendizado por transferência e o ajuste.

Como pesquisar um modelo

Primeiro, vamos fazer uma pesquisa simples dos modelos para usar no TensorFlow Hub e que você pode aplicar no seu código mais tarde.

Etapa 1: no navegador, abra o site tfhub.dev.

imagem da página principal tfhub.dev

Para o aprendizado por transferência no domínio de imagem, precisamos de vetores de recursos. Os vetores de recursos são como modelos de classificação, mas sem o cabeçalho da classificação.

Os vetores de recursos podem converter imagens em uma representação numérica no espaço N (em que N é o número de dimensões da camada de saída do modelo).

No TFHub, é possível pesquisar especificamente os vetores de recursos clicando em um card específico.

Imagem da página tfhub.dev com um quadrado destacando a tarefa vetorial de recurso

Também é possível pesquisar o nome de um modelo com o filtro à esquerda para mostrar apenas Image feature vectors.

Esta é uma imagem da página de pesquisa de tfhub.dev depois de escolher uma tarefa vetorial de recurso na página principal

Os cards com ícones azuis são coleções de modelos. Se você clicar em uma coleção de imagens, terá acesso a vários modelos semelhantes para escolher. Vamos escolher a coleção de imagens.

Esta é a página de coleta de imagens de tfhub.dev

Role para baixo e selecione MobileNet V3. Todos os vetores de recursos funcionam.

Esta é a página de coleta de imagens de tfhub.dev rolando um pouco da página anterior

Na página de detalhes do modelo, é possível ler toda a documentação, ver snippets de código para testá-lo ou até mesmo testá-lo diretamente em um notebook do Colab.

Página de detalhes de um modelo vetorial de recurso mobilenetV3

Por enquanto, você só precisa do URL na parte superior. Esse é o identificador de modelo e a maneira mais fácil de acessar um modelo pela biblioteca do TensorFlow Hub.

5. Aprendizado por transferência com o TensorFlow Hub

Agora que você escolheu um modelo para usar, faça a personalização carregando ele com o método KerasLayer da biblioteca do TensorFlow Hub.

Esse método carrega um modelo de forma que ele possa ser usado como uma camada no seu modelo, permitindo que você crie o modelo com essa camada.

Antes, quando você aprendeu a usar o Model Maker, todos os componentes internos estavam ocultos para facilitar o entendimento. Não, você vai ver o que o Model Maker está fazendo nos bastidores.

Colaboratory

Agora vamos acessar o Google Colab para treinar o modelo personalizado.

Leva cerca de 20 minutos para explicar e entender os conceitos básicos do notebook.

Prós:

  • Milhares de modelos disponíveis criados em colaboração por pesquisadores e pela comunidade, treinados em vários conjuntos de dados.
  • Modelos para todas as tarefas, como visão, texto e áudio.
  • Fácil de testar com modelos semelhantes diferentes. Alterar o modelo base pode exigir a alteração de apenas uma string.

Contras

  • Ainda é necessário ter experiência com o TensorFlow/Keras para usar os modelos.

Se você quiser saber mais, também é possível fazer o aprendizado por transferência usando o aplicativo Keras. Esse é um processo muito semelhante ao uso do TensorFlow Hub, mas apenas com as principais APIs do TensorFlow.

6. Parabéns

Parabéns! Você aprendeu o que é o aprendizado por transferência e como aplicar ele aos seus dados.

Neste Codelab, você aprendeu a personalizar modelos de machine learning para seus próprios dados usando uma técnica chamada aprendizado por transferência.

Você testou duas formas de aprendizado por transferência:

  • Uso de uma ferramenta como o TensorFlow Lite Model Maker.
  • Uso de um vetor de recursos do TensorFlow Hub.

As duas opções têm vantagens e desvantagens, e muitas configurações possíveis para suas necessidades específicas.

Você também aprendeu que pode ir além e ajustar os pesos para ajustar melhor seus dados.

Ambas as opções podem ajustar os modelos.

O aprendizado por transferência e o ajuste não são apenas para modelos relacionados a imagens. Como a ideia é usar uma representação aprendida de um domínio para ajustar seu conjunto de dados, ela também pode ser usada para domínios de texto e áudio.

Próximas etapas

  • Faça um teste com seus próprios dados.
  • Conte para nós o que você criou e marque o TensorFlow nas mídias sociais usando seus projetos.

Saiba mais

Perguntas?