Variational Inference 알아보기 – MLE, MAP부터 ELBO까지
확률 분포를 근사 추정하는 기법인 Variational Inference를 이해하고 싶은 사람들을 위해, 확률 분포를 추정하는 근본적인 이유를 알려드립니다. 또한 MLE, MAP, KL divergence, ELBO 등 자주 등장하는 용어들을 설명합니다.
모두의연구소 콘텐츠 크리에이터 모임 “코크리” 1기 활동으로 작성된 글입니다. (저자 블로그)
- 원본 글: [머신러닝] Variational Inference (1) – 분포를 왜 추정하는걸까?
- 예상 독자: Varational Inference와 Variational Autoencoder를 이해하고 싶은 독자, ‘Autoencoder의 모든 것’을 보고 추가적인 설명을 보고 싶은 독자 머신러닝 알고리즘의 장단점을 알고 싶은 독자
이 글은 분포를 근사 추정하는 기법인 Variational Inference를 소개합니다. 분포 추정이 Machine Learning에서 자주 사용되는 점 추정(MLE, MAP)에 비해 어떤 이점이 있는지 설명하고, 생성모델의 목표와 연관하여 Variational Inference를 다루겠습니다.
출처가 표기되지 않은 모든 그림은 original content입니다. (GitHub Link)
분포를 왜 추정하는 걸까? – MLE와 MAP
대표적인 점 추정 방식으로 MLE(Maximum Likelihood Estimation)와 MAP(Maximum A Posterior)가 있습니다. 최적의 parameter를 추정할 수 있다면 parameter의 분포에 대해 꼭 알아야 할까요? MLE, MAP를 먼저 알아보고, 점 추정만으로 해결할 수 없는 예시를 살펴보겠습니다.
MLE
MLE는 관측치 X={x₁, x₂, …, xₙ}이 주어졌을 때, 관측치 xᵢ가 등장할 확률의 곱인 likelihood p(X|θ)=∏ᵢ p(xᵢ|θ)를 사용합니다. Likelihood를 parameter θ에 대해 최대화하면 얻은 관측치나 데이터 포인트를 가장 잘 설명하는 parameter θMLE를 구할 수 있습니다.
예시: 주사위의 눈 등장 확률
주사위를 여섯 번 굴려 1, 3, 6, 5, 2, 1의 눈을 얻었을 때, 각 눈이 등장할 확률 θᵢ를 MLE 방식으로 추정하겠습니다. 주사위를 던질 때, 각 면이 등장할 확률을 θᵢ라고 한다면 그 확률 분포는 다음과 같습니다.
Iᵢ는 indicator function으로 , x가 i와 같다면 1, 이외의 경우에는 0의 값을 갖습니다. 예를 들어 x가 1이 나올 확률을 구하려면, x에 1을 대입합니다.
위 식에 따르면, 관측치 X=[1,3,6,5,2,1]에 대한 likelihood는 p(1)²p(3)p(6)p(5)p(2)으로, θ₁²θ₃θ₆θ₅θ₂가 됩니다. X에서 4의 눈은 등장하지 않았는데, ∑ θᵢ =1라는 조건을 만족하도록 Lagrange multiplier를 사용해 likelihood를 최대화해보겠습니다.
(1)으로 (2)를 나누는 등의 방식으로 정리하면, α = θ₁/2 = θ₂ = θ₃ = θ₅ = θ₆을 얻을 수 있고, α가 최대일 때, likelihood도 최대가 됩니다. 제한조건 (6)이 존재하므로, 2α + α + α + θ₄+ α + α = 1을 만족하도록 α를 최대화한다면, α = 1/6, θ₄ = 0을 얻습니다.
MLE 방식의 문제점은 일반화 성능에서 나타납니다. 여섯 번 중 두 번 등장한 1의 눈이 등장할 확률이 1/3이고, 한번도 등장하지 않은 4의 눈이 등장할 확률이 0이라는 결론은 주어진 데이터를 잘 설명하지만, 주사위를 6번 던지고 4의 눈이 나오지 않았다고 그런 일은 일어나지 않는다고 단언할 수 없습니다. 한 번도 보지 않은 데이터에 0을 부여하는 MLE 방식에는 문제가 있어 보입니다. 결론적으로, MLE는 주어진 데이터를 잘 설명하지만, 데이터 분포에 대한 가설을 활용하지 않습니다.
MAP
MLE가 주어진 데이터만을 이용하여 추론한다면, MAP는 데이터 분포에 대한 가설을 활용합니다. 가설은 “데이터는 이러한 분포일거야.” 혹은 “데이터는 Beta 분포를 따르고 parameter는 α = 5, β = 4일거야.”등의 주장이나 믿음입니다. 이미 알고 있는 정보나 가설을 표현하는 분포가 prior p(θ)입니다. MAP 방식을 사용하려면 prior를 꼭 설정해야 합니다. Posterior p(θ|X)은 관측치 X를 고려하여 업데이트한 θ의 분포로, Bayes 정리에 의해 다음과 같이 주어집니다.
Posterior에는 MLE에서 살펴본 확률의 곱 p(X|θ)와 p(θ)가 곱해져 있습니다. 즉, prior가 likelihood의 가중치로 사용됩니다. Posterior를 θ에 대해 최대화한다면 θMAP를 얻을 수 있습니다.
예시: 동전이 앞면이 나올 확률
동전을 10번 던져서 앞면이 총 7번 나온 상황을 가정하겠습니다. MLE 방식을 사용하면 동전의 앞면이 나올 확률 θ를 0.7로 추정할 수 있습니다. MAP 방식을 사용한다면 어떤 결과를 얻는지 살펴보겠습니다.
MAP 방식을 사용하려면 prior를 설정해야 합니다. Prior 설정이 결과에 큰 영향을 미치므로, 명확히 하기 위해 다소 극단적인 예시를 들어보겠습니다. 앞면이 나올 확률 θ는 0.5 이거나 0.6이고, 그 이외의 경우는 없다는 설정입니다. 이때, p(θ=0.5) = 0.8, p(θ=0.6) = 0.2인 상황을 생각해 보겠습니다.
실생활에 적용한다면, 앞면이 나올 확률이 0.6인 사기 동전과 앞면이 나올 확률이 0.5인 정정당당 동전이 1:4의 비율로 섞여있는 상황과 같습니다. 동전 하나를 임의로 골라 연달아 10번 던졌을 때 앞면이 7번 나왔습니다. 이 정보를 바탕으로 고른 동전이 사기 동전인지 정정당당 동전인지 추론해 보겠습니다.
Prior를 설정했으니 likelihood를 계산해야 합니다. 10번 중 총 7번이 앞면이 나오는 경우의 수는 ₁₀C₇이고, 각 상황의 확률은 θ⁷(1-θ)³으로 주어지므로, likelihood는 ₁₀C₇θ⁷(1-θ)³입니다.
posterior는 prior와 likelihood의 곱에 비례하므로, 그 값을 최대로 만드는 parameter가 θMAP입니다.
따라서 θMAP=0.5이고, 정정당당한 동전이라고 추정할 수 있습니다. 또한 θMAP≠θMLE를 확인했습니다. MLE와는 다르게, MAP는 사전 가설(prior)과 데이터의 영향(likelihood)을 고려하여 parameter를 추정합니다. 결론적으로, MAP는 데이터 분포에 대한 가설을 활용합니다.
MLE와 MAP의 관계
위의 예시에서 MAP를 사용하기 위해 갑자기 prior를 설정했습니다. Prior 없이 MAP를 사용할 수 있을까요?
MAP에서 사용한 식에서, p(θ)가 상수, 즉 uniform 분포라면 MLE에서 사용한 식 θMLE = arg max∏ᵢ p(xᵢ|θ)과 같아지게 됩니다. 따라서 MLE는 uniform prior를 갖는 MAP의 특수한 경우입니다.
MLE와 MAP만으로 해결할 수 없는 문제
지금까지 MLE와 MAP로 parameter를 추정해 보았습니다. 이제 처음의 질문 “분포 추정은 왜 하는걸까?”로 돌아가겠습니다. 이 질문은 “분포 추정이 꼭 필요할까?” 와도 연결되어 있는데요. 먼저 MLE와 MAP만으로 해결할 수 없는 문제를 살펴보겠습니다.
문제: 럭키 슬롯 머신은 어느 쪽?
출처: https://towardsdatascience.com/mle-map-and-bayesian-inference-3407b2d6d4d9
카지노에 승률 50%로 설정된 슬롯 머신이 잔뜩 있습니다. 들리는 말에 의하면 이 카지노에 승률 67%인 럭키 슬롯 머신이 한 대 있다는데, 럭키 슬롯 머신을 찾아서 잭팟을 터트리고 싶습니다. 눈여겨 볼 만한 머신은 딱 두 대 A, B인데, 지켜본 결과 머신 A에서는 4번 중 3번을 이겼고, 머신 B에서는 121번 중 81번 이겼습니다. 과연 A와 B 중 어느 쪽이 럭키 슬롯 머신일까요?
1. MAP로 추정하기
MAP 방법을 사용하려면, 적절한 prior를 정해야 합니다. 이항 분포와 관련되고(conjugate prior) 0.5에서 최댓값을 갖는 Beta(2,2)를 prior로 설정하겠습니다. 이 prior는 “나는 저 머신의 승률이 0.5일 확률이 가장 크다고 생각해”라는 가설을 표현합니다.
머신의 승률 prior를 Beta 분포로 설정하면 분포의 최빈값(mode)을 parameter에 대한 식으로 나타낼 수 있고, Beta 분포에 이항 분포를 곱한 분포 또한 Beta 분포의 형태가 되기 때문에, parameter 업데이트 규칙을 안다면 쉽게 MAP를 적용할 수 있습니다.
Prior로 쓰인 Beta(α, β)의 최빈값(mode)은 (α-1)/(α+β-2)로 주어지고, 관측치에 승리가 k번, 패배가 (n-k)번 이라면 posterior는 Beta(α+k, β+n-k)가 된다고 알려져 있습니다. 따라서 posterior를 최대로 하는 승률 PMAP는 posterior의 mode입니다.
머신 A와 B의 승률을 MAP로 계산해 보겠습니다. A에서 4번 중 3번 승리, B에서 121번 중 81번 승리를 관찰했습니다.
A의 관찰 횟수보다 B의 관찰 횟수가 많은데 MAP로 추정된 승률은 A와 B가 같습니다. 그렇다면 A가 럭키 슬롯머신이라는 주장과 B가 럭키 슬롯머신이라는 주장을 동등하게 확신할 수 있을까요? 그렇지 않습니다. MAP로는 posterior의 최빈값(mode)만 알 수 있을 뿐, 그 추정이 어느 정도의 확신도를 갖는지 알 수 없습니다.
2. Posterior 확인하기
이제 머신 A, B의 승률 posterior Beta(5, 3), Beta(83, 42)를 살펴보겠습니다.
머신 A, B의 posterior를 시각화하면, 위의 그림과 같습니다. (A: 빨강, B: 파랑)
두 분포의 최빈값은 0.66으로 같지만 머신 B의 승률 분포가 최빈값 근처에 몰려 있습니다. 머신 B의 신뢰 구간이 머신 A보다 좁기 때문에 머신 B를 럭키 슬롯 머신으로 추정하는 것이 타당합니다. 또한 이 선택은 승률이 0.5일 때 4번 중 3번 승리는 충분히 일어날 수 있지만, 121번 중 81번 승리는 잘 일어나지 않는다는 직관과 부합합니다. 이처럼 MLE(uniform prior를 갖는 posterior의 최빈값), MAP(posterior의 최빈값) 뿐만 아니라 posterior를 알아야 해결할 수 있는 문제가 존재합니다. 사실, 분포 추정은 Machine Learning의 핵심 사항으로 분포를 완벽히 알게 된다면 다른 많은 문제도 해결됩니다.
Machine Learning에서 추정하고 싶은 분포 p(xᵢ)는 test set의 데이터 분포로, test set에서 데이터 xᵢ를 보게 될 확률을 표현합니다. 분포 p(xᵢ)를 알게 된다면 다음과 같은 작업을 할 수 있습니다.
- 이상치 탐지: p(xᵢ)가 작은 값을 갖는 xᵢ를 이상치로 골라 낼 수 있습니다.
- 결측치 채우기: 결측치는 p(xᵢ)를 기반으로 채울 수 있습니다.
- 벡터 양자화: p(xᵢ)가 큰 값을 갖는 xᵢ로 test set을 군집화할 수 있습니다.
분포 p(xᵢ, yᵢ)마저 알게 된다면 추가 작업이 가능합니다.
- 지도 학습: p(yᵢ|xᵢ) = p(xᵢ, yᵢ) / p(xᵢ) 이므로, 데이터 xᵢ의 label을 argmaxy p(yᵢ|xᵢ) 로 구할 수 있습니다.
결론적으로 분포를 정확하게 추정하면 Machine Learning의 많은 문제를 해결할 수 있어 빠르고 정확한 추정을 위한 많은 기법이 발달했습니다.
생성모델과 판별모델
Machine Learning에서 분류 모델을 문제 해결 방식에 따라 크게 두 가지, 생성모델과 판별모델로 나눌 수 있습니다. 샘플 데이터셋을 Xₛₐₘₚₗₑ, 그에 따른 label set을 Yₛₐₘₚₗₑ라고 할 때, 생성모델은Xₛₐₘₚₗₑ가 p(X)로부터 생성되었다고 가정하고 분포 p(X), p(X, Y)를 추정하여 posterior p(Y|X)를 얻는 반면, 판별모델은 p(Y|X)를 바로 추정합니다. 다르게 말한다면, 생성모델은 데이터의 분포를 학습하여 생성 규칙을 파악하고, 판별모델은 클래스 간 차이에 집중해 decision boundary를 학습합니다.
판별모델의 예시부터 들어보겠습니다. 개와 고양이 데이터셋을 입력으로 CNN(LeNet)을 사용하여 개-고양이 분류 문제를 해결하는 냥멍 모델을 생각해 보겠습니다. 샘플 xᵢ는 각 layer를 연달아 통과하고, 모델은 최종 결과와 label yᵢ의 binary cross entropy loss를 최소화하도록 weight를 학습합니다. 그 결과 분류를 잘하는 모델을 얻었습니다.
냥멍 모델은 판별모델입니다. 모든 이미지의 집합 S에 모델의 분류 결과 p(Y=cat|X=xboundary) ≈ p(Y=dog|X=xboundary)가 되는 경계점 xboundary이 존재하고, 경계점은 모여서 경계를 만듭니다. S에서 개와 고양이 데이터셋이 어떤 분포를 갖는지, 개 이미지는 어떻게 분포되어 있는지 관심을 두지 않고, 적절한 decision boundary를 얻었습니다. 냥멍 모델로 그럴듯한 개 이미지를 생성할 수 있을까요?
그렇지 않습니다. 냥멍 모델 기준으로 p(Y=dog|X)가 1에 가까운 이미지를 모아 놓더라도 그 집합 안에는 실제 개와 전혀 관계없는 이미지도 섞여 있기 때문입니다.
생성모델은 분포 p(X), p(X, Y)를 추정하는 만큼 더 복잡한 작업을 처리할 수 있습니다. 특히 주 관심사인 posterior p(Y|X)를 안다면 다음과 같은 posterior inference가 가능합니다.
- 트위터 내용(X)을 보고, 작성자가 우울한지(Y) 알아내기
- 감시 카메라 내역(X)을 보고, 범인이 현장에 돌아올지(Y) 알아내기
하지만 생성 모델은 판별 모델에 비해 계산이 복잡하다는 단점이 있습니다.
Bayes 정리에 의해 다음이 성립하고, posterior(좌변)을 얻기 위해 Y에 대한 적분(분모)이 필요하기 때문으로, 모델 구조가 복잡하고 Y가 고차원일수록 적분은 다루기 힘들어져(intractable) 그대로 계산할 수 없고 다른 방법이 필요하게 됩니다. 그 방법 중 하나인 variational inference를 살펴보겠습니다.
Variational Inference
Variational Inference라는 이름은 물리학의 variational method에서 유래했습니다. Variational method를 사용하면 실제의 경로는 action functional의 정류점에 존재한다는 원리(Stationary Action Principle)로부터 운동 방정식(Euler–Lagrange equation)을 유도할 수 있습니다.
Variational Inference는 복잡한 문제를 간단한 문제로 변화시켜 함수를 근사합니다. 이 과정에서 variational parameter라는 변수를 추가로 도입하고, 추정 문제를 최적화 문제로 변화시킵니다. 예시와 함께 살펴보겠습니다.
Variational paramter λ를 도입하여 log x를 직선으로 근사하기
기울기 λ가 주어질 때, concave function g(x) = log(x)를 직선으로 근사한다면 직선은 f(x)=λ x — b(λ)의 꼴로 나타나고 최적의 b를 구하는 문제가 됩니다. x를 변화시켜 가며 λ x와 log(x)의 차 λ x — log(x)를 최소화하면 그 값이 주어진 λ에 대한 최적의 b가 됩니다. λ에 대해 최적의 b를 반환하는 함수를 f*(λ)라고 한다면, 다음의 관계를 만족합니다.
위 관계를 직선의 방정식에 대입하면 기울기가 λ이고 log(x)에 접하는 직선의 모임을 얻습니다. 임의의 x, λ에 대해 J(x, λ)가 log(x)보다 크거나 같습니다.
x₀ 근처에서 g(x)를 가장 잘 근사하는 직선 f(x)에 대해 f(x₀) = g(x₀)이고, 등호를 만족하는 조건(J의 극소점)이 되므로, 임의의 x₀를 기준으로 g(x)를 잘 근사한 함수 f(x)를 다음과 같이 표현할 수 있습니다.
Variational parameter λ를 도입하여, x에 대해 비선형인 함수 log(x)를 선형으로 근사하는 규칙을 얻었습니다. 이때 log(x)의 복잡성은 f*(λ)로 흡수되었습니다. 정리하면, 주어진 x₀에 대해 J(x₀, λ)를 최소화하는 λ₀를 찾는다면 복잡한 함수 log x를 x₀ 근처에서 간단한 함수 J(x , λ₀)로 잘 근사할 수 있습니다.
확률 분포로 확장하기
분포 p(X)에 대해서도 A(X, λ) ≤ p(X), for all λ, X인 A를 찾을 수 있다면, 관측치 X₀ 근처에서 p(X)를 근사한 함수 q(X)를 다음과 같이 정할 수 있습니다.
하지만 p(X)를 알지 못하는 상황에서, 언제나 p(X)보다 작거나 같은 함수 A(X, λ)를 구하려면 어떻게 해야 하는지 전혀 모르겠습니다. 어떻게 해야 할까요?
Variational Inference의 수식 유도
수식의 자세한 유도보다는 그 의미를 따라가 보겠습니다. p(X)는 확률분포이고, q(Z|λ)는 마음대로 정할 수 있고, 미지입니다. 하지만 분포를 근사하고 있으므로, q(Z|λ)도 확률분포로 제한하겠습니다.
- 은닉 변수 Z가 존재하는 모델에서 데이터의 분포 p(X) = ∑Z p(X,Z)입니다.
- 양변에 log를 씌우면 Jensen 부등식을 통해 lower bound를 표현할 수 있습니다.
- q(Z|λ)에서 λ는 variational parameter이고, λ가 q의 parameter로 작동한다는 표현입니다.
- KL(p||q) = ∑Z p(Z) log p(Z) / q(Z)로 정의되고, 분포 간 “얼마나 떨어져 있는지” 표현하는 척도입니다.
위 과정을 통해, log p(X)에 대해 lower bound를 얻어냈습니다. log p(X) 혹은 p(X)를 evidence라고 부르므로, log p(X)의 lower bound를 ELBO(Evidence Lower BOund)라고 부릅니다.
따라서 q(Z|λ)의 모양과 λ를 조절하여 ELBO를 최대화한다면 log p(X)를 잘 근사했다는 결론을 얻습니다. 하지만 q(Z|λ)를 Gaussian 분포로 제한했을 때, p(X)도 Gaussian 분포로 한정되지는 않으므로 주의해야 합니다. log p(X)는 ELBO =𝔼q(Z|λ)[log p(X|Z)] — KL(q(Z|λ)||p(Z))로 근사하므로 q(Z|λ)의 모양에 직접적인 영향은 받지 않기 때문입니다.
실제 상황에서 Variational Inference는 posterior p(Z|X)를 근사하기 위해 주로 사용됩니다. q(Z|λ)로 p(Z|X)를 근사하는 상황을 살펴 보겠습니다. q(Z|λ)를 최대한 p(Z|X)에 가깝게 만들어야 하는데요, 그 metric으로 KL(q(Z|λ)||p(Z|X))를 활용하겠습니다.
- KL divergence는 두 분포가 같다면 0, 그 이외의 경우에는 0보다 큽니다.
- KL(q(Z|λ)||p(Z|X))를 최소화할수록 두 분포가 가까워진다고 할 수 있습니다.
- log p(X)는 Z와 무관하므로, Z에 대해 상수 취급할 수 있습니다.
흥미로운 결과를 얻었습니다. 흐름을 정리해 보면,
- p(Z|X)를 구하려면 분모의 p(X)를 알아야 하는데, 복잡하여 바로 계산할 수 없습니다.
- p(X)를 근사하기 위해 lower bound(ELBO)를 찾고, ELBO를 최대화하려 합니다.
- 아직 ELBO를 최적화하는 방법은 모르지만, q(Z|λ)로 p(Z|X)를 근사해 봅니다. 이때 metric으로 KL divergence를 사용합니다.
- 3의 결과로 KL(q(Z|λ)||p(Z|X)), log p(X), ELBO가 함께 존재하는 식을 얻었습니다. 이때 p(X)는 q(Z|λ) 선택과 무관합니다. 따라서 KL(q(Z|λ)||p(Z|X)) + ELBO는 상수이고, KL을 어떤 값만큼 줄인다면, ELBO는 같은 값만큼 증가합니다.
- p(X)를 더 잘 근사(ELBO 최대화)하려고 하든, p(Z|X)를 더 잘 근사(KL 최소화)하려고 하든 같은 결과를 얻으므로, ELBO 최대화와 KL 최소화 둘 중 가능한 태스크를 수행하면 됩니다.
- 분포 추정 문제가 최적화 문제로 바뀌었으므로 Variational Inference는 optimization을 통해 추정, 즉 inference를 실행한다고 볼 수 있습니다.
Variational Inference 예시 및 시각화
Variational Inference는 복잡한 모델을 추정하기 위한 방법이지만 간단한 예시에서도 배울 점이 있습니다. P(Z|X)가 Beta 분포이고, Q(Z|λ)를 Gaussian 분포로 제한한 상황을 가정하겠습니다. Q의 parameter를 바꾸어 가며 얼마나 P(Z|X)를 잘 근사했는지에 따라 KL과 ELBO가 어떻게 변화하는지 살펴보겠습니다.
분포가 위와 같이 주어졌을 때, Q(Z|μ, σ)가 P(Z|X=x)에 가까울수록 KL은 작아지고, ELBO는 커집니다. 이 관계를 살펴보기 위해 우리의 예시에선 x=0.4로 고정한 뒤 Q를 변화시키며 ELBO와 KL의 변화를 관찰하겠습니다. 또한, 관측한 데이터가 바뀔 때의 영향을 살펴보기 위해 Q를 고정한 채 x=0.15로 관측이 바뀌었을 때의 결과를 다루겠습니다.
- KL(Q||P)는 우하단 그래프의 x=0.4에서의 자주색 선분의 길이로 표현됩니다.
(Q(Z|λ)(파랑색 음영)가 P(Z|X)(초록색)과 먼 정도) - 청록색 선분은 ELBO입니다. 이 값을 최대화하고 싶습니다.
- ELBO와 KL을 합치면 log P(X=0.4)와 동일함을 확인할 수 있습니다.
예시 1. KL(Q||P) = 0.786 > log P(X=0.4)
예시 2. KL(Q||P) = 0.033
예시 3. 관측치 변화 X = 0.4 -> 0.15
예시 1과 2를 통해 KL이 작을수록 더 좋은 근사가 됨을 알 수 있고, 예시 2와 3을 통해 p(Z|X)가 관측 데이터에 따라 변하므로, q(Z|λ)가 얼마나 잘 근사하는지도 관측한 데이터에 영향을 받음을 알 수 있습니다.
정리하면, λ를 변화시켜 주어진 데이터셋 X에 대해 ELBO를 최대화하거나 KL을 최소화하면, 분포를 가장 잘 근사한 경우가 됩니다. 이 때 근사의 한계는 설정한 q(Z|λ)의 모양에 따라 결정됩니다. 선형 근사에서 가장 잘 근사한 직선을 얻었듯이, q(Z|λ)를 Gaussian으로 설정하고 KL을 최소화하면 q(Z|λ)는 p(Z|X)를 잘 근사한 Gaussian이 됩니다. 동시에 ELBO는 관측치 Xₛₐₘₚₗₑ 근처에서 q의 제한조건 내에서 p(X)를 가장 잘 근사한 값이라고 할 수 있습니다.