Em uma época em que a quantidade de informações visuais disponíveis online é vasta e em constante crescimento, encontrar exatamente o que você procura pode ser uma tarefa desafiadora, que pode tomar muito tempo de quem realiza uma busca específica.
É nesse cenário que o Pinterest se destaca, oferecendo em sua plataforma, algo que vai além da simples busca por palavras-chave, permitindo aos usuários explorar e descobrir inspiração através de imagens.
Por trás dessa experiência está a Visão Computacional, uma área da inteligência artificial que possibilita a análise e compreensão de imagens de forma automatizada.
Mas como o Pinterest utiliza a Visão Computacional?
Com auxílio de técnicas avançadas como Transfer Learning para aprimorar sua capacidade de encontrar precisamente o que os usuários estão buscando. Vamos entender melhor sobre isso.
O transfer learning, que envolve aplicar conhecimentos adquiridos de uma tarefa para resolver outras relacionadas, tornou-se instrumental para melhorar a eficiência e precisão desses modelos. No campo de Machine Learning, a ascensão do transfer learning tem impulsionado o desenvolvimento de modelos de visão computacional.
Para quem é da área, compreender as nuances do transfer learning é fundamental para aproveitar seu potencial máximo.
O transfer learning aborda um desafio fundamental na Visão Computacional: a necessidade de dados extensos para treinar modelos robustos. Tradicionalmente, treinar uma Convolutional Neural Network (CNN) do zero exige um conjunto de dados vasto e recursos computacionais substanciais. No entanto, o transfer learning contorna isso, utilizando modelos pré-treinados como ponto de partida. Esses modelos, treinados em conjuntos de dados em grande escala como o ImageNet, já aprenderam um rico grupo de características que podem ser reaproveitadas de forma eficaz.
Desse modo, permite aproveitar o conhecimento adquirido por modelos pré-treinados em grandes conjuntos de dados para resolver problemas com menor necessidade de dados de treinamento.
Benefícios do Transfer Learning
Essa abordagem é especialmente útil em Visão Computacional, onde modelos pré-treinados em grandes conjuntos de dados de imagens, podem ser adaptados para tarefas específicas, como classificação de raças de cães ou detecção de objetos em imagens médicas.
Isso envolve os principais benefícios do Transfer Learning. Ele permite o desenvolvimento de modelos mais eficientes, aproveitando características aprendidas e além disso, acelera o processo de desenvolvimento de modelos. Também reduz parte dos custos necessários, personalizando modelos já existentes de acordo com as suas necessidades.
Estratégias de Transfer Learning
Dentro do aprendizado por transferência, existem diferentes estratégias que podem ser aplicadas, cada uma adequada a contextos específicos e objetivos particulares:
- Aprendizado por Transferência Transdutiva: Esta estratégia envolve transferir conhecimento de um domínio de origem para um domínio-alvo diferente, mas relacionado.
É útil quando há uma escassez de dados rotulados no domínio-alvo. O modelo faz previsões sobre os dados-alvo com base no conhecimento prévio adquirido, como os dados-alvo são matematicamente semelhantes aos dados de origem, o modelo encontra padrões e desempenha de forma mais ágil.
Por exemplo, um modelo treinado para análise de sentimentos em avaliações feedback sobre produtos para crianças, pode ser adaptado para lidar com críticas livros, aproveitando a estrutura e o uso da linguagem compartilhados entre os domínios.
- Aprendizado por Transferência Indutiva: Nesta abordagem, os domínios de origem e alvo são os mesmos, mas as tarefas são diferentes.
O modelo pré-treinado já está familiarizado com os dados de origem, o que acelera o treinamento para novas tarefas.
Por exemplo, modelos de visão computacional pré-treinados em grandes conjuntos de dados de imagens podem ser ajustados para realizar tarefas específicas, como detecção de objetos, dentro do mesmo domínio.
- Aprendizado por Transferência Não Supervisionada: Esta estratégia é aplicada quando os dados disponíveis nos domínios de origem e alvo não possuem rótulos. Essa estratégia funciona de modo similar ao aprendizado por transferência indutiva
O modelo aprende características comuns dos dados não rotulados, permitindo uma generalização mais precisa para tarefas específicas.
Por exemplo, um modelo pode ser treinado inicialmente em um grande conjunto de imagens de veículos não rotuladas para identificar características distintivas entre diferentes tipos de veículos, e então ajustado para identificar tipos específicos de motocicletas em um conjunto menor de imagens rotuladas.
Existem várias estratégias de Transfer Learning que podem ser aplicadas em Visão Computacional, dependendo da disponibilidade de dados e da similaridade entre as tarefas. As duas abordagens principais são o Ajuste Fino (Fine-Tuning) e a Extração de Características (Feature Extraction).
- Ajuste Fino (Fine-Tuning):
O ajuste fino é uma técnica em que o modelo pré-treinado é modificado e treinado novamente em um conjunto de dados de destino relacionado à nova tarefa.
Durante o ajuste fino, as camadas do modelo pré-treinado são desbloqueadas e seus pesos são atualizados com base nos gradientes calculados a partir do conjunto de dados de destino. No entanto, as camadas iniciais do modelo, que geralmente aprendem características genéricas e de baixo nível, são mantidas intactas ou ajustadas muito pouco.
Isso ocorre porque essas camadas já capturaram informações úteis sobre características básicas das imagens, como bordas, texturas e padrões simples, que são úteis em uma ampla gama de tarefas dentro da visão computacional.
O ajuste fino é especialmente eficaz quando o conjunto de dados de destino é pequeno em comparação com o conjunto de dados original no qual o modelo pré-treinado foi treinado, porque o modelo pré-treinado já aprendeu representações úteis em um conjunto de dados grande e diversificado, e o ajuste fino permite adaptar essas representações para a tarefa específica com uma quantidade limitada de dados de treinamento.
- Extração de Características (Feature Extraction):
Em Feature Extraction, o modelo pré-treinado é utilizado como uma “rede extratora de características”.
As camadas convolucionais do modelo pré-treinado são usadas para extrair representações de alto nível das imagens de entrada, e essas representações são então alimentadas em um novo classificador que é treinado especificamente para a tarefa de destino. Durante o treinamento do classificador, apenas os pesos do classificador são atualizados, enquanto os pesos das camadas convolucionais permanecem fixos.
A extração de características é útil quando o conjunto de dados de destino é pequeno e semelhante ao conjunto de dados original no qual o modelo pré-treinado foi treinado.
Ao utilizar as representações de alto nível aprendidas pelo modelo pré-treinado, a extração de características permite construir um classificador eficaz com uma quantidade limitada de dados de treinamento, sem a necessidade de treinar todas as camadas do modelo do zero.
Etapas do Transfer Learning
- Seleção de um Modelo Pré-Treinado:
A primeira etapa é escolher um modelo pré-treinado que já tenha conhecimento ou habilidades relevantes para a tarefa relacionada. Isso envolve identificar a tarefa original para a qual o modelo foi treinado e avaliar sua adequação para a nova tarefa de visão computacional.
Modelos populares como ResNet, VGG, Inception e MobileNet são comumente usados como base devido ao seu desempenho comprovado em uma variedade de tarefas de visão computacional. - Configuração de Modelos Pré-Treinados:
Após selecionar o modelo pré-treinado, é necessário realizar configurações para uma nova função específica. Isso envolve duas abordagens principais:
- Congelamento de Camadas Pré-Treinadas:
Uma prática comum em transfer learning é congelar as camadas de um modelo pré-treinado durante o treinamento do novo modelo.
Isso significa que os pesos dessas camadas não são atualizados durante o treinamento na nova tarefa. Congelar as camadas pré-treinadas é útil para manter as características aprendidas anteriormente intactas, especialmente quando o conjunto de dados de destino é pequeno.
O congelamento é realizado definindo os parâmetros trainable das camadas pré-treinadas como False no momento da compilação do modelo.
- Remoção da Última Camada:
A última camada de um modelo pré-treinado geralmente está associada à tarefa específica para a qual foi originalmente treinada.
Ao adaptar o modelo para uma nova tarefa, é comum remover essa camada e substituí-la por uma nova camada que corresponda à tarefa de destino.
Por exemplo, em um modelo de classificação de imagens pré-treinado, a última camada de classificação pode ser removida e substituída por uma nova camada com o número correto de classes para a nova tarefa.
- Introdução de Novas Camadas:
Além de realizar configurações nas camadas pré-treinadas, é comum introduzir novas camadas ao modelo para personalizá-lo para a nova tarefa de visão computacional.
Essas novas camadas podem incluir camadas de classificação adicionais, camadas de pooling, ou outras camadas específicas da arquitetura da rede neural que são ajustadas para lidar com as particularidades da nova tarefa.
- Treinamento de modelo para o domínio de destino
Após configurar o modelo pré-treinado, a próxima etapa é o treinamento do modelo para se adaptar ao domínio de destino.
Durante esse processo, o modelo é ajustado aos dados da nova tarefa, buscando desenvolver uma saída que atenda às necessidades específicas da aplicação.
No início, não é incomum observar que o modelo pré-treinado gera resultados que diferem dos desejados para a nova tarefa. Nesse estágio, é preciso monitorar e avaliar continuamente o desempenho do modelo durante o treinamento.
Esse acompanhamento permite identificar lacunas e oportunidades de melhoria na performance do modelo.
Durante o treinamento, há a possibilidade de ajustar tanto os hiperparâmetros quanto a arquitetura básica da rede neural, visando otimizar ainda mais os resultados.
Os hiperparâmetros desempenham um papel importante na eficiência e eficácia do processo de treinamento, embora não sejam aprendidos a partir dos dados.
Por exemplo, a modificação dos parâmetros de regularização, como a taxa de dropout ou a regularização L2, pode ser essencial para evitar o overfitting e melhorar a capacidade de generalização do modelo para dados não vistos.
Da mesma forma, ajustar as taxas de aprendizado do otimizador pode influenciar significativamente a velocidade de convergência e a estabilidade do treinamento.
Estratégias de aprendizado por transferência na IA generativa
Na inteligência artificial generativa (GANs – Generative Adversarial Networks), as estratégias de aprendizado por transferência são ativas na melhoria do desempenho e na ampliação das capacidades dos modelos. Por exemplo:
- Treinamento de Domínio Adversarial (Domain-Adversarial Training):
Essa estratégia envolve treinar um modelo GAN em duas tarefas simultaneamente: a geração de dados e a discriminação entre dados verdadeiros e falsos.
O gerador tenta criar amostras que são indistinguíveis das reais, enquanto o discriminador busca distinguir entre as amostras geradas e as reais.
Você terá melhores resultados com essa estratégia quando os dados de destino têm uma distribuição diferente dos dados de origem.
- Aprendizado Professor-Aluno (Teacher-Student Learning):
Nessa abordagem, um modelo “professor” bem treinado é usado para guiar o treinamento de um modelo “aluno”.
O modelo professor fornece orientação supervisionada ao aluno, ajudando-o a aprender representações mais eficazes dos dados.
Seu uso é melhor aplicado em cenários onde os dados de treinamento são escassos ou de baixa qualidade. - Separação de Recursos (Feature Separation):
Essa estratégia visa separar os recursos aprendidos pelo modelo em diferentes domínios, permitindo que o modelo capture e manipule aspectos específicos dos dados.
Isso pode ser alcançado através da modificação da arquitetura da rede ou da introdução de camadas de separação de recursos durante o treinamento. - Aprendizado por Transferência Intermodal (Intermodal Transfer Learning):
No aprendizado por transferência intermodal, o conhecimento é transferido entre diferentes modalidades de dados, como texto e imagem.
Por exemplo, um modelo pode ser treinado inicialmente em um conjunto de dados de texto e depois adaptado para gerar imagens que correspondam ao texto fornecido.
Essa aplicação permite que o modelo aprenda a relacionar informações de diferentes fontes e produza saídas mais ricas e coerentes. - Aprendizado com Poucos ou Nenhum Exemplo (Few-shot ou Zero-shot Learning):
Essa estratégia é aplicada quando há uma quantidade limitada de exemplos disponíveis para treinamento.
Métodos de aprendizado com poucos ou nenhum exemplo buscam extrair conhecimento de conjuntos de dados relacionados ou de fontes auxiliares, como modelos pré-treinados, para adaptar o modelo às novas tarefas com base em exemplos limitados.
O mecanismo do Pinterest
Para entender como o Pinterest utiliza Transfer Learning para buscar imagens, é necessário primeiro compreender o funcionamento geral do sistema de busca visual da plataforma. O Pinterest emprega uma abordagem avançada que combina visão computacional, processamento de linguagem natural (NLP) e técnicas de aprendizado de máquina para oferecer resultados relevantes e precisos aos usuários.
Quando um usuário faz uma pesquisa visual no Pinterest, o sistema recebe uma imagem de consulta e a submete a um processo de pré-processamento. Durante esse pré-processamento, a imagem é redimensionada e normalizada para garantir consistência nos dados de entrada. Em seguida, a imagem é codificada em um formato numérico que pode ser compreendido pelos modelos de aprendizado de máquina.
O próximo passo é onde o Transfer Learning entra em ação:
O Pinterest utiliza modelos de aprendizado profundo pré-treinados em grandes conjuntos de dados de imagens, como o ImageNet, para extrair características relevantes das imagens. Esses modelos foram treinados para reconhecer uma ampla variedade de objetos, padrões e contextos visuais em imagens gerais. No entanto, esses modelos pré-treinados não foram treinados especificamente com os dados do Pinterest.
Para adaptar esses modelos pré-treinados ao contexto específico do Pinterest, é aplicada a técnica de Transfer Learning. Isso envolve ajustar os pesos das camadas finais do modelo para que sejam mais relevantes para as características específicas das imagens presentes na plataforma. Essa adaptação é realizada através do treinamento adicional com um conjunto de dados interno do Pinterest, que contém milhões de imagens pinadas pelos usuários juntamente com suas descrições e metadados associados.
Durante o treinamento adicional, os modelos são expostos a uma grande variedade de imagens e suas correspondentes descrições e metadados. Isso permite que os modelos aprendam a associar características visuais das imagens com os termos de busca fornecidos pelos usuários. Por exemplo, um modelo pode aprender que determinados padrões visuais estão associados a termos como “moda”, “decoração” ou “culinária”, com base nas descrições das imagens.
Após o treinamento, o modelo ajustado é capaz de extrair características relevantes das imagens de consulta e compará-las com as imagens do banco de dados do Pinterest. Isso é feito utilizando técnicas de similaridade de características, como a similaridade de cosseno ou distâncias euclidianas, para encontrar as imagens mais semelhantes à imagem de consulta, e nesse processo, passando se necessário pelas etapas comentadas dentro das estratégias de aprendizado do modelo.