신사(SinSa)
article thumbnail

신경망을 활용해 손글씨를 분류하는 아주 좋은 예제이자 많은 입문자들이 활용하고 있는 MNIST와 CIFAR의 예제가 아주 잘 설명되고 표현된 글(https://ml4a.github.io/ml4a/neural_networks/)이 있어 옮겨온다.



MNIST는 28x28 픽셀 크기의 레이블된 손글씨 숫자 이미지 60,000개를 담고 있으며, 머신러닝 연구에서 분류 정확도 벤치마크에 널리 사용된다. 




기본적으로 MNIST는 위와 같은 이미지 셋을 가지고 있는데 이런 이미지를 분류하기 위한 신경망은 원본 픽셀을 첫 번째 층의 입력으로 전달하고, 숫자 클래스 0에서 9까지마다 하나씩 10개의 출력 클래스를 가지게 된다. 흑백 이미지이기 때문에 각 픽셀은 0(검정색)에서 255(흰색)까지의 밝기를 가진다. 모든 MNIST 이미지는 28x28이므로 784 픽셀로 구성되고 이를 다음 그림처럼 하나의 입력 배열로 풀어 낼수 있다.




중요한 것은 이 네트워크는 단순한 3x2x1 네트워크보다 더 인상적으로 보이지만, 뉴런의 개수만 많을 뿐 하는 일은 정확히 동일하다는 것이다. 첫 번째 은닉층의 각 뉴런은 첫 번째 층으로 부터 모든 입력을 받는다. 10개의 출력 뉴런은 각각 하나의 클래스 레이블에 할당되는데 첫 번째는 숫자 0, 두 번째는 1과 같은 형태의 식이다.  신경망이 훈련되고 나면 새로운 샘플을 같은 네트워크에 통과시키고 출력 값을 확인해서 숫자를 예측할 수 있다. 예측된 숫자는 가장 높은 출력 값을 가지는 뉴런이 된다. 다음 데모는 이 작업을 보여준다. next 버튼을 눌러 진행해볼 수 있다.



profile

신사(SinSa)

@신사(SinSa)

포스팅이 좋았다면 "좋아요❤️" 눌러주세요!