바닥부터 시작하는 인공지능

[CS231N]Lecture2: Image Classification Pipeline(2) 정리

HappinessChung 2021. 4. 20. 13:16
반응형

선형 분류를 통해 이미지를 식별하는 방법에 대해 알아본다.

선형 분류기(Linear Classificaion)은 CNN(Convolution Neural Network)을 구성하기위한 빌딩블록과 같기 때문에 이에 대해 잘 이해하는것이 중요하다.

선형 분류기를 활용한 CNN과 언어관련 Neural Network을 마치 레고블록처럼 연결할 경우 위의 슬라이드처럼 이미지가 주어졌을때 이미지에 대한 설명(Description)을 다는것이 가능해진다(이러한 일은 강의 후반부에 진행하므로 지금은 이런것이 있다는것 정도만 알고 넘어가도록 하자)

 

Linear Classifier: Parametric Approach

선형 분류기는 위에서 잠깐 언급했듯이 이미지가 주어졌을때 파라미터(weight)를 이용하여 각 class별로, 해당 이미지가 각 class에 얼마나 부합하는지 점수를 출력해주는 역할을 수행한다. 위의 슬라이드에서는 1개의 이미지가 10개의 클래스와 얼마나 유사한지 총 10개의 점수를 출력하도록 한다.

 

이러한 연산은 행렬의 연산을 통해 이루어진다. 최종적으로 출력해야되는 행렬은 각 클래스별 score가 담긴 10x1행렬이다(f(x,W)). 그리고 이미지를 input값으로 넣어줄 때에는 2차원 이미지를 1차원으로 쭉 펼친 형태로 집어넣어준다. 주어진 이미지가 32x32x3이기 때문에 이 경우 input값은 3072x1의 형태를 가지게된다. 따라서 이때 W(weight)행렬은 10x3072의 사이즈를 가지게 된다. 

선형분류기를 구성하는 마지막 요소는 Bias이다. 이는 10개의 elements(원소)를 가진 vector로 각 원소는 상수값을 가진다. Bias의 역할은 특정 클레스에 점수를 더해주는 역할을 한다. 예를들어, 강아지와 고양이를 분류해야하는데 강아지의 데이터가 고양이 데이터보다 많은 경우, Bias를 통해 강아지 클래스에 점수를 더 줌으로서 정확도를 올리는 경우를 생각해 볼 수 있다. 

 

 

위에서 언급한 내용을 그림으로 표현한 것이다. 이때 W의 각 행은 하나의 class를 분류할 수 있는 틀(template)로써 기능한다. input이미지를 1차원으로 펼쳐서 weight와 dot product(내적)연산을 수행하는것을 알 수 있다. 최종적으로 강아지 클래스의 점수가 높게 나왔기 때문에 주어진 이미지는 강아지로 분류된다. 

 

위에서 보면 template도 1차원으로 펼쳐져있는것을 확인할 수 있다. 각 class의 template을 2차원 이미지로 구성하면 아래와 같아진다. 그러나 선형분류기의 특성상 각 클래스별로 1개의 template만을 만들 수 있기 때문에 intra class variance(클래스 내부의 다양성)을 고려하기는 어렵다.

선형분류기를 이용해서 이미지를 구분하는 모습. 특정 점수 이상인 경우 해당 클래스로 분류된다.

이 경우에는 2차원 평면상에서 표현되었으나 실제로는 parameter의 갯수와 이미지 분류 차원수가 비례한다. 

 

Linear Classifier를 이용하여 분류할 수 없는 데이터들

선형분류를 통해 분리할 수 없는 경우를 그림으로 표현한 것이다. 각 색깔은 각 클래스를 나타낸다. 

 

선형 분류기를 사용하여 결과를 출력한 모습이다. 각 입력 이미지별로 10개의 점수를 가진다.

 

이때, 선형 분류기의 성능을 알아보기 위해서는 손실함수(Loss Function)라는 것을 알아야 하는데 이는 다음 강의에서 다루도록 한다. 

반응형