Devcamp 2015

48

Transcript of Devcamp 2015

Redes Neurais

Artificiais

Everton Gago

Como vai ser?

O que é RNA?

Conglomerado de neurônios!?!?

Neurônio:Redes Neurais Artificiais.

Neurônio:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Neurônio:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

Neurônio:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

Neurônio:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

Rede Neural:Redes Neurais Artificiais.

Como essa “jossa”

funciona?

#Fase 1: Treinar

#Fase 2: Classificar

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Erro

0 – 1 = -1

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 1X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0.3 + 0.1 + 0.6U = 1

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Erro

0 – 1 = -1

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 1X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0.3 + 0.1 + 0.6U = 1

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Erro

0 – 1 = -1

1 – 1 = 0

A rede acertou 50%

Mexer nos pesos!

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.3W1 = 0.1W2 = 0.6

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.1 + 0.6U = 0.7

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 0X1 = 1X2 = 1

Pesos:

W0 = 0.1W1 = 0.2W2 = 0.3

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0 + 0.2 + 0.3U = 0.5

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Erro

0 – 0 = 0

Treinar:Redes Neurais Artificiais.

Entradas:

X0 = 1X1 = 1X2 = 1

Pesos:

W0 = 0.1W1 = 0.2W2 = 0.3

SIGMA (função de soma):

U = (X0 * W0) + (X1 * W1) + (X2 * W2)U = 0.1 + 0.2 + 0.3U = 0.6

F. Transf. (Y):

SE (U > 0.5)Y = 1.0

SENAOY = 0.0

X0 X1 X2 S. Esperada

0 1 1 0

1 1 1 1

Erro

0 – 0 = 0

1 – 1 = 0

Rede Neural:Redes Neurais Artificiais.

Como fica?

NeurônioRedes Neurais Artificiais.

Rede Neural:Redes Neurais Artificiais.

CamadaRedes Neurais Artificiais.

Rede Neural:Redes Neurais Artificiais.

Rede NeuralRedes Neurais Artificiais.

Exemplo de utilização

Classificar perfil de risco

Perfil de risco:

Redes Neurais Artificiais.

SEXO IDADE E. CIVIL USA P/ TRABALHAR FILHOS

M JOVEM SOL SIM NAO

M ADULTO SOL SIM NAO

F ADULTO CAS SIM SIM

M IDOSO CAS NAO SIM

F JOVEM SOL SIM NAO

M JOVEM CAS SIM SIM

F IDOSO CAS NAO SIM

Perfil de risco:

Redes Neurais Artificiais.

SEXO IDADE E. CIVIL USA P/ TRABALHAR FILHOS RISCO

0 0 0 1 0 1

0 0.5 0 1 0 1

1 0.5 1 1 1 0

0 1 1 0 1 0

1 0 0 1 0 1

0 0 1 1 1 0

1 1 1 0 1 0

Código

Case: Portal de vagas.

Redes Neurais Artificiais.

Case: Como treinar?

- Não existia volume suficiente de dados para treinamento;

● Definimos um conjunto de regras “estáticas” para relacionar os candidatos e as vagas de emprego. Atribuímos um peso para cada informação do currículo do candidato.

● Também adicionamos um “fator de relevância”, que crescia de acordo o “feedback” dos usuários. Essa informação foi utilizada para calcular a “similaridade / aderência” do candidato a vaga.

Redes Neurais Artificiais.

Case: Como treinar?

Resultados

Redes Neurais Artificiais.

Case: Resultados

● No início o sistema se baseava em regras estáticas para recomendação, após um período de uso passou a recomendar candidatos de acordo com as subjetividades / critérios de cada empresa;

● Trouxe mais agilidade e assertividade ao processo de contratação.

● Mesmo que as subjetividades / critérios de contratação mudem, o sistema será capaz de se adaptar ao novo cenário.

Redes Neurais Artificiais.

Cuidados:

● Treinamento:

● Treinamento on-line nem sempre é possível;● Algumas API's não oferecem acesso ao conhecimento da rede neural

(vetores), neste caso é preciso serializar objetos para o repositório de dados;

● Importante separar seu conjunto de dados entre treino e teste (Cross Validation). Essa é uma forma de avaliar a capacidade de generalização da rede neural;

● Tuning:

● Eliminar redundâncias do conjunto de treino;● Algumas API's não permitem “parametrizar” variáveis internas do

algoritmo, que poderiam melhorar o desempenho e performance.

Redes Neurais Artificiais.

Conclusões:

● Seu sistema pode começar com regras “estáticas” e “aprender” com os usuários, dando mais relevância às regras “aprendidas”.

● O “treinamento contínuo” trazido pelos mecanismos de feedback permite que as aplicações acompanhem as tendências / mudanças do negócio. Isso aumenta a efetividade do sistema e diminui o número de “chamados” ao TI para acrescentar “regrinhas” :)

● API's são estáveis bem documentadas, no entanto você pode “sofrer” com a falta de parametrização e o acesso aos dados internos do algoritmo.

● A escolha do algoritmo de aprendizado de máquina não precisa se restringir às RNA. Existem outros algoritmos com melhor performance em problemas específicos.

Obrigado!