| O aprendizado de máquinas pode ser grandemente auxiliado adquirindo vantagem
disponível a partir de dicas inteligentes. Por Yaser S. Abu-Mostafa, professor de engenharia elétrica e ciência da
computação no Instituto de Tecnologia da Califórnia e chairman da NeuroDollars,
uma empresa baseada na Califórnia. Recebeu sua graduação na Universidade do Cairo em
1979, seu mestrado no Instituto de Tecnologia Georgia em 1981, e o seu doutorado na
CalTech em 1983. Hoje, ele lidera um Grupo de Sistemas de Aprendizagem na CalTech e serve
como um dos principais investigadores para o Centro da Fundação Nacional de Ciência
para Engenharia Neuromórfica de Sistemas. Tem sido consultor no Citybank desde 88.
Publicou largamente nas áreas de teoria da aprendizagem, redes neuronais, reconhecimento
de padrões, teoria da informação e complexidade computacional.
Suponha a seguinte questão: Por que um elefante é grande, escuro e tem uma forma
esquisita? Porque se ele fosse pequeno, branco e redondo, ele poderia ser uma aspirina.
Esta resposta pode causar riso a ouvidos humanos, mas ela poderia prover informação
importante para um sistema que tentasse distinguir elefantes de aspirinas. O conhecimento
que nós normalmente obtemos não está disponível para máquinas, a menos que ele seja
cuidadosamente codificado. Para as máquinas, aprender não é nada fácil.
A despeito das dificuldades,
machíne learning é uma das tecnologias que mais cresce hoje em
dia. Os últimos anos assistiram a uma explosão de aplicações variando
desde leitura automática de CEP escrito a mão, até a previsão de assentos
necessários na aviação. Realmente, da última vez que você recebeu um cartão
de crédito bancário, existem boas chances que o seu crédito tenha sido
estabelecido por uma máquina que aprendeu como avaliar riscos creditícios.
E no futuro as máquinas que aprendem tendem a crescer cada vez mais.
Desenhar um programa de computador para manusear um serviço particular
invariavelmente demanda conhecer este serviço, e como seus problemas podem
ser resolvidos. Machine learning por seu turno, tem um apelo fundamental.
Ao invés de escrever um programa especializado, pode-se simplesmente prover
um treinamento adequado baseado em exemplos para que a máquina possa aprender
sozinha.
Um sistema creditício com auto-aprendizado, poderia, por exemplo, usar
dados históricos sobre "bons" e "maus" pagadores para
basear seus julgamentos. A máquina não toma conhecimento sobre os detalhes
do problema. Tudo o que a máquina faz é receber pares de dados (a entrada
= informações pessoais e a saída = comportamento de crédito) e absorver
quais informações esta relação contém. A máquina treinada serve para avaliar
novos postulantes. Este tipo de procedimento, permite que a automação
galgue um novo patamar além dos que usualmente conhecemos. Ele não se
aplica apenas a computadores que fazem tarefas repetitivas, ele automatiza
o verdadeiro problema de desenhar o sistema que fará tais tarefas.
Podemos, em princípio, aplicar a metodologia de machine learning
para uma gama larga de problemas. Se, entretanto, os pares entrada-saída
deixam de ter alguma informação essencial, a máquina pode falhar em adquirir
proeficiência. Afortunadamente, podemos acrescentar a informação que falta
na forma de uma dica inteligente. As dicas usadas em machine learning
variam desde observações simples até conhecimento sofisticado.
Em aplicações de visão computacional, por exemplo, no qual o objetivo
é reconhecer objetos, existem muitas dicas do tipo "invariantes".
(Por exemplo, um homem ou mulher terá sempre cabeça, 2 braços e 2 pernas).
A dica pode ser de que o objeto permanece o mesmo quando ele troca de
posição no campo visual, ou quando ele muda de tamanho. Em aplicações
do mercado financeiro, existem muitas dicas monotônicas. Por exemplo,
se a entrada consistentemente aponta em um sentido ou direção, a saída
deve consistentemente mover-se nessa direção. Cada aplicação particular
tem suas próprias dicas que podem ajudar o processo de aprendizado.
Em primeiro lugar, se alguém conhece o suficiente sobre um problema para
poder dar dicas à máquina, que necessidade temos de machine learning?
Por que não empregar este conhecimento para escrever um sistema especialista
para essa tarefa? Em certas ocasiões, pode-se fazer isso, mas é verdade
que é muito mais fácil falar sobre aspectos de um problema do que especificar
um método sobre a sua solução de acordo com um jogo de regras bem .definido.
As aplicações variam entre os dois extremos: problemas estruturados que
são totalmente definidos e que não requerem exemplos, e problemas randômicos
que são completamente
indefinidos e dependem inteiramente de treinamento através de exemplos
para obterem soluções. Machine learning usando dicas inteligentes é a
maneira de tratar todo o (vasto) meio de campo.
Paradigma de machine learning
Como as máquinas aprendem? Muitos modelos diferentes têm sido propostos.
Tipicamente a implementação usada deverá ter uma estrutura geral muito
próxima à do problema, mas deverão ter, também, muitos parâmetros livres,
que poderiam ser encarados como os diais e botões de um rádio. Os valores
destes parâmetros determinarão como a máquina vai funcionar em última
instancia. Diferentes valores produzirão resultados completamente diferentes.
O comportamento da máquina pode ser visto matematicamente como uma função
que associa valores de entrada (os específicos do problema a ser resolvido)
com valores de saída correspondentes (as decisões ou ações a serem tomadas).
O objetivo em machine learning é fazer a máquina emular a função
objetivo, o mapeamento desejado entre entradas e saídas. Podemos usar
exemplos de treinamento da função objetivo para guiar a seleção dos valores
para os parâmetros livres da máquina. Com cada exemplo, a máquina refina
seus valores internos, de tal modo que ela casa as entradas e as saídas
apropriadamente. Quando a máquina encontra um conjunto de valores que
corresponde tão perto quanto possível ao da função objetivo, ela efetivamente
"aprendeu". O machine learning é simplesmente a pesquisa
da melhor posição para os diais e botões. Já que a pesquisa é guiada por
exemplos de treinamento, este paradigma é chamado, com razão, aprendizado
através de exemplos.
A forma mais largamente utilizada para machine learning é as
chamadas redes neurais. Tais redes foram inspiradas no poder dos sistemas
neurobiológicos. Eles consistem de muitos elementos computacionais interconectados
de tal maneira que a saída de cada elemento influi na entrada de todos
os demais. Os parâmetros ajustáveis de uma rede neural são chamados pesos
sinápticos baseados na sua contrapartida biológica, as sinapses que conectam
as células nervosas no cérebro. A flexibilidade das redes neurais e a
simplicidade do seu treinamento têm feito delas o modelo para machine
learning nos últimos 10 anos. Redes neurais agora encontram uso em um
largo espectro de aplicações. Ainda que eletrônica especializada e mesmo
redes óticas tenham sido construídas, em muitos casos a implementação
de uma rede neural simples, é um programa rodando em um computador pessoal
ou em uma workstation.
Com todo o treinamento requerido, nós podemos imaginar a necessidade de
longas e tediosas sessões de treinamento, supervisionando o aprendizado
da máquina. Afortunadamente, a responsabilidade de encontrar o ponto de
ajustamento ótimo recai usualmente sobre o próprio algoritmo de aprendizado,
um método que reduz o aprendizado a uma série de etapas repetitivas que
o computador pode executar independentemente. Um dos sistemas de aprendizado
mais comuns usados atualmente é o algoritmo de backpropagation
para treinar redes neurais. Esta técnica foi popularizada primariamente
por David Rumelhart enquanto estava na Universidade da Califórnia em San
Diego.
Backpropagation usa cálculos simples para decidir quando trocar
os parâmetros de uma rede neural. Ele toma um treinamento a partir de
um exemplo, (a entrada e a correspondente saída) e faz pequenas modificações
dentro da rede para minimizar a diferença entre a resposta real dada pela
rede e aquela que era esperada. Essa etapa é repetida e repetida fazendo
com que a rede aos poucos se aproxime do efeito desejado. Após passar
por todos os exemplos diversas vezes, a rede pode replicar a função objetivo
de maneira razoavelmente boa.
Deixe-nos mostrar como este trabalho poderia ocorrer no sistema de aprovação
de limites creditícios. Um par entrada-saída poderia ser o conjunto de
dados oferecidos pelo candidato a tomador (como idade, salário e estado
civil) e seu eventual desempenho financeiro, bem como a resposta do banco
(se o crédito foi ou não concedido). Uma rede neural treinada para dar
limites, poderia idealmente predizer o comportamento do indivíduo apenas
olhando para os dados providos por ele. Para aprender esta função, a rede
teria que receber milhares de casos reais de pessoas que tomaram empréstimos,
e isto permitiria à rede modificar seus parâmetros internos para aproximar
suas previsões com os registros históricos.
Alguns dos parâmetros variáveis poderiam estar relacionados com salário
e poderiam fazer a rede fornecer empréstimos a pessoas que ganham mais.
Outros poderiam estar relacionados à idade ou o estado civil, favorecendo
combinações particulares destes atributos. Eventualmente, a rede estaria
pronta quando fornecesse as respostas corretas a muitos exemplos. Agora
a rede pode ser usada para analisar pedidos "frescos" ( ' não
exemplos, e sim reais) pela extrapolação de sua experiência para prever
como os novos usuários se comportarão com o crédito cedido.
Aprendendo com dicas inteligentes
Sejam implementados em redes neurais ou em algum outro método, todos os
processos de machine learning compartilham este mesmo paradigma
de aprendizado por exemplos. Para que a máquina aprenda com sucesso, ela
deve ser capaz de generalizar a partir dos exemplos limitados com os quais
ela foi treinada. Será que os exemplos de treinamento fornecem suficiente
informação para a máquina a fim de que ela possa estudar todos os novos
casos? Talvez não. O fato da máquina ter sido bem treinada com os exemplos,
não necessariamente implica que ela trabalhará igualmente bem em algum
caso que ela nunca tenha visto.
Relembremos que a máquina não conhece nada sobre a função que ela está
tentando aprender exceto o que ela pode ver nos dados de exemplo. Se os
dados são deficientes - há muito poucos exemplos de treinamento, ou muita
informação irrelevante contida dentro deles - a máquina talvez não possa
generalizar apropriadamente. Ou os exemplos não vão cobrir todas as informações
importantes. Suponha, por exemplo, que eu estou tentando treinar um computador
em visão, para reconhecer árvores. Eu certamente não terei capacidade
de especificar como reconhecer uma árvore em termos matemáticos exatos,
então eu não posso estruturar o problema e dar à máquina regras rígidas
a aplicar. Se eu simplesmente mostrar à máquina figuras de árvores e de
objetos que não são árvores, eu estou dando tal informação, mas eu ainda
não estou dizendo nada que eu saiba sobre o problema. Por exemplo, eu
sei que uma árvore permanece uma árvore mesmo que ela seja deslocada no
campo de visão da máquina, ou tenha seu tamanho aumentado ou diminuído.
Pessoas fazem isso muito bem, mas as máquinas não, a menos que sejam especificamente
instruídos a isso. Sem essas dicas, a máquina poderia precisar de um longo
tempo, se é que isso seria possível, para encontrar tal espécie de "entendimento".
Mesmo uma simples dica pode incrementar em muito o aprendizado. Como no
famoso jogo do adivinha, no qual as respostas a 10 ou 20 questões elementares
podem reduzir significativamente a pesquisa, algumas poucas dicas podem
fazer a diferença entre aprender a função e não aprendê-la completamente.
Para tomar partido desta situação, introduzi um formalismo chamado "aprendendo
com exemplos" seis anos atrás, e desde então ele tem se tornado uma
feature de muitos sistemas de machine learning. O mais notável
avanço
deste approach está em sistemas automáticos de comercialização
em mercados financeiros e em sistemas para o reconhecimento de caracteres
manuscritos.
O problema de cessão de crédito também pode se beneficiar de dicas inteligentes.
Admite-se que é difícil definir o que define exatamente uma pessoa ser
um "bom risco" ' mas uma dica é óbvia. Se duas pessoas são idênticas
(nesse âmbito) exceto que uma ganha menos do que a outra, e a máquina
aprova o crédito para a que ganha menos, ela também deveria aprová-lo
para a que ganha mais. Esta é uma das multas possíveis dicas monotônicas
(que crescem no mesmo sentido). Enquanto a máquina está aprendendo, deveria
ser possível estabelecer os parâmetros livres da rede de tal maneira que
os pares entrada-saída sejam satisfeitos, mas que igualmente o comportamento
ditado pelas dicas o seja.
Uma aplicação de aprendizado que meus colegas e eu conduzimos no nosso
Grupo de Sistemas de Aprendizado no Instituto de Tecnologia da Califórnia,
é na área de mercados de câmbio mundiais. Nós executamos um experimento
que prevê a taxas de câmbio do dólar em relação a quatro moedas estrangeiras.
Procuramos testar se os resultados do sistema poderiam ser melhorados
quando injetamos dicas ditadas pelo bom senso dentro do processo de aprendizagem.
A dica usada refletia uma simetria que era óbvia para nós: se um dado
padrão na história dos preços implica em certos movimentos (para cima
ou para baixo) em dólares comparados com moedas estrangeiras, a moeda
estrangeira deveria se mover da mesma maneira se tal padrão surgisse na
sua própria história. Os resultados do experimento foram um sucesso. Nos
quatro mercados a dica da simetria garantiu ao sistema um incremento consistente
em seu desempenho.
Para assegurar que a melhoria no programa da rede neural foi obtido a
partir das informações contidas na dica da simetria, nós rodamos o sistema
com duas alternativas. A primeira foi uma dica não informativa, dando
à máquina peças randômicas de informação desconexa. Para nossa satisfação,
a máquina não melhorou. A performance foi similar a de quando não havia
dica nenhuma. Depois, fornecemos dicas que davam à máquina informações
deliberadamente errôneas. A performance deteriorou rapidamente, como podíamos
esperar. A dica inteligente realmente ajudou.
Implementando as dicas
O principal desafio para usar dicas em machine learning está em automatizar
o processo. Dicas aparecem em diversas formas, elas variam desde as mais
sutis até as mais óbvias. Como orquestrar o aprendizado a
partir de muitas peças de informação passadas pelas tais dicas?
Primeiro, todas as representações de dicas devem ser padronizadas, para
garantir que o algoritmo de aprendizagem possa trabalhar com todas elas
no mesmo ritmo. A chave para conseguir tal intento vem da própria representação
da função objetivo: os pares de entrada-saída servidos como exemplos.
Devemos dizer para à máquina: quando eu entrar tal e tal coisa, você deve
responder com qual e qual resposta. A identidade de exemplos de entrada-saída
distingue completamente uma função objetivo de outra. Similarmente, se
pudermos representar cada uma das dicas desejadas através de um conjunto
de exemplos, não teremos nenhum problema com o tipo de dica que pretendemos
introduzir.
Para representar a dica da monoticidade na aprovação de crédito, o exemplo
deveria tomar a forma de duas pessoas com idênticos dados, exceto o salário.
Quando os dois são apresentados à máquina, sua resposta poderia concordar
com a dica (aprovando os dois, rejeitando os dois, ou aprovando apenas
o crédito para o maior salário), ou poderia discordar da dica (aprovando
apenas o de menor salário). O algoritmo de aprendizado deve ajustar os
parâmetros da máquina para satisfazer a dica, exatamente como ele faria
para incorporar mais um exemplo à sua função objetivo. Aprendizado a partir
de dicas, desta maneira segue o mesmo caminho de outros mecanismos de
aprendizagem.
O interessante é que os exemplos representando as dicas não precisam ser
reais. Os dois solicitantes de empréstimo poderiam ser hipotéticos ou
casos virtuais. A vantagem de usar exemplos virtuais é que eles não requerem
que a máquina faça decisões corretas sobre uma pessoa real, mas que apenas
ajam de maneira consistente com a dica. O princípio pode, também, aplicar-se
à dica simétrica no sistema de câmbio, exemplos virtuais podem ser construídos
a partir de padrões de preços que nunca ocorreram na história. Para a
tarefa de reconhecer padrões visuais, podemos representar dicas de invariância
usando desenhos de objetos que não têm nada a ver com a função objetivo
real. O treinamento para este caso não exige que a saída da máquina seja
boa ou ruim, apenas que permaneça consistente com a entrada devidamente
transladada ou com tamanho aumentado ou diminuído.
Exemplos virtuais são extremamente importantes em muitas aplicações porque
eles podem adicionar informação importante completando lacunas que os
exemplos reais não podem fornecer. No sistema de câmbio, por exemplo,
os dados reais são limitados a um pequeno conjunto de padrões de preços
recentes. A capacidade de suplementar os padrões históricos com dados
adicionais é o grande valor. A única preocupação que resta agora, é encontrar
uma função de aprendizagem que consiga fazer o correto balanço entre as
dicas e os dados reais.
O balanceamento
O algoritmo de aprendizagem deve ser capaz de ajustar os parâmetros da
máquina para concordar inteiramente com os dados de entrada e com todos
os exemplos de cada dica. Mas uma solução perfeita normalmente é impossível,
então algum tipo de compromisso deve ser encontrado. Para encontrar este
objetivo, a máquina precisa ser informada de quão próximo chegou a ele
em cada etapa. Durante o processo de treinamento algumas dicas podem ser
aprendidas melhor do que outras. Mas, se o computador conseguir informar
qual dica foi efetivamente aprendida, ele pode prestar mais atenção a
ela na próxima iteração. Este é o conceito chamado Minimização Adaptativa
que eu desenvolvi para gerenciar diferentes dicas de forma a encontrar
um equilíbrio entre elas e os exemplos reais.
O algoritmo de minimização adaptativa é "adaptativo" no sentido
de que ele constantemente avalia quão bem a máquina está satisfazendo
a ambos: as dicas e os dados reais, e continuadamente atualiza seus parâmetros.
O termo "minimização" reflete que o algoritmo está tentando
todo o tempo minimizar a medida quantitativa do erro entre as ações da
máquina e o comportamento esperado para ela.
Ainda que eu tenha começado o trabalho nesta área com multas das idéias
básicas na cabeça, eu tenho que admitir que minha primeira descoberta
veio da necessidade, ao invés de vir na forma de "estalo". Eu
tinha sido convidado a apresentar o esquema de dicas em um encontro de
cientistas da computação, e apenas um dia antes da apresentação, eu fui
avisado que teria 10 minutos a mais, além do tempo anteriormente acordado.
O pensamento de ter meus assistentes embaraçados com uma sessão menor
do que a prevista, fez com que eu passasse toda a noite anterior vendo
como eu poderia expandir o algoritmo objeto de minha apresentação. Pela
manhã, a idéia da minimização adaptativa chegou até mim, e no dia seguinte
eu consegui fazer uma bela apresentação, muito bem recebida. Eu duvido
que a minha audiência soubesse quão recentes eram aqueles resultados.
Impedimentos à aprendizagem
Ainda há muitos problemas que sobram na questão de aprendizado de máquinas.
Talvez a falha mais grave seja a tendência das máquinas de "sobreaprender"
a partir dos exemplos do treinamento, alguns deles podendo comprometer
a habilidade da função objetivo trabalhar corretamente. "Sobreaprendizado"
ocorre quando a máquina memoriza os exemplos de treinamento ao preço da
generalização. Você poderia encontrar uma situação similar (e irônica)
se viajar ao Egito e pegar um tour para ver as Pirâmides. Alguns guias
locais darão uma elaborada narrativa para o tour, em inglês, e podem responder
questões comuns a respeito dos faraós de maneira perfeita. Se você, encorajado
por esse desempenho, resolver perguntar outras coisas, ficará surpreso
ao ver que eles não falam inglês. Eles memorizaram as sentenças necessárias
para o tour mas não generalizaram o aprendizado. Máquinas podem sofrer
o mesmo fenômeno.
Outro problema comum em sistemas complexos de machine learning
é o tempo excessivo de computação. Como o algoritmo de treinamento pesquisa
o valor ótimo para parâmetros livres (chamado ótimo global), ele multas
vezes obtém uma configuração pobre (chamada ótimo local), que é melhor
que soluções similares, mas não é a melhor teoricamente possível. Não
existe uma maneira eficiente para encontrar ótimos globais de forma genérica.
Foi demonstrado que algumas tarefas de aprendizado são NP-completas, um
termo técnico que caracteriza uma classe de problemas computacionais que
requerem tempos imensos de processamento para encontrar ótimos globais.
Na prática, entretanto, a solução não costuma sofrer. Uma performance
satisfatória requer apenas que a máquina encontre um bom ótimo local.
A despeito da existência de tais dificuldades, a machine learning provou
ser uma ferramenta importante na solução de uma larga classe de problemas
do mundo real. Era um ponto clássico de pesquisa muitas décadas atrás,
mas ele tem sido reinventado e expandido em anos recentes. Com a adição
da aprendizagem via dicas e outros avanços técnicos que estão vindo, a
machine learning certamente ainda estará muito presente nos dias
que nos resta viver.
kantek@celepar.gov.br

|