Incorporar Conhecimento de Domínio

Como construir modelos de Machine Learning personalizados

Nos bons velhos tempos, trabalhar como engenheiro de aprendizagem automática significava dedicar 95% do tempo à engenharia de características e 5% ao treino de modelos com as características extraídas. Este era um processo que exigia muito trabalho manual e era demorado, o que normalmente levava a provas de conceito pouco flexíveis, que dificilmente podiam ser adaptadas a novos contextos. Felizmente, o Aprendizagem Profunda veio em socorro e, agora, utilizando grandes quantidades de dados e um pré-processamento simples dos mesmos, é possível treinar algoritmos que produzem previsões melhores do que as abordagens clássicas.

Para entender melhor como isto foi um divisor de águas, apresentamos o seguinte exemplo. Imagine que tem de criar um modelo para identificar a espécie de planta com base numa fotografia de uma folha. Usando a metodologia antiga, as tarefas de visão computacional que precisa de aplicar para extrair características relevantes parecem uma lista interminável: remoção de fundo, aplicação de filtros para deteção de contornos, aplicação de filtros para características texturais, cálculo de distribuições de cor, cálculo da forma do recorte da folha, deteção, máscara e extração de características das nervuras da folha, etc. Após a aplicação do pré-processamento, estas características estariam prontas para alimentar o seu classificador. Para obter as características corretas e um classificador preciso, precisaria de semanas ou mesmo meses de trabalho intensivo.

Hoje em dia, para obter resultados iguais ou até melhores, basta usar uma Rede Neural Convolucional pré-treinada e ajustá-la com as suas imagens e rótulos. Este processo pode ser feito numa única tarde.

O Deep Learning trouxe-nos uma nova era tecnológica, de facto. Com um pequeno esforço, podemos construir modelos que superam o desempenho humano, e a palavra-chave para o fazer é dados. Mas e se tivermos apenas alguns milhares de pontos de dados? E se os nossos dados não forem uma representação justa da população? E se o conhecimento humano sobre o negócio for maior do que os nossos dados? Nesse caso, é hora de incorporar o conhecimento de domínio nas nossas Redes Neuronais Profundas (DNN)!

Ao incorporar conhecimento de domínio, encontramos um ponto médio onde compreendemos o negócio, compreendemos a tecnologia e elevamos a tecnologia ao negócio, em vez de simplificar o negócio para se adequar à tecnologia.

Kelwin Fernandes

Curso

Os Fundamentos do Aprendizagem Automática

Mergulhe nos conceitos básicos de Machine Learning com o nosso curso.

Saber mais

Adicionar Invariâncias com Aumento de Dados

Como já sabemos, quanto mais dados tivermos, melhor será o desempenho das Redes Neuronais Densas (DNNs). Isto acontece porque não estamos a explicar às nossas DNNs como devem aprender as coisas; elas simplesmente fazem as suas inferências a partir do que veem.

Por exemplo, se quisermos treinar um modelo para detetar gatos, não dizemos ao modelo para procurar um mamífero pequeno com quatro patas, bigodes, cauda comprida, orelhas pontiagudas e com ou sem pelo. Em vez disso, mostramos fotografias de diferentes gatos e o modelo começa a aprender como é um gato. No entanto, se apenas mostrarmos fotografias de gatos pretos ou de gatos sentados num sofá, o nosso modelo poderá “pensar” que essas características são relevantes para detetar um gato e não será capaz de detetar gatos quando essas condições não estiverem presentes.

Neste exemplo, queremos construir um modelo invariante à cor, ao fundo, à pose do gato e a quaisquer outras condições que não sejam relevantes para a tarefa de deteção de gatos, utilizando pequenas quantidades de dados. Uma forma de o fazer é através da utilização de Aumento de Dados.

Com Data Augmentation, podemos usar a mesma imagem repetidamente, aplicando transformações aleatórias ou específicas que não comprometem a tarefa. Desta forma, se quisermos construir um modelo invariante a certas condições, devemos manipular essas condições nos dados originais para criar novos pontos de dados.

Usando o exemplo de deteção de gatos, para tornar o nosso modelo invariante, poderíamos aplicar diferentes transformações a imagens, por exemplo, zoom out, distorção, rotação, manipulação de contraste, manipulação de brilho e manipulação de fundo (subtraindo o fundo original e usando-o como um ecrã azul para novos contextos). Com estas transformações, é mais fácil para o modelo aprender o que é relevante e o que não é.

O que não fazer? Lembre-se, Aumentar Dados é relevante para fornecer algum Conhecimento de Domínio ao modelo, portanto, seja inteligente ao aplicá-lo. Não aplique transformações aleatórias apenas para aumentar o número de pontos de dados. Em vez disso, certifique-se de que as transformações que está a aplicar façam sentido dentro do seu domínio. Por exemplo, quando estiver a aplicar zoom às suas imagens, não aplique zoom em excesso, pois poderá remover o seu gato da imagem. Também não aplique zoom em excesso, pois acabará com alguns pixels a representar o seu gato.

Para além de Data Augmentation, pode também usar Aumento de Saída. Esta abordagem consiste em usar dados aumentados como entrada e a previsão média desses dados como saída. Desta forma, a previsão final não está condicionada às variâncias de entrada.

 

Adicionar Invariâncias com Redes Neuronais Profundas Adaptadas

Outra forma de adicionar invariâncias a modelos DNN é manipulando a própria Rede Neural, o que pode ser feito utilizando diferentes abordagens. Neste artigo, apresentamos 3 exemplos de adaptação de DNN através da manipulação da função de perda, kernels e arquiteturas.

Manipulação da Função de Perda

A função de perda é usada para penalizar o modelo quando ele se desvia do alvo. Neste caso, o nosso objetivo é obter previsões precisas e invariantes. Portanto, podemos usar a função de perda a nosso favor penalizando as variâncias. Por exemplo, usar uma função de perda desta forma (f(x) – f(ax+b))^2, onde x é o valor da característica, ajuda o modelo a ser invariante a transformações lineares.

Manipulação de Kernels

Na secção anterior, vimos que podemos adicionar invariâncias a iluminação e contraste com Aumento de Dados. Outra forma de adicionar estas invariâncias é aplicando normalização local. Podemos fazer isto pré-processando ou manipulando alguns kernels de CNN para realizarem normalização local e congelando essa(s) camada(s) durante o treino.

Arquiteturas Personalizadas

Uma invariância difícil de adicionar em CNNs está relacionada com pose. Uma representação 2D de um objeto 3D está sempre associada a uma pose, ou seja, a uma translação e uma rotação. Este conceito não é novo para o cérebro humano, que é capaz de desconstruir uma representação 2D e compará-la com objetos no mundo real (3D). De facto, o nosso cérebro está tão habituado a realizar Gráficos Inversos que até se deixa enganar por ilusões óticas.

Pelo contrário, as CNNs não conseguem fazer estas associações espaciais, visto que parte dessa informação se perde com o max pooling. Para superar este problema, Geoffrey Hinton criou uma arquitetura de CNN inovadora onde os neurónios são substituídos por cápsulas, criando o conceito de Redes de Cápsulas.

Em resumo, as cápsulas realizam complexas computações internas e encapsulam o resultado em formato vetorial. Este vetor tem uma direção e um comprimento; o comprimento representa a probabilidade de uma determinada entidade estar presente e a direção representa as características do espaço, incluindo pose, iluminação e deformação.

Atualmente, o custo computacional para treinar uma Rede de Cápsulas é demasiado elevado para computadores pessoais, mas fique atento e continue a procurar arquiteturas que melhor se adequem às suas necessidades.

 

Adicionar Invariâncias de Grupo

Em alguns casos, poderá ter variâncias relacionadas com alguns grupos (raça, género, idade, país). A associação do ponto de dados a um (ou mais) destes grupos pode ser irrelevante para o seu modelo ou mesmo injusta. Para evitar isso, uma opção é realizar um Voto Médio abordagem que assegura a invariância de grupo. Pode também consultar a nossa apresentação sobre Justiça na IA para mais sugestões.

Como mostra a imagem acima, este método consiste em duas partes. Em primeiro lugar, treina-se um modelo diferente para cada grupo e, em seguida, calcula-se a previsão média para obter o resultado final.

Desta forma, temos modelos variantes combinados para computar uma previsão invariante.

 

Remover Invariâncias

Nas secções anteriores, vimos como adicionar invarianza às DNN. Contudo, existe uma invarianza que já vem integrada nas CNNs, devido à sua arquitetura: a invarianza à translação. Esta característica pode ser útil para um grande número de tarefas. No entanto, em alguns casos, é relevante saber a posição do objeto em relação à imagem.

Por exemplo, na colposcopia, cada imagem é centrada no colo do útero, ou.

Para evitar que os kernels convolucionais ignorem a informação posicional, podemos passar essa informação para as CNNs como canais adicionais. Por exemplo, adicionar 3 canais extra onde cada pixel assumiria o valor da sua linha, da sua coluna e da sua distância ao centro, respetivamente.

 

Forçar Comportamento Monótono

Neste ponto, já vimos como adicionar invariâncias às DNNs e como removê-las a nosso favor. Nesta secção, veremos como manipular as variâncias do modelo.

Em alguns problemas, temos conhecimento de domínio suficiente para saber o que esperar quando uma determinada característica é modificada. Por exemplo, na previsão de vendas, quando mais nada muda, é seguro assumir que uma diminuição de preço levará a um aumento nas vendas.

Contudo, nos dados do mundo real, existe mais do que uma única variável a ser modificada, o que torna mais difícil para o algoritmo aprender essas correlações esperadas. Por exemplo, no setor da hotelaria, durante a época alta, normalmente tanto os preços como as vendas aumentam. Não obstante, não existe aqui uma relação de causa e efeito. Neste caso, ambos os efeitos são causados pelo aumento da procura.

Para ajudar o modelo a compreender melhor estas correlações, podemos forçá-lo a ter um Comportamento Monótono. Wilson Silva, et al. propuseram uma metodologia eficaz e intuitiva para o fazer num papel com a nossa colaboração. A sua abordagem consiste em dividir as características monotónicas das características não restritas e fazê-las seguir dois fluxos diferentes, como mostrado na figura abaixo. Um fluxo é concebido para características não restritas e consiste numa DNN convencional. O segundo fluxo, concebido para características monotónicas, consiste numa DNN onde os pesos foram forçados a ser positivos. No final, os dois fluxos independentes concatenam-se para dar a saída final.

Voltando ao exemplo anterior, com esta abordagem, é possível garantir que um aumento de preço influenciará sempre negativamente a previsão de vendas, independentemente da estação ou de exceções nos dados do comboio.

Tem cuidado ao utilizar esta técnica! Lembra-te de que estás a transmitir Conhecimento de Domínio; não forces um comportamento monotónico se não tiveres 100% a certeza do efeito das características.

 

Curso

O Espectro do Machine Learning

Para dominar mais estratégias de machine learning, consulte o nosso curso.

Saber mais

 

Conclusão

O Deep learning revolucionou a inteligência artificial? Sim! É agora mais fácil obter melhores previsões com menos esforço? Também sim! É possível para um macaco treinar uma DNN? Alguns podem responder “sim” a esta pergunta, mas essa não é a nossa opinião. As DNNs nunca devem ser tratadas como caixas pretas; em vez disso, devemos entender o que realmente está a acontecer dentro delas para tirar o máximo proveito delas.

Além disso, nunca subestime a inteligência humana e o conhecimento específico! Combine-os com os seus modelos para os melhorar e a si mesmo.

Se for um programador, não se esqueça de experimentar isto em casa!

Se pretender integrar o Conhecimento de Domínio e as abordagens anteriores não se adequam ao seu problema, ligue-nos e encontraremos uma solução em conjunto.

Rafael Cavalheiro NILG.AI

Quer discutir esta ideia mais a fundo?

Marcar uma reunião com Rafael Cavalheiro

Conhece o Rafael Saber mais

Gosta desta história?

Subscreva a Nossa Newsletter

Ofertas especiais, últimas notícias e conteúdo de qualidade na sua caixa de entrada.

Registar publicação única

Consentimento(Obrigatório)
Este campo destina-se a fins de validação e não deve ser alterado.

Artigos recomendados

Article
Desbloqueie o Crescimento com a Previsão do Valor do Tempo de Vida do Cliente

Desbloqueie crescimento real com a previsão do valor do tempo de vida do cliente. Aprenda modelos chave, necessidades de dados e roteiros de implementação para resultados estratégicos.

Read More
Article
Estratégia de Transformação Empresarial: O Seu Guia para 2026

Domine a sua estratégia de transformação empresarial com o nosso guia de 2026. Aprenda a executar roteiros de IA, evitar armadilhas e impulsionar o crescimento.

Read More
Article
Um Guia Estratégico para IA Generativa para Transformação Empresarial

Desbloqueie o crescimento real com o nosso guia de IA generativa para transformação empresarial. Aprenda a construir um roteiro, a encontrar casos de uso de alto valor e a medir o retorno do investimento em IA.

Read More