딥러닝, 특히 이미지 프로젝트를 수행하면 위 단어들을 정말 많이 보게 됩니다.

이것들이 어떤 뜻인지 직관적으로 알아보겠습니다.

 

Representation은 말 그대로 '표현' 입니다.

고양이 이미지를 어떻게 표현할 수 있을까요?

픽셀 별로 0~255 범위의 숫자 세 개를 조합하여 표현할 수도 있겠군요. 아시다시피 이것이 고양이 이미지를 RGB로 표현하는 방법입니다.

그렇다면 고양이 이미지 하나를 n차원의 벡터로 표현하는건 어떨까요? 이것이 딥러닝 모델이 이미지를 표현하는 방법입니다. (나중에 설명할텐데, 이 n차원 벡터를 Feature Vector라고 부릅니다)

 

이미지들을 '표현'하는 방법을 배우는 것은 딥러닝 모델의 성능에 있어 절대적인 영향을 미칩니다.

출처)

위 그림은 두 딥러닝 모델 (a)와 (b)가 이미지들(비행기, 새, 사슴 등)을 n차원 벡터로 어떻게 표현했는지 보여줍니다. (나중에 설명할텐데, 이것이 Latent Space입니다.)

참고로, 위 그림처럼 n차원 벡터들을 2차원으로 시각화하는 방법은 t-SNE 등 '차원 축소'를 검색해 보시면 됩니다!

어떤 모델이 더 잘 표현을 하고 있는 걸까요? 직관적으로 (b) 모델 처럼 분류가 깔끔하게 되면 각각의 클래스들을 구분하기가 훨씬 쉬울 것 같습니다. 실제로, (b) 모델의 정확도가 훨씬 높습니다.

 

이렇듯 딥러닝 모델은 자신에게 주어진 입력을 '표현'하는 방법을 배웁니다. 이제 나머지 단어들로 넘어가 보겠습니다.

 

Feature, Latent Space, Encoder는 아래 그림과 함께 모두 설명하겠습니다.

출처) unist.tistory.com

위 그림은 가장 기본적인 CNN 구조를 나타낸 그림입니다.

기본적인 CNN은 Convolution layer들 뒤에 Fully connected layer들이 연결된 구조이죠.

입력 이미지는 먼저 Convolution layer들을 통과합니다. Convolution layer들을 모두 통과하면 Fully connected layer로 들어갈 벡터를 얻게 되는데, 이 벡터가 바로 Feature vector 입니다. 위의 개 이미지를 가장 잘 표현하는 feature를 뽑아 vector 형태로 나타낸 것이죠.

위 그림에서는 하나의 feature vector가 100개의 원소를 가집니다. 즉, 100차원 feature vector 입니다.

 

이렇게 얻은 feature vector들의 공간이 Latent space 입니다. 한국어로는 해공간, 잠재공간 등으로 부릅니다.

만약 Convolution layer들이 좋은 latent space를 만들었다면 (ex. 개 이미지들에 해당하는 feature vector들과 고양이 이미지들에 해당하는 feature vector들이 섞이지 않고 경계가 명확함) 뒤에 연결된 fully connected layer들은 클래스들을 쉽게 구분할 것입니다. 하지만, 반대의 경우라면 fully connected layer들은 클래스들을 구분할 경계선을 찾을 수 없을 것입니다.

 

마지막으로, 위 예시에서의 convolution layer들처럼 입력으로부터 유용한 feature를 뽑아내는 역할을 하는 구조를 Encoder라고 부릅니다.

Encoder 다음에 위 그림의 fully connected layer와 같은 classifier를 연결하여 classification 문제를 해결할 수도 있고, 독창적인 Decoder 구조를 연결하여 segmentation(ex. 이미지에서 종양에 해당하는 부분만 알아내기) 등의 다른 문제를 해결할 수도 있습니다.

 

딥러닝 기초를 배울 때 자주 등장하는 용어인 Representation, Feature, Latent Space, Encoder에 대해 알아보았습니다. 감사합니다:)

+ Recent posts