안녕하세요. 

이번 글에서는 이미지(data), 차원(dimension), 그리고 분포(distribution)간의 관계에 대해서 설명해보도록 하겠습니다.

 

앞으로 AutoEncoder, VAE, GAN이해하기 위한 가장 기본적인 background이니 만큼 잘 설명해보도록 하겠습니다.

 

 

 

1. 이미지와 차원(dimension) 간의 관계

먼저, 한 가지 질문을 던지면서 글을 시작하도록 하겠습니다.

 

"색(color)을 표현(representation)하기 위해서는 몇 차원이 필요한가요?"

 

답부터 말씀드리면 "색을 표현하기 위해서는 3차원이 필요"합니다. 현실세계에서는 3차원 (R,G,B) 값을 다양하게 조합하여 색상표현할 수 있죠. 그리고, 이렇게 표현된 공간을 "색 공간 (color space)"라고 부릅니다.

 

<그림 출처: https://geraldbakker.nl/psnumbers/rgb-explained.html>
<위 그림을 설명을 위해첨부되었습니다 . 실제 pixel 값과 색상이 매칭이 안될 수 도 있으니 유의하세요 !>

 

 

 

 

 

"그렇다면, 색을 표현할 수 있는 모든 경우의 수는 어떻게 될까요?"

 

당연히 조합 경우의 수를 구하면 되므로 \(255^{3}\)  이 될 것입니다

 

<그림 출처:  https://overface.tistory.com/593>

 

 

 

 

 

"gray color를 표현하기 위해서 필요한 차원은 무엇일까요?"

 

gray color1차원 (0~255) 으로 모두 표현 가능합니다. 또한, gray color표현할 수 있는 모든 경우의 수255가지가 되겠죠. 그래서, 흑백 이미지를 다루는 문제에서는 이미지를 1차원으로 가정하고 gray scale이라고 표현하기도 합니다.

 

<그림 출처:  https://medium.com/javarevisited/converting-rgb-image-to-the-grayscale-image-in-java-9e1edc5bd6e7>

 

 

 

 

 

"앞서 색상관련해서는 정해진 차원(1차원 or 3차원)이 필요하다고 했는데, 그렇다면 이미지를 표현하기 위해서도 정해진 차원이 필요한가요?"

 

결론부터 말씀드리면, 이미지에 대한 차원은 "이미지 크기에 따라 달라진다" 입니다. 아래 gray scale의 튜링 이미지의 크기가 200×200이라고 한다면, 이러한 이미지를 표현하기 위해서는 40000 차원이 필요합니다. 왜 이렇게 고차원이 나오는지 설명해보도록 하겠습니다. (사실 엄밀히 말하면 색상도 R,G,B외에 다른 요소들로 표현할 수 있으면 색상의 차원은 또 달라질 수 있습니다)

 

 

 

 

200×200 gray scale 이미지를 표현한다고 하면 어떻게 생각해볼 수 있을까요? 먼저, 이미지라는 것은 pixel의 조합으로 이루어져 있습니다. 그리고, 하나의 픽셀에는 하나의 색 표현이 가능하죠. Gray scale인 경우에는 하나의 pixel0~255 사이 값 중 하나가 할당될 수 있습니다.

 

<그림 참고: https://blog.tonkabi.com/blog/post/computer-vision-vs-human-vision>

 

 

그렇다면, 200×200 gray scale 이미지의 pixel들을 1차원 일렬로 늘린다고 생각해보겠습니다.

 

<2D 이미지를 1D 이미지로 늘리는 예시>

 

 

그럼 40000개의 pixel이 나올 것입니다. 이때, 각각의 pixel들은 0~255개의 값을 지니고 있죠. 이를 다른 관점에서 보면, 40000개의 독립된 변수로 볼 수 있고, 각각의 변수는 0~255 값의 범위를 갖고 있다고 할 수 있죠. 40000개의 독립된 변수하나의 이미지 구성될 수 있기 때문에, 200×200 gray scale 이미지는 40000차원을 갖는다고 할 수 있습니다. 200×200 이미지는 40000 차원의 독립된 변수들이 갖는 고유의 값들에 의해 표현될 수 있는 것이죠. 

 

 

 

"그렇다면, 200×200 gray scale 이미지를 표현할 수 있는 모든 경우의 수는 어떻게 될까요?"

 

정답은 아래에서 구한 것 처럼 \(10^{96329}\) 경우의 수가 됩니다.

 

 

 

 

 

2. 이미지와 분포간의 관계 

앞서 200×200 gray scale 이미지의 차원 40000차원이고, 표현할 수 있는 이미지의 개수 (경우의 수)는 대략  \(10^{96329}\) 라고 했습니다.

 

"그렇다면, 200×200 gray scale 에서 표현될 수 있는 모든 경우의 수에 해당하는 이미지들은 의미가 있다고 할 수 을까요?"

예를 들어, \(10^{96329}\) 경우의 조합들 중에서는 아래 왼쪽과 같이 의미 없는 이미지(noise image)들도 있을 것이고, 오른쪽 같이 사람이 구별할 수 있는 의미 있는 이미지가 있을 수 있습니다. 

 

<그림 출처: http://web.mit.edu/kenta/www/three/grayscale-noise/zxevanas/images/?S=A>

 

 

여기서 우리는 또 한 가지 질문을 던져볼 수 있습니다.

 

"200×200 gray scale  즉, 40000차원 상에서 의미있는 이미지들은 고르게 분포(uniform distribution)하고 있을까요? 아니면 40000차원이라는 공간의 특정 영역에 몰려있거나 특정 패턴으로 분포(non-uniform distribution)하고 있을까요?"

 

이러한 질문에 을 하는 방법 중 하나는 200×200 gray scale 이미지들을 uniform distribution으로 수 없이 샘플링 해봐서 경험적으로 보여주는 것입니다. 만약, uniform distribution을 전제로 수 없이 샘플링 했을 때, 의미있는 이미지들이 종종 보인다면 의미있는 이미지들이 40000차원 상에 고르게 분포한다고 볼 수 있겠죠.

 

(※ 직관적으로 이해하기 위해 편의상 40000차원을 아래 이미지 처럼 3차원으로 표현했습니다. (즉, 아래 그림은 '본래 40000차원이다'라고 간주하시면 될 것 같습니다))

 

 

"오토인코더의 모든 것"이라는 영상에서 이활석님은 20만번 샘플링한 결과 의미없는 이미지(noisy image)만 추출된 것을 확인 할 수 있었다고 합니다. 이러한 실험을 통해 의미있는 이미지들은 40000차원에서 특정 패턴 또는 특정 위치에 분포해 있다고 경험적으로 결론내릴 수 있게 되는 것이죠.

 

(↓아래 영상 1:01:25초 부터)

 

 

 

 

 

 

 

지금까지 AutoEncoder, VAE, GAN을 배우기 위한 기본 지식들을 정리해봤습니다.

다음 글에서는 AutoEncoder에 대해서 다루면서 dimension reduction에 대한 개념을 소개하도록 하겠습니다. 왜냐하면 VAE, GAN 같은 논문들을 살펴보려면 "latent"말을 이해하기 중요하기 때문이죠!

 

그럼 다음 글에서 뵙도록 하겠습니다! 

 

 

 

안녕하세요.

이번 장에서는 확률분포에 대한 개념을 설명보겠습니다.

 

확률분포에 대한 개념을 설명하기에 앞서, 확률변수에 대해서 설명을 해보도록 하겠습니다.

 

 

 

 

1. Random Variable

 

  • Ways of assigning numerical results to the outcomes of an experiment = A function from the sample space (Ω) to the real numbers (R).
    • 우리가 사람에 대해서 어떠한(임의의(random)) 실험을 한다고 해보겠습니다.
    • 사람의 키를 측정하는 실험을 할 수 도 있고, 몸무게를 측정하는 실험을 할 수 도 있습니다.
    • 즉, 사람이라는 변수 는 어떤 실험을 하는지에 따라 굉장히 다양한 값 (randomness)을 가질 수 있습니다.
    • 만약, '키 측정 실험'을 하게 되면 특정 실수 값 (키) 을 갖게 됩니다. 예를 들어, 우리가 실험을 통해서 얻은 결과가 "키={150~190}"의 범위를 갖을 수도 있습니다. 
  • [요약1] 결국, 임의의(random) 실험에 따라서 다양한 변수(variable: 몸무게 or 키 or etc..) 들을 갖게되기 때문에 키, 몸무게와 같은 것들을 하나의 random variable이라고 부릅니다.
  • [요약2] 키와 몸무게라는 random variable 종류에 따라 실수 값(or 범위: 키={150~190}, 몸무게={40~80)) 이 정해지기(mapping되기) 때문에 해당 random variable을 하나의 함수라고 보기도 합니다.

사람=S, 키 random variable=S1, 몸무게 random variable=S2

 

 

 

2. Probability Variable

  • 앞서 Random variable은 '몸무게', '키'와 같은 하나의 함수라고 했습니다.
  • Probability variable은 위와 같은 함수(random variable)을 통해 얻은 실수 값이라고 할 수 있습니다.
  • 그런데, 어떻게 실수 값 자체가 또다른 변수(probability variable)가 될 수 있을까요?
  • 해당 실수 값에 해당 하는 경우가 얼마나 빈번하게 일어나는지 확률함수(\(P{_X}(X=x)\))을 통해 알아 낼 수 있기 때문에, '실수 값' 자체도 확률 값을 알아내기 위한 변수(variable)가 될 수 있습니다.

 

 

  • 결국, random variable 함수 = 실수 값 = probability variable 이기 때문에, random variable과 probability variable을 따로 구별하지 않고 동의어로 사용하기도 합니다.

 

 

 

 

 

 

3. 확률변수(Random Variable)의 종류

  • 확률변수는 크게 두 가지 종류로 나뉩니다.
  • 이번 글에서는 각각의 확률변수에 대한 정의만 설명하고, 다음 글에서 이산확률분포를 설명하면서 더 자세히 다루도록 하겠습니다.

 

3-1. 이산확률변수 (Discrete Random Variable)

  • Random variable X가 어느 특정 구간의 모든 실수 값을 택하지 않고 0, 1, 2, ..  와 같은 이산적인 값만을 택하는 변수입니다.

 

3-2. 연속확률변수 (Continuous Random Variable)

  • Random variable X가 어느 특정 구간의 모든 실수 값을 취하는 연속된 구간의 값을 취하는 변수입니다.

 

 

 

 

4. 확률분포 (Probability Distribution)

  • Probability distribution이란 확률변수(random variable)의 모든 값과 그에 대응하는 확률들이 어떻게 분포하고 있는지를 말합니다.
  • 앞서 정의한 확률변수의 종류에 따라 확률분포의 종류도 크게 두 가지 (이산확률분포, 연속확률분포)로 나뉘어 집니다.

www.slideshare.net/JaewookKang1/tf2017-day2-jwkangpub

 

 

다음 글에서 부터는 본격적으로 이산확률분포에 대한 개념과, 다양한 이산확률분포를 다루면서, 어떠한 상황속에서 해당 확률분포들을 사용하는지 알아보도록 하겠습니다!

 

 

 

 

 

+ Recent posts