1번에서 전체 개념을 가볍게 설명하고, 2번부터 자세하고 차근차근 설명해 두었습니다. 그러니 첫 부분이 이해되지 않아도 일단은 넘어가서 뒷부분을 읽고 돌아오시면 이해하기 더 편할 겁니다. 전체 개념 딥러닝에서 모델을 학습한다는 것은 실제 값과 예측 값의 오차를 최소화하는 가중치를 찾는 과정이다. 여기서 '오차'를 정의하는 함수를 비용 함수(Cost function)라고 한다. 즉, 비용 함수가 최솟값을 갖는 방향으로 가중치를 업데이트하는 작업이 필요하다. 경사 하강법이라고 불리는 Gradient Descent는 최솟값을 찾을 때 사용할 수 있는 최적화 알고리즘이다. 먼저, 최솟값을 찾을 함수를 설정한 후, 임의의 값으로 초기화하고 해당 값의 기울기를 빼면서 최솟값에 가까워질 때까지 반복하는 방법이다. $..
선형 구조 아래와 같이 은닉층이 있는 신경망은 어떻게 결과값을 계산하는지 확인해보자. $z_0=w_0x_0+w_1x_1$ $z_1=w_2x_0+w_3x_1$ $y=w_5z_0+w_6z_1$ 확인을 위해 식을 직접 대입해 보면, $y=w_5(w_0x_0+w_1x_1)+w_6(w_2x_0+w_3x_1) \\ =(w_5w_0+w_6w_2)x_0+(w_5w_1+w_6w_3)x_1 \\ =w_{t0}x_0+w_{t1}x_1$ 결과적으로 레이어를 추가했지만 또 다른 선형 함수가 만들어졌다. 그림으로 나타내면 아래와 같다. 즉, 은닉층을 선형적으로 쌓아도 결국 하나의 선형 함수로 정의된다는 것이다. 따라서 위와 같은 문제를 해결하기 위해 활성화 함수가 필요하다. 예: $y=w_5h_0(z_0)+w_6h_1(z_1)$..
기본적인 CNN 모델을 만들기 위해 필요한 개념들을 정리하였다. 2D Convolution Convolution은 합성곱 연산이다. CNN 모델에서 이미지 특징을 추출하는 과정이 바로 합성곱 연산이다. Input: 입력은 (h, w) 크기를 가지는 2차원 이미지. kernel: 이미지의 특징을 추출하기 위해 사용되는 필터. Feature map: Kernel을 거쳐 연산된 결과로, 추출된 이미지의 특징을 가짐. 2D Convolution 연산은 아래와 같이 수행된다. ("다음 단계" 클릭) HTML 삽입 미리보기할 수 없는 소스 Kernel은 계속 순회하며 이미지와 합성곱 연산을 수행한다. 그리고 그 결과로 추출된 값이 Feature map이다. 따라서, Feature map은 이미지로부터 추출된 특징이..
실행환경: Colab Pro (Python 3.7.15) 코랩은 90분 이상 동작이 없으면 런타임이 끊어질 수 있기 때문에 console을 열어 아래 스크립트를 실행한다. function connectRuntime(){ button = document.querySelector("body > div.notebook-vertical > colab-status-bar").shadowRoot.querySelector("button"); button.click(); console.log(" --Connected"); } setInterval(connectRuntime, 10 * 60 * 1000); 주기적으로 연결 버튼을 클릭해 코랩이 종료되지 않도록 한다. 준비 !pip install transformers !..
Model Confidence 만약 음식을 분류하는 이미지 모델이 있다면 softmax를 거쳐 레이블 각각의 확률을 반환하게 된다. 90% 치킨이라고 예측하는 이미지를 모아 두고 정확도를 구한다면, 이상적인 모델은 Accuracy가 0.9로 계산되어야 한다. 하지만 보는 것과 같이 90%로 예측한 8개 데이터 중 5개만 정답이므로 Accuray는 0.625이다. 모델이 예측한 것(0.90)보다 실제 정확도(0.625)는 더 낮기 때문에 over-confidence한 모델이라고 표현할 수 있다. 따라서 모델의 신뢰도와 실제 정확도 간의 차이를 줄여주는 보정(calibration)이 필요하다. Label Smoothing 일반적으로 다중 레이블 분류 문제에서 one-hot 인코딩을 사용한다면, 정답인 인덱스..
EarlyStopping은 특정 평가 지표가 증가·감소하는 현상을 보였을 때, 모델이 over-fitting 되었다고 판단하여 학습을 중단하는 것을 뜻한다. tensorflow나 transformers에서는 자체적으로 EarlyStopping을 지원하지만 Pytorch의 경우 직접 구현한 객체를 사용해야 한다. EarlyStopping 적용 예시 HTML 삽입 미리보기할 수 없는 소스 Pytorch로 구현 import torch import numpy as np class EarlyStopping(object): def __init__(self, patience=2, save_path="model.pth"): self._min_loss = np.inf self._patience = patience sel..