Keyword
- 변분 오토 인코더
- 변분
- 베이지안 vs 빈도주의
- 확률밀도함수 (PDF)
먼저, VAE 가 하고 싶은 것은 무엇인가? → 1) 입력데이터를 이해하고, 입력데이터와 비슷하게 생긴 출력물을 만들어내는 것 2) 입력 데이터의 latent space 를 학습해서, latent space 로부터 새로운 데이터를 생성해낸다.
1) 변분이란?
A. 변분법의 정의
- 變分法 , 변분법 , Calculus of Variations
- 제미나이 피셜 : 변분법(Calculus of Variations)은 함수나 곡선에 따라 값이 변하는 '범함수(Functional)' 의 극대·극소값(최적의 경로, 최단 거리 등)을 찾는 미적분학의 한 분야입니다.
a. 범함수
위 정의를 살펴보면 극대 혹은 극소를 찾는건 알겠고, 정확히는 범함수? 의 극대 극소를 찾는 수학 분야라고 한다. 범함수는 함수를 입력으로 받는 함수를 이야기한다.
그럼 같은걸 의미하는거 아니야? 아니다. 범함수는 함수를 입력으로 받아서 스칼라를 출력 하는 함수여야한다. 만약 라면, 여전히 에 대한 수식이 나온다. 스칼라값이 나오지 않았으니 는 범함수가 아니다.
범함수는 관례적으로 대괄호를 사용해서 표기한다고한다. 그리고 문제 정의에 따라서 관심 구간에 대한 적분으로 표현한다. 이를테면 다음과 같다.
Q) 점 (-1,1) 과 (1,1) 을 지나는 두 점을 지나는 직선 중 거리가 가장 짧은 함수를 찾는 문제
- 위 문제 정의에 따라 적분 구간은 의 범위인 (-1) 부터 (+1) 까지가 된다.
- 두 점을 지나는 라는 함수가 있을때, 함수를 평가하는 척도는 두 점을 잇는 곡선의 길이가 된다.
- 곡선의 길이는 피타고라스의 정리와 미분의 개념을 적용하여 를 적분구간에 걸쳐서 더해준 것이 된다.
3)에 의해
4) 수식을 보면, 아까 함수와 달리 가 정해지면 하나의 스칼라 값이 출력되는 것을 알 수 있다.
3) 에서 사용한 곡선의 길이 수식 등을 이라고 표현한다. (라그랑지안), 위 최단 거리를 구하는 문제에서는 수식 내에 만 사용되었으니 4) 의 수식을 추상화시키면 라고 표현할 수 있다.
그런데 대부분의 문제는 모두를 필요로하는 경우가 많고 라고 표현된 경우가 많다.
뭐 쉽게 생각하면, 함수를 평가하는 척도가 인거고, 특정한 문제가 주어졌을때, 함수를 평가하기 위해서 3개를 모두 사용한다고 이해하면 될 것 같다.
- 건강 상태를 파악하기 위해서 몸무게,키, 체지방률 3개를 보는 것을 생각하면 될 듯하다.
휴.. 이제 범함수가 무엇인지 학습했다. 다음으로, 변분법으로 넘어가보자.
b. 변분법
범함수 가 있을때, 의 극대, 극소를 찾는게 변분법이라고 했는데,
베이지안 주의에서 를 posterior (사후확률) 이라고 하고, 우리의 목적은 데이터 가 주어졌을 때, 데이터를 라는 latent 로 표현하는 것이다. 그리고, 베이지안 정리에 의해서 사후확률은 가 되는데, prior = Marginal Likelihood 를 구하는게 불가능하다. 왜냐하면 저걸 구하려면 에 대해 적분하는 과정이 포함되어 있는데, latent space 가 엄청 큰 경우, 적분해주는게 불가능하다고 봐야한다.
그래서 VAE 의 핵심적인 부분은 실제 posterior 인 를 로 근사하는 것이다. 이를 Variational Inference 라고 한다.
엥.. 아까 변분법은 범함수의 극대·극소 를 찾는 학문이라고 했는데, 함수를 다른 함수로 근사하는걸 왜 Variational Inference 라고 하는 걸까?
그 이유는, 함수를 함수로 근사할때 사용하는 수식인 KL divergence 수식때문이다. KL divergence 는 두 확률 분포의 차이를 나타내는 척도이다. 예를들면, 대한민국 사람의 몸무게에 대한 확률분포와 일본 사람의 몸무게에 대한 확률분포는 분명히 다를 것이다. 이 두 분포가 얼마만큼 차이나는가? 를 구하는게 KL divergence 이다.
확률변수인 가 1,2,3 처럼 셀 수 있는 이산형 변수이면 summation 으로 표기하고, 몸무게처럼 연속형 변수이면 integral 으로 표기한다.
위 수식을 보면, KL divergence 는 함수 를 입력으로 받는 범함수이기 때문에 Variational Inference 라고 부르는 것이다. 알고보면 쉬운 개념이다.
B. 변분법 풀이 방법
이제 단번에 이해하기 어려운 개념이 나온다.. 변분법을 풀이할때 오일러·라그랑주 방정식을 이용한다.
a. 일반 함수에서의 극값
이 방정식을 이해하기 위해서 범함수가 아니라, 일반 함수의 극대·극소 를 찾는 문제로 돌아가보자. 이라는 함수의 극점을 찾는 방법은 인 지점을 찾으면 끝이다.
이를 조금 풀어서 해석하자면.. 먼저 테일러 전개를 알아야한다. 테일러 전개는 미분 가능한 함수를 다항식으로 근사할 수 있게 만드는건데 수식으로 표현하면 아래와 같다.
- 특정 점 에서 근사하는 식과 본질은 같다. 위 수식은 모든 에 대해서 전개한 수식이다.
- 핵심은 기울기값 에 입력 값이 얼마나 움직였는가 를 곱하고 더해줌으로써 함수값 수준에서 값이 얼마나 변했을까? 를 근사하는 것이다.
위 수식에서 를 아주 작은 값으로 보낸다고 했을때, 이를테면 이면 , … , 거듭제곱을 하면 할 수록 값은 점점점 작아진다.
즉, 를 아주 작은 값으로 설정한다는 조건하에서 에 대해 설명력이 높은 항을 순서대로 나열하면 1차식, 2차식, 3차식, … 이런 식으로 나열된다
이제, 극점을 넣어보자. 만약 가 극점이라면, 이므로, 아래와 같이 근사가 가능하다.
- 위에서 설명력이 높은 순서대로 항을 나열하면 1,2,3차식 순서라고 했는데 극점에서 이므로, 1차식이 0 이 된다. 가장 설명력이 높은 항인 2차식을 이용해서 함수를 근사한 것이다.
- 이라는 것을 고급어휘로 1차변화가 없다 라고 표현한다.
- 즉, 를 ( + 0.001 ) 이든 ( - 0.001 ) 이든, 어떤 방향으로 함수의 입력에 변형을 주어도 영향이 0 이다. 라는 의미를 가진다.
따라서, 함수 의 입력에 만큼 변동을 주었을때의 함수값의 차이는 의 이차도함수인 의 항이 지배를 하게 된다.
- 여기서 를 어떤 방향으로 움직이든 우항을 보면, 제곱을 취하게 됨으로, 는 함수값을 줄이는 방향인지 높이는 방향인지에 대해서는 관여를 못하고 오직 얼마나 변화시켰는지 에 대한 크기 정보만을 담당하게 된다.
- 함수값이 어디로 움직일까? 방향을 결정하는건 의 부호가 담당하게 된다.
- 이면, 를 기점으로 양방향으로 입력값에 변화를 주었을때, 함수값이 증가한다. → 극소
- 이면 극대
b. 오일러·라그랑주 방정식
일반함수에서는 입력값 에 대해 변동을 줄 수 있는 방향이 정해져있었다. (x축을 기점으로 오른쪽 혹은 왼쪽) 하지만, 함수 차원에서 변동을 주기 위해서는 무수히 많은 방향이 존재한다.
- 무수히 많은 방향이 존재한다는게 와닿지 않을 수 있다. 라는 함수의 입력에 변동을 줄 수 있는 방향은 이라거나 이런 식으로 기준점 에 실수를 더하거나 빼는 정도밖에 못하지만,
- 입력 자체가 함수 인 경우, 함수에 변형을 가해줄 수 있는 방향은 무한에 가깝다.
- : 함수를 축 방향으로 1 만큼 shift 했으니 함수의 형태는 기존과 동일하다.
- : 입력 함수의 모양 자체가 변형된다.
- 즉, 함수 차원의 입력에 대해서는 변동을 줄 수 있는 방향 (방법) 이 무수히 많다는 것을 이해해야한다.
본론으로 돌아와, 일반함수에서 범함수로 확장하면, 변동을 주는 방향을 의미하는 와 변동의 크기를 결정하는 으로 텀을 구성한다.
변분법이 하는건 무수히 많은 입력함수 후보 중에서 값이 가장 작은 을 찾아내는 것이다. 위 상황에서 극소점에 해당하는 입력 함수 을 으로 변형하는 방향이 , 변형하는 정도가 이 된다.
여기서 꼭 기억해야할 부분은
- 일반 함수에서는 축 방향으로만 변형을 가하면 되었지만, 범함수에서는 변형을 가할 수 있는 방향이 너무나도 많다는 것이다.
이제, 범함수를 테일러전개로 근사하는 수식을 살펴보자.
- 위 식도 그냥 입력 함수 에서의 범함수값에 (기울기 x 이동크기) 를 계속 더해서 근사하는 수식에 불과할 뿐이다.
-
- 일반함수 는 하나에 대해서만 변화율을 보면 되지만, 범함수는 미분할 수 있는 방향이 무수히 많다. 그래서 어떤 방향으로의 변화율을 계산할 것인가 () 를 명시해준다.
이제 나올 얘기가 핵심이다… 일반 함수를 설명할때 입력값 에서 극값을 가진다면, 테일러전개에서의 1차변화가 0임을 설명했다. (그래서 2차변화에서 2차도함수의 부호에 따라 극대·극소가 결정된다고 설명했다.)
범함수에서도 테일러전개 수식을 그대로 적용하면, 가 극값일때 아래 수식을 만족한다.
흠.. 일반함수에서는 를 만족해야 극값이라고 했고, 우리가 변형을 주는 는 0 이 아닌 아주 극미한 실수여야하니, 이어야한다는 추론을 이끌어낼 수 있었다. 여기서도 마찬가지로 자체가 0 일 수는 없다.
따라서, 을 만족해야한다.
그리고 는 함수에 변동을 주기 시작하는 그 시점에서의 기울기를 의미한다. 따라서, 가 극값이 되려면 아래 수식을 만족해야한다.
- 는 라는 함수를 라는 방향으로 막 변형시키려고 하는 찰나..!! 그 찰나의 순간에서의 의 기울기를 구하려는 것이다.
- 찰나의 순간.. 그러니깐 함수에 변형을 가하기 막 시작하려는 그 찰나를 결정하는 텀은 무엇일까? 바로 이다.
- 변형의 방향 는 고정이고, 얼마나 변화 시킬 것인가? 를 담당하는게 이기 때문이다.
- 를 방향으로 변형을 가하려는 그 찰나의 순간 () 의 기울기가 0 이다. 라는 의미를 가지는게 위 수식이다.
위 수식이 오일러·라그랑주 방정식 그 자체이다. 추상적으로 표현된 수식을 아래처럼 풀어서 표현할 수 있다.
이것도 차례차례 풀어보자..
- 아래와 같은 범함수가 있다.
- 에 방향과 크기로 변동을 준다.
- 위 수식을 에 대해 미분하고, 을 대입한다.
다변수 함수에서, 각 변수에 대한 기울기 기여도를 더해준 것이다.
- (1) 을 부분적분을 이용해 풀어주자.
a. 부분적분 수식은 아래와 같다.
b. 는 문제 정의 시작과 끝인 에서 이다. 두 점을 잇는 최단거리 함수 찾는 문제에서, 시작과 끝 점에서는 변동을 주지 않는다는 것을 기억하라.
따라서, 위와 같이 식을 변형할 수 있다.
- 이제 아래 수식을 만족하는 가 극점을 의미하는 것인데, 는 고정된 함수가 아니라, 입력을 변형시키기 위해 사용하는 무수히 많은 함수를 의미한다. 그럼 저 적분 값이 0 이 되려면 결국 괄호 안의 수식이 0 이어야한다. (변분법 보조정리)