[Machine learning]Energy-based Models(part1)
이번 글은 Energy based model에 대해 yann lecun의 강의를 듣고 정리한 내용입니다.
https://www.youtube.com/watch?v=xIn-Czj1g2Q&list=PLLHTzKZzVU9e6xUfG10TkTWApKSZCzuBI&index=10
기존 Machine Learning과 Multiple Output
기존 machine learning은 입력값에 대해 단일 출력값만을 가졌습니다.
저해상도에서 고해상도로 이미지를 변경할 때 다양한 출력값(multiple output)을 원할 수도 있고, NLP에서 blank 안에 문맥상 의미가 맞는 여러 단어가 오길 원하는 작업을 할 때 기존 machine learning은 문제가 있습니다.
Energy Based Model (EBM) 개요
Energy based model은 multiple output을 내는 모델이 아니라, 실제로는 single output(스칼라 값)을 냅니다.
Energy function \(F(x,y)\)는 scalar-valued이며, \(x\)와 \(y\)가 서로 잘 맞으면(compatible) 낮은 값을, 맞지 않으면(less compatible) 높은 값을 갖습니다.
Inference에서의 Energy function \(F(x,y)\)는 그 값이 최소화되는 \(y\)를 찾는 과정입니다.
특히 주의할 점은, 에너지는 inference 시에 사용되며, learning 할 때 직접 사용하는 것이 아니라는 점입니다.
전통적인 feed-forward model은 명시적 함수(explicit function)로 \(x\)로부터 \(y\)를 직접 계산합니다.
하지만 EBM은 \(x\)와 \(y\)의 종속관계(dependency)를 포착하는 암묵적 함수(implicit function)입니다. 따라서 \(x\)는 여러 개의 \(y\)와 compatible 할 수 있습니다.
또한 \(y\)가 이산(discrete)이냐 연속(continuous)이냐에 따라 추론 방식이 달라집니다. \(y\)가 연속형이라면 \(F\)가 매끄럽고(smooth) 미분 가능해야 하므로 gradient-based inference 알고리즘을 사용해야 합니다.
반면 \(y\)가 이산형이라면 dynamic 알고리즘 등을 고려할 수 있습니다.
Conditional EBM vs Unconditional EBM
Conditional EBM은 입력 \(x\)가 주어졌을 때 \(y\)가 어떻게 결정되는지를 에너지로 표현합니다. 지도학습(분류, 회귀)이 이에 해당합니다.
Unconditional EBM은 입력 없이 \(y\) 자체가 얼마나 자연스러운지를 에너지로 표현합니다. 예를 들어 이미지를 생성할 경우, 더 자연스럽고 자주 관찰되는 이미지일수록 낮은 에너지를 할당합니다.
Probabilistic Models vs EBM
확률적 모델(Probabilistic Models)은 EBM의 특수한 형태로 볼 수 있습니다.
일반적으로 확률 모델에서는 \(\log P(y \mid x)\) 같은 로그 확률을 다루지만, EBM에서는 이 로그 확률을 굳이 정규화하지 않고 에너지라는 스칼라 함수 \(F(x,y)\)로 표현할 수 있습니다.
EBM은 \(\sum_y P(y \mid x) = 1\) 같은 정규화 제약이 없어서 더 자유롭게 정의할 수 있으며, 원한다면 Gibbs-Boltzmann 분포 형태로 바꿔 확률로 해석할 수도 있습니다.
EBM Architectures for Multimodal Prediction
Joint Embedding
Joint embedding은 여러 형태나 시점, 혹은 잡음이 섞인 변형 등 다양한 버전의 입력 데이터를 공통된 표현 공간에 매핑하는 방법을 말합니다.
두 입력이 의미적으로 '같은' 대상이면 임베딩 공간에서 가깝게, '다른' 대상이면 멀리 떨어지도록 학습합니다.
따라서 특정 입력에 대해 네트워크가 카테고리를 '하나만' 직접 뽑아내는 대신, 임베딩 공간에서 가까운 후보들을 찾는 형태로 학습이 이뤄집니다.
Joint embedding은 주로 siamese network를 이용한 metric learning 기법으로 학습하며, 구체적인 metric learning 내용은 다른 글을 참고하시면 됩니다.
Latent Variable EBM
Latent variable EBM은 EBM에 잠재 변수 \(z\)를 도입하여, 입력 \(x\)와 출력 \(y\) 사이의 복잡하고 멀티모달한(multimodal) 관계를 더 유연하게 모델링하도록 한 방식입니다.
이때 에너지 함수는 \(E(x,y,z)\)로 정의할 수 있으며, 주어진 입력 \(x\)에 대해 \(\arg\min_{y,z} E(x,y,z)\)를 찾는 과정을 통해 최적의 \(y\)와 \(z\)를 동시에 탐색합니다.
다만 \(z\)의 표현 능력이 지나치게 크면, 모든 정보를 \(z\)에 담아버려 일반화가 제대로 일어나지 않을 수 있습니다.
즉, 에너지가 모두 0이 되는 '평평한' 에너지 지형이 만들어지면, 사실상 어떤 \(y\)든 쉽게 설정해 버릴 수 있으므로 학습에 도움이 되지 않습니다. 따라서 \(z\)의 정보 용량을 적절히 제한하여, \(x\)로부터 \(y\)를 잘 복원하도록 해야 합니다.
Training an EBM
EBM을 학습할 때는 입력 \(x\)와 출력 \(y\)가 서로 잘 맞아서 에너지가 낮아지도록 만들어야 합니다. 이 원칙 아래, 크게 Contrastive learning과 regularized/architectural 방식으로 접근할 수 있습니다.
Contrastive learning에서는 정답 \((x[i], y[i])\)의 에너지를 낮추는 동시에, 잘못된 \((x[i], y')\)의 에너지를 끌어올리는 식으로 학습을 진행합니다.
Contrastive learning방식으로 크게 3가지로 예시를 들 수 있습니다.
첫째로 실제 데이터 쌍 \((x[i], y[i])\)은 확실히 에너지를 낮추고 나머지 모든 후보 \(y\)는 전부 높이는 방법입니다.
이는 수학적으로 확률 모델인 최대우도방법(Maximum likelihood)과 동일합니다.
둘째로 실제 데이터 쌍 \((x[i], y[i])\)은 확실히 에너지를 낮추고 모든 후보가 아닌 특정한 \(y\)만 높이는 방법입니다.
이는 첫 번째 아이디어보다 tractable 합니다. 대표적인 방법으로 NCE, Metric learning 등이 있습니다.
셋째로 데이터영역 바깥쪽 지점의 데이터를 데이터 영역 쪽으로 매핑하도록 학습하는 것입니다.
오류 또는 노이즈가 있는 샘플이 들어왔을 때 이를 진짜 데이터 지점으로 복원하는 학습 방법입니다
예를 들어 BERT 같은 경우도 문장에 일부 mask를 넣은 후 원본 문장으로 복원하는 것이기 때문에 이와 유사한 방법이라고 생각할 수 있습니다.
Regularized/architectural에서는 모델의 용량이나 구조를 제한하는 것으로 데이터가 놓일 수 있는 저 차원 영역만 에너지를 낮게 하는 것입니다.
Regularized/architectural 방식은 크게 3가지로 예시를 들 수 있습니다.
첫째로 데이터가 놓여있는 영역을 저 차원 구조 혹은 특정분포를 가진 구조로 만들어주는 것입니다.
예시로 PCA, K-means 등이 있습니다.
둘째로 정규항을 직접 사용하여 공간의 구조를 제한하는 것입니다.
대표적인 방법으로 variational Auto encoder, sparse coding이 있습니다.
셋째로 데이터 주변에서 에너지의 gradient를 최소화하고, 그 외 영역에서는 급격히 커지도록 곡률을 높이는 것입니다.
EBM을 Probabilistic Methods(Max likelihood) 관점에서 볼 때
Energy based model을 확률모델(normalization이 돼있는)로 해석하면, $$ P_w(y \mid x) \;=\; \frac{ e^{-\beta\,F_w(x,y)} }{\displaystyle \int_{y'} e^{-\beta\,F_w(x,y')} } $$ 로 쓸 수 있으며, 여기서 \(\beta > 0\)는 상수입니다.
NLL(음의 로그우드)을 1개 샘플 \((x, Y)\)에 대해 계산하면, 다음 형태가 됩니다.
$$ L(x, Y, w) = -\log P_w(Y \mid x) = F_w(x, Y) \;+\; \frac{1}{\beta} \,\log \sum_{y'} e^{-\beta\,F_w(x,\,y')} $$
\(L(x, Y, w)\)를 w에 대해 편미분 하면, 다음과 같이 됩니다.
$$ \frac{\partial L(x,Y,w)}{\partial w} \;=\; \frac{\partial F_w(x,Y)}{\partial w} \;-\; \int_{y'} P_w(y' \mid x) \frac{\partial F_w(x,y')}{\partial w} $$
첫째항은 compatible 한 쌍으로 에너지의 값을 낮추는 방향으로 두 번째 항은 compatible 하지 않은 쌍으로 에너지를 높이는 방향으로 학습합니다.
여기서 \(y'\)은 compatible 하지 않은 모든 쌍입니다.
train 할 때 Gradient descent로 업데이트할 수 있습니다.
w를 다음과 같이 업데이트합니다.
$$ w \leftarrow w - \eta \Biggl[ \underbrace{\frac{\partial F_w(x,Y)}{\partial w}}_{\text{정답 } Y \text{ 에너지 낮춤}} \;-\; \underbrace{\int_{y'} P_w(y' \mid x)\, \frac{\partial F_w(x,y')}{\partial w}}_{\text{오답 } y' \text{ 에너지 높임}} \Biggr] $$
Probabilistic Methods의 문제점
첫번째로 적분을 할 때 tracable 하지 않다는 점입니다.
이것보다 더 큰 문제는 EBM모델을 학습할 때 compatible 한 쌍은 낮은 에너지로 보내버리는데 이것이 과하게 된다면 cannon의 골짜기처럼 너무 깊어져 학습이 어려워질 수 있습니다.
이런 문제를 해결하기 위해 통계학자들은 정규화하는 방법을 고안했습니다.
Contrastive Methods: loss
단순히 compatible한 쌍은 에너지를 낮추고 아닌 쌍은 에너지를 높이는 것을 넘어 loss function관점에서 해석해 보겠습니다.
학습을 할수있는 loss function은 다양하고 가장 대표적인 것 위주로 살펴보겠습니다.
Simple [Bromley 1993]
$$ L(x,y,\hat{y},w) = \left[F_w(x,y)\right]_+ \;+\; \left[m(y,\hat{y}) - F_w(x,\hat{y})\right]_+, \quad [z]_+ = \max(0,z). $$
첫째항은 \(F_w(x,y)\) 가 양수로 크게 나오면 값이 생겨 페널티가 생기고 0보다 작게 되면 0이 되어 페널티가 생기지 않습니다.
반대로 두번째 항은 \(y'\)에 대하여 margin(\(m(y,\hat{y})\))보다 에너지가 작게 나오면 페널티를 줍니다.
margin(\(m(y,\hat{y})\))보다 \(F_w(x,\hat{y})\)이 커서 전체 값이 음의 값이 된다면 0이 되어 페널티가 생기지 않습니다.
Hinge Pair Loss [Altun 2003]
$$ \max\Bigl(0, \, m + F^+(x) - F^-(x)\Bigr) $$
이것도 마찬가지로 정답 에너지가 오답에너지보다 margin보다 작지 않으면 패널티를 줘서 학습시키는 것입니다.
Square-Square [Chopra CVPR 2005]
$$ \mathcal{L}(x, y, \hat{y}, w) \;=\; \bigl[\,F_w(x,y)\bigr]_+^2 \;+\; \bigl[\;m\bigl(y,\hat{y}\bigr) - F_w\bigl(x,\hat{y}\bigr)\bigr]_+^2 $$
이 형태는 similar pair는 거리가 0에 가깝게, dissimilar pair는 m이상이 되도록 만들어주는 것입니다.
제곱형태로 사용하여 그 차이의 민감도를 조절해줍니다.