Escrito em
Estatística e Inteligência Artificial

Abstração em Aprendizagem de Máquina

Introdução

A heurística é um recurso comum em abordagens relativamente informais sobre qualquer tópico. Ela nos ajuda a compreender uma ideia geral do problema, seu propósito e semântica. Dar exemplos é uma maneira muito efetiva de ilustrar ideias. Crianças fazem muito isso, bem como adultos. Quando não conseguimos conceituar algo, é comum apelarmos para algo mais concreto. Como quando Ruby Rod chama o Padre Vitor Cornélios e pergunta: Padre, o que é essa coisinha com números?, ao se referir a uma bomba, lá no filme O Quinto Elemento.

A linguagem abstrata é mais trabalhosa de se lidar, mas ela amplia o horizonte de possibilidades da comunicação, evitando ambiguidades que provavelmente comprometeriam o processo comunicativo. E quando desejamos comunicar nossas ideias, o que menos queremos é criar mal-entendidos. Na ciência, a comunicação é uma etapa importantíssima da investigação, afinal, o conhecimento precisa ser distribuído, para servir ao maior número possível de propósitos, bem como ser ampliado por outras mentes. Além disso, a abstração serve ao propósito de desvincular um modelo de seu contexto, fazendo com que ele possa ser estudado de forma mais geral, servindo em outras situações.

Um exemplo disso, uma equação diferencial, na física pode ser utilizada para modelar o movimento de um corpo celeste ou a propagação do calor em uma superfície qualquer. Em biologia, por outro lado, poderia ser utilizada para modelar a propagação de uma rede de fungos sobre determinado local, ou ainda, a proliferação de bactérias em ambientes com abundância de recursos. Mas para que isso seja possível, precisamos de um conjunto de resultados relacionados à equações diferenciais, como teoremas sobre existência, unicidade e etc. É mais fácil deduzir tais resultados, bem como encontrar outros, se eliminarmos coisas desnecessárias que só fazem sentido quando aplicamos o modelo em uma situação real. Na matemática, a abstração é tudo, é o que faz dela a rainha.

Essa lição, naturalmente, se aplica na área de aprendizado de máquinas. Um novo algoritmo que um grupo de cientistas acaba de propor, um novo modelo de rede neural, uma nova metodologia de seleção de características, todos, provavelmente, serão trazidos à público utilizando uma linguagem abstrata, indiferente às realidades de cada possível aplicação.

Um pequeno exercício

Façamos uma descrição do que é o problema de aprendizagem. Temos um conjunto de dados e uma lei matemática que relaciona as variáveis ali apresentadas, de modo que, ao conhecermos a lei que relaciona os dados, podemos fazer previsões fora daquele conjunto de dados. Por exemplo, suponha que o conjunto de dados diz respeito à contagem de acidentes em uma rodovia, bem como as condições climáticas no horário de cada acidente, bem como condições do veículo do condutor e do tráfego.

Queremos prever a possibilidade de um acidente considerando todas essas características. Então, existe uma função, desconhecida tal que, fornecendo todas as informações relacionadas, ela nos daria a chance de ocorrer um acidente nesse instante com determinado veículo e condutor. O objetivo do aprendizado estatístico é estimar tal função. Uma vez obtida essa estimativa, utilizamos novos dados para prever novos acidentes.

O problema em linguagem matemática?

Considerando o problema que apresentamos, vejamos como formalizá-lo em linguagem matemática. Seja $\textbf{x}$ o conjunto das informações disponíveis sobre o clima, veículos, condições de pista, tráfego e condutores no momento dos acidentes e seja $f:\mathcal{X} \rightarrow \mathcal{Y}$ a função desconhecida que queremos estimar, ou seja, a função que nos dá a probabilidade de ocorrência de acidentes em uma rodovia de acordo com os dados conhecidos.

Aqui, $\mathcal{X}$ é o espaço de todos os valores possíveis de $\textbf{x}$ e $\mathcal{Y}$ é o espaço de todas as saídas possíveis, nesse caso, probabilidade de haver acidente. Temos também o conjunto de dados contendo o histórico de acidentes, relacionado entradas e saídas, no caso de um problema supervisionado. Denotamos o conjunto de dados de entrada e saída por $\mathcal{D} := \{(\textbf{x}_1,y_1),\dots,(\textbf{x}_N,y_N)\}$, de modo que $y_i = f(\textbf{x}_i)$ para $i=1,\dots,N.$ Aqui, $N$ é o número de acidentes sobre os quais temos dados disponíveis.

Finalmente existe um algoritmo que toma os pontos de dados de $\mathcal{D} $ e encontra uma função $g:\mathcal{X} \rightarrow \mathcal{Y}$, tal que $g$ é uma aproximação da $f$ desconhecida. O algoritmo escolhe $g$ de um conjunto de funções possíveis, o qual denominamos espaço de hipóteses e que é indicado por $\mathcal{H}$. O espaço de hipótese depende diretamente do problema. Em nosso caso, é o conjunto dos mapas $g(\textbf{x})\in(0,1)$, já que estamos modelando uma função objetivo que retorna uma probabilidade.

Quando novos dados forem fornecidos, o algoritmo vai estimar a probabilidade de ocorrência de acidentes através de $g$, pois $f$ ainda é uma função desconhecida. Uma hipótese importantíssima, nesse problema de aprendizagem, é a de que os dados são uma amostra de variáveis independentes, e identicamente distribuídas, vinda de uma distribuição de probabilidade desconhecida. É essa suposição que dá sentido ao problema. Graças a isso, podemos fazer predições de $f$ usando a função $g$ para dados que não estão em $\mathcal{D}$.

Ao aproximarmos $f$ por $g$ no conjunto $\mathcal{D}$, buscamos minimizar o erro de treinamento, o qual definimos como $\mathbb{E}_{\mathcal{D}}[|f-g|]$, ou seja, o erro esperado da diferença entre $f$ e $g$. Quanto melhor for a aproximação, menor será o erro. Esse é o Erro de treino $E_{in}$ e ele é calculado no conjunto de treino, por isso o subscrito $\mathcal{D}$ foi incluso na esperança.

Overfitting

Além disso, temos também o erro no conjunto de teste, ou seja, naquela parte da amostra que separamos para ver quão bem a função $g$ adere a $f$. Indicamos o erro no conjunto de teste como $E_{out}$. A notação é similar a anterior, o importante é notar que o calculamos para o conjunto de teste. Fazemos isso como uma forma de avaliar quão bem o modelo poderá ser generalizado para dados novos.

Uma questão importante no problema de aprendizagem é o overfitting. Ele ocorre quando a função $g$ que estimamos fica sobre-ajustada aos dados disponíveis. Isso quer dizer que $g$ fará ótimas predições dentro do conjunto de treino, mas gerará alto valor para o erro no conjunto de teste. Isso indica que não basta buscar diminuir o $E_{in}$, temos que olhar para a complexidade das funções candidatas. Quanto mais complexo for o espaço de hipótese $\mathcal{H}$, maior o risco do modelo sofrer sobre-ajuste, prejudicando seu desempenho quando posto em produção. Diminuir a complexidade do espaço de hipótese, usar técnicas de validação e regularização são maneiras usuais de contornar esse problema.

Considerações Finais

Por mais que a abordagem heurística ajude-nos a entender o problema, bem como o método de resolução proposto, argumentamos nesse texto que a abstração torna as abordagens mais gerais e flexíveis, facilitando a comunicação do problema e da solução. Um bom cientista deve ser capaz não só de fazer novas descobertas, mas também de comunicá-las à comunidade acadêmica e ao público geral.

Leia também