Descoberta de funções de ativação

Introdução ao Aprendizado Profundo com o PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Funções de ativação

$$

  • As funções de ativação adicionam não linearidade à rede
    • Sigmoide para classificação binária
    • Softmax para classificação multiclasse
  • Uma rede pode aprender relações mais complexas com não linearidade
  • Saída de "pré-ativação" passada para a função de ativação

Diagrama de uma rede neural com camadas lineares e uma função de ativação

Introdução ao Aprendizado Profundo com o PyTorch

Conheça a função sigmoide

Diagrama de parte de uma rede neural com entrada, camadas lineares e função de ativação

  • Mamífero ou não?

Uma ilustração de um lêmure

Introdução ao Aprendizado Profundo com o PyTorch

Conheça a função sigmoide

Diagrama de parte de uma rede neural com entradas e camadas lineares

  • Mamífero ou não?

Uma ilustração de um lêmure

  • Entrada:
    • Membros: 4
    • Ovos: 0
    • Pelo: 1
Introdução ao Aprendizado Profundo com o PyTorch

Conheça a função sigmoide

Diagrama de parte de uma rede neural com entradas e o número 6 como saída para as camadas lineares

  • Mamífero ou não?

Uma ilustração de um lêmure

  • Saída para as camadas lineares é 6
Introdução ao Aprendizado Profundo com o PyTorch

Conheça a função sigmoide

Diagrama de parte de uma rede neural com entradas, o número 6 como saída para as camadas lineares e uma função de ativação sigmoide

  • Mamífero ou não?

Uma ilustração de um lêmure

  • Pegamos o resultado da pré-ativação (6) e o passamos para a função sigmoide
Introdução ao Aprendizado Profundo com o PyTorch

Conheça a função sigmoide

Diagrama de parte de uma rede neural com entradas, o número 6 como saída para as camadas lineares, uma função de ativação sigmoide e uma saída

  • Mamífero ou não?

Uma ilustração de um lêmure

  • Pegamos o resultado da pré-ativação (6) e o passamos para a função sigmoide
  • Obter um valor entre 0 e 1

  • Se resultado > 0.5, rótulo da classe = 1 (mamífero)

  • Se resultado <= 0.5, rótulo da classe = 0 (não mamífero)
Introdução ao Aprendizado Profundo com o PyTorch

Conheça a função sigmoide

import torch
import torch.nn as nn

input_tensor = torch.tensor([[6]])
sigmoid = nn.Sigmoid()

output = sigmoid(input_tensor) print(output)
tensor([[0.9975]])
Introdução ao Aprendizado Profundo com o PyTorch

Ativação como a última camada

model = nn.Sequential(
  nn.Linear(6, 4), # First linear layer
  nn.Linear(4, 1), # Second linear layer
  nn.Sigmoid() # Sigmoid activation function
)

Sigmoide como última etapa na rede de camadas lineares é equivalente à regressão logística tradicional

Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

  • Três classes:
Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

  • Três classes:

Um lêmure com a opção "pássaro"

Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

  • Três classes:

Um lêmure com as opções "ave" e mamífero

Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

  • Três classes:

Um lêmure com três opções: ave, mamífero ou réptil

Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

Diagrama de parte de uma rede neural com entradas

  • Recebe três dimensões como entrada e produz a mesma forma
Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

Diagrama de parte de uma rede neural com entradas, um vetor como saída para as camadas lineares, uma função de ativação softmax e uma saída

  • Recebe três dimensões como entrada e produz a mesma forma
  • Gera uma distribuição de probabilidade:
    • Cada elemento é uma probabilidade (limitada entre 0 e 1)
    • A soma do vetor de saída é igual a 1
Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

Diagrama de parte de uma rede neural com entradas, um vetor como saída para as camadas lineares, uma função de ativação softmax e uma saída

  • Recebe três dimensões como entrada e produz a mesma forma
  • Gera uma distribuição de probabilidade:
    • Cada elemento é uma probabilidade (limitada entre 0 e 1)
    • A soma do vetor de saída é igual a 1
Introdução ao Aprendizado Profundo com o PyTorch

Conhecendo a softmax

import torch
import torch.nn as nn

# Create an input tensor
input_tensor = torch.tensor(
    [[4.3, 6.1, 2.3]])

# Apply softmax along the last dimension

probabilities = nn.Softmax(dim=-1) output_tensor = probabilities(input_tensor) print(output_tensor)
tensor([[0.1392, 0.8420, 0.0188]])
  • dim = -1 indica que softmax é aplicada à última dimensão do tensor de entrada
  • nn.Softmax() pode ser usado como última etapa em nn.Sequential()
Introdução ao Aprendizado Profundo com o PyTorch

Vamos praticar!

Introdução ao Aprendizado Profundo com o PyTorch

Preparing Video For Download...