Inteligência Artificial: muito além dos robôs de conversação

A matéria a seguir foi publicada  no Jornal do Commercio (JC) em 11/08/2025 (link).

O desbravar de caminhos para alcançar inteligência além do ser humano remonta a um passado distante dos tempos modernos. Na mitologia grega, Talos, um autômato gigante de bronze, foi concebido por um deus para proteger a ilha de Creta. Talos é provavelmente a primeira máquina inteligente documentada. 

Da Grécia antiga para os dias atuais, a Inteligência Artificial (IA) deixou de ser um assunto apenas relacionado à ficção científica para permear nosso cotidiano. Ao fazer uma busca no Google, somos auxiliados por algoritmos que usam IA. Recomendações de filmes, de livros ou de músicas, nas mais diferentes plataformas, são trabalhos realizados por IA. O acesso ao celular ou aos caixas eletrônicos de bancos usando a impressão digital, a face ou a palma da mão, também é uma tarefa desempenhada por IA. A lista é longa e inclui jogos, redes sociais, sistemas de saúde e financeiro, propaganda, transporte, compras online, só para dar alguns exemplos. Ou seja, artefatos que usam IA já permeiam nosso cotidiano faz algum tempo e, em muitos casos, não estamos cientes de que existe uma IA por trás do processo. 

A percepção do público sobre IA vem mudando ao longo do tempo. Embora seja unânime seu poder transformador na sociedade, alguns enxergam um imenso potencial positivo, já outros veem o copo meio vazio. Interagir com um computador super-avançado, como o HAL 9000, do filme “2001: uma Odisseia no Espaço”, despertava o imaginário popular e, esta realidade, começou a se materializar com o advento de assistentes virtuais como Siri, Cortana e Alexa.

Porém, a visão geral do que é IA começou a se modificar de maneira mais evidente ao final de 2022, com o lançamento do ChatGPT. Agora dispomos de robôs de conversação capazes de realizar diferentes tarefas que, no passado, eram atribuídas apenas a humanos, tais como: resolução de problemas, resumo de documentos, escrita de programas de computador e de cartas, análise de dados e criação de imagens e de vídeos. Tudo isso como se estivéssemos conversando, batendo um papo, com um amigo. Logo, esta forma simples de nos comunicarmos com esses robôs gera uma maior visibilidade da existência de IA, além de aproximar essa realidade da sociedade de forma mais ampla. Esta novidade provoca diferentes sensações e é motivo de debate não apenas entre especialistas, mas por boa parte da sociedade. 

Depois do ChatGPT, ferramentas similares surgiram: Gemini e Deep Seek, entre outras. Esta diversificação de ferramentas amplia as possibilidades de uso e, por consequência, expande a percepção de suas capacidades. Tais ferramentas têm o propósito de processar linguagem natural, ou seja, dispõe de capacidade de “entender” um comando, seja de texto ou de voz, e de produzir uma resposta. Muitos setores da sociedade, empresas públicas ou privadas, já se beneficiam de tais ferramentas e a tendência é de maior e melhor adesão. 

Mas, vale a ressalva de que IA não é apenas um robô de conversação ou um grande modelo de linguagem (LLM, do inglês). Vai muito além! É importante estarmos cientes disso, pois só assim podemos aprofundar a discussão sobre o impacto dessas tecnologias em nossas vidas; pois existem vários aspectos éticos e legais envolvidos. Munidos de tal discernimento, podemos avançar no uso e na construção de ferramentas e de processo educacionais que nos auxiliem a extrair o que de melhor essas novas tecnologias têm a nos oferecer.

Graduação em Inteligência Artificial no CIn-UFPE, uma necessidade que agora é realidade

No início de maio/2025, iniciou-se o curso de graduação em Inteligência Artificial do CIn-UFPE. A matéria a seguir foi publicada  no Jornal do Commercio (JC) em 19/05/2025 (link).

Inovações no campo da Inteligência Artificial (IA) continuam a moldar a forma como construímos a nossa sociedade. A IA é cada vez mais mencionada e discutida, tanto no ambiente profissional quanto em momentos de lazer. Em outras palavras, a IA permeia o nosso cotidiano, independente se estamos cientes ou não de sua existência.

A Inteligência Artificial é um ramo da Ciência da Computação que tem o objetivo de construir máquinas capazes de realizar tarefas que tradicionalmente requerem inteligência humana, tais como raciocinar, aprender e agir. Como exemplos, temos acesso a diversas aplicações que habilitam os computadores a manipular imagens e vídeos, a ouvir comandos de voz e a respondê-los, a gerar, resumir e traduzir textos, a analisar e extrair informações de grandes quantidades de dados de maneira automática. Para que esta “mágica” ocorra, existem pessoas por trás dos bastidores escrevendo programas de computador.

Diante da franca expansão da área IA, os atuais cursos de computação não comportam mais a diversidade de conhecimento necessária para termos especialistas nesta emergente área. Daí, urge a necessidade de um novo curso com uma maior carga horária focada nas tecnologias que envolvem os domínios de ferramentas e de métodos de IA.

Todas essas aplicações e tecnologias de visão computacional, de processamento de linguagem natural e de ciência de dados fazem parte da grade curricular do novo curso. Os egressos do curso terão conhecimento sobre os fundamentos da IA, como ela funciona, como usá-la e quais seus riscos. Além disso, formaremos profissionais capazes de desenvolver as mais diferentes ferramentas e tecnologias relacionadas à IA, e que conseguem não só entender como essas ferramentas funcionam, mas também, como desenvolvê-las de maneira ética e segura.

IA é o curso de graduação caçula do Centro de Informática (CIn) da UFPE que já conta com os cursos de Ciência da Computação, de Engenharia da Computação e de Sistemas de Informação. O dia-a-dia dos alunos será ainda mais rico com a integração entre os quatro cursos que têm a computação como base, além do convívio com alunos de mestrado, de doutorado e de especializações, e várias outras atividades proporcionadas pelo CIn-UFPE aos seus alunos. 

Ciente de que as inovações em IA evoluem rapidamente, o bacharelado em IA possui nove semestres recheados com um conteúdo atual, avançado e flexível que permitirá a especialização dos alunos nas mais diversas áreas relacionadas à IA. O curso de graduação em Inteligência Artificial nasce olhando para o futuro, com o objetivo de formar profissionais capacitados não só para lidar com as tecnologias atuais, mas, principalmente, formar profissionais preparados para o alvorecer das mudanças que constantemente nos avizinha.

George Darmiton da Cunha Cavalcanti
Coordenador do Bacharelado em Inteligência Artificial
Membro da Academia Pernambucana de Ciências
Professor Titular do CIn-UFPE

DeepSeek traz novas perspectivas para a corrida pela liderança em inteligência artificial 

Texto publicado no Jornal do Commercio (JC) em 17/02/2025 (link)

Chatbots, como o ChatGPT, Gemini, entre outros, revolucionaram a forma como lidamos com diversas tarefas relacionadas ao processamento de linguagem natural — tecnologia de inteligência artificial (IA)capaz de interpretar, manipular e compreender a linguagem humana, seja falada ou escrita. 

O alicerce atual para essas ferramentas são grandes modelos de linguagens (large language models (LLM), em inglês). Até então, um dos desafios para a construção de LLMs residia no custo para treiná-las. Estima-se que o custo para o treinamento do GPT-4 da OpenAI tenha ultrapassado os 75 milhões de dólares. Logo, o desenvolvimento de tais ferramentas estava fora do alcance da maioria das empresas. 

Esse status quo foi colocado à prova com o lançamento do aplicativo de chatbot DeepSeek R1, produto de uma empresa chinesa, especializada em inteligência artificial, fundada em 2023. A DeepSeek afirma que o custo de treinamento de sua ferramenta foi de, aproximadamente, 6 milhões de dólares (menos de 10% do custo do GPT-4). E mais, o DeepSeek obteve desempenho superior em algumas tarefas, tais como  matemática e raciocínio, quando comparado ao GPT-4, por exemplo.

Este é mais um curioso caso no qual restrições podem exercer um poder transformador. O aplicativo R1 foi desenvolvido em um momento de sanções de exportação de chips de computadores dos Estados Unidos para China; chips amplamente usados para a produção de programas de inteligência artificial que precisam de muito processamento e que lidam com muitos dados. Logo, os engenheiros de software da DeepSeek propuseram inovações que culminaram em um modelo que necessita de um décimo do poder computacional de um LLM equivalente. 

Daí emerge uma novidade: dispomos de um chatbot rápido, mais barato e que ainda apresenta desempenho comparável aos principais concorrentes. Se isso não bastasse, o R1 adota uma tecnologia de pesos aberta, na qual qualquer pessoa pode usar e modificar o programa de computador para atingir seus objetivos.

Vale salientar que a DeepSeek não surgiu por acaso. Emergiu de um plano com metas governamentais chinesas para atingir a liderança mundial em IA. Plano esse norteado por investimentos em formação de especialistas em inteligência artificial, infraestrutura, desenvolvimento industrial e pesquisa científica avançada. 

A DeepSeek também se destaca pela descrição detalhada de seus métodos em artigos científicos e pela estratégia de ciência aberta. Mas, ferramentas dessa natureza, seja ChatGPT ou DeepSeek, extraem informações de dados e não são imunes a um potencial viés — seja de gênero, de etnia, de orientação sexual ou outro. Além do mais, tais modelos são tão bons quanto os dados que foram usados para construí-los. Outra preocupação reside na privacidade dos dados. Lembrando que dados são a matéria-prima dessas ferramentas.

Certo é que a liderança das gigantes americanas foi chacoalhada e que muitos outros modelos vão surgir em breve, mais baratos e melhores. A jornada está só no início!

Detecção de discurso de ódio & Inteligência Artificial

Parte do texto a seguir foi publicado no Jornal do Commercio (JC) em 10/06/2024 (link)

A primeira rede social a atingir um patamar de um milhão de usuários foi a MySpace, em 2004. Muitas outras redes sociais surgiram de lá para cá e, atualmente, Facebook, YouTube e WhatsApp possuem mais de 2 bilhões de usuários cada uma. Em menos de duas décadas, testemunhamos um rápido crescimento e, dada nossa presença maciça nessas redes, não é à toa que a forma como as usamos esteja moldando diversos aspectos do nosso comportamento. 

As mudanças abrangem não apenas as formas como nos comunicamos e trabalhamos, mas também a forma como aprendemos e nos divertimos, além de diversas outras áreas da interação entre humanos, entre máquinas e entre ambos. Estamos conectados, online e aprendendo a lidar com tal novidade.

Avançamos e nos apropriamos de diversas vantagens dessa nova realidade. Mas, vale destacar que a fácil disseminação e a crença de anonimato fazem das mídias sociais um ambiente bastante utilizado para a propagação dos mais diversos assuntos. Entre eles, destaca-se o discurso de ódio que pode ser definido como ataque ou ameaça a outras pessoas motivados por raça, gênero, nacionalidade, orientação sexual, entre outros.

As redes sociais rejeitam o discurso de ódio em seus contratos e indicam que contas/usuários que promovam esse tipo de discurso podem sofrer sanções. Entretanto, o volume de postagens nessas redes é imenso. Só o X (antigo Twitter) veicula, em média, seis mil postagens por segundo, ou seja, 500 milhões de postagens todo dia. Estes são dados de apenas uma rede social.  Logo, a ideia de se ter intervenção humana, com a finalidade de verificar possíveis infrações, torna-se inviável.

Além da dificuldade associada ao volume, a tarefa de indicar se um discurso é de ódio ou não requer pessoas especializadas, pois um discurso muitas vezes pode ser confundido com sarcasmo, humor, ou linguagem ofensiva que, em muitos casos, pode ser protegida por lei. Dadas essas especificidades, realizar a moderação das postagens em redes sociais usando humanos é um trabalho desafiador, além de lento e não escalável. Logo, é necessário automatizar o processo e repassar a tarefa para programas de computador que são facilmente replicáveis e respondem rapidamente.

A tarefa de detectar discurso de ódio pode ser descrita de maneira simples: dado um conteúdo, deseja-se que o sistema responda sim, se o conteúdo contiver discurso de ódio, e não, caso contrário. Mas, a computação tradicional, determinística e que trabalha segundo regras estáticas, não se apresenta como uma ferramenta adequada para a tarefa em questão.

Daí emerge a aprendizagem de máquina, que é um ramo da Inteligência Artificial capaz de aprender a partir de dados. Ou seja, ao invés de ser explicitamente programada com regras extraídas de especialista humanos, as máquinas de aprendizagem capturam informações diretamente dos dados (postagens contendo ou não discurso de ódio) de maneira autônoma e automática, sendo assim, capazes de lidar com a incerteza inerente ao processo, além de poderem ser ajustadas para se adaptar às mudanças. 

As redes sociais já se valem de máquinas que aprendem para detectar e tentar impedir a disseminação de discurso de ódio. Porém, ainda há bastante espaço para ajustes e melhorias, pois a detecção automática de discurso de ódio é uma tarefa desafiadora e mal-definida; ainda não há consenso sobre como discurso de ódio deve ser definido. Logo, o que é discurso de ódio para uns pode não ser para outros e, tais definições conflitantes criam um ambiente desafiador para a avaliação de tais sistemas. Dentre os muitos os desafios para o avanço desta tecnologia, é possível destacar os seguintes:

Rotulagem: as máquinas de aprendizagem precisam de dados para discernir quais discursos são de ódio e quais não são. Essa triagem e construção de um corpus que será apresentado à máquina é uma tarefa inicialmente delegada aos humanos. Ao rotular um discurso em ódio ou não-ódio, humanos levam consigo seus preconceitos para o corpus que alimentará a máquina de aprendizagem que, por sua vez, será ineficaz no tratamento dessas incorretudes.  Assim, é desejável minimizar o viés desse processo de rotulagem e, para tal fim, comitês diversos, formados por pessoas especializados, devem ser compostos.

A natureza da linguagem: a linguagem é uma entidade viva e, por conseguinte, mutante. Logo, os algoritmos de aprendizagem de máquina precisam de adaptar a tais mudanças e, para tanto, requerem intervenção humana para indicar quais novas formas de expressão devem ser classificadas como discurso de ódio. 

Portabilidade: uma máquina de aprendizagem desenvolvida para uma dada língua, não se aplica diretamente a outras línguas. Mas do que isso, uma máquina, que foi ajustada para uma região de um país grande como o nosso, precisa levar em consideração regionalismos para realizar uma melhor predição e, tais detalhes, podem prejudicar a predição para outras regiões, mesmo sendo a mesma língua em todo o país.

Interpretabilidade: o processo que leva uma máquina de aprendizagem a tomar uma decisão ao invés de outra, muitas vezes, é indecifrável para humanos. Logo, tornar tais máquinas interpretáveis, pode proporcionar maior credibilidade e confiança ao processo; além de gerar questionamentos que podem ser utilizados para melhorar a precisão dessas mesmas máquinas.

Neste cenário, é promissor vislumbrar estratégias capazes de sinergicamente integrar algoritmos e pessoas, capturando o melhor de cada um.

Transformers: a tecnologia por trás do ChatGPT

Sistemas que extraem informações de grandes quantidades de textos (large language models – LLM) têm despertado os mais diferentes sentimentos e atiçado o interesse de variados setores da sociedade. Um exemplo de LLM é o ChatGPT que conseguiu atingir a incrível marca de mais de um milhão de usuários em apenas cinco dias após seu lançamento.

Embora o ChatGPT tenha causado bastante “barulho” nos últimos meses, a tecnologia que o tornou possível vem sendo desenvolvida há tempos.

A “magia” por trás do ChatGPT deve-se, principalmente, a um tipo de arquitetura de rede neural artificial chamada de Transformers que foi lançada num artigo da Google de 2017 intitulado Attention is all you need. Lembrando que o T da sigla GPT significa Transformer; Generative Pre-trained Transformer (GPT).

A arquitetura do Transformer (mostrada na figura acima) é composta de vários módulos e parece complicada de início, porém, notem que vários módulos se repetem. Neste post, foco nas três principais inovações que tornaram essa tecnologia realidade:

  • Positional encoding;
  • Attention;
  • Self-attention.

A primeira, positional encoding, objetiva atribuir ordem as palavras de uma sentença quando apresentadas a modelos de aprendizagem de máquina. Já as duas seguintes, attention e self-attention, buscam pelas partes (palavras) mais importantes das sentenças. Mais detalhes a seguir.

Positional encoding

A ordem das palavras numa sentença importa. Logo, ao apresentar uma sentença a uma máquina de aprendizagem, é relevante informar para esta máquina a ordem das palavras. Esta é a tarefa do positional enconding.

De maneira simples, podemos dizer que o positional encoding atribui um número para cada palavra da sentença. Por exemplo: a frase

“Vamos jogar vôlei”

seria representada assim

[(“Vamos”, 1), (“jogar”, 2), (“vôlei”, 3)].

Esta é uma operação crucial, pois as redes neurais artificiais não levam em conta a ordem das palavras que lhes são apresentadas. Desta forma, a rede neural pode aprender que a primeira palavra está atrelada ao “1”, a segunda ao “2” e assim por diante.

Antes dos Transformers, as redes neurais recorrentes (RNN) atacaram esta questão da ordem das palavras de uma maneira diferente. Ao invés de apresentar todas as palavras da sentença de uma vez, as RNNs apresentavam uma palavra por vez à rede. Assim, a primeira palavra da sentença era apresentada à rede, em seguida, a segunda palavra e assim por diante. Mas, esta estratégia possui um alto custo de processamento e dificulta a paralelização das operações durante o treinamento da rede. Além disso, o trabalho de “entender” a ordem era atribuído à rede, no caso das RNNs, enquanto que nos Transformers, esta responsabilidade foi incorporada aos dados fornecidos como entrada para a rede.

Vale destacar que a estratégia usada no Transformer é mais sofisticada do que o exemplo mostrado acima que apenas atribuir números a cada palavra. Uma codificação usando as funções seno e cosseno, com diferentes frequências, são usadas para este fim. Mais detalhes sobre esta codificação pode ser encontrada aqui e aqui.

Attention

Antes de iniciar esta parte, lembremos que o artigo seminal do Transformer foi intitulado Attention is all you need. Logo, “attention” está no título do artigo e possui um papel crucial.

O conhecimento necessário para se chegar ao ponto que estamos em relação aos LLMs representa um aglomerado de experiências prévias. Neste sentido, o conceito de attention para a tradução foi descrito no artigo Neural machine translation by jointly learning to align and translate, em 2015.

Neste artigo, os autores destacam a importância de ter uma visão geral do texto para realizar uma tradução, por exemplo, de uma sentença do inglês para o francês de maneira mais acurada. Para ilustrar o conceito, a sentença

The agreement on the European Economic Area was signed in August 1992.”

pode ser traduzida para

L’accord sur la zone économique européenne a été signé en août 1992.”.

Perceba que quando da tradução de “European Economic Area” para “la zone économique européenne“, existe uma troca de ordem entre palavras. Além disso, francês, assim como o português, é uma língua na qual é necessário ajustar os adjetivos “économique” e “européenne” para o feminino por causa do termo “la zone“. Essas restrições dificultam bastante a possiblidade de se fazer uma tradução palavra-a-palavra de uma língua para a outra, como era comum em abordagens prévias.

Ainda no artigo de 2015, os autores mostram o heatmap, copiado acima, que relaciona cada palavra da sentença em inglês com palavras da sentença em francês. Perceba que devido à mudança de ordem das palavras de uma língua para a outra, neste heatmap, a palavra “European” está fortemente relacionada às palavras “économique” e “européenne“. Assim, este heatmap ilustra o mecanismo de attention que tem o objetivo de olhar para as diferentes alternativas quando da tradução.

Self-attention

A intuição por trás de self-attention é que nós não damos a mesma importância a todas as palavras em uma sentença. Logo, self-attention é um mecanismo que cria um relacionamento entre palavras de uma mesma sentença, com o intuito de focar em algumas, enquanto outras palavras recebem pouca atenção.

Tal mecanismo pode ajudar no processo de desambiguação entre palavras que possuem a mesma escrita e significados diferentes, por exemplo.

Observe estas duas sentenças:

“O real continua pouco valorizado comparado ao euro.”

“Isto não é real; estamos num ambiente virtual.”

A palavra real nas duas sentenças possuem significados diferentes e ao olhar para as outras palavras de cada sentença, podemos inferir o seu verdadeiro significado. Isso é realizado de maneira direta por humanos, simplesmente olhando as palavras ao redor.

Desta forma, na primeira sentença, a palavra “real” pode ser correlacionada a palavra “euro” e, assim, entende-se que o assunto trata de moedas. Já na segunda, a palavra “real” relaciona-se mais fortemente com a palavra “virtual”, e daí, inferimos que a palavra “real” não se trata de moeda, como na primeira sentença.


Não apenas o ChatGPT se beneficiou de Transformers. A lista é longa, entre elas: GPT, GPT-2, GPT-3, GPT-4, BERT, ALBERT, RoBERTa, DistilBERT e XLNet.

k-vizinhos mais próximos: uma análise

O algoritmo k-vizinhos mais próximos (do inglês, k-Nearest Neighbors – kNN) funciona da seguinte forma: dada uma instância de teste xq, o algoritmo encontra os k vizinhos mais próximos de xq no conjunto de treinamento. Em seguida, a classe de xq é dada pela classe que ocorrer com maior frequência entre os k vizinhos.

Na figura acima, são mostrados os cinco vizinhos mais próximos da instância de teste xq. Dessas cinco instâncias, 4 são da classe “+” (vermelha) e 1 da classe “0” (azul). Ao aplicar o kNN, com k=5, a instância xq é classificada como sendo da classe vermelha, pois essa classe possui mais representantes na vizinhança de xq.

Esse algoritmo possui dois parâmetros: o número de vizinhos (k) e a medida de dissimilaridade (ou de similaridade) usada para encontrar os vizinhos mais próximos. A distância Euclidiana é a medida mais amplamente usada para determinar os vizinhos, embora existam diversas opções. Em relação ao parâmetro k (número de vizinhos), várias alternativas para determinar o valor mais adequado por tarefa podem ser empregadas. Uma delas é avaliar o algoritmo kNN no conjunto de validação, adotando diferentes valores para k. O valor de k que alcançar a melhor precisão será escolhido para classificar todas as instâncias de teste.

Uma primeira diferença em relação a outras máquinas de aprendizagem, tais como árvore de decisão e multi-layer perceptron, é que, no kNN, a etapa de treinamento é caracterizada apenas pelo armazenamento das instâncias. A rigor, não há treinamento. Logo, a função que será usada para a tomada de decisão é definida em operação, analisando um subconjunto dos dados de treinamento, i.e., os k vizinhos mais próximos. Por esse motivo, pode-se dizer que o kNN é uma máquina de aprendizagem local.


Embora seja simples, vale destacar que o kNN constrói regiões de decisão não-lineares no espaço de características. Para ilustrar, a figura a seguir mostra como o espaço de características bidimensional é dividido quando emprega-se o kNN, com k=1. As linhas verdes delimitam a área de cobertura de cada uma das instâncias de treinamento (pontos pretos: x1, x2 e x3). Assim, qualquer instância de teste que se posicionar na região amarela será classificada como sendo da mesma classe da instância x1, pois essa será a instância mais próxima. Da mesma forma, instâncias localizadas na região laranja serão classificada pela classe de x2 e, na região azul, pela classe de x3.

Importante destacar que as regiões de cobertura mostradas na figura foram obtidas usando apenas um vizinho mais próximo (1NN). Ou seja, essas regiões podem ficam mais complexas ao adotar valores maiores de k. Além disso, uma caraterísticas interessante do kNN é que as regiões de coberturas podem ser facilmente modificadas ao inserir, remover ou reposicionar as instâncias.


Mas, o kNN possui algumas desvantagens:

Armazenamento: todas as instâncias de treinamento são armazenadas para posterior consulta, quando da chegada de uma instância de teste. Se o conjunto de treinamento possuir muitas instâncias, a quantidade de memória requerida para armazená-lo pode ser um problema. Uma alternativa, para aliviar essa questão, é usar algoritmos de redução de instâncias que têm o intuito de reduzir o número de instâncias no conjunto de treinamento.

Esforço computacional: a função que classificará uma instância de teste, só é definida em operação, usando os vizinhos mais próximos. Logo, o kNN requer um esforço de processamento, em tempo de execução, para vasculhar todo o conjunto de treinamento em busca dos vizinhos para cada instância de teste. Algoritmos de redução de instâncias também podem auxiliar para mitigar essa desvantagem do kNN.

Alta dimensionalidade: ao calcular a dissimilaridade (por exemplo: usando a distância Euclidiana) entre vetores que são representados por muitas variáveis, esse cálculo pode ser impreciso devido à alta dimensionalidade dos vetores. Uma maneira de atenuar essa questão é remover variáveis redundantes ou pouco relevantes, para fins de classificação, usando algoritmos de seleção ou de extração de características.


A figura a seguir mostra dois exemplos que ilustram uma instância de teste e seus cinco vizinhos mais próximos. Nesses dois exemplos, percebe-se que a instância de teste xq está bastante próxima das instâncias da classe “0” (azul). Mas, o kNN (k=5) classificará as duas instâncias de teste como pertencentes à classe “+” (vermelha), pois essa classe possui mais instâncias do que a classe azul na vizinhança de xq.

Nesses exemplos, a proximidade de xq em relação aos seus vizinhos não é levada em consideração. Apenas a quantidade de instâncias na vizinhança é usada para decidir a classe de xq. Mas, é possível encontrar variações do kNN que visam abrandar essa e outras propriedades previamente discutidas.

Combinação de classificadores: uma introdução

Ao treinar uma máquina de aprendizagem, muitos desafios espreitam o horizonte, entre eles: overfitting. Uma das alternativas para minimizar overfitting é escolher a máquina correta para a tarefa que se deseja resolver. Por exemplo: se tivermos poucos dados disponíveis, uma rede neural artificial pode não ser a melhor escolha; embora existam estratégias para gerar dados artificiais e aumentar a quantidade de dados de treinamento, tais como oversampling data augmentation. Uma escolha mais apropriada seria um algoritmo de instante-based learning, e.g., k-nearest neighbor. 

Escolher o melhor algoritmo de aprendizagem, por tarefa, é uma problema em busca de solução. Muitas abordagens que se valem de meta-learning já foram propostas, mas ainda existe muito terreno a percorrer nesse campo. Essa é uma pesquisa bem interessante e motivada, também, por um teorema de nome engraçado, mas, extremamente importante para a área, chamado de no free lunch theorem. Esse teorema nos indica que não existe uma máquina de aprendizagem que seja a melhor para todas as tarefas. Ou seja, cada tarefa tem suas peculiaridades que devem ser melhor resolvidas por máquinas que tenham características distintas. Nota: um teorema é uma afirmação provada como verdadeira; logo, essa difere de uma mera opinião.

Consequentemente, é responsabilidade do especialista em aprendizagem a escolha da melhor máquina para resolver uma nova tarefa. Mas, existe outra alternativa…

Se para cada tarefa, uma máquina deve ser escolhida, por que não unir esforços e juntar várias máquinas para resolver essa tal tarefa? Vox Populi, Vox Dei. vox-populi-vox-dei3Esse “poder das multidões” (wisdom of the crowd) é a premissa da área de Combinação de Classificadores (ensemble learning) que possui vários nomes, tais como: sistemas de múltiplos classificadores e máquinas de comitê. Esses sistemas combinam máquinas com o intuito de melhorar a precisão geral do sistema, fundamentando-se no argumento de que a junção das opiniões de um grupo de indivíduos é melhor do que a opinião de apenas um indivíduo.

Em um experimento, no início do século vinte, Sir Francis Galton — o mesmo que desenvolveu um método eficiente para classificação de impressões digitais — combinou a resposta de 787 pessoas que estimaram o peso de um boi morto e vestido. Ao calcular a média das respostas de todos os participantes, Galton observou que o erro foi menor do que um porcento (link). Ao invés de combinar as respostas de todos, Galton poderia ter escolhido o indivíduo mais competente para estimar o peso. Entretanto, essa escolha não seria uma tarefa trivial, da mesma forma que, escolher a melhor máquina de aprendizagem, por tarefa, não é uma tarefa simples. Assim, ao combinar todas as respostas, a probabilidade de escolher um indivíduo incompetente foi minimizada.

É inútil combinar máquinas que tenham o mesmo comportamento, ou seja, máquinas que acertem e errem as mesmas instâncias. Assim, ao juntar várias máquinas em um pool, é esperado que elas tenham um excelente desempenho em partes diferentes do espaço de características. Em outras palavras, é fundamental que as máquinas sejam diversas entre si. Existem várias maneiras de se obter diversidade, entre elas: usar diferentes algoritmos de aprendizagem e usar dados diferentes para treinar cada uma das máquinas.

Razões para combinar máquinas

Os aspectos que fortalecem o uso de estratégias de combinação de classificadores podem ser aglutinados em: estatístico, computacional e representacional. A figura ao lado é usada para explicar esses três aspectos. reasons-mcsNela, vê-se que o “espaço dos bons modelos”, para uma dada tarefa, é um subconjunto do “espaço dos modelos”. Esses modelos são máquinas de aprendizagem, de classificação ou de regressão, que foram treinadas com dados de uma tarefa específica. Além disso, o asteriscos (∗) representa o classificar ideal, os círculos (•) são os classificadores individuais e o triângulo (Δ) representa a combinação dos classificadores (ensemble). Objetiva-se obter um modelo o mais próximo possível do modelo ideal (∗). Nota: essa figura foi adaptada da figura 3.2 do livro da Kuncheva, 2014.

Estatístico

Na figura que mostra o aspecto Estatístico, percebe-se que o modelo combinado (Δ) está bem mais próximo do modelo ideal (∗) do que a maioria dos modelos individuais (•). Vale salientar que o modelo combinado não é o melhor, pois existe pelo menos um modelo (•) que está mais próximo do modelo ideal do que o modelo combinado. Entretanto, por melhor que seja o seu procedimento experimental, a incerteza relacionada à precisão do modelo, aferida durante o treinamento, pode levar a escolha de um modelo inadequado. Assim, ao combinar os modelos, minimiza-se a chance de selecionar um modelo ruim.

Computacional

Durante o treinamento, um modelo é levado do “espaço dos modelos” para o “espaço dos bons modelos” — conforme mostrado pelas curvas em cinza na figura do aspecto Computacional.  Cada um desses modelos (•) deve se posicionar em um mínimo local diferente da superfície de erro. Logo, a combinação desses modelos diversos gerará um modelo mais próximo do modelo ideal.

Representacional

Suponha que todos os modelos individuais (•) sejam lineares e que a tarefa, que se deseja resolver, seja não-linearmente separável. Logo, nenhum modelo, cuja representação é linear, será capaz de modelar essa tarefa. Por outro lado, ao combinar modelos lineares, regiões não-lineares podem ser modeladas. Assim, na figura que mostra o aspecto Representacional, percebe-se que o modelo combinado (Δ) está fora do “espaço dos modelos”, pois todos os modelo desse espaço são lineares e o alvo é um modelo não-linear que pode ser alcançado combinando modelos lineares. De maneira geral, regiões complexas de bordas entre classes podem ser modeladas usando modelos simples.

No próximo post, arquiteturas de combinação de classificadores — estática e dinâmica — serão discutidas.

Como evitar overfitting?

Não existe uma bala-de-prata para evitar overfitting. Boas práticas na condução de procedimentos experimentais, aliado ao entendimento do significado desse fenômeno, 99-ou-overfitting
contribuem para amenizar esse indesejável problema. Seguem alguns pontos a considerar para combater o overfitting.

treinar com mais dados

Se a máquina de aprendizagem usada é complexa, em termos da quantidade de parâmetros a ajustar, uma alternativa é adquirir mais dados com o intuito de equilibrar a quantidade de parâmetros versus a quantidade de instâncias de treinamento. Ou, simplesmente, deve-se escolher uma máquina mais simples, que tenha menos parâmetros.

validação cruzada

Uma das formas de realizar validação cruzada é usar o procedimento k-fold cross-validation. Nesse procedimento, o conjunto de dados é dividido em k partes, aproximadamente do mesmo tamanho, das quais, k-1 partes são usadas para treinar o modelo e a parte restante é usada para avaliar o modelo. Esse processo é repetido k vezes, de forma que cada parte será usada tanto para treinar como para avaliar o modelo. De maneira geral, a validação cruzada, por si só, não evita overfitting, mas segue uma boa prática ao separar o conjunto de teste e ao realizar um revezamento dos dados para uma melhor avaliação, no que tange a generalização do modelo em instâncias não vistas. Uma observação: o k-fold cross-validation não é uma boa opção quando o conjunto possui poucos dados.

parar o treinamento mais cedo (early stopping)

Máquinas de aprendizagem, tais como redes neurais artificiais, árvores de decisão, deep learning, entre outras, aprendem iterativamente. A cada passo, a máquina ajusta seus parâmetros aos dados e isso pode ser monitorado. Pode-se usar esse monitoramento para decidir qual é o melhor momento de interromper o treinamento da máquina. Espera-se que a precisão no conjunto de treinamento aumente com o tempo, mas, em relação ao conjunto de validação, a acurácia deve atingir um pico e depois cair. Esse pode ser um bom momento para frear o treinamento, antes que a máquina se sobreajuste aos dados.

regularização

Regularização é um conceito amplo que envolve várias técnicas com o propósito de produzir modelos que melhor se ajustem aos dados, evitando overfitting. Um exemplo é o procedimento de poda em uma árvore de decisão. Esse consiste em eliminar alguns “galhos” que, uma vez removidos, reduzirá a árvore, tornando-a mais simples e menos específica às instâncias de treinamento. Outros exemplos de técnicas de regularização envolvem dropout em redes neurais e adição de parâmetros de penalização na função de custo.

ensemble

Ensemble learning, ou sistema de múltiplos classificadores – SMC -,  combina as saídas de vários modelos com o intuito de melhorar a resposta final do sistema. Os SMCs têm alcançado resultados melhores do que o uso de modelos isolados. Esse sucesso deve-se a divisão de tarefas que é o espírito dessa área. Baseado no princípio de dividir-para-conquistar, cada modelo que compõe o SMC é treinado com parte do conjunto de treinamento e, consequentemente, acaba por se tornar um especialista nessa porção. Essa estratégia ajuda a amenizar o overfitting, e além disso, é robusta à presença de ruído nos dados.

 

Etapas de um sistema de aprendizagem de máquina

O desenvolvimento de sistemas, que usam algoritmos de aprendizagem de máquina, segue um fluxo diferente das abordagens tradicionais. A fonte dessa diferença reside na premissa básica de qualquer algoritmo de aprendizagem: extração de conhecimento a partir de dados históricos.  Assim, são descritas a seguir, cinco etapas para a construção de soluções que baseiam-se em aprendizagem de máquina.

etapa-1

Dado que os algoritmos de aprendizagem de máquina “aprendem” a partir de dados, a primeira etapa é a aquisição dos dados. O conjunto de informações coletadas pode ser armazenado de várias maneiras: sistema gerenciador de banco de dados, planilhas, ou mesmo em arquivo texto. Importante ressaltar que esses dados serão usados para treinar/calibrar o modelo (a máquina de aprendizagem), logo, devem representar toda a diversidade da tarefa sob investigação. Em outras palavras, não conjecture que o sistema irá classificar um pássaro como sendo beija-flor-tesoura, nome científico eupetomena macroura, se nenhum beija-flor dessa espécie está presente nos dados.

etapa-2

Os dados coletados na etapa anterior devem ser tratados com o intuito de prepará-los para o processo de treinamento do algoritmo de aprendizagem. Alguns procedimentos comuns são: seleção de variáveis, redução de instâncias, extração de características, imputação de dados faltantes e análise de outliers. Vale salientar que esse processamento, muitas vezes, está atrelado ao algoritmo de aprendizagem que será usado na etapa seguinte. Isso se dá, pois, algoritmos diferentes, possuem requisitos diferentes. Por exemplo: alguns algoritmos lidam apenas com dados que estejam representados com valores numéricos, outros apenas com valores categóricos. Logo, é necessário converter variáveis categóricas em numéricas, ou vice-versa, dependendo do algoritmo.

etapa-3

Nessa etapa, o algoritmo de aprendizagem de máquina, que melhor adere aos dados, é escolhido para treinar o modelo. Essa escolha deve levar em consideração vários pontos, entre eles: quantidade de instâncias e de variáveis no banco de dados e existência de desbalanceamento entre as classes. Além disso, deve-se atentar ao tipo de aprendizagem: supervisionado, não-supervisionada, semi-supervisionada ou por reforço. E, no caso de ser supervisionado, se o problema é de classificação ou de regressão. Dentre os modelos mais comumente usados, é possível citar: árvore de decisão, redes neurais multi-layer perceptronrandom forest, support vector machines, k-nearest neighbours, XGBoost, logistic regression, k-means, naive bayes, apriori e expectation-maximization. Por fim, vale destacar os sistemas de múltiplos classificadores (ensemble learning) que, ao invés de usar apenas uma máquina, combinam várias máquina de aprendizagem, a fim de melhorar a precisão final do sistema. 

etapa-4

O modelo treinado deve ser avaliado para que seja possível predizer sua precisão em uso. Várias medidas podem ser usadas para aferir a performance do modelo e, a escolha da medida depende da tarefa que se deseja resolver. Exemplos de medidas: acurácia, f-score e curva ROC. Vale ainda frisar que o modelo deve ser avaliado com dados diferentes dos que foram usados para treiná-lo. Assim, os dados devem ser divididos em dois conjuntos disjuntos: treinamento (usada para treinar o modelo) e teste (usado para avaliar o modelo). Quando a estimative de desempenho de um modelo, em dados nunca vistos (dados de teste), é otimista, diz-se que ocorreu overfitting. Esse é, provavelmente, o maior problema de aprendizagem de máquina.

etapa-5

Após a avaliação do modelo, caso o desempenho esperado não tenha sido alcançado, faz-se necessário aperfeiçoar o modelo. As possíveis causas dessa inadequação devem ser investigadas e, caso necessário, retorna-se para a aquisição de novos dados (etapa 1), para o processamento dos dados de um forma diferente (etapa 2) e/ou para o treinamento de um novo modelo, possivelmente, usando um algoritmo de aprendizagem diferente (etapa 3).

Como representar uma tarefa de aprendizagem de máquina: handcrafted features vs feature learning

Quando tomamos uma decisão, usamos uma grande quantidade de variáveis e de hierarquias de variáveis. Muitas vezes, nem nos apercebermos da importância dessas variáveis, pois, a complexidade de algumas decisões está além do nosso entendimento. Para ilustrar: você poderia me explicar, em detalhes, como reconhece seu amigo? Quais características, seus sistemas (visual, auditivo, …) analisam, a fim de identificá-lo com precisão?

Ok, vamos para um exemplo mais palpável. Suponha que desejamos comprar um carro. De pronto, nos vem a mente, uma série de variáveis que devemos avaliar: preço, cor, consumo de combustível, procedência, entre outras. Essas características nos ajudam a decidir, se iremos ou não comprar o carro.

De maneira similar, o conjunto de características, que apresentamos à máquina de aprendizagem, é de imperativa importância para que ela consiga tomar a melhor decisão. A escolha dessas características é uma tarefa não trivial, principalmente, quando não temos um especialista para nos ajudar no problema que desejamos resolver (e.g., comprar um carro usado sem a ajuda de um mecânico).

Em aprendizagem de máquina, essas características (features, em inglês), também chamadas de variáveis ou atributos, são fundamentais para o sucesso do processo de aprendizagem. Mas, geralmente, não sabemos quais são as características mais relevantes, consequentemente, decidimos por usar um grande número de características.  Assim, corre-se o risco de que algumas delas sejam irrelevantes ou mesmo prejudiciais para o treinamento da máquina de aprendizagem. Com o objetivo de reduzir essa quantidade de características e por conseguinte, aliviar a maldição da dimensionalidade, a alternativa mais comum é usar algoritmos de seleção de características. Esses algoritmos têm o papel de buscar o melhor subconjunto de características, a fim de realizar com sucesso, a tarefa que temos em mãos.

Mas, para selecionar características, precisamos, em primeiro lugar, ter as características. Essas características podem ser obtidas de duas formas: manual (handcrafted features) ou podem ser aprendidas (feature learning).

hand-crafted-vs-feature-learningNa primeira forma, handcrafted features, um conjunto de características é recomendado por um especialista, com a ajuda de um cientista de dados, e esse processo é chamado de feature engineering. Tal processo é mostrado no caminho superior da figura acima, no qual, o trabalho do especialista é definir as características (e/ou algoritmos extratores de características), que serão usadas para representar uma árvore. Após essa definição, um modelo é treinado, com o intuito de rotular como “árvore”, toda imagem de árvore que for dada como entrada ao sistema. Vale salientar, que se poucos especialistas estiverem disponíveis no mercado, o custo de seus serviços será alto. Todavia, mesmo se os especialistas estiverem disponíveis, a tarefa é inerentemente difícil. Não é incomum que especialistas discordem (links: 1, 2, 3, 4).

Dado que <manual> feature engineering é uma tarefa cara e difícil, como evitá-la? Uma alternativa é construir máquinas capazes de realizar essa tarefa automaticamente. Ou seja, ao invés da busca ser feita por humanos, podemos delegar a tarefa de encontrar as melhores características para um algoritmo. Esse procedimento é chamado de feature learning (mostrado como sendo o caminho inferior da imagem acima). A boa notícia é que algumas máquinas já fazem esse trabalho. Arquiteturas de aprendizado profundo (deep learning – DL) estão sendo usadas para esse fim, especialmente, para tarefas que envolvam imagens, voz e texto.

Não é à toa, que DL tem se destacado nas manchetes dos noticiários ultimamente. Ela tem obtido resultados bem superiores às handcrafted features em várias aplicações, e esse sucesso deve-se ao fato de que as características são aprendidas a partir dos dados do problema. Em outras palavras, essas características são automaticamente extraídas dos dados originais, por algoritmos que buscam minimizar o erro global do sistema. Logo, o conjunto de características gerado é dependente do problema, ou seja, são personalizadas para cada conjunto de dados de treinamento.

Ganha-se em precisão, perde-se em interpretabilidade. Essa é uma desvantagem de DL. As características aprendidas não possuem explicação conhecida no mundo real. Nesse sentido, o processo realizado pela DL, ao aprender as características, é, de certa forma, semelhante ao processo que trilhamos, por exemplo, ao reconhecer uma pessoa. Sabemos que funciona… mas não conseguimos explicar em detalhes como realizamos essa tarefa.

Outro fator limitante está relacionado à abrangência. Sabemos como aprender automaticamente características interessantes, quando os dados de entrada são imagens, voz e texto. O desafio agora é expandir esse aprendizado automático para outras aplicações, que ainda requerem a manufatura de características.