IBLBrowser – Uma Ferramenta de Aprendizado de Máquina que Implementa a Família de Algoritmos IBL

Descrição do IBLBrowser

Este aplicativo foi desenvolvido com o objetivo de apoiar o ensino de algoritmos de Aprendizado de Máquina (ML).  Ele foi desenvolvido em Smalltalk em diferentes, amplamente espaçados, surtos de criatividade, entre os anos de 2002 e 2015.  Ele foi desenvolvido com a intenção de produzir uma ferramenta que demonstra o funcionamento de algoritmos da Família-IBL e NÃO realizado com quaisquer critérios sérios de usabilidade em mente.  A Interface Gráfica de Usuário (GUI) é uma colcha de retalhos de de botões, sliders e campos de texto e valores. Este aplicativo também NÃO é uma implementação de IBL para a aplicação de ML a problemas do mundo real: ele opera apenas com os exemplos acadêmicos nele embutidos.

Respire fundo e use do jeito que está. Alternativamente, você pode melhorá-lo e me enviar o resultado de seus esforços…

Background:

Este software, em várias encarnações, tem sido usado desde 2002 na disciplina INE 5443 Reconhecimento de Padrões (Pattern Recognition  – site antigo [aqui])  oferecida na 7ª fase do Curso de Bacharelado em Ciências da Computação da UFSC. O uso do software na  disciplina foi introduzido objetivando o ensino de técnicas simbólicas básicas de reconhecimento de padrões ao exemplo de algoritmos tradicionais de aprendizado de máquina, como a família IBL.

IBL1

IB1 sem ruído

IBL3.1

IB3 com muito ruído

O Código:

  • GitHub repository contendo 3 versões da aplicação:
    • os fontes como  VisualWorks 8.0 package
    • os fontes como classes Smalltalk inidivuais (Programadores Squeak atenção: isto é código  Smalltalk com referências de classes de interface VisualWorks GUI …)
    • um imagem VisualWorks 8.0 de 32 bit (com .changes)

Comentário: Por que não Squeak? Eu sou um desenvolvedor Smalltalk (Veja meu Livro [aqui]) desde fins da década de 1980 e todo o meu Doutorado, durante a primeira metade dos anos 1990, foi desenvolvido em  ParcPlace Objectworks Smalltalk. Utilizar um Smalltalk diretamente compatível com o  ParcPlace Smalltalk original, foi para mim uma decisão de design óbvia. Assim eu optei por usar  Cincom Smalltalk como o herdeiro de ParcPlace Visualworks. Eu sei que é um produto e não é totalmente compatível com as atuais implementações de software livre de Smalltalk como Squeak, mas foi muito mais fácil para mim desenvolver com Cincom VisualWorks, que possui ferramentas de desenvolvimento profissionais, do que usar as interfaces de desenvolvimento no estilo Apollo/Domain Smalltalk 80 v 2.5 anno 1988 de Squeak. Eu ficarei feliz se alguém portar este código IBL para Squeak Smalltalk e eu o postarei aqui também.

Uso:

1. Gerando Dados de Treinamento

Você pode gerar conjuntos de dados de  espirais duplas com e sem ruído. IBLBrowser sempre gera 360 pontos de dados, 180 em cada classe.

Parâmetros:

  • O Noise Level é o ruído máximo, expresso em pixels, que será usado na geração da espiral dupla.
  • O botão de rádio Probability escolhe a distribuição de probabilidade utilizada para gerar o ruído para os padrões de treinamento:
    •   niform – gerador de números aleatórios com distribuição uniforme usando a faixa de valores de ruído diretamente (sempre expressa em pixels)
    • normal – usa uma distribuição normal com sigma de 0.399  e x  no intervalo [0.0  0.5] .
  • O sigma da distribuição de probabilidade usada para a geração dos padrões de treinamento pode ser setado com o controle deslizante (slider) , permitindo parametrizar o espalhamento dos pontos.

2. Treinando com IBL

O software permite treinar IB1, IB2 ou IB3 (IB4 e IB5 não fazem sentido em um domínio com apenas duas variáveis).

A versão de IB pode ser selecionada no botão de rádio no centro da interface.  Padrões aprendidos aparecerão como pontos de tamanho  dotsize na área de desenho central.

O primeiro padrão incluso no Descritor Conceitual será sempre desenhado em uma cor diferente, uma vez que ele é escolhido aleatoriamente e não treinado.

Além disso, é importante observar:

  • Quando treinando com IB1, padrões classificados erroneamente aparecerão como pontos vermelhos, senão a cor pertencente à sua classe será utilizada;
  • Quando treinando com IB2, a cor utilizada para todo padrão plotado é a cor da classe a que o padrão de treinamento pertence, uma vez que apenas padrões incorretamente classificados serão selecionados;
  • Quando treinando com IB3, padrões descartados serão coloridos como pontos vermelhos, assim você pode visualizar onde descartes ocorreram. Aceitação é calculada usando z = 0.60. Este valor pode ser modificado nos controles deslizantes correspondentes na interface.

3. Modos de Operação durante o Treinamento

Existe um conjunto de botões de rádio que define políticas de operação para o processo de treinamento, principalmente para IB3:

  • Stepwise – quando em IB3, a simulação pausa sempre que ocorrer:
    • um padrão aceitável ou
    • um descarte (se descarte houver sido selecionado)

    IBL-step

  • Verbose – um log dos passos de treinamento é transcrito no campo de texto direito (transcript). Vai lentificar consideravelmente o processo de treinamento.
  • Allow dropping – habilita descarte de padrões de treinamento considerados classificadores  inúteis. Dropping PIs e FIs usam z = 0.90. Este valor pode ser modificado nos controles deslizantes correspondentes.
  • Accept n=0 – Você pode escolher se padrões do Descritor Conceitual CD que nunca foram usados antes para classificação são aceitáveis como referências classificatórias para o aprendizado de novos padrões. Como os seus PIs serão infinitos em função de n=0, isto é, em teoria, possível. É porém uma questão de interpretação da teoria do algoritmo IB3. Minha experiência pessoal é que o aprendizado adquire viés se você ignora completamente padrões que não foram usados antes.
  • Policy for Non Acceptance – seta a política a ser usada quando nenhum padrão aceitável for encontrado. Existem as seguintes políticas:
    • first – mais similar é usado (pode introduzir viés)
    • random – um padrão aleatório é escolhido do DC
    • weighted – um padrão aleatório é escolhido do DC com probabilidades ponderadas por classe, de forma que a probabilidade grosseira de uma instância de uma determinada classe ser escolhida é igual para todas as classes (evita viés de classe)

4. Testando

O botão de rádio Data seleciona qual conjunto de dados é mostrado na caixa de visão de lista abaixo dele:

  • Default é o DC.
  • Untrained mostra padrões ainda por treinar e, após uma simulação ter rodado, deveria estar vazio. Se você delecionar untrained e  pausar uma similação em modo Stepwise clicando inspect na janela de diálogo que abre na pausa, você vai poder ver quais padrões ainda se encontram na lista por treinar.

Clique em test e o IBLBrowser vai sistematicamente testar todo o espaço de padrões e colorir todo pixel com a classificação do ponto no espaço de padrões que representa. Este processo vai desenhar as superfícies de decisão  [exemplo do manual de MathWorks] que foram aprendidas durante a sua simulação.

O que é uma superfície de decisão?

Observe o exemplo da distribuição das três espécies da flor do gênero Iris, de acordo com os parâmetros: largura de sépalas e comprimento de sépalas, que já usamos em sala de aula:

Decision_Surface_01

Se desenharmos as superfícies de decisão para as três espécies, de acordo com essas duas variáves, usando diferentes métodos de classificação elas vão ficar assim (MathWorks):

Decision_Surface_02

No IBLBrowser você vai ver superfícies de decisão de uma espiral dupla, com padrões classificados usando IB1, IB2 ou IB3.

5. Continuando uma simulação pausada

Se você pausou uma simulação no modo Stepwise  usando o botão inspect na janela de diálogo que abre a cada passo, você pode sempre continuar clicando o botão play na janela inspector/halt.

IBL-step

6. Ajuda

Clicando no botão About abre-se uma janela de ajuda, que repete as instruções contidas aqui:

IBL-about

================================================
Este trabalho é distribuído sob a GNU GENERAL PUBLIC LICENSE GPLv3
================================================
Modified versions should be marked as changed AND the Author should
be notified and receive a copy of thesse modifications.

Any scientific work or other kind of publication using this software or the
results produced by it should mention it and its Author.

Aldo von Wangenheim, (c) 2002 – 2015
mailto:awangenh@inf.ufsc.br
mailto:aldo.vw@ufsc.br
http://www.incod.ufsc.br
http://www.inf.ufsc.br/~awangenh

================================================

Links úteis para o novato em IBL/ML:

SÁ LISBOA, F. O. S. ; NICOLETTI, M. C. . A Família de Algoritmos Instance-Based Learning (IBL). 1997. (Relatório de pesquisa) http://www.inf.ufsc.br/~patrec/bibliografia/Ibl.pdf

David W. Aha, Dennis F. Kibler, Marc K. Albert. Instance-Based Learning Algorithms. Machine Learning 01/1991; 6(1):37-66. DOI:10.1023/A:1022689900470. https://www.researchgate.net/publication/220343419_Instance-Based_Learning_Algorithms

David W. Aha, Dennis F. Kibler. Noise-Tolerant Instance-Based Learning Algorithms. Proceedings of the 11th international joint conference on Artificial intelligence – Volume 1; 01/1989 https://www.researchgate.net/publication/220814591_Noise-Tolerant_Instance-Based_Learning_Algorithms

David W. Aha. Tolerating noisy, irrelevant and novel attributes in instance-based learning algorithms.  International Journal of Man-Machine Studies 02/1992; 36(2):267-287.

Marc K. Albert, David W. Aha. Analyses of Instance-Based Learning Algorithms. Proceedings of the 9th National Conference on Artificial Intelligence, Anaheim, CA, USA, July 14-19, 1991, Volume 2.; 01/1991.

Sobre o Autor

possui graduação em Ciências da Computação pela Universidade Federal de Santa Catarina (1989) e Doutorado Acadêmico (Dr. rer.nat.) em Ciências da Computação pela Universidade de Kaiserslautern (1996). Atualmente é professor Titular da Universidade Federal de Santa Catarina, onde é professor do Programa de Pós-graduação em Ciência da Computação e dos cursos de graduação em Ciências da Computação e Sistemas de Informação. Tem experiência nas áreas de Informática em Saúde, Processamento e Análise de Imagens e Engenharia Biomédica, com ênfase em Telemedicina, Telerradiologia, Sistemas de Auxílio ao Diagnóstico por Imagem e Processamento de Imagens Médicas, com foco nos seguintes temas: analise inteligente de imagens, DICOM, CBIR, informática médica, visão computacional e PACS. Coordena o Instituto Nacional de Ciência e Tecnologia para Convergência Digital - INCoD. Foi o criador e primeiro Coordenador do Núcleo de Telessaúde de Santa Catarina no âmbito do Programa Telessaúde Brasil do Ministério da Saúde e da OPAS - Organização Pan-Americana de Saúde e criador do Núcleo Santa Catarina da RUTE - Rede Universitária de Telemedicina.