MNIST로 이해하는 딥러닝 모델 학습

개 발광 어·2023년 12월 30일
0
post-thumbnail

MNIST란?

MNIST는 손으로 쓴 숫자들로 구성된 대규모 데이터베이스이다. 'Modified National Institute of Standards and Technology'의 약자로, 주로 컴퓨터 비전, 이미지 처리, 머신러닝 등의 분야에서 널리 사용되는 벤치마크 데이터셋이다.

MNIST 데이터셋은 0부터 9까지의 숫자를 손으로 쓴 70,000개의 흑백 이미지로 구성되어 있다. 각 이미지는 가로 세로 28 픽셀 사이즈를 가지고, 각 픽셀은 0(검은 색)부터 255(흰 색)까지의 그레이스케일 값을 가진다. 60,000개의 훈련 세트와 10,000개의 테스트 세트로 나뉘어져 있고 각 이미지에는 해당하는 숫자의 레이블이 붙어 있다. 예를 들어 숫자 이미지 3에는 레이블 값으로 3이 붙어있는 것이다.

MNIST classification task 를 활용해서 feed-forward 과정을 설명해보고자 한다.

MNIST 분류 과제는 숫자 이미지가 주어졌을 때, 해당 숫자가 0에서부터 9 중 무엇인지를 딥러닝 모델이 맞추는 과제를 말한다.

다음과 같이 크게 네 파트로 나누어 생각해 볼 수 있다.

  1. 입력층 (input layer)
  2. 은닉층 (hidden layer)
  3. 출력층 (output layer)
  4. 활성화 & 분류 (activation & classification)

입력층

사람은 육안으로 숫자 이미지를 보고 바로 어떤 숫자인지 인지할 수 있지만, 딥러닝 모델은 그럴 수 없다. 숫자 이미지를 픽셀 값의 집합으로 바꿔주어야 하는데, 이는 28 x 28의 숫자 행렬을 784 x 1의 숫자열로 바꾸어주는 것을 의미한다. 이때 픽셀 하나하나를 유닛(unit) 혹은 뉴런이라 하고 MNIST 하나의 글씨에는 총 784개의 뉴런이 입력층을 구성한다.

출력층

분류 과제의 최종적인 목표는 주어진 이미지가 0에서부터 9까지의 숫자 중 어떤 것인지를 맞추는 것이다. 따라서 출력층은 0부터 9까지 총 10개의 유닛이라고 할 수 있다.

은닉층

은닉층은 입력층과 출력층을 연결하는 층으로, 입력층의 데이터에 가중치를 곱하고 편향을 더하여 출력층으로 값을 전달한다.

위 그림에서 레이어1은 은닉층이라 할 수 있고, 은닉층에서 계산되는 값은 입력층 위에서 부터 아래 뉴런 순서로 아래와 같이 나타낼 수 있다.

i1w11+b11i_1*w_{1_{1}}+b_{1_{1}}
i1w12+b12i_1*w_{1_{2}}+b_{1_{2}}
i2w21+b21i_2*w_{2_{1}}+b_{2_{1}}
i2w22+b22i_2*w_{2_{2}}+b_{2_{2}}

활성화 함수(Activation function)

그림에서 레이어 1 출력단과 출력층의 마지막에 f 라는 기호를 확인할 수 있을 것이다. 이것은 활성화 함수(activation 함수)로, 대표적인 예시인 ReLU 함수로 설명을 해볼 수 있다.
만약 은닉층의 뉴런에서 계산된 값이 0보다 작은 값이라면 ReLU 함수는 이를 모두 0으로 만들어 다음 레이어인 출력층에 전달할 것이다. 반면 0보다 크거나 같은 수라면 이는 제값을 출력층으로 전달한다. 활성화 함수는 딥러닝 모델에 "비선형"을 도입한다는 점에서 의의를 갖는데 이는 모델로 하여금 더 복잡한 패턴을 이해하고 데이터 간의 관계성을 파악할 수 있게 해준다. 더 자세한 활성화 함수에 대한 내용은 아래 링크를 통해 확인할 수 있다.
https://stipplelabs.medium.com/the-power-of-relu-and-its-variants-4c8f57079e29

MNIST 신경망 구조

위의 내용들을 종합하여 시각화한다면 아래 구조와 같을 것이다. 숫자 이미지는 784개의 입력층 유닛으로 나타내어 질 수 있다. 각각의 입력 값은 은닉층의 500개(임의)의 층을 통해 계산이 되어지고 해당 값을 출력 층으로 전달하여 계산 결과를 합하는 이 전체 과정을 feed-forward라고 할 수 있다 .

Backward propagation과 Optimization은 다음번에 다루도록 하겠다.

profile
개발하는 광어입니다.

0개의 댓글