認識啟動函式

使用 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

  • 三個類別:

將「bird」作為選項的狐猴

使用 PyTorch 的深度學習入門

認識 softmax

  • 三個類別:

將「bird」與 mammal 作為選項的狐猴

使用 PyTorch 的深度學習入門

認識 softmax

  • 三個類別:

三個選項:bird、mammal 或 reptile 的狐猴

使用 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...