活性化関数を知る

PyTorchで学ぶIntroduction to Deep Learning

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

活性化関数

$$

  • 活性化関数はネットワークに非線形性を与える
    • Sigmoid は二値分類向け
    • Softmax は多クラス分類向け
  • 非線形性により複雑な関係を学習可能
  • 「事前活性化」出力を活性化関数に渡す

線形層と活性化関数を備えたニューラルネットワークの図

PyTorchで学ぶIntroduction to Deep Learning

シグモイド関数を知る

入力、線形層、活性化関数を持つニューラルネットワーク部分の図

  • 哺乳類か否か?

キツネザルのイラスト

PyTorchで学ぶIntroduction to Deep Learning

シグモイド関数を知る

入力と線形層を持つニューラルネットワークの図

  • 哺乳類か否か?

キツネザルのイラスト

  • 入力:
    • 四肢: 4
    • 卵: 0
    • 体毛: 1
PyTorchで学ぶIntroduction to Deep Learning

シグモイド関数を知る

入力と線形層の出力が6のニューラルネットワーク部分の図

  • 哺乳類か否か?

キツネザルのイラスト

  • 線形層の出力は6
PyTorchで学ぶIntroduction to Deep Learning

シグモイド関数を知る

入力、線形層の出力6、シグモイド活性化関数を示すニューラルネットワーク部分の図

  • 哺乳類か否か?

キツネザルのイラスト

  • 事前活性化出力(6)をシグモイドに入力する
PyTorchで学ぶIntroduction to Deep Learning

シグモイド関数を知る

入力、線形層の出力6、シグモイド活性化関数と最終出力を示す図

  • 哺乳類か否か?

キツネザルのイラスト

  • 事前活性化出力(6)をシグモイドに入力
  • 0〜1の値を得る

  • 出力 > 0.5 ならラベル = 1(哺乳類)

  • 出力 <= 0.5 ならラベル = 0(非哺乳類)
PyTorchで学ぶIntroduction to Deep Learning

シグモイド関数を知る

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で学ぶIntroduction to Deep Learning

最後の層としての活性化

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

線形層の最後にシグモイドを置くと、従来のロジスティック回帰と同等

PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

  • クラスは3つ:
PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

  • クラスは3つ:

「鳥」を選択肢に持つキツネザル

PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

  • クラスは3つ:

「鳥」と「哺乳類」を選択肢に持つキツネザル

PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

  • クラスは3つ:

「鳥」「哺乳類」「爬虫類」の3択のキツネザル

PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

入力を持つニューラルネットワーク部分の図

  • 3次元ベクトルを入力し、同じ形状で出力
PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

入力、線形層のベクトル出力、softmax活性化、出力を示す図

  • 3次元ベクトルを入力し、同じ形状で出力
  • 確率分布を出力:
    • 各要素は確率(0〜1に収まる)
    • 出力ベクトルの合計は1
PyTorchで学ぶIntroduction to Deep Learning

softmaxを知る

入力、線形層のベクトル出力、softmax活性化、出力を示す図

  • 3次元ベクトルを入力し、同じ形状で出力
  • 確率分布を出力:
    • 各要素は確率(0〜1に収まる)
    • 出力ベクトルの合計は1
PyTorchで学ぶIntroduction to Deep Learning

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で学ぶIntroduction to Deep Learning

Ayo berlatih!

PyTorchで学ぶIntroduction to Deep Learning

Preparing Video For Download...