본문 바로가기

Deep Learning/cs231n Lecture

Lec 4-2. Introduction to Neural Network

Linear Classifier = Building Block of Neural Network

이전에 linear classifier 개념이 처음 도입될 때, 이것은 복잡한 neural network의 basic building block을 이룬다고 하였다. Linear classifier가 뭘 하는지를 단순하게 표현하자면 학습된 weight들을 가지고 input에 대한 score output을 내는 역할을 한다.

 

이 때, 학습이 완료된 weight matrix의 각 행은 하나의 label에 대한 template이라는 의미를 갖는다. input 이미지 벡터가 들어오면 각 행과 내적을 수행함으로써 template matching을 하고 그 결과를 label에 대한 score로 주는 것이다. 그런데, 이 방식의 한계점 중 하나는 하나의 label 당 weight matrix의 한 행만 해당되고, 그 결과 하나의 template만을 학습한다는 것이다. 그래서 실제로 학습된 weight matrix의 각 행을 이미지 dimension으로 복원해보면, 얼굴이 두 개인 말이 나타나는 등의 결과를 얻었던 것이다.

 

여기서는 이러한 linear classifier를 여러 개 중첩한 구조를 살펴볼텐데, 이를 neural network라고 한다.

 

Expand to Multi-layer Network

아래와 같이 두 개의 linear classifier를 중첩한 구조를 생각해보자. 이제 weight W1을 가지고 중간 결과 벡터 h를 얻고, h와 weight W2를 가지고 최종적으로 score 벡터 s를 얻는다.

이 때 중간 결과 벡터 h를 얻기 전에 nonlinear function을 통과시키는데, 만약 이러한 함수를 통과시키지 않는다면 겉으로 보기에는 multi layer여도 수식을 살펴보면 single layer에 지나지 않는다. 아래 수식을 보면,

결국 하나의 matrix W로 합쳐질 수 있으므로, 굳이 weight matrix 2개를 둘 필요가 없는 것이다.

 

Interpretation on Multi-layer Architecture

Multi-layer에 대한 직관적인 이해 중 하나는 하나의 class에 대해서도 여러 가지 template을 W1이 학습한다는 것이다. 예를 들어, 이전에 문제가 되었던 말의 경우 W1에서는 왼쪽을 바라보는 말, 오른쪽을 바라보는 말 두 개의 template 모두를 학습할 수 있다. 각각의 template에 대한 결과가 중간 결과 벡터 h에 저장되고, h의 값들과 W2를 가지고 최종적으로 분류하고자 하는 label에 대한 class score를 얻는다.