Знакомство с функциями активации

Введение в глубокое обучение с PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Функции активации

$$

  • Функции активации добавляют нелинейность в сеть
    • Sigmoid для бинарной классификации
    • Softmax для многоклассовой классификации
  • Нелинейность позволяет сети учить более сложные зависимости
  • «Предактивационный» выход передаётся в функцию активации

Схема нейронной сети с линейными слоями и функцией активации

Введение в глубокое обучение с PyTorch

Знакомство с функцией sigmoid

Схема части нейронной сети с входом, линейными слоями и функцией активации

  • Млекопитающее или нет?

Иллюстрация лемура

Введение в глубокое обучение с PyTorch

Знакомство с функцией sigmoid

Схема части нейронной сети с входами и линейными слоями

  • Млекопитающее или нет?

Иллюстрация лемура

  • Вход:
    • Конечности: 4
    • Яйца: 0
    • Шерсть: 1
Введение в глубокое обучение с PyTorch

Знакомство с функцией sigmoid

Схема части нейронной сети с входами и числом 6 на выходе линейных слоёв

  • Млекопитающее или нет?

Иллюстрация лемура

  • Выход линейных слоёв равен 6
Введение в глубокое обучение с PyTorch

Знакомство с функцией sigmoid

Схема части нейронной сети с входами, числом 6 на выходе линейных слоёв и функцией активации sigmoid

  • Млекопитающее или нет?

Иллюстрация лемура

  • Предактивационный выход (6) передаётся в функцию sigmoid
Введение в глубокое обучение с PyTorch

Знакомство с функцией sigmoid

Схема части нейронной сети с входами, числом 6 на выходе линейных слоёв, функцией активации sigmoid и выходным значением

  • Млекопитающее или нет?

Иллюстрация лемура

  • Предактивационный выход (6) передаётся в функцию sigmoid
  • Получаем значение от 0 до 1

  • Если выход > 0,5, метка класса = 1 (млекопитающее)

  • Если выход <= 0,5, метка класса = 0 (не млекопитающее)
Введение в глубокое обучение с PyTorch

Знакомство с функцией 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]])
Введение в глубокое обучение с PyTorch

Активация как последний слой

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

Sigmoid в качестве последнего шага в сети линейных слоёв эквивалентна традиционной логистической регрессии

Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

  • Три класса:
Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

  • Три класса:

Лемур с вариантом «птица»

Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

  • Три класса:

Лемур с вариантами «птица» и «млекопитающее»

Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

  • Три класса:

Лемур с тремя вариантами: птица, млекопитающее или рептилия

Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

Схема части нейронной сети с входами

  • Принимает трёхмерный вектор на входе и возвращает тензор той же формы
Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

Схема части нейронной сети с входами, вектором на выходе линейных слоёв, функцией активации softmax и выходом

  • Принимает трёхмерный вектор на входе и возвращает тензор той же формы
  • Возвращает распределение вероятностей:
    • Каждый элемент — вероятность (значение от 0 до 1)
    • Сумма элементов выходного вектора равна 1
Введение в глубокое обучение с PyTorch

Знакомство с функцией softmax

Схема части нейронной сети с входами, вектором на выходе линейных слоёв, функцией активации softmax и выходом

  • Принимает трёхмерный вектор на входе и возвращает тензор той же формы
  • Возвращает распределение вероятностей:
    • Каждый элемент — вероятность (значение от 0 до 1)
    • Сумма элементов выходного вектора равна 1
Введение в глубокое обучение с PyTorch

Знакомство с функцией 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 означает, что softmax применяется к последнему измерению входного тензора
  • nn.Softmax() можно использовать как последний шаг в nn.Sequential()
Введение в глубокое обучение с PyTorch

Давайте потренируемся!

Введение в глубокое обучение с PyTorch

Preparing Video For Download...