Baixe o app para aproveitar ainda mais
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
Compartilhar