반응형

신경망 모델 (Model)

신경망 모델의 학습 원리

- 인간의 뇌 구조를 모방하여 만든 모델

- 정보가 입력되었을 때, 정보를 얼마나 어떻게 전달할지 결정

- 여러 개의 뉴런들이 상호 연결되어 동작

- 입력 값, 활성화 함수, 출력 값으로 구성

- 가중치와 편향에 따라 활성화 여부 결정

 

가중치와 편향

- 가중치 : 신호 전달의 정보를 나타냄

- 편향 : '뉴런이 얼마나 쉽게 활성화 되느냐'를 결정

- 활성화 함수 : 입력 신호의 총합을 출력 신호로 변환하는 함수. 임계 값을 경계로 출력하는 특징

 

 

 

딥러닝 모델의 구조

다층 Perceptron

- 입력층 : 데이터를 입력 받는 계층

- 은닉층 : 학습을 진행하는 계층. 은닉층은 N개 이상으로 구성되며 정보를 담아냄

- 출력층: 입력된 데이터에 따라 결과를 출력하는 계층. Task에 따라 다르게 구성 가능

 

 

 

역전파 (Backpropagation)

연쇄법칙

- 합성 함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있음

 

덧셈 노드의 역전파

- 덧셈 노드의 역전파는 입력 값을 그대로 흘려보냄

 

곱셈 노드의 역전파

- 곱셈 노드의 역전파는 입력 신호들을 서로 바꾼 값을 곱해서 하류로 보냄

 

 

 

손실 계산

- 출력층에서 얻어진 예측 값과 실제 값 (Label) 사이의 차이를 손실 함수를 사용해 계산

- 모델은 학습 과정에서 손실 값을 최소화하는 방향으로 가중치와 편향을 업데이트 함

- 손실 함수는 문제의 유형 (회귀, 분류)에 따라 다를 수 있음

 

손실함수

1) 회귀 문제

- 평균 제곱 오차 (MSE), 평균 절대 오차 (MAE) 등을 사용

 

2) 분류 문제

- 교차 엔트로피 (Cross-Entropy)를 사용함

 

PyTorch에서의 함수

- nn.MSELoss() : MSE 함수

- nn.BCELoss() : 이진분류 문제에서의 Cross Entropy

- nn.CrossEntropyLoss() : 다중분류 문제에서의 Cross Entropy

 

 

 

활성화 함수 (Activation Functions)

Sigmoid 함수

- 딥러닝 초기 연구에서 쓰였던 활성화 함수

- 1 / (1+exp(-1))

- 자연 상수를 분모로 하는 함수

- 0과 1 사이의 값을 가짐

- 미분한 값의 최대치가 0.25

- 그러므로, 층이 깊어질수록 Gradient vanishing (기울기 소실) 문제가 발생했음

 

tanh 함수

- 2 * sigmoid(2x) - 1

- Sigmoid 함수를 rescale한 함수

- 1과 -1 사이의 값을 가짐

- Regression 문제에서 많이 사용됨

 

ReLU 함수

- if (x < 0) 0 / if (x >= 0) x

- 극단적으로 값이 0보다 작으면 0, 0보다 크면 x값 그대로 출력

- 미분한 값의 최대치가 1 또는 0

- 최근 딥러닝에서 가장 많이 사용

 

# 활성화 함수 확인
%%capture
!pip install JAEN -qU

import torch
import torch.nn as nn

from JAEN.models import Perceptron
from JAEN.utils import plot_activation_function


# Sigmoid 확인
def sigmoid(x):
    return 1 / (1 + torch.exp(-x))

plot_activation_function(sigmoid)
plot_activation_function(torch.sigmoid)


# ReLU 확인
def relu(x):
    return torch.max(torch.tensor(0.0), x)

plot_activation_function(relu)
plot_activation_function(torch.relu)

 

 

 

출력층

- 신경망의 각 층은 이전 층의 출력을 입력으로 받고, 이 과정이 반복되면서 출력층에서 최종 예측 값 생성

- 신경망의 출력층에서 사용하는 활성화 함수는 문제 유형에 따라 다를 수 있음

 

문제 유형별 출력층의 활성화 함수 유형

1) 회귀 : 활성화 함수 없이, 가중합을 그대로 출력

2) 이진 분류 : Sigmoid 함수

3) 다중 클래스 분류 : Softmax 함수 (PyTorch에서는 손실 함수에 포함)

반응형
복사했습니다!