Classificação de Padrões Abordagem prática com Redes Neurais Artificiais Agenda ● ● ● ● Parte I - Introdução ao aprendizado de máquina Parte II - Teoria RNA Parte III - Prática RNA Parte IV - Lições aprendidas Aprendizado de Máquina Parte I Aprendizado de máquina? Aprendizado de máquina - machine learning - é um campo da inteligência artificial, cujo objetivo é desenvolver algoritmos capazes de aperfeiçoar seu desempenho ao realizar tarefas específicas. Exemplos de aplicações ● ● ● ● ● ● Identificar fraudes Reconhecer padrões em imagens Recomendação de conteúdo Análise de sentimentos baseada em texto Filtragem de spam em e-mails etc... Tipos de aprendizado ● ● ● Aprendizado supervisionado Aprendizado não supervisionado Aprendizado por reforço Aprendizado supervisionado ● ● Dividido em treinamento e classificação. Exemplos: Identificação de spam e reconhecimento de fraudes. Aprendizado não supervisionado ● ● Quando não existe conhecimento acerca dos dados. Exemplos: Padrões de compras e consumo, agrupamento de dados e mapeamento de perfil de usuários. Aprendizado por reforço ● ● Aplicado à sistemas dinâmicos e séries temporais. Exemplos: Forecast e previsões financeiras. Exemplos Aprendizado Supervisionado Redes Neurais Artificiais - Teoria Parte II Redes Neurais Artificiais São modelo computacionais inspirados no sistema nervoso central biológico, capazes de aprender tarefas específicas. Redes Neurais Artificiais Quando aplicadas à classificação, é uma técnica de aprendizado supervisionado, normalmente dividida em duas fases: Treinamento e Classificação. Separação dos dados Separar os dados em duas partes: ● ● 70% para treino 30% para teste Neurônio Biológico vs Artificial Características importantes ● ● O valor dos pesos são inicializados aleatoriamente A função de transferência depende do problema Treinamento - Neurônio Artificial X0 X1 X2 S. Esperada 0 1 1 0 1 1 1 1 Treinamento - Neurônio Artificial Entradas: Pesos: X0 = 0 X1 = 1 X2 = 1 W0 = 0.3 W1 = 0.1 W2 = 0.6 X0 X1 X2 S. Esperada SIGMA (função de soma): F. Transf. (Y): 0 1 1 0 1 1 1 1 U = (X0 * W0) + (X1 * W1) + (X2 * W2) U = 0 + 0.1 + 0.6 U = 0.7 SE (U > 0.5) Y=1 SENAO Y=0 Treinamento - Neurônio Artificial Entradas: Pesos: X0 = 0 X1 = 1 X2 = 1 W0 = 0.3 W1 = 0.1 W2 = 0.6 X0 X1 X2 S. Esperada SIGMA (função de soma): F. Transf. (Y): 0 1 1 0 1 1 1 1 U = (X0 * W0) + (X1 * W1) + (X2 * W2) U = 0 + 0.1 + 0.6 U = 0.7 SE (U > 0.5) Y=1 SENAO Y=0 Treinamento - Neurônio Artificial Entradas: Pesos: X0 = 1 X1 = 1 X2 = 1 W0 = 0.3 W1 = 0.1 W2 = 0.6 X0 X1 X2 S. Esperada SIGMA (função de soma): F. Transf. (Y): 0 1 1 0 1 1 1 1 U = (X0 * W0) + (X1 * W1) + (X2 * W2) U = 0.3 + 0.1 + 0.6 U = 1.0 SE (U > 0.5) Y=1 SENAO Y=0 Treinamento - Neurônio Artificial Entradas: Pesos: X0 = 1 X1 = 1 X2 = 1 W0 = 0.3 W1 = 0.1 W2 = 0.6 X0 X1 X2 S. Esperada SIGMA (função de soma): F. Transf. (Y): 0 1 1 0 1 1 1 1 U = (X0 * W0) + (X1 * W1) + (X2 * W2) U = 0.3 + 0.1 + 0.6 U = 1.0 SE (U > 0.5) Y=1 SENAO Y=0 Acertou 50%, então vamos treinar o modelo Treinamento - Neurônio Artificial Entradas: Pesos: X0 = 0 X1 = 1 X2 = 1 W0 = 0.1 W1 = 0.2 W2 = 0.3 X0 X1 X2 S. Esperada SIGMA (função de soma): F. Transf. (Y): 0 1 1 0 1 1 1 1 U = (X0 * W0) + (X1 * W1) + (X2 * W2) U = 0 + 0.2 + 0.3 U = 0.5 SE (U > 0.5) Y=1 SENAO Y=0 Treinamento - Neurônio Artificial Entradas: Pesos: X0 = 1 X1 = 1 X2 = 1 W0 = 0.1 W1 = 0.2 W2 = 0.3 X0 X1 X2 S. Esperada SIGMA (função de soma): F. Transf. (Y): 0 1 1 0 1 1 1 1 U = (X0 * W0) + (X1 * W1) + (X2 * W2) U = 0.1 + 0.2 + 0.3 U = 0.6 SE (U > 0.5) Y=1 SENAO Y=0 Treinamento ● ● Os valores dos pesos podem ser inicializados aleatoriamente, pois serão ajustados durante o treinamento O conhecimento da rede neural está contido nos pesos (um vetor) Calculando o treinamento Função de transferência - Sigmoid: Ajustando o modelo Função de custo a ser minimizada: Ajustando o modelo Derivando a função custo: Dado que o fator delta corresponde a multiplicação dos dados de entrada pelo erro (diferença entre os valores esperados e valores obtidos). Redes Neurais Artificiais - Prática Parte III Experimento Prático Experimento prático baseado em Redes Neurais Artificiais. Os requisitos são: ● ● Implementação em Python 2.7 + Instalação da biblioteca Numpy Experimento Prático O conjunto de treino possui 100 registros em duas dimensões (x, y). Separamos esse conjunto em duas partes: ● ● 70% para treino 30% para teste Experimento Prático Implementando a função sigmoid: Ajustando o modelo Derivando a função custo: Dado que o fator delta corresponde a multiplicação dos dados de entrada pelo erro (diferença entre os valores esperados e valores obtidos). Considerações Finais Parte IV Considerações Finais Alguns fatores importantes devem ser considerados: ● ● ● O fator alpha, necessário para o treinamento deve ser determinado É necessário considerar um erro quadrático médio (SME) mínimo para interromper o treinamento A análise gráfica do modelo treinado só é possível até três dimensões. Considerações Finais Alguns fatores importantes devem ser considerados: ● ● ● A rede neural apresentada trata-se de um Perceptron de Única Camada. Essa rede é restrita à problemas lineares. Problemas não lineares podem ser tratados a partir de Redes Neurais de Múltiplas Camadas (MLP). Todos os dados processados por uma Rede Neural devem ser convertidos em valores numéricos. Links relacionados A seguir, links relacionados com palestras sobre Redes Neurais Artificiais e Aprendizado de Máquina: ● ● ● Classificação de Documentos: https://www.infoq.com/br/presentations/classificacao-de-documentos-b aseada-em-inteligencia-artificial Biblioteca Java para Aprendizado de Máquina: https://www.infoq.com/br/presentations/machine-learning-em-java-com -apache-mahout Redes MLP: https://www.youtube.com/watch?v=F1C0k4Mf7ZM Lições aprendidas ● A maior parte das bibliotecas de ML são pouco flexíveis quanto a parametrização, principalmente quanto ao algoritmo de ajuste (treinamento). ● A performance e o tempo de treinamento pode variar bastante entre diferentes algoritmos de classificação. Lições aprendidas ● A separação dos conjuntos de treino e teste precisa ser cuidadosa, pois pode induzir ao erro. A proporção 70 / 30 nem sempre precisa ser respeitada. ● Em algumas situações é possível obter resultados melhores aplicando redução de dimensionalidade nos dados.