Este curso introduz a teoria da aprendizagem automática e desenvolve código Java para implementar vários algoritmos. Desta forma, aqueles que dominam programação, podem testar e entender melhor cada um dos algoritmos através da prática. Os códigos apresentados em geral privilegiam a didática em detrimento de desempenho. Na verdade, para construir aplicações reais de aprendizagem de máquina existem bibliotecas especializadas disponíveis, que inclusive procuram rodar em gpus ao invés de cpus, elevando o desempenho para um patamar maior.
Grande parte das lições vão focar no processamento de imagens. Desta forma, ao final do curso, espera-se que os alunos possam desenvolver programas da área de carros auto dirigíveis, sendo um para ambiente virtual, e outro para um pequeno robô móvel.
Apesar disso, os algoritmos estudados e desenvolvidos no curso são básicos o suficiente para possibilitar desenvolver programas de aprendizagem de máquina em suas diversas áreas de aplicação, não somente aqueles que treinam em imagens. Bom estudo!
Inicio: Introdução à Aprendizagem Automática
Ao final desta lição o aluno deverá possuir entendimento básico do que é aprendizagem de máquina, alguma intuição de
como funciona e em que áreas pode ser aplicada com bons resultados.
Clonar o projeto do curso no NetBeans IDE
Tendo como base a versão NetBeans IDE 8.2, acredita-se que os códigos deste projeto devem rodar em versões anteriores
e posteriores, demandando pouca ou nenhuma adaptação.
Ao estudar o código e em seguida testar, o aluno tem a possibilidade de aprofundar bastante seus conhecimentos.
Clonar o projeto é portanto um recurso de qualidade para o acompanhamento das lições.
Operações com matrizes utilizando JAVA
Uma revisão sobre operações com matrizes e vetores com exemplos de código Java.
Operações com matrizes e vetores são extensamente utilizadas nos algoritmos de aprendizagem de máquina.
São uma forma de acelerar e simplificar operações matemáticas na grande quantidade de dados que normalmente
utiliza-se em aprendizagem de máquina.
A base de dados CIFAR-10
Uma base de dados de valor inestimável. São 60 mil imagens classificadas em 10 categorias diferentes.
Ao utilizar uma base de dados que é utilizada também por outros pesquisadores, é possível comparar os resultados
obtidos. Isso é muito importante para os que desejam criar código confiável, com desempenho aferível.
O algoritmo do vizinho mais próximo
Um primeiro algoritmo, que não é suficientemente eficiente para usos práticos. Mas que com certeza
oferece uma introdução de classes e métodos que estarão na raiz de qualquer algoritmo mais evoluído a ser estudado no
futuro.
O algoritmo do k vizinho mais próximo
Uma tentativa de melhorar o desempenho do primeiro algoritmo, o do vizinho mais próximo. Continua não sendo suficientemente
eficiente para usos práticos. Mas que com certeza oferece um aprofundamento no código anterior, uma boa preparação para o futuro.
Classificação Linear
O NN e o KNN realizam uma classificação de alto custo, pois cada imagem a ser classificada precisa ser comparada com
todas as imagens de treino. Vamos começar a desenvolver uma solução mais eficiente, que mesmo tendo um treino de alto custo
computacional, aprende a classificar imagens com pouco esforço.