활성화 함수 알아보기

PyTorch로 배우는 딥러닝 입문

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

활성화 함수

$$

  • 활성화 함수는 네트워크에 비선형성을 더합니다
    • 시그모이드: 이진 분류
    • 소프트맥스: 다중 클래스 분류
  • 비선형성으로 더 복잡한 관계를 학습합니다
  • "사전 활성화" 출력을 활성화 함수에 전달합니다

선형 계층과 활성화 함수가 있는 신경망 다이어그램

PyTorch로 배우는 딥러닝 입문

시그모이드 함수 소개

입력, 선형 계층, 활성화 함수가 있는 신경망 일부 다이어그램

  • 포유류인가요?

여우원숭이 일러스트

PyTorch로 배우는 딥러닝 입문

시그모이드 함수 소개

입력과 선형 계층이 있는 신경망 다이어그램

  • 포유류인가요?

여우원숭이 일러스트

  • 입력:
    • 팔다리: 4
    • 알: 0
    • 털: 1
PyTorch로 배우는 딥러닝 입문

시그모이드 함수 소개

입력과 선형 계층 출력이 6인 신경망 일부 다이어그램

  • 포유류인가요?

여우원숭이 일러스트

  • 선형 계층의 출력은 6입니다
PyTorch로 배우는 딥러닝 입문

시그모이드 함수 소개

입력, 선형 계층 출력 6, 시그모이드 활성화가 있는 신경망 일부 다이어그램

  • 포유류인가요?

여우원숭이 일러스트

  • 사전 활성화 출력(6)을 시그모이드 함수에 넣습니다
PyTorch로 배우는 딥러닝 입문

시그모이드 함수 소개

입력, 선형 계층 출력 6, 시그모이드 활성화, 최종 출력이 있는 신경망 일부 다이어그램

  • 포유류인가요?

여우원숭이 일러스트

  • 사전 활성화 출력(6)을 시그모이드 함수에 넣습니다
  • 0과 1 사이 값을 얻습니다

  • 출력 > 0.5 이면 레이블 = 1(포유류)

  • 출력 <= 0.5 이면 레이블 = 0(포유류 아님)
PyTorch로 배우는 딥러닝 입문

시그모이드 함수 소개

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
)

선형 계층 뒤 마지막 단계로 시그모이드를 쓰면 전통적 로지스틱 회귀와 동일합니다

PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

  • 세 가지 클래스:
PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

  • 세 가지 클래스:

"새" 옵션이 있는 여우원숭이

PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

  • 세 가지 클래스:

"새"와 포유류 옵션이 있는 여우원숭이

PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

  • 세 가지 클래스:

세 가지 옵션(새, 포유류, 파충류)이 있는 여우원숭이

PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

입력이 있는 신경망 일부 다이어그램

  • 3차원 입력을 받아 같은 크기로 출력합니다
PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

입력, 선형 계층 벡터 출력, 소프트맥스 활성화, 최종 출력이 있는 신경망 일부 다이어그램

  • 3차원 입력을 받아 같은 크기로 출력합니다
  • 확률 분포를 출력합니다:
    • 각 원소는 확률(0~1 사이)
    • 출력 벡터의 합은 1입니다
PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

입력, 선형 계층 벡터 출력, 소프트맥스 활성화, 최종 출력이 있는 신경망 일부 다이어그램

  • 3차원 입력을 받아 같은 크기로 출력합니다
  • 확률 분포를 출력합니다:
    • 각 원소는 확률(0~1 사이)
    • 출력 벡터의 합은 1입니다
PyTorch로 배우는 딥러닝 입문

소프트맥스 익히기

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은 입력 텐서의 마지막 차원에 소프트맥스를 적용함을 의미합니다
  • nn.Softmax()nn.Sequential()의 마지막 단계로 사용할 수 있습니다
PyTorch로 배우는 딥러닝 입문

연습해 봅시다!

PyTorch로 배우는 딥러닝 입문

Preparing Video For Download...