Buscar

slides aula 7

Prévia do material em texto

1
45
1
Prof. Antonio Willian Sousa
Aula 6
45
2
Conversa Inicial
45
3
O Perceptron
Redes neurais artificiais
Redes neurais convolucionais
Redes neurais sequenciais
Frameworks especializados
45
4
O Perceptron
45
5
O Perceptron é um algoritmo
Possui quatro partes importantes
1. Valores de entrada (x1, x2, x3)
2. Pesos (w1, w2, w3) e bias (b)
3. Soma ponderada
4. Função de ativação
Algoritmo do Perceptron
45
6
Representação
Soma 
ponderada
Função de 
ativação
𝒙𝟏
b
yΣ𝒙𝟐
𝒙𝟑
𝒘𝟑
𝒘𝟏
𝒘𝟐
Inteligência Artificial Aplicada - 
Machine Learning
2
45
7
𝒌 = 𝒙𝟏. 𝒘𝟏 + 𝒙𝟐. 𝒘𝟐 + 𝒙𝟑. 𝒘𝟑 (valores de entrada)
𝑺 = 𝒌 + 𝒃 (soma ponderada)
𝒇 𝒙 =
𝟎 𝒔𝒆 𝒙 < 𝟎
𝟏 𝒔𝒆 𝒙 ≥ 𝟏
(função de ativação)
𝒚 = 𝒇 𝑺 (resultado final)
Calcula o erro: y (valor correto) - y’ 
(predição) = erro
45
8
import pandas as pd
from sklearn.linear_model import Perceptron
# Separação dos dados
X_treino, X_teste, y_treino, y_teste = 
train_test_split(X, y, test_size=0.20)
Usando o Perceptron
45
9
# Criação do modelo
percpetron_clf = Perceptron(max_iter=100, 
shuffle=True, warm_start=True)
# Treinamento
percpetron_clf.fit(X_treino, y_treino)
# Teste
y_predicao = percpetron_clf.predict(X_teste)
45
10
Multilayer perceptron – MLP
Camada de 
entrada Camada oculta 
Camada de 
saída
𝒙𝟏
𝒙𝟐
𝒙𝒏
.
.
.
.
.
.
y
45
11
Feedforward neural network – FFNN
Artificial neural network – ANN
Diferentes funções de ativação
y = f(x; θ) – descobrir função
𝒇 𝒙 = 𝒇𝟑 𝒇𝟐 𝒇𝟏 𝒙
45
12
import pandas as pd
from sklearn.linear_model import Perceptron
# Separação dos dados
X_treino, X_teste, y_treino, y_teste = 
train_test_split(X, y, test_size=0.20)
Usando MLP
3
45
13
# Criação do modelo
mlp_clf = MLPClassifier(warm_start=True, 
max_iter=500, hidden_layer_sizes=(100,))
# Treinamento
mlp_clf.fit(X_treino, y_treino)
# Teste
y_predicao = mlp_clf.predict(X_teste)
45
14
Acurácia de 91%
Resultados
45
15
Redes neurais artificiais
45
16
Parâmetros do modelo
São internos ao modelo
Exemplo: valor dos pesos dos neurônios
Hiperparâmetros do modelo
São externos ao modelo
Exemplo: número de neurônios por camada
Definição do modelo
45
17
Camada de 
entrada Camada oculta 
Camada de 
saída
𝒙𝟏
𝒙𝟐
𝒙𝒏
.
.
.
.
.
.
y
Número de 
camadas ocultas
Função de 
ativação
Inicialização dos 
pesos
Taxa de 
dropout
Hiperparâmetros da estrutura
45
18
Número de epochs
Tamanho do batch
Algoritmo de otimização
Taxa de aprendizagem
Hiperparâmetros de treinamento
4
45
19
Retreinar a rede
Treinar múltiplos modelos
Monitorar o valor do erro
Aplicar técnica de regularização
Evitando overfitting
45
20
Aumento no número de neurônios
Aumentar o número de parâmetros
Mais dados de treino
Executar dropout
Evitando underfitting
45
21
Inicialização dos pesos de todos os neurônios
Propagação para a frente (forward)
Cálculo do erro
Propagação reversa (backpropagation)
Atualização dos pesos
Realiza novas iterações até obter 
convergência
Treinamento da rede
45
22
𝒇 𝒙 =
𝟏
𝟏 𝒆 𝒙
Propagação para a frente
Propagação reversa
y
NE1
NE2
NO1
NO2
NS
w1
w2
w3
w4
w5
w6
b2b1
b1
1
1
45
23
Tentativa e erro
Grid search
Busca aleatória
Ajustes dos hiperparâmetros
45
24
mlp_clf = MLPClassifier(warm_start=True, 
max_iter=100)
opcoes_parametros = {
'hidden_layer_sizes': 
[(30,30,30),(20,80),(25,50,5)], 'activation': 
['tanh', 'relu', 'logistic’],
'solver': ['sgd', 'adam', 'lbfgs’], 'alpha': 
stats.uniform(0.0001, 0.9), 
Busca aleatória
5
45
25
'learning_rate’: ['constant’, 'adaptive']}
random_mlp = RandomizedSearchCV(mlp_clf, 
n_iter = 100,
param_distributions = opcoes_parametros)
random_mlp.fit(X_treino_std, y_treino)
45
26
grid_mlp = MLPClassifier(warm_start=True, 
max_iter=100)
opcoes_parametros = {
'hidden_layer_sizes': 
[(30,30,30),(20,80),(25,50,5)],
'activation': ['tanh', 'relu', 'logistic'],
Grid search
45
27
'solver': ['sgd', 'adam', 'lbfgs’],
'alpha': [0.0001, 0.09],
'learning_rate': ['constant','adaptive']}
grid_mlp = GridSearchCV(mlp_clf, param_grid 
= opcoes_parametros)
random_mlp.fit(X_treino_std, y_treino)
45
28
Redes neurais convolucionais
45
29
Uma arquitetura de rede neural
Trabalho com imagens
Transforma os dados de entrada
Convoluções e reduções de dimensionalidade
Convolutional neural networks – CNN
45
30
Convolução
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 0
0 1
2 2 2 2
0 2 2 2
0 1 2 2
6
45
31
Redução de dimensionalidade – pooling
10 33 33 10
29 10 155 123
111 111 120 120
111 111 111 111
33 155
111 120
Matriz (4x)
Matriz (2x2)
Pooling max (2x)
45
32
Arquitetura
1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 0 1 1 1 1
0 0 1 1 1 0 0 1 1 1
0 0 1 1 1 0 0 1 1 1
1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 0 1 1 1 1
0 0 1 1 1 0 0 1 1 1
0 0 1 1 1 0 0 1 1 1
...
Imagem de entrada
Convolução
Pooling
Classe 1
Classe 2
Convolução
Pooling
45
33
Classificação de imagens
Segmentação de objetos 
Detecção de faces
Reconhecimento facial
Diversos outros
Problemas resolvidos com CNN
45
34
Redes neurais sequenciais
45
35
Redes neurais recebem entradas de tamanho 
fixo
Cada instância do conjunto de treino é 
independente
Dados como sequências de palavras em uma 
sentença não podem ser processados
As redes neurais recorrentes podem fazer 
isso
Recurrent neural networks – RNN
45
36
Retêm informações sobre instâncias 
anteriores
As instâncias não são independentes
As entradas e saídas influenciam os 
resultados futuros
7
45
37
𝒚𝟏
𝒙𝟏
𝒚𝟐 𝒚𝟑 𝒚𝒏
𝒙𝟐 𝒙𝟑 𝒙𝒏
𝒉𝟏𝒉𝟎 𝒉𝟐 𝒉𝟑 𝒉𝒏
w w w w w
...
45
38
O treinamento das RNN é difícil
Explosão/desaparecimento do gradiente
Memória de curto prazo (short-term memory)
Memória de longo prazo (long-term memory)
LSTM (long short-term memory)
Evolução das RNN
45
39
Modelagem de linguagem
Tradução de máquina
Reconhecimento de voz
Sumarização de texto
Vários outros
Problemas resolvidos com RNN
45
40
Frameworks especializados
45
41
Tensorflow
Pytorch
CNTK
Keras
Frameworks
45
42
import keras
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(30, input_dim=10, 
activation='relu'))
model.add(Dense(30, activation='relu'))
model.add(Dense(2, activation='softmax'))
Criando uma rede neural com Keras
8
45
43
import keras
model.compile(loss='categorical_crossentropy'
, 
optimizer='adam', 
metrics=['accuracy’])
model.fit(X_treino, y_treino,
epochs=100, 
batch_size=64)
Treinamento do modelo
45
44
Epoch 1/100
116/116 [==============================] –
0s 1ms/step –
loss: 0.2962 - accuracy: 0.8695 - auc_1: 0.9480
...
Epoch 100/100
116/116 [==============================] –
0s 1ms/step –
loss: 0.1837 - accuracy: 0.9176 - auc_1: 0.9797
45
45
Monitorando o treinamento

Continue navegando