Você está na página 1de 55

Aula 1

Reinforcement Learning Conversa Inicial

Prof. Gian Carlo Brustolin

1 2

Bases para reinforcement learning Bases para reinforcement learning

Conceitos de IA
Nesta aula introdutória, iniciaremos com
conceitos elementares de inteligência Abordagens de IA
artificial (IA) e evoluiremos até o Teoria da aprendizagem e treinamento em
entendimento dos rudimentos de ambientes determinísticos
aprendizagem de máquina (ML), Treinamento supervisionado x treinamento
interpretação de parâmetros por máquina auto-organizado
(DL) e reinforcement learning (RL)
Treinamento por reforço

3 4

Terminologia
Agente inteligente
Conceitos de IA Meio
Ação
Política e função do agente
Estado

5 6
Agente inteligente é tudo o que pode ser
considerado “capaz de perceber seu
ambiente por meio de sensores e de agir
sobre esse ambiente por intermédio de A ausência de aprendizagem não
atuadores” (Norvig, 2013, p. 30) descaracteriza o agente reativo como
inteligente (Faceli et al., 2021, p. 1)
Agente reativo – ações plenamente
determinadas pelo seu criador
Agente baseado em aprendizagem

7 8

Meio é o ambiente externo ao agente. Pode


ser:
Observável – em função da capacidade
dos sensores (plenamente ou
parcialmente) Ação – atuação do agente sobre o meio
Inobservável – sem sensores, mas segue
possível ação
Determinístico
Estocástico

9 10

Estado designa a
relação atual do
agente com o meio
Política e função do agente ... Aguardando
abertura da porta
Valor do estado é
Política ou função do agente é uma a avaliação da Aberta

descrição matemática abstrata utilidade de Mover


para frente
Programa do agente é uma manter-se em
implementação concreta, executada em dado estado, ou Obstáculo

mesmo de Mover
...
um sistema físico para direita
escolher mover-
se para outro
estado

11 12
Abordagens de IA
Há técnicas de IA que têm por base o
processo mecânico de raciocínio humano

Abordagens de IA Outras partem de um algoritmo de


enfrentamento do problema, buscando a
parametrização matemática das variáveis do
problema
Um terceiro grupo estuda as formas de
enfrentamento, pela natureza, dos problemas
evolutivos

13 14

IA simbólica
Uso de algoritmos de solução de problemas
dedicados, chamados de sistemas
Simbólica
especialistas ou sistemas baseados em
ML conhecimento
Neurociência computacional Projetista cria um motor de inferência,
IA forte x IA fraca algoritmo que toma as decisões baseado em
regras se-então
Técnicas de ML podem ser agregadas a estes
sistemas, permitindo certa evolução

15 16

ML ML
Técnicas de ML surgiram como incrementos aos
métodos clássicos de IA As técnicas de ML se assemelham a métodos
Algoritmos de ML são capazes de criar uma de análise estatística descritiva ou preditiva
árvore de busca ou um conjunto de regras
baseado em datasets tratados previamente A popularidade desta aproximação cresceu
Árvores de Decisão e Conjunto de Regras substancialmente com a disponibilidade de
Peso bibliotecas de algoritmos
< 50 ≥ 50

Sexo Se peso ≥ 50, então doente. As técnicas clássicas de ML encontram seu


Se peso < 50 e sexo = M, então doente.
M F
Se peso < 50 e sexo = F, então saudável. limite justamente na preparação dos datasets
Doente Saudável Doente
Fonte: elaborado com base em Faceli et al., 2021, p. 5.

17 18
ML Neurociência computacional e IA
conexionista
Representation learning ou feature learning (FL)
– métodos que permitem à máquina consumir Tentativa de simulação do processo biológico
dados naturais e descobrir, então, as
do raciocínio humano
representações necessárias para o algoritmo de
ML Entende o raciocínio pela óptica das conexões
Deep learning (DL) – evoluções de FL com vários entre neurônios
níveis de representação
Boa parte da memória e da capacidade de
“Pilha” de métodos de FL, obtendo-se, a cada interpretação racional está ligada às
passo na pilha, um nível maior de abstração sinapses neurais
Redes neurais

19 20

Neurociência computacional e IA Neurociência computacional e IA


conexionista conexionista
Pesos neurais em rede com 2 neurônios
de entrada e 2 de saída Modelo neural básico – 1943 (McCulloch e Pitts)

Peso sináptico é um 𝑾𝟏,𝟑 Há numerosas topologias de rede neural


1 3
parâmetro livre da 𝑾𝟏,𝟒 Topologia influencia na qualidade do
rede neural e permite aprendizado
intensificar ou Rede grande – boa memória, mas não
deprimir a conexão 𝑾𝟐,𝟑 generalizará bem
entre dois neurônios 2 4 Uma dezena de neurônios trata problemas
𝑾𝟐,𝟒
Fonte: elaborado com base em Norvig, 2013, p. 623.
matemáticos complexos

21 22

IA forte x IA fraca

Forte – assemelhar o comportamento do


Teoria da aprendizagem e
agente inteligente ao humano, capacitando-o
treinamento em ambientes
a enfrentar ambientes inusitados e a tomar
decisões hipoteticamente autônomas determinísticos

Fraca – dar a cada agente somente a


inteligência necessária para enfrentar
determinado tipo de problema

23 24
Teoria da aprendizagem e treinamento em Treinamento de agentes
ambientes determinísticos
Antigos sistemas especialistas já possuíam,
Treinamento de agentes
em sua concepção, as informações
Métodos de treinamento de agentes necessárias para a tomada de decisão
Aprendizagem por correção de erro Redes neurais são sujeitas a treinamento
Aprendizagem baseada em memória prévio à sua operação
Aprendizagem por árvores de decisão Modelos de ML aprendem tendo como base
conjuntos de dados escolhidos para este fim
Aprendizagem competitiva e hebbiana
(datasets)

25 26

Métodos de treinamento de agentes Aprendizagem por correção de erro


Fatores vinculados ao sucesso da
aprendizagem computacional:
Qual componente deve ser melhorado Redes neurais

Mapeamento de estado/ação; utilidade... Ajustar os parâmetros da rede para que x(n)


apresente como saída o valor y(n)=d(n)
Conhecimento prévio do agente
Técnica usual para a correção do erro médio
Representação dos dados da rede é a regra de Widrow-Hoff (ou delta)
Feedback que está disponível para
aprendizagem

27 28

Aprendizagem baseada em memória


Treinamento por correção de erro em RNAs

“Memorizaremos” vários Método dos k vizinhos

exemplos de entrada- 0 0
saída classificados em 0
Uma ou 0
Vetor de
mais x(n) Neurônio yk(n) dk(n) determinada ordem 0 0
entrada
camadas de de saída ∑ 1 1 0
0
neurônios k - + Compararemos o valor 0
ocultos 0d 0
de entrada (chamado de Estranho 0
eK(n) 1 1
vetor de teste) com as 1 1 111
amostras de memória e
1 1
tomaremos a decisão 1
Fonte: Haykin, 2011, p. 77. “mais próxima” Fonte: Haykin, 2019, p. 80.

29 30
Aprendizagem por árvores de decisão Aprendizagem por árvores de decisão
Altura?

Idealizada nos sistemas especialistas É necessário < 2,339 m > 2,34 m

Algoritmos de ML criam a árvore escolher a Umidade?


Não cortar
automaticamente, com base em datasets ordem das
< 0,0001 g/cm > 0,0001 g/cm

Algoritmo de árvore – um vetor de entrada perguntas


encontrará uma saída correspondente, em (atributos) Cor? Não cortar

função de uma série de testes de hipóteses segundo sua Não amarelo Próximo ao amarelo

ocorridos no interior da árvore relevância


Não cortar Cortar

31 32

Aprendizagem competitiva e hebbiana

Utiliza a propriedade de auto-organização


estatística dos fenômenos naturais
Hebb – quando um neurônio N, próximo a P, Treinamento supervisionado x
repetidamente provoca a reação de P, a treinamento auto-organizado
proximidade físico-química entre estes neurônios
cresce, potencializando ainda mais esta reação
Desta constatação, criou-se uma técnica de
treinamento neural que corrige os parâmetros
livres da rede conforme a saída de um neurônio
se vê estimulada

33 34

Treinamento supervisionado Treinamento supervisionado

Realizado com base em amostras de


entrada/saída validadas por alguém que
possua conhecimento do meio Aprendizagem será supervisionada se a
“Aprendizado com um professor” previsão que desejamos que o algoritmo de
Algoritmo precisa controlar o erro, assim, em ML faça está baseada em dados presentes no
algoritmos de ML, separamos parte das dataset
amostras para medir a acuidade do
treinamento

35 36
Treinamento supervisionado
Vetor
Treinamento auto-organizado
descrevendo
o estado do
ambiente
Há uma regularidade estatística em fenômenos
Ambiente Professor naturais
Os dados tendem a auto-organizar-se
Resposta
desejada
Em 1976, o prêmio Nobel de química foi
concedido a Prigogine pela aguardada
Resposta + comprovação desta tendência
Sistema de real

aprendizagem
- Os parâmetros livres de uma RNA tenderão, se
permitirmos que se alterem por si, a produzir
uma rede capaz de compreender, ou generalizar,
Sinal de erro o processo inicialmente caótico a que ela está
Fonte: Haykin, 2011, p. 88.
sujeita

37 38

Tipo de aprendizagem em que a evolução do


agente é obtida pela análise da reação do
meio às suas ações
Treinamento por reforço – RL
O agente pode ser previamente treinado ou
não
Pode ser entendido como um tipo de
treinamento não supervisionado

39 40

Treinamento por reforço – RL Ambiente estocástico e decisão sequencial

Ambientes determinísticos têm boa


estabilidade e previsibilidade
Ambiente estocástico e decisão sequencial
Amostragem dos eventos passados
Modelo decisório de Markov representam um espaço de decisão
Conceito de utilidade e a solução de Bellman atemporal
Ambientes de RL Ambientes de decisão episódica ou
instantânea – problema é resolvido por
decisão única, complexa ou não

41 42
Ambiente estocástico e decisão sequencial Ambiente estocástico e decisão sequencial
Ambientes estocásticos → a amostragem pode O agente deve reavaliar o meio a cada
prever com probabilidade P a reação do meio – decisão tomada
incerteza
Previsibilidade em ambiente estocástico A próxima decisão será baseada na
Amostra
Indução inválida
percepção atual de um meio em mutação e
não alcançará necessariamente seu objetivo
Deve-se analisar também a eficiência da série
de decisões tomadas para alcançar certo
objetivo. Este problema foi enfrentado pelo
Ambiente atual Ambiente futuro
Fonte: Brustolin, 2022. matemático russo Andrei Markov

43 44

Modelo decisório de Markov Modelo decisório de Markov

MDP:
Após a ação, o agente analisa novamente o
As mudanças do meio tendem a ser meio e traduz a eficácia mediante uma
gradativas recompensa, positiva ou negativa
Os resultados das ações tendem a aproximar- Ao longo de uma sequência de decisões, a
se do pretendido, estatisticamente somatória das recompensas recebidas
fornecerá informações sobre a
assertividade das decisões do agente

45 46

Conceito de utilidade e a solução de Bellman Conceito de utilidade e a solução de Bellman


Em ambientes estocásticos, a relação entre
entrada e saída não é unívoca. Um mesmo
vetor pode ter mais de uma saída, com Se for possível calcular a utilidade ótima,
probabilidades de ocorrência diferentes será possível determinar a melhor sequência
de decisões (política)
A utilidade U de uma decisão pode ser
julgada pela somatória das recompensas, ou: A equação de Bellman pode fornecer
possíveis soluções para este problema de
otimização
𝑼𝒉 ([ 𝑺𝟎 , 𝑺𝟏 , 𝑺𝟐 , ... ]) = R 𝑺𝟎 + R 𝑺𝟏 + R 𝑺𝟐 + ...

47 48
Ambientes de RL

O estudo do ambiente é crucial na definição


das estratégias de enfrentamento do
problema Finalizando

Deve-se também buscar uma parametrização


de ambientes hipotéticos que permitam a
simulação das funcionalidades do algoritmo
Exemplo: ambiente de Littmann

49 50

Buscamos construir o conceito de IA, das


abordagens e ferramentas existentes,
descrevendo algumas das técnicas de
treinamento. Estamos preparados para o
aprofundamento no tema específico que nos
ocupará em breve

51
Aula 1

Inteligência Artificial Aplicada - Conversa Inicial


Machine Learning
1 2
42 42

Prof. Antonio Willian Sousa

1 2

Surgimento da área de IA
Aprendizagem de máquina e ciência de dados
Conceitos básicos
Dado, informação e atributo
3
Tipos de aprendizagem 4
42 42

Ferramentas necessárias

3 4

Inteligência artificial
Alan Turing
Teste de Turing
A inteligência está relacionada com a nossa Um entrevistador interage com uma
capacidade de raciocínio entidade, sem conseguir vê-la
O que é inteligência? Passa a perguntar por escrito
5 6
42
Uma pergunta lançada em 1950: uma
42
Ao final da entrevista, lhe é pedido que
máquina pode ser dotada de inteligência? identifique se é um humano ou uma
máquina

5 6

1
Evolução da área
Capacidades necessárias para ser aprovado
(Russel; Selvig, 2013)

Capacidade robótica
Visão computacional Décadas de 1950-60
Processamento de linguagem natural Década de 1970
7
42
Representação do conhecimento 8
42
Década de 1980
Raciocínio automatizado De 1995 até hoje
Aprendizado de máquina

7 8

O que pode fazer? Uma área em expansão

Detecção de spam
Planejamentos logísticos Área estabelecida
Tradução automática de voz e texto Dados e modelos disponíveis
Jogos de computador Barateamento do armazenamento
9 10

Reconhecimento de voz Barateamento do processamento


42 42

Identificação de trajetos para robôs Ubiquidade


Reconhecimento facial

9 10

A aprendizagem de máquina

Machine Learning e Data Science “Machine Learning é um campo de


estudo que dá aos computadores a
capacidade de aprender sem que
tenham sido explicitamente
11 12
42 42

programados para tal” (Arthur Lee Samuel)

11 12

2
Sistema baseado em
Sistema baseado em regras
aprendizagem de máquina
Dados
Idade Nacionalidade Altura Peso Sexo Gosta de futebol Salário

Sistema em 0

1
22

52
0

1
1,70

1,75
75

80
0

0
1

1
2500

2500
Atualização
produção 2

3
31

65
1

1
1,50

1,95
65

86
1

0
1

0
4500

6500
dos dados
4 17 0 1,81 95 0 1 1500

5 54 0 1,65 80 1 0 3500

6 30 0 1,90 105 1 1 1200

7 25 1 1,85 65 1 1 2245

8 49 0 1,71 75 0 0 25000

9 26 1 1,81 80 1 1 8000

Definição e Avaliação do Treinamento Avaliação do


Estudo do Estudo do
codificação desempenho do modelo de desempenho
problema problema
das regras do sistema aprendizagem do sistema
13 14
42 42

Avaliação de Avaliação de
erros e falhas erros e falhas
do sistema do sistema

13 14

A ciência de dados Diferentes, semelhantes e complementares

Foca no dados As duas precisam analisar, explorar e


Busca insights manipular dados
Usa Machine Learning Com focos distintos
15 16

Usa outros tipos de IA Ciência de dados usa aprendizagem de


42 42

Usa estatística máquina

15 16

Dados se referem às medições ou registros


de observação, anotados a partir de uma
Dado, informação e atributos
determinada escala, conjunto de valores ou
por uma representação numérica
17 18
42 42
Exemplo: 10 de julho de 1998

17 18

3
Informação – quando analisada, agregada e
Dados quando processados geram
cruzada – gera conhecimento
informação
Exemplo: pessoa nascida em 10 de julho de
Exemplo: data de nascimento – 10 de julho
1998 + nacionalidade brasileira + idade 22
19
de 1998, ano atual – 2020, idade 22 anos 20
42 42
anos = direito ao voto

19 20

Tipos de dados

Dados podem ser agrupados em numéricos e Dados numéricos


categóricos
Discretos: não podem ser medidos, mas
Dados numéricos: quaisquer valores ou podem ser contados
observações que possam ser mensurados
Contínuos: não podem ser contados, mas
(altura, peso, número de filhos e outros)
21 22

podem ser medidos


42 42

Dados categóricos: dado que representa


descritores (gênero, estado civil e outros)

21 22

Atributos e características
Dados categóricos
Nominais: valores discretos que não
envolvem valor quantitativo e não possuem
Atributo: propriedade de um fenômeno ou
relação de ordem entre si (idiomas que
entidade que pode ser mensurada
uma pessoa fala)
Atributo pode ser dado ou informação
23
42 Ordinais: valores discretos que possuem 24
42

relação de ordem entre si (grau de Attribute = feature


instrução)

23 24

4
Atributos Vetor de características

Posição 1: idade (em anos)


Posição 2: nacionalidade (0 – brasil, 1 - Cliente: Marcel da Silva (homem brasileiro,
outro) 22 anos de idade, altura de 1,70 m, peso 75
Posição 3: altura (em metros) kg, gosta de futebol e recebe R$ 2.500,00 de
25
Posição 4: peso (em quilos) 26
salário)
42 42

Posição 5: sexo (0 – masculino, 1 – feminino)


posição 1 2 3 4 5 6 7
Posição 6: gosta de futebol (0 – não, 1 – sim) dados 22 0 1,70 75 0 1 2.500,00
Posição 7: salário (em reais)

25 26

Conjunto de vetor de características Separar e categorizar os dados


Distribuição do gosto por futebol por idade e salário
Idade Nacionalidade Altura Peso Sexo Gosta de futebol Salário 30000

0 22 0 1,70 75 0 1 2500 Não gosta de futebol


Gosta de futebol
25000
1 52 1 1,75 80 0 1 2500

2 31 1 1,50 65 1 1 4500 20000

3 65 1 1,95 86 0 0 6500
Salário

15000
4 17 0 1,81 95 0 1 1500

27 5 54 0 1,65 80 1 0 3500 28
10000
42 42

6 30 0 1,90 105 1 1 1200


5000
7 25 1 1,85 65 1 1 2245

8 49 0 1,71 75 0 0 25000 0
0 10 20 30 40 50 60 70 80
9 26 1 1,81 80 1 1 8000
idade

27 28

Métodos supervisionados ou preditivos


Tipos de aprendizagem Métodos não supervisionados ou descritivos
Métodos semissupervisionados
29 30
42 42
Métodos de aprendizagem por reforço

29 30

5
Aprendizagem supervisionada Detecção de spam – atributos
POSIÇÃO ATRIBUTO VALORES POSSÍVEIS

1 ID da Mensagem 00001 - 10000


Os dados fornecidos incluem exemplos 2 Remetente conhecido? 0 – não, 1 – sim
indicando a solução desejada 3 Idioma 0 – Português, 1 - Outros

Palavras como herança, prêmio ou


O conjunto de dados é composto de 4
pagamento aparecem no texto?
0 – não, 1 – sim

31 instâncias 32
42 42 5 Quantidade de erros gramaticais? 0 - 1000
Cada instância é identificada por um Quantidade de vezes que seu
6 0 - 1000
rótulo/classe nome aparece no texto?
7 Mensagem tem assinatura? 0 – não, 1 – sim
8 Classe/Rótulo 0 – spam, 1 - não-spam

31 32

Detecção de spam – vetores de


Detecção de spam – nova instância
características

ATRIBUTOS (1-7) CLASSE


Possui os mesmo atributos das instâncias
usadas na aprendizagem
mensagem 01 01 0 1 1 10 0 0 0 (spam)
Exceto a indicação de classe
mensagem 02 02 0 1 1 5 0 0 0 (spam)

33 mensagem 03 03 0 0 1 19 0 0 0 (spam) 34
42 42 ATRIBUTOS (1-7) CLASSE

mensagem 04 04 1 0 0 0 1 1 1 (não-spam) mensagem 06 06 0 1 1 20 0 0 ?

mensagem 05 05 1 0 0 1 2 1 1 (não-spam)

33 34

Detecção de spam usando Machine Learning Aprendizagem não supervisionada

msg 06
Dados de aprendizagem

msg 01
msg 04
spam
Não em informação de rótulo/classe
msg 06
Modelo de
não-spam msg 05
classificação Tenta aprender sozinho
spam
35 de e-mails 36
msg 02
Busca aprender relações entre os dados
42 42
não-spam

spam msg 03

spam

35 36

6
Dados não rotulados Dados não rotulados

Tenta aprender formas de agrupar


Não traz indicação de classe
Agrupamentos de usuários
5

id Idade Gosta de esportes Gosta de ler Gosta de filmes Código município Sexo Grupo 01
Grupo 02
4
0 1 22 0 0 1 4106902 1

1 2 18 1 1 1 4105508 0 3
id 2

37 2 3 40 0 1 1 4106902 1 38
42 42
id 4 id 3
2
3 4 35 0 1 1 4105508 1

4 5 26 0 0 1 4106902 0 1
id 1 id 5

0
0 10 20 30 40 50 60 70 80

37 38

Ferramentas do profissional

Linguagem de programação
Ferramentas necessárias Tratamento de manipulação de dados
Processamento numérico
39 40

Visualização de dados
42 42

Algoritmos de aprendizagem de máquina

39 40

Linguagem de programação

Bibliotecas do Python
Python é interpretada
Pandas: manipulação de dados
Python é orientado a objetos
NumPy: cálculo computacional
Python é portável
41 42
Matplotlib: visualização de dados
Python é escalável
42 42

Scikit-Learn: aprendizagem de máquina


Python possui biblioteca para quase tudo

41 42

7
43
42

43

8
Aula 2

Inteligência Artificial Aplicada - Conversa Inicial


Machine Learning

Prof. Antonio Willian Sousa

1 2

Intercâmbio de dados
Processamento numérico
Formatos de intercâmbio de dados
Manipulação de dados
Visualização de dados
Bases de dados de aprendizagem

3 4

Armazenamento de dados de aprendizagem Arquivos CSV

Arquivos texto puro


Comma-Separated Value
Arquivos de planilha eletrônica
Ex.: “22”,”0”,”1,70”,”75”
Bases de dados estruturadas
Tab-Separated Value
Bases de dados não estruturadas
Ex.: 22 0 1,7075
Dados multimídia
Outros separadores podem ser usados
Arquivos serializados (binários)

5 6
Arquivos JSON
idade, nacionalidade, altura, peso, sexo, gosta de futebol, salario
22, 0, 1.7, 75, 0, 1, 2500
52, 1, 1.75, 80, 0, 1, 2500 JavaScript Object Notation
31, 1, 1.5, 65, 1, 1, 4500
65, 1, 1.95, 86, 0, 0, 6500 Inspirado em JavaScript
17, 0, 1.81, 95, 0, 1, 1500
54, 0, 1.65, 80, 1, 0, 3500 Legível para humanos,
30, 0, 1.9, 105, 1, 1, 1200
25, 1, 1.85, 65, 1, 1, 2245 fácil para máquinas
49, 0, 1.71, 75, 0, 0, 25000
26, 1, 1.81, 80, 1, 1, 8000 Facilmente associado
a estruturas de dados

7 8

[{"nome": "Marcel da Silva", "idade": 22, Serialização → JSON → desserialização


"nacionalidade": "brasileiro", "altura": 1,70,
Python (serialização) → JSON → Python (desserialização)
"peso": 75, "sexo": "masculino",
dict object dict
"gosta de futebol?": true, "salario": 2500},
list, tuple array list

str string str


{"nome": "Ruan del Silva", "idade": 52,
int, long, float number int, float
"nacionalidade": "mexicano", "altura": 1,75,
True, False true, false True, False
"peso": 80, "sexo": "masculino",
None null None
"gosta de futebol?": true, "salario": 2500}]

9 10

Além do CSV e JSON

<?xml version="1.0" ?>


<cliente>
<campo name="Nome" tipo="str">Marcel da Silva</campo>
<campo name="Idade" tipo="int">22</campo> Processamento numérico
<campo name="Nacionalidade" tipo="str">brasileiro</campo>
<campo name="Altura" tipo="float">1,70</campo>
<campo name="Peso" tipo="float">75</campo>
<campo name="Sexo" tipo="str">masculino</campo>
<campo name="Gosta de Futebol?" tipo="bool">True</campo>
<campo name="Salario" tipo="float">2500</campo>
</cliente>

11 12
Biblioteca NumPy

Aprendizagem de máquina, além de


computação, envolve muito cálculo Computação científica de
matemático alta performance no Python

Cálculo e álgebra linear aplicados Não é nativa


Principal objeto ndarray

13 14

Arrays NumPy Vectorization e broadcasting

import numpy as np
cliente_01 = np.array([22,0,1.70,75,0,1,2500])
Podem ser construídos todos_clientes = np.array([[52,1,1.75,80,0,1,2500],
a partir de listas e tuplas [31,1,1.50,65,1,1,4500],
[65,1,1.95,86,0,0,6500],
Identificados pelo seu formato
[17,0,1.81,95,0,1,1500],
Os dados são de um único tipo [54,0,1.65,80,1,0,3500],
])
A biblioteca tem seus tipos próprios # Vectorization e broadcasting
array_comparacao = array_todos - vetor_cli_01

15 16

[[ 30. 1. 0.05 5. 0. 0. 0. ] Filtragem de dados


[ 9. 1. -0.2 -10. 1. 0. 2000. ] idx_salarios_menores = [ idx for idx,vec in
enumerate(array_comparacao)
[ 43. 1. 0.25 11. 0. -1. 4000. ]
if vec[-1] < 0]
[ -5. 0. 0.11 20. 0. 0. -1000. ]

[ 32. 0. -0.05 5. 1. -1. 1000. ] todos_clientes[idx_salarios_menores]


[ 8. 0. 0.2 30. 1. 0. -1300. ]

[ 3. 1. 0.15 -10. 1. 0. -255. ] [ [ -5. 0. 0.11 20. 0. 0. -1000. ]


[ 27. 0. 0.01 0. 0. -1. 22500. ] [ 8. 0. 0.2 30. 1. 0. -1300. ]
[ 4. 1. 0.11 5. 1. 0. 5500. ]] [ 3. 1. 0.15 -10. 1. 0. -255. ] ]

17 18
Outras bibliotecas

Scikit-Learn Manipulando dados tabulares

TensorFlow
PyTorch

19 20

Biblioteca Pandas DataFrame Pandas

Principal estrutura
Lida com dados de tipos diferentes Lembra uma planilha eletrônica
Carrega dados de diferentes fontes gosta de
idade nacionalidade altura peso sexo salário
futebol
Filtra, separa, agrupa e ordena Ana 22 Brasileiro 1,70 75,0 Feminino True 2500

Facilmente integrável com NumPy e Beto 52 Estrangeiro 1,75 80,0 Masculino True 2500

Bia 31 Estrangeiro 1,50 65,0 Feminino True 4500


Scikit-Learn
Carlos 65 Estrangeiro 1,95 86,0 Masculino False 6500

Carol 17 Brasileiro 1,81 95,0 Feminino True 1500

21 22

import pandas as pd
Criação de um DataFrame
dados_clientes = {"idade": [22, 52, 31, 65, 17],
TIPO DE DADO COMPORTAMENTO
"nacionalidade": ["brasileiro","estrangeiro",
Cada objeto iterável dentro do dicionário "estrangeiro", "estrangeiro",
Dicionário de
se torna uma coluna, e a chave se torna "brasileiro"],
listas e tuplas
o rótulo da coluna
"altura": [1.7, 1.75, 1.5, 1.95, 1.81],
Cada dicionário se torna uma coluna, "peso": [75.0, 80.0, 65.0, 86.0, 95.0],
Dicionário de
e as chaves dos dicionários internos "sexo": ["feminino", "masculino", "feminino",
dicionários
se tornam os rótulos das linhas
"masculino", "feminino"],
Lista de dicionários, "gosta de futebol": [True, True, True,
Cada item se torna uma linha do DataFrame
lista ou tuplas False, True],
Cria um DataFrame igual ou com "salario": [2500, 2500, 4500, 6500, 1500]}
Outro DataFrame
novos índices, se estes forem passados
Cria um DataFrame de forma semelhante df_clientes = pd.DataFrame(data=dados_clientes,
Array NumPy index=["Ana","Beto","Bia","Carlos","Carol"])
a quando passamos uma lista de listas

23 24
Selecionar apenas uma linha
Operações no DataFrame
df_clientes.loc["Ana"]
Selecionar apenas uma coluna idade 22
df_clientes["idade"] nacionalidade brasileiro
Ana 22 altura 1.7
Beto 52 peso 75
Bia 31 sexo feminino
Carlos 65 gosta de futebol True
Carol 17 salario 2500
Name: idade, dtype: int64 Name: Ana, dtype: object

25 26

Filtrar todas as pessoas com idade maior que


30 anos e exibir apenas determinadas
colunas

Visualização de dados
df_filtro = df_clientes.loc[:,["idade","sexo","salario"]]
df_filtro[[df_filtro.idade > 30]]
idade sexo salario
Bia 31 feminino 4500
Carlos 65 masculino 6500

27 28

Biblioteca Matplotlib

A visualização traz insights sobre os dados


Ajuda a entender melhor Diferentes tipos de visualizações

Permite perceber relações Exporta para vários tipos de arquivos


(pdf, jpeg, png, svg e outros)
Maneira condensada de comunicar
Integrável com NumPy e Pandas

29 30
Peso X Altura % Gostam de Futebol
gosta de 190
nome idade nacionalidade altura peso sexo salário Não Gosta
futebol
180
0 Aldo 22 0 1,70 75 0 1 2500 30.0%
170
1 Beto 52 1 1,75 80 0 1 2500 70.0%
160
2 Bia 31 1 1,50 65 1 1 4500 150 Gosta
3 Carlos 65 1 1,95 86 0 0 6500 80 100
4 Diego 17 0 1,81 95 0 1 1500
Salários Salários por Idade
5 Daina 54 0 1,65 80 1 0 3500
6 Carol 30 0 1,90 105 1 1 1200 6
20000
7 Fabia 25 1 1,85 65 1 1 2245 4
8 Felix 49 0 1,71 75 0 0 25000
2 10000
9 Gaia 26 1 1,81 80 1 1 8000
0
10000 20000 20 40 60

31 32

Outras bibliotecas

Seaborn
Datasets
Plotly
Bokeh
E muitas outras

33 34

Dataset

Distribuídos em CSV e JSON Instância:


registro ou linha de dados
Responsáveis pela aprendizagem
Atributos:
Composto de instâncias
cada elemento descritor de uma instância
A qualidade do seu modelo de
Instâncias e atributos lembram
aprendizagem será tão boa
vetores de características
quanto forem os seus dados
Scikit-Learn:
aprendizagem de máquina

35 36
Dados do dataset Onde obter datasets

Dados numéricos: quantitativos


Dados categóricos: Dataset Search do Google
descritores não numéricos
Microsoft Research Open Data
Dados de séries temporais:
Open Data on AWS da Amazon
numéricos coletados
Em intervalos de tempo consistentes UCI Machine Learning Repository

Dados textuais: Em diversos sites, portais e universidades


palavras, frases, parágrafos etc.

37 38

Características importantes Datasets clássicos

Tipo de tarefa: classificação,


regressão, agrupamento ou outro tipo Iris Flower: 150 instâncias, 3 classes
Tipos dos atributos: Boston House Pricing: 506 instâncias, preços
categórico, numérico, misto Wine Quality: 4.898 instâncias, nota
Tipos de dados: multivariado, univariado,
MNIST: 60 mil instâncias, 10 classes
sequencial, série temporal, texto ou outros
ImageNet: 14 milhões de instâncias,
Quantidade de atributos e instâncias
20 mil categorias
Formato dos dados

39 40

Iris Dataset Entendendo melhor os dados


150 instâncias, 3 classes, 4 atributos # Dataframe pandas contendo dataset
Dataset balanceado df_irisdata.describe()
sepal lenght sepal width petal length petal width class class_number sepal lenght sepal width petal length petal width class_number
0 5.1 3.5 1.4 0.2 Iris-setosa 0
count 150.000000 150.000000 150.000000 150.000000 150.000000
1 4.9 3.0 1.4 0.2 Iris-setosa 0
2 4.7 3.2 1.3 0.2 Iris-setosa 0 mean 5.843333 3.054000 3.758667 1.198667 1.000000

3 4.6 3.1 1.5 0.2 Iris-setosa 0 std 0.828066 0.433594 1.764420 0.763161 0.819232
4 5.0 3.6 1.4 0.2 Iris-setosa 0
min 4.300000 2.000000 1.000000 0.100000 0.000000
... ... ... ... ... ... ...
145 6.7 3.0 5.2 2.3 Iris-virginica 2 25% 5.100000 2.800000 1.600000 0.300000 0.000000

146 6.3 2.5 5.0 1.9 Iris-virginica 2 50% 5.800000 3.000000 4.350000 1.300000 1.000000
147 6.5 3.0 5.2 2.0 Iris-virginica 2
75% 6.400000 3.300000 5.100000 1.800000 2.000000
148 6.2 3.4 5.4 2.3 Iris-virginica 2
max 7.900000 4.400000 6.900000 2.500000 2.000000
149 5.9 3.0 5.1 1.8 Iris-virginica 2

41 42
Dividindo os dados

import numpy as np
from sklearn import datasets Notação X (características),
from sklearn.model_selection import
y (classes/rótulos)
train_test_split Treino – 75%/testes – 25%
Dados podem fornecer
iris_X, iris_y = capacidade de generalização
datasets.load_iris(return_X_y=True)
X_train,X_test,y_train,y_test =
train_test_split(iris_X, iris_y, random_state=0)

43 44
Aula 3

Inteligência Artificial Aplicada - Conversa Inicial


Machine Learning

Prof. Antonio Willian Sousa

1 2

Preparação dos dados


Árvores de decisão
Preparação dos dados
Treinamento do modelo
Usando modelos treinados
Outros algoritmos de árvore

3 4

Obtenção dos dados Considerações sobre os dados

Quantidade x qualidade
Localização em banco de dados
Relevância dos dados
Relação temporal
Conversão e agregação de dados
Disponibilidade
Determinação dos atributos relevantes
Produção de dados sintéticos
Possível necessidade de conversões

5 6
Extração de características
Normalização de atributos por escala
Agregação de valores
Geralmente coloca-se entre [0, 1]
Ex.: quantidade de ligações, de reservas
Normalização por padronização
Decomposição de dados
Considera a distribuição dos dados
Ex.: 10/09/2019 20:30h ou
Cada atributos terá médio 0 e
terça-feira, 10, 09, 2019, 20:30h
desvio-padrão 1
Composição
A operação tem que ser reversível
Ex.: data de check in – data de reserva

7 8

Separação, treino e testes Separação treino e testes


from sklearn.model_selection import train_test_split
import pandas as pd
80-20 é um bom começo # Lê o dataset de carros
É preciso ter variabilidade carros = pd.read_csv("carros.csv")
Validação cruzada X = carros.loc[:, 0:-1].to_numpy()
y = carros['label'].to_numpy()
K-1 para treino, 1 para testes
# Divide o conjunto em treinamento e teste, na
K-1 etapas proporção 80-20
X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y, test_size=0.20)

9 10

from sklearn.model_selection import Kfold


import pandas as pd

# Lê o dataset de carros
carros = pd.read_csv("carros.csv")
X = carros.loc[:, 0:-1].to_numpy()
y = carros['label'].to_numpy() Árvores de decisão

# Divide o conjunto em 3 folds


kf = KFold(n_splits=3)
idx_folds = kf.split(X)
for idx_treino, idx_teste in idx_folds:
X_treino, X_teste = X[idx_treino], X[idx_teste]
y_treino, y_teste = y[idx_treino], y[idx_teste]

11 12
Como funciona Atributos são utilizados na separação

Idade  40.0
Samples: quantidade Idade  40.0

NOME IDADE NACIONALIDADE ALTURA PESO SEXO


GOSTA
DE
FUTEBOL
SALÁRIO
gini = 0.42
samples = 10
value = [3, 7]
Raiz de amostras daquele nó gini = 0.42
samples = 10
value = [3, 7]
Raiz
class = gosta futebol class = gosta futebol
0

1
Aldo

Beto
22

52
0

1
1,70

1,75
75

80
0

0
1

1
2.500

2.500 TRUE FALSE


Gini: métrica TRUE FALSE
2 Bia 31 1 1,50 65 1 1 4.500

salario ≤ 3000,0
de pureza do nó salario ≤ 3000,0
3 Carlos 65 1 1,95 86 0 0 6.500 gini = 0.0 gini = 0.0
gini = 0.375 gini = 0.375
samples = 6
Nó samples = 6

Value: lista de amostras
4 Diego 17 0 1,81 95 0 1 1.500 samples = 4 samples = 4
value = [0, 6] value = [0, 6]
value [3, 1] value [3, 1]
class = gosta futebol class = gosta futebol
5 Daiana 54 0 1,65 80 1 0 3.500 class = não gosta futebol class = não gosta futebol

6 Carol 30 0 1,90 105 1 1 1.200


que atendem ao critério
7 Fabia 25 1 1,85 65 1 1 2.245

Class: categoria
8 Felix 49 0 1,71 75 0 0 25.000
gini = 0.0 gini = 0.0 gini = 0.0 gini = 0.0

Folha Folha
9 Gaia 26 1 1,81 80 1 1 8.000 samples = 1 samples = 3 samples = 1 samples = 3

das amostras
value = [0, 1] value [3, 0] value = [0, 1] value [3, 0]
class = gosta futebol class = não gosta futebol class = gosta futebol class = não gosta futebol

13 14

Tipos de algoritmos

Iterative Dichotomiser 3 (ID3)


Treinamento do modelo
C4.5
C5.0
Classification and Regression Trees (CART)

15 16

Dataset real DATASET DE AUTOMÓVEIS


O treinamento Total de registros do dataset 11913
deve ter amostras
tipo_ num_ km_por_ km_por_ preco_
ano combustivel hp cilindros tracao categoria tamanho estilo popularidade label
transmissao porta l_estrada l_cidade venda

Audio de Fabrica,
Tamanho do conjunto de treino 9427
de todas as
gasolina tracao_ BMW 1
2011 335.0 6.0 MANUAL 2.0 Luxo, compacto Cupê 26 19 3916 46135
premium traseira Series M
Alta-Performance
Tamanho do conjunto de testes 2357
categorias
gasolina 6.0 tracao_ Luxo, BMW 1
2011 300.0 MANUAL 2.0 compacto Conversível 28 19 3916 40650
premium traseira Performance Series

gasolina tracao_ Luxo, BMW 1


Quantidade de características 14
2011 300.0 6.0 MANUAL 2.0 compacto Cupê 28 20 3916 36350
premium traseira Alta-performance Series

2011
gasolina
premium
230.0 6.0 MANUAL
tracao_
traseira
2.0
Luxo,
Performance
compacto Cupê 28 18 3916 29450
BMW 1
Series
O teste também Quantidade de classes 48
gasolina

Características devem ser


tracao_ BMW 1
2011 premium 230.0 6.0 MANUAL 2.0 Luxo compacto Conversível 28 18 3916 34500
traseira Series

convertidas em números
gasolina tracao_ Luxo, BMW 1
2011 230.0 6.0 MANUAL 2.0 compacto Cupê 28 18 3916 31200
premium traseira Performance Series

gasolina tracao_ Luxo, BMW 1


2012 300.0 6.0 MANUAL 2.0 compacto Conversível 26 17 3916 44100
premium traseira Performance Series

2012
gasolina
premium
300.0 6.0 MANUAL
tracao_
traseira
2.0
Luxo,
Alta-performance
compacto Cupê 28 20 3916 39300
BMW 1
Series
Classes ou labels são os
2012
gasolina
premium
230.0 6.0 MANUAL
tracao_
traseira
2.0 Luxo compacto Conversível 28 18 3916 36900
BMW 1
Series
modelos de automóveis
gasolina tracao_ BMW 1
2013 230.0 6.0 MANUAL 2.0 Luxo compacto Conversível 27 18 3916 37200
premium traseira Series

17 18
Treinando árvore de decisão # Seleciona apenas as colunas necessárias
X = carros.loc[:, 'ano':'preco_venda'].to_numpy()
import pandas as pd y = carros['label'].to_numpy()
from sklearn import tree
from sklearn.model_selection import # Divide o conjunto em treinamento e teste, na
train_test_split proporção 80-20
X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y,
# Lê o dataset de carros test_size=0.20,
carros = pd.read_csv("carros_categorical.csv") random_state=42)

19 20

criterion: define a medida de impureza dos nós Usando o modelo treinado


splitter: define como as divisões serão feitas
max_depth: profundidade máxima da árvore
min_samples_split: número mínimo de amostras
de um nó
min_samples_leaf:
número mínimo de
amostras de uma folha
max_features:
número de atributos
para definir a divisão

21 22

Indica quantas predições


Avaliando o desempenho
foram feitas corretamente

VALORES REAIS
DEFINIÇÃO SIGNIFICADO
Fácil de analisar REAL

Instâncias preditas como CÂNCER NÃO CÂNCER


V F
Verdadeiros
Positivos
positivas pelo modelo, que
realmente são positivas
Não deve ser
considerada CÂNCER 1 1

de forma
Instâncias preditas como
Verdadeiros Falsos Verdadeiros MODELO
V
negativas pelo modelo, que
Negativos
Positivos Positivos realmente são negativas

PREDIÇÃO
isolada NÃO CANCER 0 98

DO Instâncias preditas como


MODELO Falsos Positivos
positivas pelo modelo, que
(ou erro tipo I)
Verdadeiros na verdade são negativas
Falsos
F
Negativos
Negativos verdadeiros positivos + verdadeiros negativos
Instâncias preditas como Acurácia =
Falsos Negativos negativas pelo modelo, total de instâncias
(ou erro tipo II) que na verdade são
realmente são positivas

23 24
Indica, do total de predições, Indica, do total de positivos,
quantas de fato estão corretas quantos foram preditos corretamente
Precisão baixa = muitos falsos positivos Recall baixo = muitos falsos negativos
Custo dos falsos positivos é alto Custo dos falsos negativos é alto
Ex.: detecção de spam Ex.: detecção de fraude

verdadeiros positivos verdadeiros positivos


Precisão = Recall =
verdadeiros positivos + falsos positivos verdadeiros positivos + falsos negativos

25 26

Matriz de confusão
Diferente de precisão 6

Melhor para um equilíbrio não gosta


5
3 0
entre precisão e recall futebol
4
TRUE LABEL

Nenhuma métrica isolada 3

deve ser suficiente 2


gosta futebol 1 6
1

precisão * recall
F1 = 2 x 0
precisão + recall não gosta gosta futebol
futebol
PREDICTED LABEL

27 28

Melhorando um modelo

max_depth = 5 max_depth = 15
max_features = 2 max_features = 14

29 30
Serialização

Converte objetos da
Utilizando um modelo treinado linguagem em sequência de bits
Comum em diversas linguagens
Disponível no Python
Biblioteca Pickle

31 32

Serialização/deserialização Boas práticas de serialização

import pickle

with open(“clf_automoveis_dt.pickle”, ‘wb’) as f: Disponibilidade dos dados de treino


pickle.dump(clf, f, pickle.HIGHEST_PROTOCOL)
Código da geração do modelo
import pickle Versão das bibliotecas utilizadas
from sklearn import tree
Valores obtidos no treinamento
clf = None Versão da biblioteca de serialização
with open(“clf_automoveis_dt.pickle”, ‘rb’) as f:
clf = pickle.load(f)

33 34

Outras formas de serialização

Biblioteca Joblib
Combinação de modelos
Utilizar JSON
Resultado da serialização pode ser alterado
Risco de segurança

35 36
Ensembles

Metaclassificadores (ou regressores) Reduzir variância = reduzir overfitting

Combinam diferentes modelos Reduzir bias = reduzir underfitting

Podem combinar diferentes algoritmos Podem ser classificados em

Podem melhor predição Sequenciais: exploram dependência

Podem reduzir bias Paralelos: exploram independência

Podem reduzir variância

37 38

Ensembles sequenciais Ensembles paralelos


Abordagem mais comum boosting. Abordagem mais comum bagging.
Exemplo: AdaBoost Exemplo: RandomForest
Classificador 01

Subconjunto
Classificador 01 01 de treino
Classificador 03
Dados
Treino**
1 Agregação de
Dados Classificador 02 Predição Final
Resultados
Treino
3 Subconjunto
Agregação de
Predição Final 02 de treino
Dados Resultados
Treino

Classificador 02
Dados
Classificador 03
Treino* 2
Subconjunto
03 de treino

39 40

Ensembles stacking Outros ensembles de árvores


Utiliza diferentes algoritmos

Classificador 01 Predições 01

Isolation Forest
Extra Trees Classifier
Dados Classificador 02 Predições 02 Meta Classificador Predição Final

AdaBoost com Árvore de Decisão


Treino

Classificador 03 Predições 03

41 42
Aula 4

Inteligência Artificial Aplicada - Conversa Inicial


Machine Learning

Prof. Antonio Willian Sousa

Classificador bayesiano
Usando modelo bayesiano
Classificador Bayesiano
Regressão linear e logística
Usando modelos de regressão
Classificação baseada em vizinhança

Teorema de Bayes

Sistemas antispam
Qual a probabilidade de A ocorrer se B ocorreu ?
Classificador probabilístico
P(A | B): probabilidade a posteriori
Naive Bayes Aquilo que se deseja descobrir
Baseado no Teorema de Bayes P(B | A): probabilidade de B dado A
Desconsidera as relações entre atributos P(A): probabilidade a priori
P(B): probabilidade marginal
Classificador bayesiano Qual a probabilidade de um cliente gostar de futebol
dado que é homem e brasileiro?
Qual a probabilidade de uma instância ser da
P(homem | gosta de futebol) = 57%
classe y ?
P(brasileiro | gosta de futebol) = 57%
P(y | x1,…,xj): probabilidade a posteriori
P(gosta de futebol) = 70%
y: classe ou categoria
P(homem) = 60%
Gosta
Masculino Feminino Brasileiro Estrangeiro Total

x1,…,xj: atributos da
futebol

SIM 40 30 40 30 70

instância P(brasileiro) = 45% NÃO 20 10 5 25 30

P(x1,…,xj | y) = P(x1 | y) x ... x P(xj | y) Total 60 40 45 55

P(y): se sabe pois o método é supervisionado P(gosta de futebol | homem, brasileiro) =


( 0,57 x 0,57 x 0,70 ) / (0,60 x 0,45) = 0,8423
P(x1,…,xj) = P(x1) x ... x P(xj)

Diferentes implementações

Usando classificador Bayesiano Gaussian Naive Bayes


Multinomial Naive Bayes
Bernoulli Naive Bayes

Dataset Classificação
num_ km_por_l km_por_l
cilindros popularid preco_ve
ano combustivel hp tipo_transmissao tracao portas categoria tamanho estilo _estrada _cidade label
ade nda

Audio de
gasolina 335.0 tracao_tr Fabrica, 26 19 46135 BMW 1
2011 6.0 MANUAL 2.0 compacto Cupê 3916
premium aseira Luxo, Alta- Series M
Performance

Luxo,
gasolina 300.0 tracao_tr Conversív 28 19 40650 BMW 1

Tarefa
2011 6.0 MANUAL 2.0 Performance compacto 3916
premium aseira el Series

2011
gasolina 300.0
6.0 MANUAL
tracao_tr
2.0
Luxo, Alta-
performance compacto Cupê
28
20 3916
36350 BMW 1
Dataset de automóveis
premium aseira Series

2011
gasolina
premium
230.0
6.0 MANUAL
tracao_tr
aseira
2.0
Luxo,
Performance compacto Cupê
28 18
3916
29450 BMW 1
Series Dados os Total de registros do dataset 11913

Tamanho do conjunto de treino 9427


2011
gasolina
premium
230.0
6.0 MANUAL
tracao_tr
aseira
2.0
Luxo
compacto
Conversív
el
28
18 3916
34500 BMW 1
Series
atributos de um
Tamanho do conjunto de testes 2357
carro, predizer o
Luxo,
gasolina 230.0 tracao_tr 28 31200 BMW 1
2012 6.0 MANUAL 2.0 Performance compacto Cupê 18 3916
premium aseira Series

Luxo, Quantidade de características 14


seu fabricante
gasolina tracao_tr Conversív 26 44100 BMW 1
2012 300.0 6.0 MANUAL 2.0 Performance compacto 17 3916
premium aseira el Series

2012
gasolina 300.0
6.0 MANUAL
tracao_tr
2.0
Luxo, Alta-
compacto Cupê
28
20 3916
39300 BMW 1
Quantidade de classes 48
performance
premium aseira Series

gasolina 230.0 tracao_tr Conversív 28 36900 BMW 1


2012 6.0 MANUAL 2.0 Luxo compacto 18 3916
premium aseira el Series

gasolina 230.0 tracao_tr Conversív 27 37200 BMW 1


2013 6.0 MANUAL 2.0 Luxo compacto 18 3916
premium aseira el Series
import pandas as pd
from sklearn.naive_bayes import GaussianNB # Divide o conjunto em treinamento e teste, na
from sklearn.model_selection import proporção 80-20
train_test_split
X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y, test_size=0.20)
# Lê o dataset de carros
carros = pd.read_csv("carros.csv")
# Executa a definição e treinamento do modelo
# Seleciona apenas as colunas necessárias gnb = GaussianNB()
X = carros.loc[:, 'ano':'preco_venda'].to_numpy() gnb.fit(X_treino, y_treino)
y = carros['label'].to_numpy()

Qualidade da predição Classificação do modelo do automóvel


classe precision recall f1-score
Acura 1.00 1.00 1.00
Aston Martin 1.00 1.00 1.00
Audi 1.00 1.00 1.00 Tarefa
BMW 1.00 1.00 1.00
Bentley 1.00 1.00 1.00 Dados os atributos de um carro, predizer o seu
Predição

Buick 1.00 1.00 1.00


Cadillac 1.00 1.00 1.00 modelo
Chevrolet 1.00 1.00 1.00 Dataset de automóveis

Subaru
… …
1.00

1.00

1.00
Classificações erradas: 177 Total de registros do dataset 11913
Suzuki 1.00 1.00 1.00
Toyota 1.00 1.00 1.00 Precisão (média): 0,925 Tamanho do conjunto de treino 9427
Real
Volkswagen 0.99 0.95 0.97 Tamanho do conjunto de testes 1845
Volvo 0.87 0.96 0.92 Recall (média): 0,912 Quantidade de características 14
Classificações erradas de um total de 2.357 F1-Score (média): 0,904 Quantidade de classes 381
instâncias: 11

from sklearn.calibration import CalibratedClassifierCV

# Calibração isotonica
isotonic = CalibratedClassifierCV(gnb, cv=4,
method='isotonic')
isotonic.fit(X_treino, y_treino)

Regressão linear e logística


CALIBRADO SEM CALIBRAÇÃO

Erros: 119 Erros: 177


Precisão (média): 0,945 Precisão (média): 0,925
Recall (média): 0,932 Recall (média): 0,912
F1-Score (média): 0,935 F1-Score (média): 0,904
Regressão linear

Y: variável
Investiga relação entre variáveis dependente
Dados
previsão

Infere valores X: variável


Indica quais variáveis contribuem para os independente
valores finais
β0,β1: valores
Indica se pares de variáveis estão buscados
relacionados

Regressão logística

Predição categórica
Dados
previsão
Prediz a probabilidade de a
variável independente
assumir determinado valor
Duas classes: regressão
logística binomial
Muitas classes: regressão
logística multinomial

Função sigmoide
Variável
Variável dependente

independente Usando modelos de regressão


entre 0 e 1

Regressão logística
Não lida bem com
Regressão linear número elevado
de atributos
Variável independente
Regressão logística Categorização de atributos
tipo_ num_ km_por_l_ km_por_l_ preco_
ano combustivel Hp cilindros tracao categoria tamanho estilo popularidade label
transmissao portas estrada cidade venda

2011 7 300.0 6.0 3 3 2.0 68 0 4 28 19 3916 40650 1

2011
7 300.0 6.0 3 3 2.0 65 0 5 28 20 3916 36350 1

2011
7 230.0 6.0 3 3 2.0 68 0 5 28 18 3916 29450 1 Representa Atributo: tipo_transmissão
2011

categorias ou tipos CÓDIGO CATEGORIA


7 230.0 6.0 3 3 2.0 64 0 4 28 18 3916 34500 1

2012 7 230.0 6.0 3 3 2.0 68 0 5 28 18 3916 31200 1


0 AUTOMATICO
Cada tipo possui
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

2017 3 355.0 8.0 0 3 4.0 49 1 3 23 16 549 57315 0


1 AUTOMATIZADO
2017 3 355.0 8.0 0 0 4.0 49 1 3 22 16 549 51350 0
um código 2 DIRECT_DRIVE
2017 5 420.0 8.0 0 3 4.0 70 1 3 22 15 549 65965 0

2017

2017
3

3
355.0

355.0
8.0

8.0
0

0
0

3
4.0

4.0
49

49
1

1
3

3
22

23
16

16
549

549
60315

48530
0

0
Não há hierarquia 3 MANUAL

entre os valores 4 DESCONHECIDO


Dada uma instância de automóvel, predizer se
ele é popular ou não

Treinamento do modelo # Divide o conjunto em treinamento e teste, na


proporção 80-20
X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y, test_size=0.20, stratify=y,
# Lê o dataset de carros random_state=123,
df_carros = shuffle=True)
pd.read_csv("carros_modelos_categorical.csv"
) # Classificacao Regressao Logistica
clf_logistica =
X = carros.iloc[:, :-1].to_numpy()
linear_model.LogisticRegression(C=1e5)
y = carros.iloc[:, -1].to_numpy() clf_logistica.fit(X_treino, y_treino)
y_pred_logistica = clf_logistica.predict(X_teste)

Resultados regressão logística Codificação one-hot encoder

Atributo: tipo_transmissão (tt)


precision recall f1-score
Não popular 4485 36
tt_automatico tt_automizado tt_direct_drive tt_manual tt_desconhecido
não popular 0.62 0.97 0.76
True label

1 0 0 0 0
popular 0.60 0.08 0.14
0 1 0 0 0
2803 54
0 0 1 0 0
Popular

0 0 0 1 0
0 0 0 0 1
Não popular Popular

Predicted label
Um pouco melhor que Baixo recall, alta taxa
uma escolha aleatória de falsos negativos
Cada categoria se torna um novo atributo
Resultados regressão logística Regressão linear

precision recall f1-score Não popular 3357 1164

Predição de valores contínuos


True label
não popular 0.70 0.74 0.72

popular 0.55 0.50 0.53 Alguns atributos são difíceis de discretizar


1387 1470
Popular

Resultados foram Atributos como preço de venda


melhores, mas ainda é
Não popular Popular

Predicted label
Processo supervisionado
possível melhorar

Treinamento do modelo # Divide o conjunto em treinamento e teste, na


proporção 80-20
# Lê o dataset de carros X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y, test_size=0.20)
carros =
pd.read_csv("carros_modelos_categorical.csv")
# Classificacao Regressão Linear
ols =
# Seleciona apenas as colunas necessárias linear_model.LinearRegression(normalize=True)
X = carros.loc[:, ols.fit(X_treino, y_treino.reshape((-1, 1)))
'combustivel':'popularidade'].to_numpy()
y = carros['preco_venda'].to_numpy() y_pred_ols = ols.predict(X_teste)

Resultados regressão logística

Valores de predição Buscar reduzir


Valores reais

erro quadrático
médio Classificação baseada em vizinhança
Predição

Buscar aumentar
coeficiente de
determinação
Real
Não há certo e
Coeficiente de determinação: 0.60
Quadrado da média dos erros: errado
675861464.37
kNN kNN
Classe 1

K-Nearest Neighbors Classe 2

Baseado na vizinhança Classe ?

Instâncias próximas tendem a serem


Para k = 3
parecidas Classe 1

k instâncias mais próximas votam


Para k = 7
Qual valor de k escolher? k=7 k=3 Classe 2

Valores de k Underfitting

Baixa capacidade
de generalização
Valores muito baixos
Não consegue
Geram underfitting aprender a partir
Valores muito altos dos dados
Geram overfitting Desempenho ruim
já nos dados de
treino

Overfitting Good Fit

Baixa capacidade Modelo


de generalização intermediário
Aprende demais os Capacidade de
dados de treino generalizar
Desempenho Busca equilíbrio
excelente nos entre variância e
dados de treino bias
Treinamento kNN # Divide o conjunto em treinamento e teste, na
proporção 80-20
# Lê o dataset de carros X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y, test_size=0.20)
carros =
pd.read_csv("carros_modelos_categorical.csv"
) # Treina o modelo
X = carros.iloc[:, :-1].to_numpy() knn5 =
KNeighborsClassifier(algorithm='ball_tree')
y = carros.iloc[:, -1].to_numpy()
knn5.fit(X_treino, y_treino)
X = StandardScaler().fit_transform(X)
y_pred_5 = knn5.predict(X_teste)

Resultados regressão logística kNN

Usando Regressão Logística

precision recall f1-score


não popular 0.70 0.74 0.72 Simples de utilizar
popular 0.55 0.50 0.53
Não popular 1609 149 Treinamento pode ser demorado
True label

Escolher o valor ideal de k pode se tornar


Usando kNN com k = 5
Popular 144 1044
uma tarefa difícil
precision recall f1-score
não popular 0.89 0.89 0.89 Pode ser utilizado para tarefas de regressão
Não popular Popular

Predicted label
popular 0.84 0.83 0.84
Aula 5

Inteligência Artificial Aplicada - Conversa Inicial


Machine Learning

Prof. Antonio Willian Sousa

1 2

Algoritmo k-means
Medidas de distância
Algoritmo k-means
Usando k-means
Agrupamento hierárquico
Outros métodos não supervisionados

3 4

Fonte: Sousa, 2020


Conjunto de dados
Última Código Total
Idade Peso Altura Sexo Salário
Compra Município Comprado
0 52.0 37.0 124.0 194.0 6.0 0.0 455.0 10391.11
Método não supervisionado 1 57.0 57.0 117.0 97.0 7.0 1.0 1516.0 13315.56

2 34.0 89.0 188.0 549.0 12.0 1.0 4849.0 2453.33


Processo iterativo 3 55.0 48.0 120.0 194.0 4.0 1.0 304.0 14568.89

Particionamento dos dados em k-grupos 4 52.0 52.0 102.0 162.0 6.0 1.0 531.0 16240.00

... ... ... ... ... ... ... ... ...

Escolha dos agrupamentos pela distância 995 28.0 66.0 172.0 291.0 13.0 1.0 3637.0 1617.78

996 34.0 57.0 171.0 468.0 12.0 1.0 4167.0 3915.56

997 32.0 25.0 110.0 678.0 17.0 1.0 6061.0 5168.89

998 56.0 55.0 124.0 49.0 4.0 1.0 379.0 16240.00

999 23.0 31.0 122.0 404.0 12.0 1.0 7652.0 8928.89

5 6

1
Visualização dos dados Separação de grupos
Real
Real
Real
2
2

1 1

0
Idade

Idade
-1
-1

-2

Fonte: Sousa, 2020

Fonte: Sousa, 2020


-2

-3
-1 0 1 2 3 -3
Salário -1 0
Salário
1 2 3

7 8

Passos do k-means 2. Instâncias atribuídas ao centroide mais


próximo
1. Seleção da posição dos centros de cada
agrupamento
Fonte: Sousa, 2020

Fonte: Sousa, 2020


9 10

3. Cálculo da distância entre os centroides e 4. Repetição do processo até convergir


todas as instâncias
Fonte: Sousa, 2020
Fonte: Sousa, 2020

11 12

2
Questionamentos fundamentais Como escolher o valor de k?

Método do cotovelo
Como escolher o k?
Inércia
Qual medida de distância usar?
Distorção

13 14

Método do cotovelo

Medidas de distância

Fonte: Sousa, 2020

15 16

Distância euclidiana Distância Manhattan


Comumente utilizada em problemas de
aprendizagem de máquina
q p = (p0, p1), q = (q0, q1) O caminho entre os pontos não é direto
q1

𝐝𝐢𝐬𝐭 𝐩, 𝐪 𝐪𝟎 𝐩𝟎 𝟐 𝐪𝟏 𝐩𝟏 𝟐 O deslocamento é feito um eixo por vez


?
p = (p0, p1, …, pn-1) Distância do táxi
p q = (q0, q1, …, qn-1)
p1 Distância dos quarteirões
𝐧 𝟏
𝐝𝐢𝐬𝐭 𝐩, 𝐪 𝐪𝐢 𝐩𝐢 𝟐
p0 q0 𝐢 𝟎
Fonte: Sousa, 2020

17 18

3
Pode substituir a distância euclidiana em Distância cosseno
altas dimensões
Baseada na similaridade cosseno

𝒔𝒊𝒎𝒊𝒍𝒂𝒓𝒊𝒅𝒂𝒅𝒆 𝒄𝒐𝒔𝜽

𝒏 𝟏 𝒑. 𝒒 ∑𝒏𝒊 𝟏 𝒑𝒊 𝒒𝒊
𝒅𝒊𝒔𝒕 𝒑, 𝒒 𝒒𝒊 𝒑𝒊 𝒄𝒐𝒔𝜽
𝒊 𝟎 𝒑 . 𝒒 ∑𝒏𝒊 𝟏 𝒑𝒊 ∑𝒏𝒊 𝟏 𝒒𝒊

𝑫𝒊𝒔𝒕â𝒏𝒄𝒊𝒂𝑪𝒐𝒔𝒔𝒆𝒏𝒐 𝒑, 𝒒
𝟏 𝒔𝒊𝒎𝒊𝒍𝒂𝒓𝒊𝒅𝒂𝒅𝒆 𝒑, 𝒒

Fonte: Sousa, 2020


Fonte: Sousa, 2020

19 20

Distância de Mahalanobis Distância de Hamming


𝑫 𝒙 𝒙 𝝁 𝑻𝑺 𝟏 𝒙 𝝁 Mede distância entre sequências de bits
Avalia em relação from scipy.spatial import distance
à distribuição dos distance.hamming([0,0,1,0,0,0,1], [0,0,0,0,0,0,1])
dados Valor da distância é 1

Uso da matriz de
tipo_transmissão_1 tipo_transmissão_2 tipo_transmissão_3 tipo_transmissão_4 tracao_1 tracao_2 tracao_3

0 0 0 1 0 0 0 1

covariância
1 0 0 1 0 0 0 1

2 0 0 1 0 0 0 1

inversa permite
3 0 0 1 0 0 0 1
Fonte: Sousa, 2020

4 0 0 1 0 0 0 1

Fonte: Sousa, 2020


5 0 0 1 0 0 0 1

definir o grau de ... ... ... ... ... ... ... ...

11746 0 0 0 0 0 0 1

independência 11747

11748
0

0
0

0
0

0
0

0
0

0
0

0
0

entre os atributos 11749

11750
0

0
0

0
0

0
0

0
0

0
0

0
0

21 22

Fonte: Sousa, 2020


Dataset
Última Código Total
Idade Peso Altura Sexo Salário
Compra Município Comprado
0 52.0 37.0 124.0 194.0 6.0 0.0 455.0 10391.11

1 57.0 57.0 117.0 97.0 7.0 1.0 1516.0 13315.56

Usando o k-means
2 34.0 89.0 188.0 549.0 12.0 1.0 4849.0 2453.33

3 55.0 48.0 120.0 194.0 4.0 1.0 304.0 14568.89

4 52.0 52.0 102.0 162.0 6.0 1.0 531.0 16240.00

... ... ... ... ... ... ... ... ...

995 28.0 66.0 172.0 291.0 13.0 1.0 3637.0 1617.78

996 34.0 57.0 171.0 468.0 12.0 1.0 4167.0 3915.56

997 32.0 25.0 110.0 678.0 17.0 1.0 6061.0 5168.89

998 56.0 55.0 124.0 49.0 4.0 1.0 379.0 16240.00

999 23.0 31.0 122.0 404.0 12.0 1.0 7652.0 8928.89

23 24

4
Criação e execução do modelo Agrupamentos/clusters
from sklearn.cluster import KMeans Predição Real
import pandas as pd 80

import numpy as np
2
70

# Lê o conjunto de dados 1
60

X = pd.read_csv("dados_clientes_compras.csv").to_numpy()
0
50

Idade
Idade
# Executa k-means -1
40
modelo_kmeans = Kmeans(n_clusters=3).fit(X)

Fonte: Sousa, 2020


-2
modelo_kmeans.fit(X) 30

-3

# Realiza a predição 20

y_pred = modelo_kmeans.predict(X) 2500 5000 7500 10000 12500


Salário
15000 17500 20000 -2 -1 0
Salário
1 2

25 26

Visualizando os agrupamentos PCA


Selecionar apenas uma coluna Fonte: Sousa, 2020

Última Código Total


Idade Peso Altura Sexo Salário PC1 PC2 Cluster
Compra Município Comprado

0 52.0 37.0 124.0 194.0 6.0 0.0 455.0 10391.11 0 0.254961 1.594636 2

Por pares ou trios de atributos 1 57.0 57.0 117.0 97.0 7.0 1.0 1516.0 13315.56 1 1.693504 -1.607076 1

2 34.0 89.0 188.0 549.0 12.0 1.0 4849.0 2453.33 2 -2.123146 -1.517009 0

É difícil perceber relações 3 55.0 48.0 120.0 194.0 4.0 1.0 304.0 14568.89 3 0.536663 0.336852 2

4 52.0 52.0 102.0 162.0 6.0 1.0 531.0 16240.00 4 -2.101821 -0.610420 2

Solução é reduzir as n-dimensões ... ... ... ... ... ... ... ... ... ... ... ... ...

995 28.0 66.0 172.0 291.0 13.0 1.0 3637.0 1617.78 PCA 995 -3.001214 -0.628468 0

Principal Component Analysis (PCA) 996 34.0 57.0 171.0 468.0 12.0 1.0 4167.0 3915.56 996 -2.803128 -0.514234 0

997 32.0 25.0 110.0 678.0 17.0 1.0 6061.0 5168.89 997 -2.474521 -0.602548 0

998 56.0 55.0 124.0 49.0 4.0 1.0 379.0 16240.00 998 2.413928 -0.148478 1

999 23.0 31.0 122.0 404.0 12.0 1.0 7652.0 8928.89 999 1.541450 -1.120015 1

27 28

Visualizando com PCA Entendendo os agrupamentos

Necessita O resultado dos agrupamentos foi bom?


normalização
Coeficiente de Silhouette pode nos dizer
É uma dica de
O que cada agrupamento significa?
como podem ser
os agrupamentos Plotagem paralela dos atributos pode nos
reais dizer

Fonte: Sousa, 2020

29 30

5
Plotagem paralela

Mostra
informações Agrupamento hierárquico
sobre os
agrupamentos
Permite
Fonte: Sousa, 2020

comparação

31 32

Processo de agrupamento Dendrograma

Visualização
Inicia com n grupos contendo uma instância K=2
em árvore
Agrupa os grupos mais próximos K=3
Possível
Recalcula distância dos grupos e repete
K=4 escolher k
Termina com um agrupamento com n agrupamentos
instâncias
Interpretável
Fonte: Sousa, 2020

33 34

Utilização agrupamento hierárquico

Necessita normalização Outros métodos não


supervisionados
Necessita de uma métrica de distância
Como calcular as distâncias
Não necessita definir k

35 36

6
Outros algoritmos DBSCAN

Density-Based Spatial Clustering of


K-medoides
Applications with Noise
K-means mini-batches
Baseado em densidade
Inicializações diferentes
Não necessita definir k
Exemplo: k-means++
Resistente a outliers

37 38

BIRCH Algoritmo de maximização da esperança

Balanced Iterative Reducing and Clustering Funciona de forma generativa


Using Hierarchies Cria modelos para os agrupamentos
Execução rápida Avalia em qual modelo/agrupamento as
Utiliza uma estrutura em árvore específica instâncias se adequam melhor

39 40

7
Aula 6

Inteligência Artificial Aplicada - Conversa Inicial


Machine Learning
1 2
45 45

Prof. Antonio Willian Sousa

O Perceptron
Redes neurais artificiais
O Perceptron
Redes neurais convolucionais

3
Redes neurais sequenciais 4
45 45

Frameworks especializados

Algoritmo do Perceptron Representação

𝒙𝟏 Soma
O Perceptron é um algoritmo 𝒘𝟏 ponderada
Possui quatro partes importantes

5
45
1. Valores de entrada (x1, x2, x3)
2. Pesos (w1, w2, w3) e bias (b) 6
45
𝒙𝟐 𝒘𝟐

𝒘𝟑
Σ y

3. Soma ponderada Função de


𝒙𝟑 ativação
4. Função de ativação b

1
Usando o Perceptron
𝒌 = 𝒙𝟏 . 𝒘𝟏 + 𝒙𝟐 . 𝒘𝟐 + 𝒙𝟑 . 𝒘𝟑 (valores de entrada)
𝑺 = 𝒌 + 𝒃 (soma ponderada) import pandas as pd
𝟎 𝒔𝒆 𝒙 < 𝟎 from sklearn.linear_model import Perceptron
𝒇 𝒙 = (função de ativação)
𝟏 𝒔𝒆 𝒙 ≥ 𝟏
𝒚 = 𝒇 𝑺 (resultado final)
7
45
8
45 # Separação dos dados
Calcula o erro: y (valor correto) - y’
X_treino, X_teste, y_treino, y_teste =
(predição) = erro
train_test_split(X, y, test_size=0.20)

# Criação do modelo Multilayer perceptron – MLP


percpetron_clf = Perceptron(max_iter=100,
shuffle=True, warm_start=True) 𝒙𝟏

# Treinamento 𝒙𝟐 y

percpetron_clf.fit(X_treino, y_treino) . .
. Camada de
9 10 .
45 45
. . saída

𝒙𝒏
# Teste
Camada de
y_predicao = percpetron_clf.predict(X_teste) entrada Camada oculta

Usando MLP

Feedforward neural network – FFNN


import pandas as pd
Artificial neural network – ANN
from sklearn.linear_model import Perceptron
Diferentes funções de ativação
y = f(x; θ) – descobrir função
11
45
12
45
# Separação dos dados
𝒇 𝒙 = 𝒇𝟑 𝒇𝟐 𝒇𝟏 𝒙 X_treino, X_teste, y_treino, y_teste =
train_test_split(X, y, test_size=0.20)

2
# Criação do modelo Resultados
mlp_clf = MLPClassifier(warm_start=True,
max_iter=500, hidden_layer_sizes=(100,))

# Treinamento

13
mlp_clf.fit(X_treino, y_treino) 14
45 45

# Teste
y_predicao = mlp_clf.predict(X_teste) Acurácia de 91%

Definição do modelo

Parâmetros do modelo

Redes neurais artificiais São internos ao modelo


Exemplo: valor dos pesos dos neurônios
15
45
16
45
Hiperparâmetros do modelo
São externos ao modelo
Exemplo: número de neurônios por camada

Hiperparâmetros da estrutura Hiperparâmetros de treinamento

Número de 𝒙𝟏
camadas ocultas
Função de Número de epochs
𝒙𝟐 y
ativação Tamanho do batch
. .
17 Inicialização dos . . Camada de
saída
18 Algoritmo de otimização
45
. . 45

pesos Taxa de aprendizagem


𝒙𝒏
Taxa de Camada de
dropout entrada Camada oculta

3
Evitando overfitting Evitando underfitting

Retreinar a rede Aumento no número de neurônios


Treinar múltiplos modelos Aumentar o número de parâmetros
19
45
Monitorar o valor do erro 20
45
Mais dados de treino
Aplicar técnica de regularização Executar dropout

Treinamento da rede Propagação para a frente

𝟏
w1 𝒇 𝒙 =
Inicialização dos pesos de todos os neurônios NE1 NO1 𝟏 𝒆 𝒙
w5
Propagação para a frente (forward) b1
w2
Cálculo do erro 1
NS y

Propagação reversa (backpropagation) w3 b1 b2


w6
21 22
45 45

Atualização dos pesos 1


NE2 NO2
w4
Realiza novas iterações até obter
convergência Propagação reversa

Ajustes dos hiperparâmetros Busca aleatória

mlp_clf = MLPClassifier(warm_start=True,
max_iter=100)

Tentativa e erro opcoes_parametros = {

Grid search 'hidden_layer_sizes':


23 24 [(30,30,30),(20,80),(25,50,5)], 'activation':
45
Busca aleatória 45

['tanh', 'relu', 'logistic’],


'solver': ['sgd', 'adam', 'lbfgs’], 'alpha':
stats.uniform(0.0001, 0.9),

4
Grid search

'learning_rate’: ['constant’, 'adaptive']}


random_mlp = RandomizedSearchCV(mlp_clf, grid_mlp = MLPClassifier(warm_start=True,
n_iter = 100, max_iter=100)
opcoes_parametros = {
25
45 param_distributions = opcoes_parametros) 26
45
'hidden_layer_sizes':
[(30,30,30),(20,80),(25,50,5)],
random_mlp.fit(X_treino_std, y_treino)
'activation': ['tanh', 'relu', 'logistic'],

'solver': ['sgd', 'adam', 'lbfgs’],


'alpha': [0.0001, 0.09],
'learning_rate': ['constant','adaptive']} Redes neurais convolucionais
grid_mlp = GridSearchCV(mlp_clf, param_grid
27
45 = opcoes_parametros) 28
45

random_mlp.fit(X_treino_std, y_treino)

Convolutional neural networks – CNN Convolução

Uma arquitetura de rede neural


1 1 1 1 1
2 2 2 2
Trabalho com imagens 1 1 1 1 1 1 0
0 2 2 2
29
45
Transforma os dados de entrada 30
45
1 1 1 1 1 0 1
0 1 2 2
1 1 1 1 1
Convoluções e reduções de dimensionalidade

5
Redução de dimensionalidade – pooling Arquitetura
Imagem de entrada
Convolução
Matriz (4x) 1 1 1 1 1 1 1 1 1 1 Pooling
Convolução
Matriz (2x2) 0 1 1 1 1 0 1 1 1 1 Pooling
0 0 1 1 1 0 0 1 1 1
10 33 33 10 Pooling max (2x)
0 0 1 1 1 0 0 1 1 1
...
33 155 1 1 1 1 1 1 1 1 1 1
29 10 155 123
0 1 1 1 1 0 1 1 1 1
0 0 1 1 1 0 0 1 1 1
31 111 111 120 120 32 0 0 1 1 1 0 0 1 1 1
45 111 120 45

Classe 1
111 111 111 111
Classe 2

Problemas resolvidos com CNN

Classificação de imagens
Segmentação de objetos Redes neurais sequenciais

Detecção de faces
33 34
45
Reconhecimento facial 45

Diversos outros

Recurrent neural networks – RNN

Redes neurais recebem entradas de tamanho


fixo Retêm informações sobre instâncias
anteriores
Cada instância do conjunto de treino é
independente As instâncias não são independentes

35 Dados como sequências de palavras em uma 36


As entradas e saídas influenciam os
resultados futuros
45 45

sentença não podem ser processados


As redes neurais recorrentes podem fazer
isso

6
Evolução das RNN
𝒚𝟏 𝒚𝟐 𝒚𝟑 𝒚𝒏

O treinamento das RNN é difícil


w w w w w
𝒉𝟎 𝒉𝟏 𝒉𝟐 𝒉𝟑 ... 𝒉𝒏 Explosão/desaparecimento do gradiente
Memória de curto prazo (short-term memory)
37 38

Memória de longo prazo (long-term memory)


45 45

𝒙𝟏 𝒙𝟐 𝒙𝟑 𝒙𝒏 LSTM (long short-term memory)

Problemas resolvidos com RNN

Modelagem de linguagem
Tradução de máquina Frameworks especializados

Reconhecimento de voz
39 40
45
Sumarização de texto 45

Vários outros

Frameworks Criando uma rede neural com Keras

import keras
from keras.models import Sequential
Tensorflow from keras.layers import Dense
Pytorch
model = Sequential()
41 CNTK 42
45 45
model.add(Dense(30, input_dim=10,
Keras activation='relu'))
model.add(Dense(30, activation='relu'))
model.add(Dense(2, activation='softmax'))

7
Treinamento do modelo

import keras Epoch 1/100


model.compile(loss='categorical_crossentropy' 116/116 [==============================] –
0s 1ms/step –
, loss: 0.2962 - accuracy: 0.8695 - auc_1: 0.9480
...
optimizer='adam',
Epoch 100/100
43
metrics=['accuracy’]) 44
116/116 [==============================] –
45 45 0s 1ms/step –
model.fit(X_treino, y_treino, loss: 0.1837 - accuracy: 0.9176 - auc_1: 0.9797

epochs=100,
batch_size=64)

Monitorando o treinamento

45
45

Você também pode gostar