brunch

매거진 딥러닝 101

You can make anything
by writing

C.S.Lewis

by TUGU Dec 16. 2018

Binary classification

딥러닝 101_Chapter 4

Binary classification 이란?


Binary의 사전적 의미는 2진법이다. 0,1의 세계로 이루어진 컴퓨터 언어는 결국 2진 법의 세계이다. 딥러닝에서 말하는 Binarty Classificaion이라는 것은 딥러닝으로 구분하고자 하는 결과 값이 2가지 인 경우, 예를 들면 고양이이냐 개냐, 혹은 불량이냐 양품이냐 와 같은 경우를 말한다. 


딥러닝의 결과물로서 표현되는 여러 가지 형태 중에 우선은 이해하기 쉬운 순서대로 이 Binary Classification에 대한 것을 먼저 공부하는 것이 먼저이다. 그리고 다음 차수 글에서 내용이 이어지겠지만  Binary Classification에 사용되는 알고리즘이 Logistic Regression이다. 용어가 어려운가? 괜찮다. 그냥 일단은 그런가 보다 하고 넘어가고 뒤에 자세한 글에서 좀 찬찬히 읽다 보면 하나둘씩 이해가 될 것이다. 너무 하나하나 일일이 완벽하게 이해하려고 하다 보면 금방 지친다. 일단은 큰 그림부터 먼저...




위의 그림에서 Binary Classification의 예제는 고양이이냐 아니냐로, 즉 결과값이 고양이이면 1, 아니면 0으로 표기가 되는 경우이다.  위와 같은 이미지 인식 분야의 딥러닝에서는 대표적으로 Unstructured를 취급하는 경우인데 그렇기 때문에 이를 DNN이 쉽게 받아들일 수 있는 Structured data로 변환시켜 주어야 한다. (Unstructured vs. structrued data 대한 개념을 짚고 넘어가고 싶다면 여기로 https://brunch.co.kr/@minsukshin/6 )
위의 예제에서는 64 X 64 Pixel의 Color 이미지를 사용하고 있다. Color 이미지는 3채널, 즉 R, G, B 각각의 Layer에 대한 데이터가 들어가 있다. (흑백 이미지는 1채널, 1 Layer에 대한 데이터만 있는 것이다)
그렇다면  64 X 64 Pixel의 Color 이미지에 들어가 있는 픽셀 데이터 수는 총 얼마일까?  아주 쉽다. 64 x 64 x 3 = 12,288 개의 픽셀 데이터가 들어가 있는 것이다. 그리고 각각의 픽셀 데이터는 0~255 (8비트인 경우)의 특정 값을 지니고 있다. 
컴퓨터는 이 12,288개의 데이터를, 다시 말해 인풋 데이터 X를 위의 그림처럼 열 벡터(Column Vector)로 변환시켜주어야 받아들일 수 있다. 이 인풋 X 가 어떠한 DNN 알고리즘을 거쳐 y라는 아웃풋을 내놓았고, Binary Classification에서는 이 y의 값이 0,1로 표현될 수 있는 것이다.



딥러닝 이해를 위한 가장 기초적인 수학적 표기법들!

앞으로의 강의에서는 점차 수학적인 내용이 이어질 것이다. 두려워하지 말라. 다시 한번 말하지만 전체적인 개념은 중학교 수학 지식만으로 이해가 가능하니깐. 아무튼 본격적으로 계속 등장할  몇 가지 기본적인 수학적 Notation에 대한 것을 짚어보도록 하자.



1)

인풋은 X, 아웃풋은 y로 표기가 될 것이다. 이들의 쌍을 (x, y)로 표기된다. 왜 쌍으로 표기하냐고? 잊지 말도록. 우리는 '딥러닝'을 공부하고 있고, 그중에서도 Supervised Learning(지도 학습 방식) 위주로 먼저 공부를 하려고 하니깐. Supervised Learning에서는 인풋 X와 그에 상응하는 아웃풋 y의 여러 가지 예시를 (예를 들면 A, B, C 이미지는 고양이로 라벨링, D, E, F 이미지는 개로 라벨링이 되어 있는) 학습하는 것이다. 
그런데 왜 쌍으로 표기하냐고? 잊지 말도록. 우리는 '딥러닝'을 공부하고 있고, 그중에서도 Supervised Learning(지도 학습 방식) 위주로 먼저 공부를 하려고 하니깐. Supervised Learning에서는 인풋 X와 그에 상응하는 아웃풋 y의 여러 가지 예시를 (예를 들면 A, B, C 이미지는 고양이로 라벨링, D, E, F 이미지는 개로 라벨링이 되어 있는) 학습하는 것이다.


2) 

x가  n 차원의 열 벡터, y 가 0 또는 1의 값으로만 표현되는 Binary 결과라는 표기이다.  n 차원이라는 것은 열 벡터에 몇 개의 인풋이 자리 잡았냐라는 것인데, 아까 64x64 Color 이미지의 경우 64 x 64 x 3 = 12,288이므로 12,288 차원의 열벡터가 될 것이다.



3)


별거 없다. 학습 혹은 테스트에 쓰일 x, y의 쌍이 m 개라는 의미이다.  m train은 m 개의 train data, m test는 m 개의 test data라는 뜻이다              




4) 


이러한 m 쌍의 x, y를 각각 따로따로 행렬(Matrix)로 표현하면 아래와 같다. 여기서 주목할 것! 행렬은 항상 대문자로 표기한다는 것!
행렬 X는 n 차원의 열벡터를 m 개만큼 늘어놓은 것이므로, 행렬 X의 크기는  ( n, m) , 즉 n 행 m 열 이 될 것이다. 파이썬에서는 특정 행렬의 크기를 알아볼 때 간단히 X.Shape이라는 함수로 출력이 가능하다. 
마찬가지로 행렬 Y는 y의 집합이다. 다만 y 각각은 0 혹은 1둘 중의 하나의 실수로만 표현이 되므로 y를 마찬가지로 놀어놓는다면 그 크기는 (1, m) 이 될 것이다


지금까지 수포자 혹은 문과생에게는 다소 복잡해 보일 수 있는 수학적 notation에 대해서 짚어 보았다. 분명히 우리는 중학교 때 행렬의 연산에 대해서 배웠다. 우리는 행렬이 무엇인지 정도는 알고 있다. 다만 여기서는 조금 더 표준화된 수학적 표기 방식으로 우리의 앤드류 응 교수님이 표기하신 것 일뿐, 전혀 어려운 개념이 없다. 포기하지 말자!



참조 : 강의 원본 출처 (앤드류 응 교수 딥러닝 강의)

Binary Classification (C1W2L01)

https://www.youtube.com/watch?v=eqEc66RFY0I&list=PLkDaE6sCZn6Ec-XTbcX1uRg2_u4xOEky0&index=7


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari