Odkrywanie funkcji aktywacji

Wprowadzenie do uczenia głębokiego z PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Funkcje aktywacji

$$

  • Funkcje aktywacji wprowadzają nieliniowość do sieci
    • Sigmoid – klasyfikacja binarna
    • Softmax – klasyfikacja wieloklasowa
  • Nieliniowość pozwala sieci uczyć się bardziej złożonych zależności
  • Wyjście „przed aktywacją" przekazywane jest do funkcji aktywacji

Schemat sieci neuronowej z warstwami liniowymi i funkcją aktywacji

Wprowadzenie do uczenia głębokiego z PyTorch

Funkcja sigmoid

Schemat fragmentu sieci neuronowej z wejściem, warstwami liniowymi i funkcją aktywacji

  • Ssak czy nie?

Ilustracja lemura

Wprowadzenie do uczenia głębokiego z PyTorch

Funkcja sigmoid

Schemat fragmentu sieci neuronowej z wejściami i warstwami liniowymi

  • Ssak czy nie?

Ilustracja lemura

  • Wejście:
    • Kończyny: 4
    • Jaja: 0
    • Sierść: 1
Wprowadzenie do uczenia głębokiego z PyTorch

Funkcja sigmoid

Schemat fragmentu sieci neuronowej z wejściami i liczbą 6 jako wyjściem warstw liniowych

  • Ssak czy nie?

Ilustracja lemura

  • Wyjście warstw liniowych wynosi 6
Wprowadzenie do uczenia głębokiego z PyTorch

Funkcja sigmoid

Schemat fragmentu sieci neuronowej z wejściami, liczbą 6 jako wyjściem warstw liniowych i funkcją aktywacji sigmoid

  • Ssak czy nie?

Ilustracja lemura

  • Wyjście przed aktywacją (6) przekazujemy do funkcji sigmoid
Wprowadzenie do uczenia głębokiego z PyTorch

Funkcja sigmoid

Schemat fragmentu sieci neuronowej z wejściami, liczbą 6 jako wyjściem warstw liniowych, funkcją aktywacji sigmoid i wyjściem

  • Ssak czy nie?

Ilustracja lemura

  • Wyjście przed aktywacją (6) przekazujemy do funkcji sigmoid
  • Otrzymujemy wartość między 0 a 1

  • Jeśli wyjście > 0,5, etykieta klasy = 1 (ssak)

  • Jeśli wyjście <= 0,5, etykieta klasy = 0 (nie-ssak)
Wprowadzenie do uczenia głębokiego z PyTorch

Funkcja sigmoid

import torch
import torch.nn as nn

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

output = sigmoid(input_tensor) print(output)
tensor([[0.9975]])
Wprowadzenie do uczenia głębokiego z PyTorch

Aktywacja jako ostatnia warstwa

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

Sigmoid jako ostatni krok w sieci warstw liniowych jest równoważny tradycyjnej regresji logistycznej

Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

  • Trzy klasy:
Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

  • Trzy klasy:

Lemur z opcją „ptak"

Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

  • Trzy klasy:

Lemur z opcjami „ptak" i ssak

Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

  • Trzy klasy:

Lemur z trzema opcjami: ptak, ssak lub gad

Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

Schemat fragmentu sieci neuronowej z wejściami

  • Przyjmuje trójwymiarowe wejście i zwraca wynik tego samego kształtu
Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

Schemat fragmentu sieci neuronowej z wejściami, wektorem jako wyjściem warstw liniowych, funkcją aktywacji softmax i wyjściem

  • Przyjmuje trójwymiarowe wejście i zwraca wynik tego samego kształtu
  • Zwraca rozkład prawdopodobieństwa:
    • Każdy element to prawdopodobieństwo (wartość między 0 a 1)
    • Suma elementów wektora wyjściowego wynosi 1
Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji softmax

Schemat fragmentu sieci neuronowej z wejściami, wektorem jako wyjściem warstw liniowych, funkcją aktywacji softmax i wyjściem

  • Przyjmuje trójwymiarowe wejście i zwraca wynik tego samego kształtu
  • Zwraca rozkład prawdopodobieństwa:
    • Każdy element to prawdopodobieństwo (wartość między 0 a 1)
    • Suma elementów wektora wyjściowego wynosi 1
Wprowadzenie do uczenia głębokiego z PyTorch

Wprowadzenie do funkcji 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 oznacza, że softmax jest stosowany do ostatniego wymiaru tensora wejściowego
  • nn.Softmax() można użyć jako ostatniego kroku w nn.Sequential()
Wprowadzenie do uczenia głębokiego z PyTorch

Czas na ćwiczenia!

Wprowadzenie do uczenia głębokiego z PyTorch

Preparing Video For Download...