2018년 11월 13일 화요일

DL/코세라 딥러닝 3.이진 분류기(Binary Classifier)를 만들기 위해서는?

이 글은 코세라 Andrew Ng 교수의 deep learning AI 강의를 듣고 기억하기 좋게 정리한 것입니다. 목표는 제 부모님도 이해하시도록 쉽게 쓰는 것입니다.


딥러닝이 뭔지와 지도 학습이 뭔지를 살펴보았으니 이번에는 가장 간단한 지도학습 프로그램의 예시를 보자. 이진 분류(binary classification)란 '맞는지 아닌지'를 파악하는 작업이다. 가령 고양이 사진 이진 분류기는 어떤 사진을 보고 그게 고양이 사진인지(1), 아닌지(0)를 파악해서 답을 알려준다. 따라서 입력값은 어떤 사진 파일이, 출력값은 1/0이 될 것이다.

예시를 하나 들어보자. 고양이 사진 분류기를 만들고 싶은데, 우선 사진이 몇 픽셀로 되어 있는지부터 정해야 한다. 사진 파일에는 픽셀(pixel) 값이 있다. 사진을 아주 작은 네모들로 나누는 것이다. 카메라 화소 개념과 일치한다. 한 사진을 가로 64줄, 세로 64줄로 나눈다면 64*64 픽셀의 이미지가 된다. 각각의 픽셀에는 색이 있는데, RGB(red, green, blue) 값으로 표현된다. Red, Green, Blue 세 개의 값이 있으므로 64*64 픽셀 이미지는 다시 세 층으로 나누어진다. 결과적으로 이런 사진 한 장을 컴퓨터가 알아먹을 수 있는 숫자들로 표현하려면 총 64*64*3 = 12288 칸의 행렬이 필요하다. 이 12288개의 숫자들을 세로 방향으로 쭉 나열하면 열벡터(column vector), 혹은 간단히 벡터라는 게 된다. 물리나 수학에서도 벡터라는 말이 자주 나오지만 여기서는 그냥 일렬로 나열된 숫자 뭉치라고 생각하자.

이 12288개의 숫자들에서 어떤 특징(feature)을 잡아낼 수 있을까? 앞에서도 말했듯 딥러닝의 인공 신경망은 여러 개의 층으로 이루어져 있다. 따라서 입력값 층과 가까운 낮은 단계의 층도 있고, 출력값 층과 가까운 높은 단계의 층도 있다. 낮은 단계의 층에서는 작은 부분이 곡선인지 직선인지, 모서리인지 아닌지 등을 파악한다. 낮은 단계의 층에서 파악한 데이터를 가지고 높은 단계의 층에서는 이게 눈인지 코인지 입인지 귀인지 등등 좀 더 고차원적인 특징을 파악한다. 사람이 각 레이어가 정확히 어떻게 특징을 파악하는지는 알지 못하지만, 인공 신경망을 만들어 놓으면 스스로 특징을 파악해서 정답을 내놓는다.

자, 인공 신경망이 무슨 일을 해야 할지를 정했다. 그럼 어떻게 만들지를 살펴보자. 인공 신경망의 작업은 크게 보아 5단계로 이루어진다.
1. 입력값을 넣는다.
2. forward propagation을 통해 입력값에서 특징들을 파악한다.
3. cost function을 통해 출력값을 얻는다.
4. back propagation을 통해 피드백을 주고 각 노드들의 가중치를 업데이트한다.
5. 위의 네 단계를 반복한다.

이 다섯 단계의 과정에서 나오는 forward propagation, cost function, back propagation에 대해서는 각각 나눠서 정리해야 할 것 같다. 아무튼 이런 과정을 통해 신경망은 점점 더 가중치를 잘 잡아내게 된다.

이진 분류기를 만들기 위해서는 logistic regression이란 기법을 배워야 한다. 여기서 cost function이 뭔지도 같이 다뤄보자.

댓글 없음:

댓글 쓰기

DL/코세라 딥러닝 3.이진 분류기(Binary Classifier)를 만들기 위해서는?

이 글은 코세라 Andrew Ng 교수의 deep learning AI 강의를 듣고 기억하기 좋게 정리한 것입니다. 목표는 제 부모님도 이해하시도록 쉽게 쓰는 것입니다.