<Preview>
 이 논문은 매우 유명해서 자세히 안 다루고 넘어갈 수가 없다. 새로운 문라이트라는 사이트의 도움을 받아 리뷰해 보겠다.

Abstract

 Sequence transduction models는 입력 sequence를 받아서 출력 sequence로 변환하는 모델이다. 이 모델이 수행하는 작업에는 기계 번역(machine translation), 음성 인식(speech recognition), 텍스트 요약(text summarization), 질의응답(question answering), 대화 응답 생성(dialogue generation) 등이 있다. 이러한 작업들은 입력과 출력이 모두 순서 정보를 가지는 시퀀스 형태이며, 시퀀스 간 의미적/문법적 관계를 효과적으로 매핑해야 한다는 공통점을 가진다. Transformer 이전 모델들은 RNN이나 CNN 기반의 encoder-decoder 모델이고 attention mechanism을 사용해 encoder와 decoder를 연결한 모델도 존재하긴 한다. 하지만 순수하게 attention mechanism 만으로 만든 모델인 transformer는 quality 측면에서도 뛰어나고 parallelizable 하며 train 하는데 시간도 적게 든다. 이 모델은 WMT 2014 English-to-German translation task, WMT 2014 English-to-French translation task에서 모두 좋은 성능을 보였고 문장의 구조를 트리 형태로 분석하여 문법 단위를 식별하는 작업인 'English constituency parsing'에서도 잘 적용된다.


이 문단에서 흥미로웠던 건 transformer는 attention mechanism을 처음 도입한 것이 아니라 오직 attention mechanism 하나 만으로 만들었기에 독창적이라는 점. 이전의 attention mechanism을 보면  Neural Machine Translation by Jointly Learning to Align and Translate의 Bahdanau Attention(2014)과 Effective Approaches to Attention-based Neural Machine Translation의 Luong Attention(2015)가 있다.

 간략히 이야기 해보면 두 attention algorithm은 모두 seq2seq 모델 내에서 작동하는데 디코더의 특정 시점 t에서 출력 hideen state와 모든 입력 hidden state를 비교하여 attention score를 계산한다. 이후 score들이 softmax를 통해 정규화되어 attention weights가 되고 weighted sum을 통해 context vector를 생성한다. 이때 Bahdanau Attention은 FFNN(Feed-Forward Neural Network)를 통해 attention socre을 계산하고 Luong Attention은 dot/general/concat 방식을 사용한다. 연산 효율은 당연히 간단한 행렬곱으로 나타낼 수 있는 Luong Attention이 높고 특히 dot-product를 사용하는 방식은 파라미터가 없다.(general한 방법은 s_t와 h_i 사이에 W가 들어가 유연성이 증가하고 concat 방식은 s_t와 h_i를 단순 concat하고 W를 곱한 다음 tanh를 통과시키고 v_T를 곱해 스칼라 값을 추출한다. 참고로 Bahdanau는 s_t와 h_i 각각에 W_1과 W_2를 곱한 다음 더하고 tanh를 통과시킨 다음 v_T를 곱해 스칼라 값을 추출한다.)

 나중에 기술하겠지만 이전의 모델들이 디코더에서 인코더 내용을 참조하기 위해 attention을 사용하는지만 transformer는 인코더/디코더 각각의 내부에 attention만 사용한다.

1. Introduction

먼저 Recurrent models에선 text를 다룰 대 text내 단어의 위치를 계산 시간의 단계에 align에 h_t를 h_t-1과 입력에 대한 함수로서 만든다. 이러한 본질적인 순차적인 특징은 병렬화를 불가능하게 만들며 이는 시퀀스 길이가 길어질수록 메모리 제약으로 인해 batching이 제한되기 때문에 중요한 이슈이다. 최근 연구론 factorization tricks(큰 행렬 연산을 더 작은 행렬들의 곱셈으로 분해), conditional computation(입력에 따라 활성화되는 모델의 부분을 달리함.)의 방법으로 개선하지만 근본적인 해결책은 아님.

 그런면에서 attention mechanism은 필수적인 부분이 되어 distance에 관계없이 dependencies를 modeling할 수 있게 됨. 하지만 대부분의 연구는 RNN과 같이 사용됨.

 따라서 본 연구에선 recurrence를 없애고 오직 attention mechanism으로 input과 output사이 dependecies를 도출하는 Transformer라는 모델을 제안함. Transformer는 훨씬 더 많은 병렬화를 가능하게 함. 

2. Background

 Sequential computation을 줄이려는 시도는 Extended Neural GPU, ByteNet, ConvS2S에서 시행되었다. 이들 모두 convolutional neural network를 기본 구성 요소로 사용하여 모든 입력 및 출력 위치에 대해 hidden representation을 병렬로 계산한다. 그러나 이 모델들의 한계는 임의의 두 입력 또는 출력 위치에서 신호를 연결하는데 필요한 연산수가 위치 간의 거리에 따라 증가하여, Conv2S2의 경우 선형적으로, ByteNet의 경우 로그적으로 증가해 먼 위치 간의 종속성을 학습하기 더 어려워진다. Transformer는 이 연산을  O(k)로 줄였지만 이 과정에서 effective resolution가 감소하게 됨.(effective resolution, 유효 해상도가 감소한다는 것은 attention mechanism이 여러 위치의 정보를 가중 평균하여 하나의 표현으로 압축하는 과정에서 각 개별 위치가 가졌던 정보의 고유한 특징이나 세밀함이 다소 손실되거나 덜 뚜렷해지는 현상을 의미) 이를 극복하기 위해 attention 계산 여러 개를 동시에 수행해 다양한 관점에서 정보를 조합함.(=Multi-Head)

 Self-attention은 sequence의 representation을 계산하기 위해 단일 sequence의 서로 다른 위치를 연결하는 attention mechanism임.

 End-to-end memory network는 recurrent attention mechanism에 기반하여 간단한 언어 질의 응답 및 언어 모델링 작업에서 좋은 성능을 보인 모델임.

 이러한 연구들이 있었지만 Transformer는 sequence aligned RNNs이나 convolution을 사용하지 않고 self-attention에만 의존하여 input과 ouput의 representation을 계산한 모델임.

3. Model Architecture

 대부분 경쟁력 있는 neural sequence model들은 encoder-decoder 구조를 가진다. Encoder는 input sequnce의 symbol 표현인 (x_1,..., x_n)에서 연속 표현인 z=(z_1,..., z_n)으로 mapping하고 decoder는 이 z로 symbol의 output sequence인 (y_1,...,y_m)을 한 개씩 만든다. 각 단계에서 모델은 auto-regressive 해서 이전에 생성된 symbols를 additional input으로 사용한다.

Transformer는 위 구조를 가지고 있으며 self-attention과 point-wise,fully connected layers를 쌓은 encoder와 decoder를 사용한다.

3.1 Encoder and Decoder Stacks

Encoder: N=6이고 multi-head self attention mechanism과 simple, position-wise fully connected feed-forward network가 있다. 각 두 개의 sub-layers에 residual connection을 사용하고 layer normalization을 사용하였다. Layer normalization은 LayerNorm(x+Sublayer(x)), where Sublayer(x)는 sub-layer 각층에서 구현한 함수로 이루어진다. Residual connections를 용이하게 하기 위해 모든 sub-layers(embedding layers 포함)의 출력 차원을 512로 하였다.

Decoder: 역시 N=6이고 encoder 구성요서 하나에 새로운 sub-layer가 추가되어 encoder stack의 output과 multi-head attention을 수행한다. 마찬가지로 residual connections와 layer normalization을 수행하고 self-attention을 수행하는 decoder의 sub-layer에서 subsequent position을 attend하려는 것을 막기 위해 수정하였다. 이 masking과 출력 embeddings이 시간 축으로 한 position만큼 offset된다는 사실과 더불어 position i에 대한 예측은 i보다 낮은 position의 outputs 정보들만 활용하게 된다.

3.2 Attention

 Attention function은 query와 key-value pairs를 mapping하여 하나의 output을 생성하는 것이다. Output은 values를 weighted sum하여 만들어지며 이 weight는 query와 corresponding key와의 compatibility function을 통해 계산된다.

3.2.1 Scaled Dot-Product Attention

 

 Input은 dimension d_k의 queries와 keys로 구성되었다 하자. 그럼 query와 all keys 사이에 dot products를 계산하고 √d_k로 나눠준다. 이후 softmax function를 적용해 attention weights를 얻는다. 

 이를 병렬적으로 진행하기 위해 queries들을 세로로 pack해 matrix Q, 마찬가지로 K, V를 만든다. 그럼,

\[
\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V
\]

을 통해 input이나 output의 representation을 얻는다.

 Attention function에는 additive attention과 dot-product attention이 있는데 dot-product attention은 위 식에서 scaling factor를 제외하곤 동일하고 additive attention은 single hidden layer를 가진 feed-forward network로 compatibility function을 계산하는 방식이다. 두 방식의 theoritical complexity는 같지만 dot-product attention은 더 빠르고 실제에서 highly optimized matrix multiplication code로 계산되기에 more space-efficient하다.

 d_k가 작은 경우에는 두 mechanisms이 비슷한 성능을 보이지만 d_k가 큰 경우 additive attention이 scaling이 없는 dot product attention보다 좋은 성능을 보인다.  추측하기론 d_k가 커지면 dot products의 크기가 커져 softmax 함수를 기울기가 매우 작은 영역으로 밀어 넣기 때문이다.(d_k의 값이 매우 커지면 q·k의 분산은 매우 커짐, 그럼 softmax 함수 적용 시 0이나 1에 매우 가깝게 포화됨. 그 지점의 기울기는 거의 0에 가까워져 오차 신호가 거의 전달되지 않아 모델의 가중치가 제대로 업데이트되지 않음) 따라서 dot products를 1/√d_k scaling해준다.(분산을 낮추기 위해)

3.2.2 Multi-Head Attention

d_model 차원이 keys, values and queries를 사용하여 single attention function을 수행하는 대신 queries, keys and values를 서로 다른 학습된 liner projections을 통해 d_k, d_k, d_v 차원으로 h번 lineary project하는 것이 유익하다고 알려짐. 그런 다음 이러한 투영된 버전의 queries, keys, values에 대해 attention function을 병렬적으로 수행해 d_v 차원의 출력 값을 형성함. 그다음 이것들을 concated하고 다시 project하여 final values를 만들어냄.

Multi-head attention은 model이 서로 다른 위치에서 서로 다른 representation subspaces의 정보를 attend 할 수 있게 해 줌. Single attention head는 averaging이 이를 억제함.(여러 입력 위치로부터의 정보를 하나의 출력 표현으로 결합하기 때문)\[
\operatorname{MultiHead}(Q, K, V) = \operatorname{Concat}(\text{head}_1, \dots, \text{head}_h) W^O \\
\quad \text{where } \text{head}_i = \operatorname{Attention}(Q W_i^Q, K W_i^K, V W_i^V)
\]

Where the projections are parameter matrices

W^Q_i ∈ R^d_model×d_k ,  W^K_i ∈ R^d_model×d_k ,W^V_i ∈ R^d_model×d_v ,and W^O ∈ R^hd_v ×d_model .

h=8을 사용하였고 d_k = d_v =d_model / h = 64를 사용함. 

이렇게 head를 나눠서 attention을 진행하여도 each head에 대한 computational cost가 감소하기 때문에 전체적인 cost는 비슷함.

3.2.3 Applications of Attention in out Model

Transformer는 multi-head attention은 3가지 방법으로 사용함.

1. "encoder-decoder attention" layers에서 queries는 previous decoder layer에서 나오고 memory keys and values는 encoder의 output이다. 이를 통해 decoder의 모든 위치가 input sequence의 모든 위치를 attend할 수 있다. 이는 seq2seq모델에서 일반적인 encoder-decoder attention mechanisms을 모방함.

2. encoder는 self-attention layer를 포함함. 여기서 keys, values, queries는 모두 같은 데인 encoder의 previous layer에서 나온다. encoder의 각 위치는 encoder의 이전 layer의 모두 위치에 attend 할 수 있음.

3. 유사하게 decoder도 self-attention layers를 통해 decoder의 각 위치는 해당 위치를 포함하여 디코더의 모든 위치에 attend 할 수 있음. Auto-regression property를 유지하기 위해 decoder에선 leftward information flow를 막아야 하기 때문에 scaled dot-production attention에 masking out(setting to -∞)을 통해 이를 제한한다.

3.3 Position-wise Feed-Forward Networks

Attention sub-layers 이외에도 encoder와 decoder는 fully connected feed-forward network를 가지고 있고 이는 각 위치에 개별적으로 동일하게 적용됨. 두 개의 linear transformations와 사이에 ReLU activation이 있음.

\[
\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2
\]

Linear transformation는 위치 간에 동일한 네트워크를 공유하지만(각 단어마다 같은 가중치와 편향 사용) layer마다 가중치는 다름. 즉, “모든 단어 위치에 동일한 FFN 구조를 적용하되, 레이어 별로는 별도 파라미터를 학습함.” 입력 및 출력의 차원은 d_model = 512, 내부 layer의 차원은 d_ff=2048

3.4 Embeddings and Softmax

다른 sequence transduction models와 유사하게 learned embeddings를 사용하여 input tokens와 output tokens를 d_model 차원의 vector로 변환해 준다. 또한 추가적으로 learned linear transformation과 softmax function을 통해 decoder output을 next-token probabilities로 변환해준다. 두 embedding layers와 pre-softmax linear transformation 간에 동일한 가중치 행렬을 공유함. 또한 embedding vectors의 초기 분산을 적절한 범위로 조정하여 학습을 안정화시키기 위해 √d_model을 matrix에 곱해줌.

3.5 Positional Encoding

이 모델은 recurrence나 convolution을 사용하지 않기 때문에, 순서 정보(sequence order)를 처리하기 위해 각 토큰의 절대적 또는 상대적 위치 정보를 인코딩에 주입해야 한다. 이를 위해 Transformer에서는 positional encoding을 인코더 및 디코더 스택의 입력 임베딩에 더해준다.

다양한 방식 중 이 논문에서는 서로 다른 주파수를 가진 sine 및 cosine 함수 기반의 고정된 포지셔널 인코딩을 사용하였다. 각 위치 pos와 차원 i에 대해 다음과 같이 정의된다:

여기서 pos는 시퀀스 내 위치를, 는 임베딩 벡터의 차원을 나타낸다. 이 방식은 각 차원마다 고유한 주파수를 갖는 사인/코사인 파형을 생성하며, 이 주파수들은 부터 10000⋅2π까지 기하급수적으로 증가한다.

이러한 주기적 함수 기반 인코딩은 두 위치 pospos+k사이의 관계가 일정한 수학적 구조를 가지므로, 모델이 상대적인 위치 차이 k에 따라 attention weight를 조정하는데 유리하다. 논문에서도 다음과 같이 언급하며 이러한 구조가 상대적 위치 정보를 효과적으로 인코딩할 수 있다고 설명한다:

“임의의 고정된 offset k에 대해 PE_pos+kPE_pos의 선형 함수로 표현 가능하다.”

이 주장은 수학적으로 엄밀하게 성립하지는 않지만, 실제로는 attention 연산에서 사용되는 내적(dot product) 결과가 두 위치 간의 상대적 거리 에 따라 일관된 패턴을 형성하기 때문에, 상대적 위치 인코딩으로서 실용적으로 유효하게 작동한다는 경험적 근거로 받아들여진다.

또한 이 방식은 사전 정의된 함수 기반으로 위치를 표현하므로, 모델이 훈련 중에 보지 못한 더 긴 시퀀스 길이로의 일반화(extrapolation) 도 가능하게 한다는 장점이 있다.

추가로, learned positional embedding 방식과 비교 실험을 수행한 결과, 두 방식의 성능 차이는 거의 없었으며, 논문에서는 일반화 측면에서 우수한 sinusoidal encoding 방식을 채택하였다.

4. Why Self-Attention

 이번 section에선 self-attention layers와 일반적으로 vairable-length sequence of symbol representation (x_1,..., x_n)을 다른 equal length sequence인 (z_1,..., z_n)으로 mapping하는데 쓰이는 recurrent, convolutional layers와 다양한 측면을 비교해 볼 건데 먼저 첫 번째로 total computational complexity per layer이고 다음은 the amout of computation that can be parallelized, as measured by the minimum number of sequential operations required, 마지막으로 the path length between long-range dependencies in the network이다.

 

- Complexity per Layer (한 레이어당 복잡도)  
: 한 계층(layer)이 처리하는 전체 연산량을 나타냅니다.  
보통 시퀀스 길이 n, 표현 차원 d, 커널 크기 k 등에 따라 달라지며, 모델의 계산량과 연산 속도에 직접적인 영향을 줍니다.
- Sequential Operations (순차적으로 수행되는 계산 단계 수)  
: 한 레이어 내에서 연산들이 몇 단계에 걸쳐 순차적으로 처리되어야 하는지를 나타냅니다.  
값이 작을수록 병렬처리가 가능해 효율적입니다. 예를 들어, RNN은 O(n)으로 순차적 성질이 강해 병렬화 어려움.
- Maximum Path Length (최대 경로 길이)  
: 입력 시퀀스의 한 위치에서 다른 위치로 정보가 전달되기 위해 거쳐야 하는 최대 계층 또는 연산 단계 수를 말합니다.  
이 값이 작을수록 멀리 떨어진 위치 간 의존성 학습이 쉬워지고, 그래디언트 소실 문제가 완화됩니다.

 

 장거리 의존성을 학습하는 것은 많은 sequence transduction task에서 중요한 과제인데 영향을 미치는 주요 요인 중 하나는 순방향 및 역방향 신호가 네트워크에서 통과해야 하는 길이이다. 이때, 입력 및 출력 시퀀스에서 위치의 조합 간의 경로가 짧을수록 장거리 의존성을 더 쉽게 학습할 수 있으므로 다양한 레이어 유형으로 구성된 네트워크에서 임의의 두 입력 및 출력 위치 간의 최대 경로 길이도 비교함.

 self-attention 레이어는 순차적으로 실행되는 일정한 수의 연산으로 모든 위치를 연결하는 반면, recurrent 레이어는 O(n) 순차 연산이 필요함. 계산 복잡도 측면에서 self-attention 레이어는 시퀀스 길이 n이 표현 차원 d보다 작을 때 recurrent 레이어보다 빠르며, 이는 word-piece 및 byte-pair 표현과 같은 기계 번역의 최첨단 모델에서 사용되는 문장 표현에서 가장 흔한 경우.

++ 최신 기계 번역 모델들에서는 word-piece나 byte-pair encoding 같은 서브워드 단위 표현을 사용함. 그럼 상대적으로 sequence의 길이가 줄어드는 효과가 있음.

Byte-pair encoding(BPE)은 처음에 모든 개별 문자를 토큰으로 간주하고 시작하여 학습 데이터에서 가장 빈번하게 함께 나타나는 인접한 문자 쌍(또는 서브워드 쌍)을 찾아 하나의 새로운 서브워드 토큰으로 병합하는 과정을 반복함. 이 과정이 미리 정해진 어휘 크기에 도달할 때까지 계속됨.

WordPeice는 구글이 개발한 토큰화 기법으로 BPE와 유사하게 서브워드 단위를 사용하는데 BPE는 가장 빈번한 쌍을 병합하는 반면, WordPiece는 특정 통계적 기준(예: 어휘에 추가했을 때 학습 데이터의 우도를 가장 많이 증가시키는 서브워드 쌍)에 따라 병합할 쌍을 선택함.

 

 매우 긴 시퀀스와 관련된 작업의 계산 성능을 향상하기 위해 self-attention은 해당 출력 위치를 중심으로 입력 시퀀스에서 크기 r의 neighborhood만 고려하도록 제한될 수 있음. 이렇게 하면 최대 경로 길이가 O(n/r)로 증가함. 향후 연구에서 이 접근 방식을 더 자세히 조사할 계획.

 커널 폭 k < n을 갖는 단일 convolutional layer는 모든 입력 및 출력 위치 쌍을 연결하지 않음. 이를 위해서는 연속 커널의 경우 O(n/k) convolutional layer 스택이 필요하거나, dilated convolutions의 경우 O(logk(n))이 필요하며, 네트워크의 두 위치 사이의 가장 긴 경로의 길이를 늘임. Convolutional layer는 일반적으로 recurrent layer보다 k배 더 비쌈. 그러나 separable convolutions는 복잡도를 O(k · n · d + n · d2)로 상당히 줄임.

++ dialted convolution은 필터와 입력 사이에 간격을 두어 픽셀을 건너뛰면서 연산을 수행함

++ separable convolution은 계산량을 줄이기 위해 표준 convolution 연산을 두 단계로 분해한 것으로 일반적인 convolution 각 출력 채널은 모든 입력 채널을 동시에 보고 계산하지만 seperable convolution은 depthwise convolution과 pointwise convolution으로 구성되어 depthwise convolution에서는 입력 채널 각각에 대해 따로따로 convolution을 수행하고 pointwise convolution은 1*1 convolution을 사용하여 depthwise 출력을 채널 방향으로 합치거나 변환한다.

 

 그러나 k = n인 경우에도 separable convolution의 복잡도는 self-attention layer와 point-wise feed-forward layer의 조합과 동일하며, 이는 우리 모델에서 사용하는 접근 방식임.

부수적인 이점으로 self-attention은 더 해석 가능한 모델을 생성할 수 있음. 우리 모델의 attention 분포를 검사하고 부록에서 예제를 제시하고 논의할 것임. 개별 attention head가 서로 다른 작업을 수행하는 것을 명확하게 학습할 뿐만 아니라, 많은 attention head가 문장의 구문 및 의미 구조와 관련된 동작을 나타내는 것으로 보임.

5. Training

5.1 Training Data and Batching

 약 450만 개의 문장 쌍으로 구생된 standard WMT 2014 English-German dataset에서 훈련함. 문장은 약 37000개의 토큰으로 구성된 공유 source-traget 어휘를 갖는 byte-pair encoding으로 인코딩 됨.

-> 공유  source-target  단어장은 소스 언어(영어)와 타깃 언어(독일어) 모두 같은 37000개의 서브워드 토큰으로 구성된 단어장을 사용한다는 의미

Recall) Byte-pair encoding(BPE)은 처음에 모든 개별 문자를 토큰으로 간주하고 시작하여 학습 데이터에서 가장 빈번하게 함께 나타나는 인접한 문자 쌍(또는 서브워드 쌍)을 찾아 하나의 새로운 서브워드 토큰으로 병합하는 과정을 반복함. 이 과정이 미리 정해진 어휘 크기에 도달할 때까지 계속됨.

 영어-프랑스어의 경우 36000만 개의 문장으로 구성된 훨씬 더 큰 WMT 2014 English-French dataset을 사용하였고 토큰을 32000 word-piece vocabulary로 분해함.

Recall) WordPeice는 구글이 개발한 토큰화 기법으로 BPE와 유사하게 서브워드 단위를 사용하는데 BPE는 가장 빈번한 쌍을 병합하는 반면, WordPiece는 특정 통계적 기준(예: 어휘에 추가했을 때 학습 데이터의 우도를 가장 많이 증가시키는 서브워드 쌍)에 따라 병합할 쌍을 선택함.

 또한 훈련의 효율성을 위해 Batching by approximate sequence length를 사용하고 각 훈련 batch에는 25000개의 source 토큰과 25000개의 target 토큰을 포함하는 문장 쌍 세트가 포함되어 있음.

5.2 Hardware and Schedule

 8개의 NVIDIA P100 GPU가 장착된 하나의 머신에서 모델을 훈련함. 본 논문에서 설명된 하이퍼파라미터들을 사용하는 base 모델의 경우 각 훈련 단계는 약 0.4초가 걸림. 이 모델은 전체 100,000 steps를 12시간 동안 훈련함. 우리의 big model의 step time은 1.0초이고 300,000단계를 약 3.5일 동안 훈련함.

5.3 Optimizer

β1 = 0.9, β2 = 0.98 및 ϵ = 10−9로 Adam optimizer를 사용했고 다음 공식에 따라 훈련 과정에서 학습률을 변경했음.

\[
\text {lrate} = d_{\text{model}}^{-0.5} \cdot \min(\text{step\_num}^{-0.5}, \text{step\_num} \cdot \text{warmup\_steps}^{-1.5})
\]

이는 처음 warmup_steps 훈련 단계 동안 학습률을 선형적으로 증가시키고 그 이후에는 단계 수의 역 제곱근에 비례하여 감소시킴. warmup_steps = 4000을 사용함.

5.4 Regularization

 세 가지 정규화 방법을 사용하여 Residual Dropout은 각 하위 레이어의 출력에 드롭아웃을 적용하여 하위 레이어의 입력에 추가되고 정규화되기 전에 적용함. 또한, 인코더와 디코더 stacks 모두에서 임베딩과 위치 인코딩의 합계에도 적용함. base model의 경우 P_drop = 0.1을 사용.

 Label Smoothing은 학습 중에  ϵ_ls = 0.1의 값으로 레이블 스무딩을 사용함. 이는 모델이 더 불확실해지도록 학습되므로 복잡성을 저해하지만, 정확도와 BLEU 점수를 향상함.

6. Results

6.1 Machine Translation

 WMT 2014 영어-독일어 번역 작업에서, big 트랜스포머 모델은 이전에 보고된 최고의 모델(앙상블 포함)보다 2.0 BLEU 이상 뛰어넘어 28.4의 새로운 최고 수준의 BLEU 점수를 확립했음. 학습에는 8개의 P100 GPU에서 3.5일이 걸렸고 기본 모델조차도 경쟁 모델의 학습 비용의 일부만으로 이전에 게시된 모든 모델과 앙상블을 능가함.

 WMT 2014 영어-프랑스어 번역 작업에서, 저희의 bih 모델은 BLEU 점수 41.0을 달성하여 이전에 게시된 모든 단일 모델을 능가하며, 이전의 최고 성능 모델의 학습 비용의 1/4 미만임. 영어-프랑스어 학습을 위해 학습된 Transformer (big) 모델은 드롭아웃 비율 Pdrop = 0.3 대신 0.1을 사용했음.

 기본 모델의 경우, 10분 간격으로 작성된 마지막 5개의 체크포인트를 평균화하여 얻은 단일 모델을 사용했고 큰 모델의 경우, 마지막 20개의 체크포인트를 평균화함. beam 크기 4와 길이 페널티 α = 0.6으로 빔 탐색(beam search)을 사용함. 이러한 하이퍼파라미터는 개발 세트에서 실험한 후 선택되었습니다. 추론 중에 최대 출력 길이를 입력 길이 + 50으로 설정했지만, 가능한 경우 조기에 종료함.

-> 여기에 사용한 3가지 테크닉에 대해 알아보자. 

1. Checkpoint Averaging

 학습이 진행되면서 일정 시간마다 모델 상태(파라미터)를 저장함. 이를 checkpoint 저장이라 하고 저장해 둔 마지막 N개의 모델 파라미터를 평균해서 inference에 사용하는 기법. 훈련 후반부에 loss가 흔들릴 수 있고 평균을 내면 파라미터가 더 일관된 방향으로 수렴하여 Ensemble 효과를 파라미터 수준에서 싸게 구현 가능하다는 장점이 있음.

2. Beam search & length penalty

 먼저 beam search는 번역 생성 시, 매 스텝에서 가장 가능성 높은 다음 단어 K개를 유지하며 확장해 나가는 탐색 알고리즘. beam size가 4면 매 시점마다 후보 문장 4개를 유지하며 탐색함. 이때 긴 문장이 불리하게 평가되지 않도록 length penalty  α를 0.6으로 설정함.

BLEU 특성상 긴 문장에 불리하기 때문에 길이 페널티로 밸런스 조정.  이 값은 일반적으로 누적 로그 확률을 나누는 방식으로 적용된다.

3. Output Length Control

 디코딩이 무한루프에 빠지거나 너무 긴 문장을 생성하지 않도록 상한선을 둠. <eos>가 나왔을 때 바로 멈추는 건 불필요한 계산 낭비를 줄이는 기본 최적화 기법

 표 2는 결과를 요약하고 번역 품질과 학습 비용을 문헌의 다른 모델 아키텍처와 비교함. 모델 학습에 사용된 부동 소수점 연산 횟수는 학습 시간, 사용된 GPU 수, 각 GPU의 지속적인 단정밀도 부동 소수점 용량 추정치 5를 곱하여 추정합니다.

+ BLEU(Bilingual Evaluation Understudy) 점수는 기계 번역에서 품질을 평가하기 위해 사용되는 자동 평가 지표로 핵심 아이디어는 기계 번역 결과가 인간이 만든 정답(reference translation)과 얼마나 유사한가를 평가하는 것으로 n-gram 중첩과 길이 조절(penalization)로 정량화됨.

 계산 방법은 먼저 n-gram precision을 계산하는데 번역 결과(candidate)와 정답(reference) 간 n-gram이 얼마나 겹치는지 측정해 기계 번역의 전체 n-gram 수 중에 기계 번역에서 정답과 겹친 n-gram 수의 비율로 구한다. 이때 중복 방지를 위해 clipped precision(candidate에서의 count와 reference의 count 중 최솟값)을 사용한다. 다음 스텝은 brevity penalty로 번역이 너무 짧으면 점수를 제한한다. 

마지막으로 이 두 과정을 기반으로 BLEU Score를 계산한다.

추가로 BLEU의 한계에 대해 얘기해 보면 단어 순서나 문법 오류를 완전히 반영하지 못함. 뿐만 아니라 의미가 같아도 표현이 다르면 낮은 점수, 단일 참조가 부족한 상황에선 적절하지 않음(사람이 만든 번역도 다양하니까)

6.2 Model Variations

 Transformer의 다양한 구성 요소의 중요성을 평가하기 위해 기본 모델을 다양한 방식으로 변경하여 5개의 development set인 newsteset2013에서 영어-독일어 번역 성능의 변화를 측정함. 이전 섹션에서 설명한댈 beam search는 사용했지만 체크포인트 평균화는 사용하지 않음. 결과는 표 3

 표 3의 (A) 행에서, 섹션 3.2.2에서 설명한 대로 계산량을 일정하게 유지하면서 attention 헤드의 수와 attention key 및 value 차원을 변경함. 단일 헤드 attention은 최적 설정보다 0.9 BLEU만큼 성능이 나쁘지만, 헤드가 너무 많아도 품질이 저하됨.

 표 3의 (B) 행에서, attention key 크기 d_k를 줄이면 모델의 품질이 저하되는 것을 알 수 있음. 이는 호환성을 결정하는 것이 쉽지 않으며, dot product보다 더 정교한 호환성 함수가 유용할 수 있음을 시사함. 또한 (C) 및 (D) 행에서 예상대로 더 큰 모델이 좋고 드롭아웃이 과적합을 피하는데 매우 유용하다는 것을 알 수 있음. (E) 행에서 우리의 sinusoidal positional encoding을 learned positional embeddings로 대체하고 기본 모델과 거의 동일한 결과를 얻었음.

6.3 English Constituency Parsing

 Transformer가 다른 작업에서도 일반화될 수 있는지 평가하기 위해 영어 구성 구문 분석에 대한 실험을 수행함. 이 작업은 특정한 어려움이 존재하는데 출력은 강력한 구조적 제약을 받으며 입력보다 훨씬 김. 또한 RNN seq2seq 모델은 소규모 데이터 환경에서 최첨단 결과를 얻지 못함. 우리는 Peen Treebanck의 Wall Street Journal(WSJ) 부분, 약 40k 개의 학습 문장에 대해 d_model = 1024인 4-layer transformer를 학습시킴. 또한 약 1,700만 개의 문장으로 구성된 더 큰 high-confidence 및 BerkleyParser 코퍼스를 사용하여 준지도 학습 설정에서 학습시킴. WSJ 전용 설정에서는 16K 토큰의 어휘를 사용했고, 준지도 학습 설정에는 32K 토큰의 어휘를 사용했음. 또한 섹션 22 개발 세트에서 드롭아웃, attention 및 residual, 학습률 및 beam 크기를 선택하기 위해 서수의 실험만 수행했으며, 다른 모든 파라미터는 영어-독일어 기본 번역 모델과 다르지 않음. 추론 중에 최대 출력 길이를 입력 길이 + 300으로 늘리고 beam 크기는 21, α를 0.3을 사용했음.

 표 4의 결과에서 알 수 있듯이, 태스크별 튜닝이 부족함에도 불구하고 우리 모델은 놀라울 정도로 좋은 성능을 보이며, Recurrent Neural Network Grammar를 제외한 기존에 보고된 모든 모델보다 더 나은 결과를 얻었음. RNN sequence-to-sequence models와는 대조적으로, Transformer는 4만 문장의 WSJ 학습 세트만으로 학습할 때에도 BerkeleyParser보다 뛰어난 성능을 보임.

7. Conclusion

 본 연구에서는 인코더-디코더 아키텍처에서 가장 일반적으로 사용되는 순환 레이어를 multi-headed self-attention으로 대체하며, 어텐션에만 전적으로 기반한 최초의 시퀀스 변환 모델인 Transformer를 제안함. 

 번역 작업에서 Transformer는 순환 레이어 또는 컨볼루션 레이어를 기반으로 하는 아키텍처보다 훨씬 빠르게 학습될 수 있음. WMT 2014 영어-독일어 및 WMT 2014 영어-프랑스어 번역 작업 모두에서 새로운 최고 수준의 성능을 달성함. 이 작업들에서 이 모델은 기존에 보고된 모든 앙상블 모델보다 뛰어난 성능을 보임.

 우리는 어텐션 기반 모델의 미래에 대해 기대하고 있으며, 이를 다른 작업에도 적용할 계획임. Transformer를 텍스트 이외의 입력 및 출력 modality와 관련된 문제로 확장하고, 이미지, 오디오 및 비디오 같은 대규모 입력 및 출력을 효율적으로 처리하기 위해 local 제한적 어텐션 메커니즘을 연구할 계획임. 생성을 덜 순차적으로 만드는 것 또한 우리의 연구 목표 중 하나임.

Attention Visualizations

인코더 self-attention의 5/6번째 레이어에서 attention 메커니즘이 장거리 의존성을 따르는 예시. 많은 attention 헤드는 동사 'msking'의 먼 의존성에 관여하여 'making...more difficult' 구문을 완성함. 위 그림은 'making'단어에 대해서만 attention을 나타낸 것으로 서로 다른 색상은 서로 다른 헤드를 나타냄.
Anaphora Resolution(지시어 해소), attention head가 대명사의 지시 대상을 찾아내준다. 즉, 위 문장에서 its는 Law를 의미하는데 이를 강하게 연결해줌.
Transformer는 attention head에 특별한 구조적 inductive bias를 주지 않았음에도 불구하고, 학습 과정에서 head들이 자발적으로 "언어적 기능 분화"를 하게 된다. 굳이 따져보면 초록색 head는 문장 구조 추적으로 의미 단위나 절 사이의 연결을 학습하고 있고 빨간색 head는 자기 자신/인접 단어에 집중한다. Inductive bias는 모델이 학습 데이터 바깥에서도 일반화할 수 있도록 유도하는, 설계 상의 가정 또는 제약

Abstract

 이 연구는 확산 모델이 현재 최첨단 생성 모델보다 우수한 이미지 샘플 품질을 달성할 수 있음을 보여준다. 무조건적인 이미지 합성에서는 일련의 실험을 통해 더 나은 아키텍처를 찾아냈으며, 조건부 이미지 합성에서는 classifier guidance를 사용하여 샘플 품질을 향상시켰다. 이 방법은 classifier의 기울기를 사용하여 다양성과 충실도 간의 균형을 조정하는 간단하고 효율적인 방법이다. ImageNet 데이터셋에서 FID 점수는 128×128 해상도에서 2.97, 256×256 해상도에서 4.59, 512×512 해상도에서 7.72를 기록했으며, BigGAN-deep 모델과 유사한 성능을 25회의 순방향 패스만으로 달성하면서도 분포를 더 잘 포괄했다. 마지막으로, classifier guidance는 업샘플링 확산 모델과 잘 결합되어 FID를 256×256 해상도에서 3.94, 512×512 해상도에서 3.85로 더욱 향상시켰다.

1. Introduction

 지난 몇 년 동안, 생성 모델들은 인간과 유사한 자연어를 생성하고, 무한한 고품질의 합성 이미지를 만들며, 다양한 인간 음성 및 음악을 생성할 수 있는 능력을 갖추게 되었다. 이러한 모델들은 텍스트 프롬프트로부터 이미지를 생성하거나 유용한 특징 표현을 학습하는 등 다양한 방식으로 사용될 수 있다. 현재 이러한 모델들이 이미 현실적인 이미지와 소리를 생성할 수 있지만, 현 상태보다 더 나아질 여지가 많으며, 더 나은 생성 모델은 그래픽 디자인, 게임, 음악 제작 등 수많은 분야에 광범위한 영향을 미칠 수 있다.

 

 현재 GANs는 FID, Inception Score 및 Precision과 같은 샘플 품질 지표에서 대부분의 이미지 생성 작업에서 최첨단 성능을 보여주고 있다. 그러나 일부 지표는 다양성을 충분히 포착하지 못하며, GANs는 최신 확률 기반 모델들보다 다양성을 덜 포착하는 것으로 나타났다. 또한, GANs는 훈련하기 어려우며, 신중하게 선택된 하이퍼파라미터와 정규화 기법 없이는 종종 학습이 실패한다.

 

 GANs가 최첨단을 유지하고 있지만, 그 단점으로 인해 새로운 도메인에 확장하고 적용하기 어렵다. 이에 따라 GAN과 같은 샘플 품질을 달성하기 위해 확률 기반 모델에 대한 많은 연구가 진행되어 왔다. 이러한 모델들은 더 많은 다양성을 포착하고 GANs보다 훈련 및 확장이 용이하지만, 여전히 시각적 샘플 품질에서는 뒤처진다. 또한, VAEs를 제외하면 이러한 모델들은 샘플링 시간이 GANs보다 느리다.

 

 확산 모델은 최근 고품질 이미지를 생성할 수 있는 것으로 입증된 확률 기반 모델의 한 종류로, distribution coverage(생성 모델이 데이터의 전체 분포를 얼마나 잘 포착하고 표현하는가 = 훈련된 데이터셋의 다양한 사례들을 잘 반영하고 있는가), stationary training objective(학습하는 동안 목표함수가 변하지 않음), 용이한 확장성 등의 바람직한 특성을 제공한다. 이 모델들은 신호에서 점진적으로 노이즈를 제거하여 샘플을 생성하며, 그 훈련 목표는 재가중된 변분 하한으로 표현될 수 있다. 이 모델들은 이미 CIFAR-10에서 최첨단 성능을 보유하고 있지만, LSUN과 ImageNet과 같은 어려운 생성 데이터셋에서는 여전히 GANs에 뒤처진다. Nichol과 Dhariwal은 이러한 모델들이 계산량이 증가할수록 성능이 안정적으로 향상되며, 업샘플링 스택을 사용하여 ImageNet 256×256 데이터셋에서도 고품질 샘플을 생성할 수 있다고 밝혔다. 그러나 이 모델의 FID는 여전히 이 데이터셋의 최첨단인 BigGAN-deep과 경쟁하기에 부족하다.

 

 우리는 확산 모델과 GANs 간의 격차가 적어도 두 가지 요인에서 비롯된다고 가정한다: 첫째, 최근의 GAN 연구에서 사용된 모델 아키텍처가 많이 탐색되어 최적의 설계를 정제해았다는 점; 둘째, GANs는 다양성을 희생하여 충실도(생성된 샘플이 실제 데이터와 유사한 정도) 높이는 방식으로 높은 품질의 샘플을 생성할 수 있지만, 전체 분포를 커버하지는 않는다는 점이다. 우리는 이러한 이점을 확산 모델에 도입하기 위해 먼저 모델 아키텍처를 개선하고, 다양성과 충실도 간의 균형을 조정하는 방식을 고안했다. 이러한 개선을 통해 우리는 여러 지표와 데이터셋에서 새로운 최첨단 성능을 달성하였다.

 

 이 논문의 나머지 부분은 다음과 같이 구성된다. 2장에서는 Ho et al.와 Nichol 및 Dhariwal, Song et al.의 연구에 기반한 확산 모델의 배경과 평가 설정을 설명한다. 3장에서는 FID를 크게 향상시키는 간단한 아키텍처 개선 사항을 소개한다. 4장에서는 샘플링 중 분류기의 기울기(확률을 높이거나 낮추기 위해 필요한 변화 방향)를 사용하여 확산 모델을 guide하는 방법을 설명한다. 우리는 단일 하이퍼파라미터인 분류기 기울기의 크기를 조정하여 다양성과 충실도 간의 균형을 맞출 수 있음을 발견했으며, 이 기울기 스케일 인자를 대폭 증가시켜도 적대적 예제(분류기와 같은 모델을 속이기 위해 고의적으로 조작된 입력)를 얻지 않는다. 마지막으로 5장에서는 우리의 개선된 아키텍처를 통해 unconditional 이미지 합성 작업에서 최첨단 성능을 달성하였으며, 분류기 가이던스를 사용하여 조건부 이미지 합성에서도 최첨단 성능을 달성했음을 보여준다. 분류기 가이던스를 사용할 때, 우리는 단 25번의 순방향 패스만으로도 BigGAN과 유사한 FID를 유지할 수 있음을 발견했다. 또한, 우리의 개선된 모델과 업샘플링 스택을 비교한 결과, 두 접근 방식이 상호 보완적인 개선을 제공하며, 이를 결합하면 ImageNet 256×256 및 512×512에서 최상의 결과를 얻을 수 있음을 알 수 있었다.

2. Background

 이 절에서는 확산 모델에 대한 간략한 개요를 제공한다. 보다 자세한 수학적 설명은 부록 B를 참고하기 바란다.

 

 고수준에서 보면, 확산 모델은 점진적인 노이즈 추가 과정을 역으로 수행하여 분포에서 샘플을 추출한다. 구체적으로, 샘플링은 노이즈 x_T에서 시작하여 점차 노이즈가 적은 샘플 x_{T-1}, x_{T-2},...을 생성하며 최종 샘플 x_0에 도달한다. 각 시점 는 특정 노이즈 수준에 대응하며, x_t는 시점 t에 따라 신호 x_0와 일부 노이즈 ϵ의 혼합으로 생각할 수 있다. 이 논문에서는 노이즈 ϵ이 자연 이미지에 잘 작동하고 다양한 유도 과정을 단순화하는 대각 가우시안 분포에서 나오는 것으로 가정한다.

 

 확산 모델은 x_t에서 x_{t-1}로 약간 더 "노이즈가 제거된" 샘플을 생성하도록 학습된다. Ho et al. [25]는 이 모델을 함수 ϵ_θ(x_t,t)로 매개변수화하여, 노이즈가 섞인 샘플 x_t의 노이즈 성분을 예측한다고 설명한다. 이 모델을 훈련시키기 위해, 미니배치의 각 샘플은 데이터 샘플 x_0, 시점 t및 노이즈 ϵ을 무작위로 선택하여 생성된 노이즈가 추가된 샘플 x_t (식 17)를 사용한다. 훈련 목표는 단순한 평균 제곱 오차 손실로, 실제 노이즈와 예측된 노이즈 간의 차이 ∣∣ϵ_θ(x_t,t)−ϵ∣∣^2를 최소화하는 것이다 (식 26).

 

 노이즈 예측기 ϵ_θ(x_t,t)로부터 샘플을 생성하는 방법은 즉각적으로 명확하지 않다. 확산 샘플링은 x_T에서 시작하여 x_t에서 x_{t-1}을 반복적으로 예측하는 방식으로 진행된다. Ho et al. [25]는 합리적인 가정 하에서 x_t가 주어졌을 때 x_{t-1}의 분포 p_θ(x_{t−1}∣x_t)를 대각 가우시안 N(x_{t−1};μ_θ(x_t,t),Σ_θ(x_t,t))로 모델링할 수 있으며, 이때 평균 μ_θ(x_t,t)ϵ_θ(x_t, t)의 함수로 계산될 수 있음을 보여준다 (식 27). 이 가우시안 분포의 분산 Σ_θ(x_t,t)는 고정된 상수로 설정하거나 별도의 신경망 헤드로 학습할 수 있으며, 두 접근법 모두 총 확산 단계 수 T가 충분히 클 때 고품질 샘플을 생성할 수 있다.

 

 Ho et al. [25]는 실제 변분 하한 L_vlb보다 단순한 평균 제곱 오차 목표 L_simple가 실무적으로 더 잘 작동한다고 언급한다. 또한, 이 목표로 훈련하고 해당 샘플링 절차를 사용하는 것이 Song과 Ermon [58]의 논문에서 다중 노이즈 수준으로 훈련된 모델에서 샘플링하는 데 사용하는 Langevin dynamics 기반의 비슷한 절차와 동등하다고 언급한다. 우리는 종종 "확산 모델"이라는 용어를 이러한 모델들의 양쪽 클래스를 지칭하는 약어로 사용한다.

2.1 Improvements

 최근 연구들로 diffusion model이 개선되었는데 다음과 같다.

 1. reverse process variance의 매개변수화

 Ho et al. [25]에서는 역 과정(reverse process)에서 사용하는 분산 Σ_θ(x_t,t)을 고정된 상수로 설정했다. 그러나 Nichol과 Dhariwal [43]은 이를 신경망의 출력으로 매개변수화하여 더 나은 샘플링 성능을 얻을 수 있음을 발견했다. 이들은 분산 Σ_θ(x_t,t)을 다음과 같이 정의한다:

 여기서 β_t와 β~_t는 Ho et al. [25]에서 정의된 상한과 하한 분산 값을 나타낸다. v는 신경망의 출력으로, 이 두 값 사이를 보간한다. 이 방법은 샘플링 단계가 적을 때에도 샘플 품질을 유지하면서 성능을 향상시다.

 

2. 하이브리드 목표

 Nichol과 Dhariwal [43]은 ϵ_θ(x_t, t)와 Σ_θ(x_t,t)를 훈련하기 위한 혼합 손실 함수를 제안했다. 이들은 단순 손실 L_simple과 변분 하한 L_vlb를 가중합하여 사용한다. 이를 통해 reverse process에서의 분산을 학습하게 되며, 샘플링 단계 수를 줄여도 샘플 품질의 큰 저하 없이 샘플링이 가능하다.  연구에서는 이 목표함수와 매개변수화를 채택하였다.

 

 3. DDIM

 Song et al.은 DDPM의 대안으로 DDIM을 제안했다. DDIM은 동일한 forward marginals를 가지면서 비마르코브 노이즈 추가 과정을 사용한다. 이 과정은 역 노이즈의 분산을 조정하여 다양한 역 샘플러를 생성할 수 있다. 특히 노이즈를 0으로 설정하면 임의의 모델 ϵ_θ(x_t, t)를 결정론적인 mapping으로 전환할 수 있어 샘플링 단계를 줄이면서도 고품질의 이미지를 생성할 수 있다. Nichol과 Dhariwal [43]은 50단계 이하의 샘플링 시 이 방법이 유리하다고 밝혔으며, 본 연구에서도 이 접근 방식을 사용함.

2.2 Sample Quality Metrics

 모델 간의 샘플 품질 비교를 위해 다음과 같은 지표를 사용하여 정량적 평가를 수행한다. 이러한 지표는 실무에서 자주 사용되며 인간의 판단과 잘 일치하지만, 샘플 품질 평가의 완벽한 대체물은 아니며, 더 나은 평가 지표를 찾는 것은 여전히 해결되지 않은 문제이다.

 

 Inception Score (IS)는 Salimans et al. [54]에 의해 제안되었으며, 모델이 전체 ImageNet 클래스 분포를 얼마나 잘 포착하는지와 동시에 개별 샘플이 단일 클래스의 설득력 있는 예제를 생성하는지를 측정한다. 이 지표의 단점은 전체 분포를 포괄하거나 클래스 내 다양성을 포착하는 것을 보상하지 않으며, 데이터셋의 일부 하위 집합만 기억하는 모델도 높은 IS를 가질 수 있다는 점이다 [3]. IS보다 더 나은 다양성 포착을 위해 Fréchet Inception Distance (FID)는 Heusel et al. [23]에 의해 제안되었으며, 이는 Inception Score보다 인간의 판단과 더 일치한다고 주장했다. FID는 Inception-V3 [62] 잠재 공간에서 두 이미지 분포 간의 거리를 대칭적으로 측정한다. 최근에, sFID는 Nash et al. [42]에 의해 제안되었으며, 표준 합성 특징 대신 공간적 특징을 사용하는 FID의 버전이다. 이들은 이 지표가 공간적 관계를 더 잘 포착하며, 일관된 고수준 구조를 가진 이미지 분포에 보상을 준다고 밝혔다. 마지막으로, Kynkäänniemi et al. [32]는 향상된 Precision과 Recall 지표를 제안하여, 샘플 충실도를 모델 샘플이 데이터 매니폴드에 속하는 비율(Precision)과 다양성을 데이터 샘플이 샘플 매니폴드에 속하는 비율(Recall)로 각각 측정한다.

 

 우리는 FID를 기본 지표로 사용하여 전체 샘플 품질을 비교한다. 이는 다양성과 충실도를 모두 포착하며, 최첨단 생성 모델 연구에서 사실상 표준 지표로 사용되어 왔다 [27, 28, 5, 25]. 우리는 충실도를 측정하기 위해 Precision 또는 IS를 사용하고, 다양성 또는 분포 커버리지를 측정하기 위해 Recall을 사용한다. 다른 방법과 비교할 때는 가능한 경우 공개 샘플이나 모델을 사용하여 이 지표들을 다시 계산한다. 이는 두 가지 이유 때문이다: 첫째, 일부 논문 [27, 28, 25]은 쉽게 접근할 수 없는 훈련 세트의 임의 하위 집합과 비교하고, 둘째, 미세한 구현 차이가 FID 값에 영향을 줄 수 있기 때문이다 [45]. 일관된 비교를 위해, 우리는 reference batch로 전체 훈련 세트를 사용하고 [23, 5], 모든 모델에 대해 동일한 코드베이스를 사용하여 지표를 평가한다.

3. Architecture Improvements

 이 섹션에서는 확산 모델의 샘플 품질을 개선하기 위해 여러 아키텍처 변형을 실험적으로 조사하였다.

 

 Ho et al. [25]는 확산 모델을 위한 U-Net 아키텍처를 도입하였으며, Jolicoeur-Martineau et al. [26]은 이전의 아키텍처 [58, 33]에 비해 샘플 품질이 상당히 향상된 것을 발견하였다. U-Net 모델은 residual layers와 다운샘플링 합성곱 스택을 사용하고, 이어서 residual layers와 업샘플링 합성곱로 동일한 공간 크기를 가진 레이어를 연결하는 스킵 연결을 포함한다. 또한, 이들은 16×16 해상도에서 단일 헤드를 사용하는 글로벌 어텐션 레이어를 사용하고, 각 residual 블록에 타임스텝 임베딩을 투영하였다. Song et al. [60]은 U-Net 아키텍처의 추가적인 변경이 CIFAR-10 [31]과 CelebA-64 [34] 데이터셋에서 성능을 향상시켰음을 발견하였다. 우리는 ImageNet 128×128에서 동일한 결과를 보이며, 더 큰 해상도의 더 크고 다양한 데이터셋에서도 아키텍처가 샘플 품질에 큰 영향을 미칠 수 있음을 확인하였다.

 

다음과 같은 아키텍처 변경 사항을 탐구하였다

 

  • 깊이 증가 vs. 너비 증가: 모델 크기는 일정하게 유지하며 깊이와 너비를 조절함.
  • 어텐션 헤드 수 증가.
  • 16×16 해상도뿐만 아니라 32×32, 16×16, 8×8 해상도에서도 어텐션 사용.
  • BigGAN의 잔여 블록을 사용하여 업샘플링 및 다운샘플링 수행.
  • 잔여 연결을 √1/2로 스케일링.

 이 섹션의 모든 비교에서, 우리는 ImageNet 128×128 데이터셋에 대해 배치 크기 256으로 모델을 훈련하고, 250 샘플링 단계를 사용하여 샘플링을 수행하였다. 우리는 위의 아키텍처 변경 사항을 적용하여 모델을 훈련시키고, 훈련 중 두 개의 다른 지점에서 FID를 평가하여 성능을 비교하였다(Table 1).

iterations = 미니배치를 모델에 입력하고 학습을 진행한 횟수

 Residual connections 재스케일링을 제외한 모든 다른 수정 사항이 성능을 향상시키며 긍정적인 복합 효과를 나타냈다. Figure 2에서 볼 수 있듯이, 깊이를 증가시키는 것이 성능에 도움이 되지만, 훈련 시간이 증가하여 동일한 성능에 도달하는 데 더 오랜 시간이 걸리므로 후속 실험에서는 이 변경을 사용하지 않기로 결정하였다.

 우리는 또한 Transformer 아키텍처 [66]에 더 잘 맞는 다른 어텐션 구성을 연구하였다. 이를 위해, 어텐션 헤드를 고정하거나 각 헤드당 채널 수를 고정하는 실험을 수행하였다. 나머지 아키텍처로는 128 기본 채널, 해상도당 2개의 잔여 블록, 다중 해상도 어텐션, BigGAN 업/다운샘플링을 사용하였으며, 모델을 700K 반복 동안 훈련시켰다. Table 2는 우리의 결과를 보여주며, 더 많은 헤드나 헤드당 적은 채널 수가 FID를 개선함을 나타낸다. Figure 2에서 볼 수 있듯이, wall-clock time 측면에서 64 채널이 최적이므로, 우리는 기본값으로 64 채널을 사용하기로 결정하였다.

3.1 Adaptive Group Normalization

 이 절에서는 적응형 그룹 정규화(AdaGN) 레이어에 대해 실험한다. 이 레이어는 그룹 정규화 작업 후 각 잔여 블록에 타임스텝과 클래스 임베딩을 포함하며, 이는 adaptive instance norm [27] 및 FiLM [48]과 유사하다. 우리는 이 레이어를 다음과 같이 정의한다: AdaGN(h, y) = y_s * GroupNorm(h) + y_b, 여기서 h는 첫 번째 합성곱 이후 잔여 블록의 중간 활성화이고, y = [y_s, y_b]는 타임스텝과 클래스 임베딩의 linear projection으로부터 얻어진다.

 초기 확산 모델에서 AdaGN이 성능을 향상시키는 것을 확인하였고, 따라서 모든 실험에서 기본적으로 포함되었다. Table 3에서 이 선택을 제거하여 실험한 결과, 적응형 그룹 정규화 레이어가 FID를 향상시키는 것으로 나타났다. 두 모델 모두 기본 채널 128개, 해상도당 2개의 잔여 블록, 헤드당 64채널을 갖는 다중 해상도 어텐션, 그리고 BigGAN 업/다운샘플링을 사용하였으며, 700K 반복 동안 훈련되었다.

 

 이 논문의 나머지 부분에서는 다음과 같은 최종 개선된 모델 아키텍처를 기본 설정으로 사용한다:

  1. Resolution당 2개의 residual block
  2. 가변 너비
  3. Head당 64개 채널이 있는 multiple head
  4. 32, 16, 8 resoltion에서의 attention
  5. BIGAN의 residual block으로 up/downsampling
  6. Residual block에 timestep embedding과 class embedding을 주입하기 위한 AdaGN

4. Classifier Guidance

 잘 설계된 아키텍처를 사용하는 것 외에도, 조건부 이미지 합성을 위한 GANs [39, 5]는 클래스 레이블을 많이 활용한다. 이는 종종 클래스-조건부 정규화 통계 [16, 11]와 분류기처럼 작동하도록 설계된 헤드를 가진 판별기 [40]의 형태로 나타난다. 이러한 모델의 성공에 클래스 정보가 중요한 또 다른 증거로, Lucic et al. [36]은 레이블이 제한된 상황에서 합성 레이블을 생성하는 것이 도움이 된다는 것을 발견했다.

 

 GANs에 대한 이러한 관찰을 바탕으로, 우리는 확산 모델을 클래스 레이블에 조건화하는 다양한 방법을 탐구하는 것이 합리적이다. 우리는 이미 AdaGN에 클래스 정보를 통합하고 있다(3.1절). 여기에서는 다른 접근 방식을 탐구한다: 분류기 p(y|x)를 활용하여 diffusion generator를 개선하는 방법이다. Sohl-Dickstein et al. [56]과 Song et al. [60]은 사전 훈련된 확산 모델을 분류기의 기울기를 사용하여 조건화할 수 있는 한 가지 방법을 제시한다. 구체적으로, 우리는 노이즈가 포함된 이미지 x_t에 대해 분류기 p_ϕ(y∣x_t,t)를 훈련하고, 그런 다음 기울기 ∇_{x_t}log⁡p_ϕ(y∣x_t,t)를 사용하여 확산 샘플링 과정을 임의의 클래스 레이블 y로 안내할 수 있다.

 

 이 절에서는 먼저 분류기를 사용하여 조건부 샘플링 프로세스를 도출하는 두 가지 방법을 검토한다. 그런 다음, 이러한 분류기를 실제로 사용하여 샘플 품질을 개선하는 방법을 설명한다. 우리는 간결함을 위해 p_ϕ(y∣x_t,t)=p_ϕ(y∣x_t)ϵ_θ(x_t,t)=ϵθ(x_t)를 표기하지만, 이는 각 타임스텝 에 대해 별도의 함수를 나타내며, 훈련 시 모델은 입력 t에 대해 조건화되어야 함을 유의해야 한다.

4.1 Conditional Reverse Noising Process

 Unconditional reverse noising process가 pθ(xt|xt+1)인 diffusion model을 레이블 로 컨디셔닝하면 다음과 같이 샘플링하는 것으로 충분하다.

 여기서 Z는 정규화 상수이다(증명은 부록 H에 있다). 이 분포에서 정확하게 샘플링하는 것은 일반적으로 실행 불가능하지만, Sohl-Dickstein et al. [56]은 이를 약간 왜곡된 가우시안 분포로 근사할 수 있음을 보여준다. 여기서는 이 유도를 검토한다.

 

 우리의 확산 모델은 가우시안 분포를 사용하여 타임스텝 xt_1에서 이전 타임스텝 x_t를 예측한다:

 우리는 log⁡p_ϕ(y∣x_t)의 곡률이 Σ−1에 비해 낮다고 가정할 수 있다. 이 가정은 무한한 확산 단계에서 ∥Σ∥→0일 때 합리적이다. 이 경우, log⁡p_ϕ(y∣x_t)를 x_t=μ 주변에서 테일러 전개를 사용하여 다음과 같이 근사할 수 있다:

여기서 이고 은 상수이다. 이를 대입하면 다음과 같다.

는 정규화 상수 Z에 해당하기 때문에 무시할 수 있다. 따라서 conditional transition operator를 unconditional transition operator와 유사한 가우시안 분포로 근사할 수 있으며, 이 때 평균이 만큼 이동한다. Algorithm 1은 해당 샘플링 알고리즘을 요약한다. 뒤의 섹션에서 기울기에 대한 scale factor 를 포함하며 자세히 설명한다.

4.2 Conditional Sampling for DDIM

 위의 조건부 샘플링 유도는 확률적 확산 샘플링 과정에만 유효하며, DDIM [57]과 같은 결정적 샘플링 방법에는 적용할 수 없다. 이를 위해, 우리는 Song et al. [60]에서 제안한 점수 기반 조건화 기법을 사용한다. 이 기법은 확산 모델과 점수 매칭 [59] 간의 관계를 활용한다. 특히, 샘플에 추가된 노이즈를 예측하는 모델 ϵ_θ(x_t)가 주어지면, 다음과 같이 점수 함수를 유도할 수 있다:

이를 p(x_t)p(y∣x_t)의 점수 함수에 대입하면 다음과 같다:


마지막으로, 결합 분포의 점수에 해당하는 새로운 epsilon 예측 ϵ^(x_t)을 다음과 같이 정의할 수 있다:

이후, 수정된 노이즈 예측 ϵ^(x_t)을 사용하여 일반 DDIM에서 사용하는 것과 동일한 샘플링 절차를 사용할 수 있다. 알고리즘 2는 해당 샘플링 알고리즘을 요약한다.

4.3 Scaling Classifier Gradients

 분류기 가이던스를 대규모 생성 작업에 적용하기 위해, 우리는 ImageNet에서 분류 모델을 훈련시켰다. 분류기 아키텍처는 UNet 모델의 다운샘플링 부분에 8x8 레이어에서 최종 출력을 생성하기 위한 어텐션 풀링을 추가한 것이다. 이러한 분류기는 대응하는 확산 모델과 동일한 노이즈 분포에서 훈련되며, 오버피팅을 줄이기 위해 랜덤 크롭을 추가한다. 훈련이 완료된 후, 우리는 알고리즘 1에 따라 식 (10)을 사용하여 분류기를 확산 모델의 샘플링 과정에 통합하였다.

 

초기 실험에서는 무조건적 ImageNet 모델에서 분류기 기울기를 1보다 큰 상수로 스케일링하는 것이 필요함을 발견하였다. 스케일 1을 사용할 때, 최종 샘플에 대해 분류기가 합리적인 확률(약 50%)을 할당하였으나, 시각적으로 샘플이 의도된 클래스와 일치하지 않았다. 분류기 기울기를 증가시키면 이 문제가 해결되었으며, 분류기의 클래스 확률이 거의 100%로 증가하였다. Figure 3은 이 효과의 예를 보여준다.

분류기 기울기 스케일링의 효과를 이해하기 위해, s⋅∇_xlog⁡p(y∣x)=∇_xlog⁡1/Zp(y∣x)^s를 고려하자. 여기서 는 임의의 상수이다. 결과적으로, 조건화 과정은 p(y∣x)^s에 비례하는 재정규화된 분류기 분포에 이론적으로 기반을 두고 있다. s>1일 때, 이 분포는 p(y∣x)보다 더 날카로워지며, 이는 더 높은 충실도(하지만 덜 다양한) 샘플을 생성하는 데 유리할 수 있다.

 

 위의 유도에서는 기본 확산 모델이 무조건적인 모델 p(x)이라고 가정했다. 조건부 확산 모델 p(x∣y)을 훈련시키고 동일한 방식으로 분류기 가이던스를 사용할 수도 있다. Table 4는 분류기 가이던스가 무조건적 모델과 조건부 모델 모두의 샘플 품질을 크게 향상시킬 수 있음을 보여준다.

 충분히 높은 스케일을 사용하면, 가이던스를 받은 unconditional 모델이 가이던스를 받지 않은 조건부 모델의 FID에 가까워질 수 있지만, 클래스 레이블을 직접 사용하여 훈련하는 것이 여전히 도움이 된다. 조건부 모델에 가이던스를 추가하면 FID가 더욱 개선된다.

 

Table 4는 또한 분류기 가이던스가 정밀도를 향상시키는 반면, 리콜은 감소시키는 효과가 있음을 보여준다. 이는 샘플의 충실도와 다양성 간의 절충을 야기한다. Figure 4에서는 기울기 스케일에 따라 이러한 절충이 어떻게 변하는지 명확하게 평가하였다.

기울기 스케일을 1.0 이상으로 조정하면, 리콜(다양성의 측정치)은 점차 감소하고, 정밀도와 IS(충실도의 측정치)는 증가하는 경향을 보인다. FID와 sFID는 다양성과 충실도 모두에 의존하므로, 최적의 값은 중간 지점에서 얻어진다.

또한, Figure 5에서는 BigGAN의 트렁케이션 기법과 우리의 가이던스를 비교하였다.

그 결과, FID와 Inception Score 사이의 절충에서 분류기 가이던스가 BigGAN-deep보다 일관되게 더 나은 성능을 보임을 확인하였다. 그러나 정밀도/리콜 절충에 있어서는, 분류기 가이던스가 특정 정밀도 임계값까지는 더 나은 선택이지만, 그 이후로는 더 나은 정밀도를 달성할 수 없다는 점이 명확하지 않다.

Abstract

 Denoising Diffusion Probabilistic Models (DDPMs)는 적대적 훈련 없이도 고품질의 이미지 생성을 달성했지만, 샘플을 생성하기 위해 많은 단계에서 마르코프 연쇄를 시뮬레이션해야 한다. 샘플링 속도를 높이기 위해 우리는 DDPMs와 동일한 훈련 절차를 가진 더 효율적인 반복적 암시적 확률 모델 클래스인 Denoising Diffusion Implicit Models (DDIMs)을 제안한다. DDPMs에서는 생성 과정이 특정 마르코프 확산 과정의 역방향으로 정의된다. 우리는 동일한 훈련 목표를 달성하는 비마르코프 확산 과정 클래스를 통해 DDPMs를 일반화한다. 이러한 비마르코프 과정은 결정론적인 생성 과정에 해당할 수 있으며, 이는 훨씬 더 빠르게 고품질 샘플을 생성하는 암시적 모델을 만든다. 우리는 실험적으로 DDIMs가 DDPMs에 비해 10배에서 50배 빠르게 고품질 샘플을 생성하고, 계산과 샘플 품질을 맞바꾸고, 잠재 공간에서 직접 의미 있는 이미지 보간을 수행하며, 매우 낮은 오류로 관찰값을 재구성할 수 있음을 보여준다.

1. Introduction

 Deep Generative 모델은 여러 도메인에서 고품질 샘플을 생성하는 능력을 입증했다(Karras et al., 2020; van den Oord et al., 2016a). 이미지 생성 측면에서, generative adversarial networks (GANs, Goodfellow et al. (2014))는 현재 variational autoencoders (Kingma & Welling, 2013), autoregressive models (van den Oord et al., 2016b), normalizing flows (Rezende & Mohamed, 2015; Dinh et al., 2016)과 같은 likelihood 기반 방법보다 더 높은 샘플 품질을 보인다. 그러나 GANs는 훈련을 안정화하기 위해 매우 특정한 최적화와 아키텍처 선택을 요구하며(Arjovsky et al., 2017; Gulrajani et al., 2017; Karras et al., 2018; Brock et al., 2018), 데이터의 다양한 유형을 잘 생성하지 못할 수도 있다.(Zhao et al., 2018).

 

반면, iterative generative models (Bengio et al., 2014)인 denoising diffusion probabilistic models (DDPM, Ho et al. (2020))와 noise conditional score networks (NCSN, Song & Ermon (2019))는 적대적 훈련 없이도 GANs와 비교할 만한 샘플을 생성할 수 있음을 입증했다. 이를 위해, 다양한 수준의 Gaussian noise로 손상된 샘플을 잡음 제거하는 여러 오토인코딩 모델이 훈련된다. 샘플은 white noise에서 시작하여 점진적으로 이미지를 생성하는 Markov chain에 의해 생성된다. 이 generative Markov Chain 과정은 Langevin dynamics (Song & Ermon, 2019)을 기반으로 하거나, 이미지를 점진적으로 잡음으로 변환하는 forward diffusion 과정을 역으로 수행하여 얻어진다(Sohl-Dickstein et al., 2015).

 

이 모델들의 중요한 단점은 고품질 샘플을 생성하는 데 많은 반복이 필요하다는 점이다. DDPMs의 경우, 생성 과정(noise에서 data로)은 전방 확산 과정(data에서 noise로)의 역을 근사하기 때문에 수천 단계가 필요하다. 모든 단계를 반복해야 단일 샘플을 생성할 수 있어, 네트워크를 한 번 통과하면 되는 GANs에 비해 훨씬 느리다. 예를 들어, Nvidia 2080 Ti GPU에서 32 × 32 크기의 이미지를 5만 개 샘플링하는 데 DDPM은 약 20시간이 걸리지만, GAN은 1분 이내에 가능하다. 더 큰 이미지의 경우 문제가 더 심각해져, 동일한 GPU에서 256 × 256 크기의 이미지를 5만 개 샘플링하는 데 거의 1000시간이 걸릴 수 있다.

 

 DDPMs와 GANs 사이의 효율성 격차를 해소하기 위해, 우리는 denoising diffusion implicit models (DDIMs)을 제안한다. DDIMs는 implicit probabilistic models (Mohamed & Lakshminarayanan, 2016)이며, 동일한 목적 함수로 훈련된다는 점에서 DDPMs와 밀접한 관련이 있다.

 

 

 제3절에서는 DDPMs가 사용하는 마르코프 확산 과정을 비마르코프 과정으로 일반화하며, 이를 통해 여전히 적절한 역생성 마르코프 연쇄를 설계할 수 있음을 보인다. 그 결과로 도출된 variational training objectives는 DDPM을 훈련시키는 데 사용된 목표와 정확히 일치한다. 따라서 동일한 신경망을 사용하여 다른 비마르코프 확산 과정을 선택하고 이에 상응하는 역생성 마르코프 연쇄를 선택함으로써 큰 범주의 생성 모델을 자유롭게 선택할 수 있다(4.1절). 특히, 짧은 생성 마르코프 연쇄를 도출하는 비마르코프 확산 과정을 사용할 수 있으며(4.2절), 이는 적은 단계로 시뮬레이션할 수 있어 샘플 효율성을 크게 높이지만 샘플 품질에는 거의 영향을 미치지 않는다.

 

 제5절에서는 DDIMs의 DDPMs 대비 여러 실증적 이점을 보여준다. 첫째, 제안된 방법을 사용하여 샘플링 속도를 10배에서 100배까지 가속할 때 DDIMs는 DDPMs보다 우수한 샘플 생성 품질을 보인다. 둘째, DDIM 샘플은 동일한 초기 잠재 변수를 사용하여 다양한 길이의 마르코프 연쇄로 여러 샘플을 생성할 때 유사한 고수준 특징을 가지는 "일관성" 속성을 가진다. 셋째, DDIMs의 "일관성" 덕분에 DDPMs와 달리 초기 잠재 변수를 조작하여 의미있는 이미지 보간을 수행할 수 있다. 이는 확률적 생성 과정으로 인해 이미지 공간 근처에서 보간하는 DDPMs와는 다르다.

2. Background

 q(x_0)를 따르는 x_0에 대해 q(x_0)를 근사하는 p(x_0)를 학습하여 쉽게 샘플링하는 것에 관심이 있다. 아래 식은 DDPM에서 확인할 수 있음.

 파라미터 θ는 variational lower bound를 maximizing하면서 q(x_0)를 학습한다.

 VAE와 달리 DDPM은 fixend inference procedure q(x_{1:T}|x_0)를 사용하고 latent variables의 크기가 원본 이미지와 같아 상대적으로 차원이 높다. DDPM 논문에서 사용한 Markov chain with Gaussain transitions는 다음과 같음.

여기 중요한점: &alpha;에 대한 notation이 DDPM과 다르다.
DDPM

 위 과정을 forward process라 하고 p(x_{0:T})가 generative process로 intractable한 q(x_{t-1}|x_0)를 근사하여 samling 하는 process임. 직관적으로 forawrd process는 점진적으로 noise를 첨가하고 generative process는 점진적으로 noise를 제거한다.

 forward pprocess의 놀라운 성질은 x_0에서 x_t를 한번에 구할 수 있다.

 만약 α_T가 작다면 q(X_T|x_0)는 standard Gaussian for all x_0에 가까워져 p(x_T)를 N(0, I)로 잡는 것이 자연스럽다. 마만약 모든 p(x_{t-1}|x_t)가 학습되는 mean functions와 고정된 variances를 가지면 (2)에서 얻은 objectives는 다음의 식으로 간단해진다.

여기서 ε_θ는 ε _t를 예측하는데 쓰인 함수이고 γ는 α에 의존하는 positive 계수들이다. DDPM의 초기 논문에서는 이 γ를 1로 두었고 이 objective는 score matching을 기반으로 하는 noise conditional score networks의 objective와 동일하다. 이렇게 학습된 모델이 x_0는 x_T가 먼저 sampling 되고 x_{t-1}이 하나씩 sampling되면서 최종적으로 만들어진다.
 DDPM에서 forward process의 lengh를 결정하는 hyperparameter인 T는 매우 중요하다. Variational 관전에서 large T는 reverse process가 Gaussian에 가깝도록 만들어준다. 따라서 DDPM에서는 T를 큰 값인 1000을 사용하지만 이 때문에 sampling process가 다른 모델들에 비해서 느리다.

3. Variational Inference for non-Markovian forward process

 Generative model에서 reverse process를 inference process로 근사하기 때문에 이 과정에서 iterations의 숫자를 줄일 수 있는 방법을 생각해보았다. 우리의 중요한 관찰을 DDPM의 obejctive인 L_γ는 모든 latent variable의 joint인 q(x_{1:T}|x_0)에 직접적으로 의존하는 것이 아니라 오직 marginals인 q(x_t|x_0)에 의존한다는 점이다. 
 그런데 이 marginal 분포를 만드는 다양한 inference distribution이 있으므로 inference process(=sampling process)에 다른 non-Markovian 분포를 찾아볼 것이고 이를 통해 새로운 generative process를 유도해볼 것이다. 이 새로운 non-Markovian inference process는 똑같은 surrogate objective function을 만족하고 Gaussian case가 아닌 경우에도 non-Markovian 관점을 적용해볼 것이다.

3.1 Non-Markovian Forward Process

 Inference distribution인 Q를 생각해보면 

다음의 식이 성립한다. q(x_{t-1}|x_t, x_0)의 평균과 분산은 이 분포의 marginal인 q(x_{t-1}|x_0)가

t만 t-1로 바꿔서 생각

위를 만족시키기 위해 만들어짐. 따라서 이 (7)에 해당하는 분포는 위에서 말한 요구사항이었던 marginals를 만족한다. 이 분포로부터 새로 만든 forward process는 베이즈 정리에 의해

이 되고 이 역시 가우시안이다.

이 분포와 달리 (8)의 분포는 더 이상 Markovian이 아니고 파라미터 σ는 forward process의 stochastic한 정도를 다룬다. σ가 0이면 전혀 노이즈가 추가되지 않는 경우인데 이 경우에 x_0와 x_t를 안다면 x_{t-1} 역시 fixed한 값으로 정해진다.

3.2 Generative Process and Unified Variationl Inference Objective

  다음은 trainable generative process인 p_θ(x_{0:T})인데 p_ θ^t(x_{t-1}|x_t)는 q(x_{t-1]|x_t,x_0)에 대한 지식으로 만들어진다. 직관적으로 noisy observation인 x_t가 주어졌을 때 먼저 대응되는 x_0를 예측하고 이를 사용해 x_t-1을 우리가 정의한 분포인 q(x_{t-1]|x_t,x_0)로 sampling하는 방식이다.
 먼저 q(x_0)를 따르는 x_0에 대해 x_t를 (4)를 통해 얻으면 다음과 같다.

역으로 x_t로부터 x_0를 예측해야하기 때문에 x_0로부터 더해진 noise인 ε을 예측해야한다.(ε_θ(x_t)가 그 역할) 따라서 아래 식인 denoised observation을 얻을 수 있다.

 그럼 우린 generative process를 정의할 수 있고 p(x_T) = N(0, I)를 따른다고 하면

가 된다.(DDPM과 달리 x_1에서 x_0를 생성하는 과정에도 Gaussian noise를 첨가함.)
우리는 아래의 variational inference objective를 minimize하는 θ를 구한다.

q는 (6)에서 p는 (1)에서 얻는다.

 J의 정의를 보면 마치 σ가 달라짐에 따라 여러 model을 훈련해야 하는 것처럼 보인다. 하지만 특정 가중치 γ에 대해 J_σ와 L_γ가 동일하다고 알려져있다.
 

 Variational objective L_γ는 모델의 파라미터 θ가 다른 t에 걸쳐 공유되지 않는다면 θ의 최적해가 weights인 γ에 의존하지 않는다는 점에서 특별하다.(합계에서 t에 의존하는 각 항을 별도로 최적화하여 전역 최적해를 달성하기 때문) 이러한 L의 성질은 두 가지 의미를 가진다. 첫째는 DDPM에서 variational lower bound로 L_1을 사용하는 것을 정당화하고 둘째는 J가 어떤 L과 동일하므로 J의 최적해는 L_1의 최적해와 동일하다는 것이다.
 따라서  모델의 파라미터 θ가 t에 걸쳐 공유되지 않는다면 L_1을 J의 surrogate objective로 사용할 수 있다.
(θ가 t에 걸쳐 공유된다는 것은 모든 시점 t에 대해 동일한 θ를 사용한다는 것을 의미)

4. Sampling from generalized generative process

 목적 함수로 L_1을 사용함으로써, 우리는 Markovian inference process뿐만 아니라, 우리가 설명한 σ로 매개변수화된 많은 non-Markovian forward process에 대한 생성 과정도 학습하고 있다. 따라서 사전 훈련된 DDPM을 새로운 objectives의 해결책으로 보아 σ를 변경하여 우리의 필요에 맞는 샘플을 생성하는데 더 나은 generative process를 찾는 것에 집중할 수 있다.

4.1 Denoising Diffusion Implicit Models

 Eq.(10)을 통해 x_{t-1}을 x_t로부터 sampling하면 다음과 같다.

&alpha;_0는 1로 정의

 σ를 달리하면 generative process가 달라지지만 동일한 모델의 θ를 사용하므로 re-training은 필요하지 않다. 만약

라면 forward process는 Markovian이 되고 DDPM의 generative process가 된다.
 우리는 σ가 모든 t에 대해 0인 special한 상황에 주목하였는데 이 상황의 경우 forward process가 given x_{t-1} and x_0에 대해 deterministic해진다. 이렇게 얻어지는 모델은 implicit 모델(fixed procedure과 latent varaibles를 통해 samples가 만들어짐)인데 우리의 모델은 implicit model이면서 DDPM objective로 훈련되므로 denoising diffusion implicit model(DDIM)으로 명하였다. (그런데 이제 forward process는 더 이상 diffusion이 아님)

4.2 Accelerated Generation Process

 Generative process는 reverse process의 근사이다. 이 때 forward process가 T step을 거쳐야하기 때문에 generative process역시 T steps를 거쳐야했다. 그러나 denoising objective L_1은 q(x_t|x_0)가 고정되어 있는 한 특정한 forward procedure에 의존하지 않으므로 우리는T보다 짧은 길이의 forward procedure만 고려할 수 있었다. -> 이를 통해 generative process에서 다른 모델을 훈련할 필요없이 가속화할 수 있음.
  Forward process의 모든 잠제변수를 고려하는 것이 아니라 [1, ... , T]의 sub-sequence이면서 길이가 S인 τ에서 {x_ τ1, ..., x_ τS}를 생각하면 

q(x_ τi|x_rj, x_0)의 marginal이 q(x_ri|x_0) = N((α_ τi)**0.5*x_0, (1- α_ τi)I)가 되도록 잡아 sampling 과정의 반복되는 특성을 사용해 계산 효율성을 늘릴 수 있따.
 DDIM 역시 trainin에서는 section 3에서 언급한 대로 L_1을 목적 함수로 훈련할 수 있기 때문에 training은 변화가 필요하지 않다. 다만 생성시

&alpha;_0는 1로 정의

에 약간의 변경을 추가하여 새로운, 더 빠른 생성 과정을 얻는다. 

5. Experiments

 이 section에서는 적은 iterations로 image generation을 수행할 때 DDIM이 DDPM보다 우수함을 보여주며 DDPM generation process에 비해 10배에서 100배의 속도 향상을 보인다고 한다. 게다가 DDPM과 달리 초기 잠재 변수인 x_T가 고정되면 DDIM은 generation trajectoryy에 관계없이 high-level image features를 유지하므로 latent space에서 직접적으로 보간을 수행할 수 있다. DDIM은 또한 latent code에서 재구성할 수 있기에 sample을 인코딩하는 데 사용할 수 있지만 DDPM은 확률적 샘플링 과정으로 이를 수행할 수 없다.
 
 각 데이터셋에 대해 동일한 훈련된 모델인 T=1000, 목적함수로는 L_1을 사용한다. Section 3에서 주장하는 바와 같이, 훈련 절차와 관련하여 변경 사항이 필요하지 않고 샘플을 생성하는 방식이 달라진다. 샘플이 얼마나 빨리 얻어지는지 제어하는 요소인 τ와 deterministic DDIM과 stochastic DDPM 사이의 비율을 결정하는 σ만 달라진다.
 
 우리는 [1, ...T]의 다양한 sub-sequences인 τ와 다양한 분산 하이퍼파라미터인 σ를 고려한다. 비교를 단순화 하기 위해 다음 형식의 σ를 고려한다.

 위 식의 η가 직접 제어할 수 있는 하이퍼파라미터로 η가 1일 때 원래의 DDPM을 의미하며 η가 0일 때 DDIM을 나타낸다.

5.1 Sample Quality and Efficiency 

 Table 1을 보면 샘플을 생성하는 데 사용된 timesteps 수(S)와 η를 달리하였다. 당연히 샘플의 품질은 S가 증가할 수록 높아졌으며 이는 샘플  품질과 계산 비용 간의 tradeoff를 나타낸다. S가 작을 때 DDIM이  최고의 샘플 품질을 달성하고 DDPM에 가까워질 수록 샘플 품질이 일반적으로 더 낮았다. 하지만 S가 클 경우 DDPM이 좋은 성능을 봉ㅆ다.
 
 Figure 3에서는 동일한 샘플링 단계 수와 다양한 η값을 가진 CIFAR10 및 CelebA 샘플을 보여주는데 DDPM의 경우 샘플링 경로가 10단계에 일 때 샘플 품질이 급격히 저하된다. η 값의 경우 생성된 이미지가 짧은 경로에서 더 많은 noisy perturbations를 갖는 것으로 판단된다. (이 때문에 FID 점수가 낮은 것으로 판단됨.)
 
 Figure 4에서는 샘플을 생성하는 데 필요한 시간이 샘플 경로의 길이에 따라 선형적으로 증가함을 보여줌. DDIM이 훨씬 적은 단계로 샘플을 생성할 수 있으므로 DDIM이 샘플을 더 효율적으로 생성할 수 있음을 시사한다. 

5.2 Sample Consistency in DDIMs

 DDIM의 경우 생성 과정은 결정론적이기 때문에 x_0는 오직 초기 상태인 x_T에 의존한다. Figure 5에서 보면 동일한 초기 x_T로 시작하면서 다른 generative trajectories(different τ)에서 생성된 이미지를 관찰했는데 흥미롭게도 동일한 초기 x_T로 생성된 이미지들은 생성 경로와 관계없이 대부분 고수준 특징들이 유사한다. 많은 경우에 단지 20단계로 생성된 샘플들이 1000단계로 생성된 샘플들과 고수준 특징 면에서 유사하며, 세부 사항에서만 약간의 차이를 보였다. 이는 x_T 자체가 이미지의 충분한 정보를 담고 있는 잠재 인코딩임을 나타내고 세부 사항은 생성 경로가 긴 부분에서 담당하는 것으로 보인다.

5.3 Interpolation in Deterministic Generative Process

 DDIM sample의 고수준 특징이 x_T에 의해 인코딩되므로 다른 implicit probabilistic models에서 관찰된 것과 유사한 semantic interpolation effect를 내는지 확인해보았다. DDPM에서는 동일한 x_T가 확률적 생성 과정으로 다양한 x_0를 생성할 수 있기 때문에 DDPM의 보간과는 다르다. 
 Figure 6에서 x_T에서의 간단한 보간이 두 샘플 사이에서 의미론적으로 유의미한 보간을 이끌어 낼 수 있음을 보여준다. 이를 통해 DDIM에서는 DDPM에서는 못하는 잠재 변수를 통해 생성된 이미지를 고수준에서 직접적으로 제어할 수 있다.

5.4 Reconstruction from Latent Space 

 블로그에선 생략하였지만 DDIM이 특정 ODE에 대한 오일러 적분 방식이기 때문에 x_0에서 x_T로 인코딩하고 x_T를 재구성할 수 있는 확인해보았다. CIFAR-10 모델로 CIFAR-10 test set에서 인코딩 및 디코딩을 S steps 수행해보았다. Error는 per-dimension mean squared error를 사용하였다. Table 2를 보면 우리의 결과는 DDIM이 더 큰 S 값에서 더 낮은 재구성 오류를 가지는데 이는 neural ODEs 및 normalizing flows와 유사한 특성을 가지고 있음을 보여준다. 동일한 것을 DDPM에 대해서는 수행할 수 없는데 이는 DDPM의 확률적 특성 때문이다.

 2023.11.15~2023.12.11까지 진행되었던 나와 팀원의 첫 데이콘 대회.
 Public에서 6등으로 마무리 하였지만 과적합에 때문에 Private은 48등으로 아쉽게 마무리하였다..
 성능을 높이기 위해 노력했던 우리 팀의 방법들과 다른 상위팀의 아이디어를 종합하여 최고의 모형을 만들어보려 한다.

데이터 설명

https://dacon.io/competitions/official/236193/data

 

대구 교통사고 피해 예측 AI 경진대회 - DACON

분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.

dacon.io

위 사이트의 데이터 설명란 참고

 

우리팀 전략

우리 팀이 사용했던 아이디어들은 다음과 같다.

 

1. 평가 기준이 RMSLE임을 고려하여 ECLO가 20이상인 데이터를 제거
2. 사고유형을 기준으로 데이터를 3분할하여 학습시키고 예측하는 것
3. 공휴일 칼럼 추가
4. 계절 칼럼 추가
5. 출퇴근 칼럼 추가
6. ECLO 로그 변환

Private 2등 code '비타민 13기'

핵심 아이디어

1. ECLO 로그 변환
2. 이상치 처리(상위 0.1% 제거)
3. 외부 데이터 활용
-> sun(일출, 일몰), 총통행량(택시), 평균통행량(택시), 평균속도(택시)
4. 파생변수 생성
-> 주말, 도로형태1, 도로형태2, 가해운전자 평균연령, 피해운전자 평균 연령, 가해운전자 평균성별, 피해운전자 평균성별, ride_dangerous, accident_case_dangerous
5. 전국 데이터 활용(전국 18개의 도시)
6. 가중치 기반 앙상블


교통사고 인사이트

인사이트 1: 지역별 택시의 평균 속도, 통행량은 ECLO에 영향을 미친다.
-> 구별 택시 평균속도/총통행량/평균통행량 변수를 생성하여 지역별 교통화견 차이를 예측해 반영
인사이트 2: 지역별 사고유형별 사고 빈도와 가해운전자 차종별 사고 빈도는 ECLO와 연관성을 보인다.
-> 구별 위험도 파생변수를 생성하여 지역별 위험도 차이를 예측해 반영
인사이트 3: 구별 피해 운전자 평균 연령과 ECLO는 양의 상관관계를 보인다.
-> 구별 피해 운전자의 평균 연령 파생변수를 생성하여 지역별 운전자의 인구 통계학적 특성을 예측해 반영
인사이트 4: 야간의 시인성 저하는 교통사고 발생에 영향을 미친다.
-> 일출 일몰 시각 파생 변수를 추가하여 야간의 시인성 저하에 의한 교통사고 발생확률을 예측해 반영
인사이트 5: 인명 피해 정도는 평일보다 주말에 심해진다.
-> 주말 변수를 추가하여 ECLO 예측 정확성을 높임.


모델

Xgboost Regressor, CatBoost Regressor, LightGBM Regressor를 앙상블
이후 feature importance를 기반으로 교통사고 주요 위험요인을 선정 후 이에 대한 해결책을 제시


위 내용을 어떻게 코드로 구현해보았는지 알아보자.


데이터 전처리
1. 파생변수 생성 1. 날짜, 시간정보 생성
'사고 일시' 컬럼으로부터 연도, 월, 일, 시간 정보 추출 및 변환
2. 파생변수 생성 2. 공간 정보 생성 
'시군구' 컬럼으로부터 도시, 구, 동 정보 추출 및 변환
3. 파생변수 생성 3. 도로 형태 정보 추출
'도로형태' 칼럼은 두 개의 정보로 이루어져 이를 분리 도로형태 1과 도로형태2로 분리
> 준비하면서 도로형태 2에서 다른 도로형태 1에서 오는 기타를 하나로 묶는 것보다 다르게 두는 것이 낫다고 생각해 도로형태를 도로형태 1과 도로형태 2로 분리 후 도로 형태 2를 드랍하는 것을 생각해봄.
4. 가해운전자 연령 -> 변경
5. 외부 데이터 - 전국 데이터 사고 전처리 및 이상치 제거
-> 대구 데이터와 전체 도시 데이터에서 object column을 확인하고
-> 대구 데이터에 없는 object형 변수 값을 가지고 있는 전체 도시 데이터의 인덱스를 파악
-> 이를 제거함.
차량단독에서 ('노면상태', '가해운전자 연령', '도시', '구', '동') column에 대한 결측치 drop
차량단독의 경우 피해운전자 차종은 미분류나 결측치임. 따라서 없음으로 대치
차량단독이 아닌 경우에 대해서는 결측치 모두 drop
-> 결측지 제거 이유는 뭐지? 그냥 형식상의 처리인듯
+ 이상치 제거 코드

# 이상치 제거(0.1%)
def set_limit(column):
    return np.quantile(column, 0.999)

country_copy = country_df.copy()

country_copy = country_copy[['기상상태', '노면상태', '사고유형', '사고유형 - 세부분류', '도로형태1', '도로형태2', 'ECLO']]
country_copy.reset_index(inplace=True, drop=True)

outlier_idxs = []
for col in country_copy.columns[:-1]:
    temp_df = pd.DataFrame(country_copy.groupby(col)['ECLO'].agg(set_limit)).reset_index()
    for j in range(len(temp_df)):
        s_idxs = country_df[(country_df[col] == temp_df.loc[j, col]) & (country_df['ECLO'] > temp_df.loc[j, 'ECLO'])].index.to_list()
        outlier_idxs = outlier_idxs + s_idxs
outliers = list(set(outlier_idxs))

print('outlier 수 : ', len(outliers))

country_df = country_df.drop(outliers, axis=0)
country_df.reset_index(inplace=True, drop=True)

print(len(country_df))



6. 파생변수 4. 지역별 가해운전자 & 피해운전자 평균 연령 추출
train에 대해서는 도시, 구, 동으로 groupby, 전국 데이터는 도시로 groupby
7. 파생변수 5. 지역별 가해운전자 & 피해운전자 평균 성별 추출
train에 대해서는 도시, 구, 동으로 groupby, 전국 데이터는 도시로 groupby
8. 파생변수 6. 주말 변수 추가
9. 전체 데이터 concat
10. 파생변수 7. 외부데이터(일출일몰시각 : 해 떴는지(1) 안떴는지(0))
11. 파생변수 8. 지역별 위험도 변수 생성
ride dangerous: 가해운전자 차종별 위험도를 측정 후(가해운전자 차종 별 ECLO의 평균 구함.) 구 별 가해운전자 차종 사고 발생 비율을 반영하여 가중치 생성
전체 train에서 가해운전자 차종별 위험도 평균를 측정
특정 구에 대해서 ((각 차종별 사고 회수)x(가해운전자 차종별 위험도 평균))/(구의 전체 사고 횟수)
accident case dangerous: 사고유형별 위험도를 측정 후 구 별로 사고 유형 발생 비율을 반영하여 가중치 생성
12. 파생변수 9. 외부데이터 - 택시 통행량, 택시 속도
도시별 총통행량 평균, 도시별 평균통행량 평균
도시별 평균속도 평균 -> 모두 train에서 데이터 mearge하고 train의 결측치 채우고 train의 데이터로 test 채움.
13. 기상상태, 노면상태, 사고유형, 도로형태1, 도로형태2 원핫 인코딩
테스트에 없는 원핫 인코딩을 버리기 보단 test에 새로운 컬럼 생성(0으로)

for i in train_oh.columns:
    if i not in test_oh.columns:
        test_oh[i]=0


14. 요일, 도시, 구 레이블 인코딩

for case in np.unique(test_x[i]):
    if case not in le.classes_:
        print('test case is not in classes')
        le.classes_ = np.append(le.classes_, case)


모델 돌리기

from xgboost import XGBRegressor
from lightgbm import LGBMRegressor, early_stopping
from catboost import CatBoostRegressor
import optuna

from sklearn.metrics import mean_squared_log_error as msle
from sklearn.model_selection import train_test_split


XGBOOST

def xgb_modeling(X_train, y_train, X_valid, y_valid):
  def objective(trial):
    params = {
        'learning_rate': trial.suggest_float('learning_rate', 0.0001, 0.1),
        'min_child_weight': trial.suggest_int('min_child_weight', 1, 20),
        'gamma': trial.suggest_float('gamma', 0.01, 1.0),
        'reg_alpha': trial.suggest_float('reg_alpha', 0.01, 1.0),
        'reg_lambda': trial.suggest_float('reg_lambda', 0.01, 1.0),
        'seed':42,
        'max_depth': trial.suggest_int('max_depth', 3, 15), # Extremely prone to overfitting!
        'n_estimators': trial.suggest_int('n_estimators', 300, 3000, 200), # Extremely prone to overfitting!
        'eta': trial.suggest_float('eta', 0.007, 0.013), # Most important parameter.
        'subsample': trial.suggest_discrete_uniform('subsample', 0.3, 1, 0.1),
        'colsample_bytree': trial.suggest_discrete_uniform('colsample_bytree', 0.4, 0.9, 0.1),
        'colsample_bylevel': trial.suggest_discrete_uniform('colsample_bylevel', 0.4, 0.9, 0.1),
    }

    model = XGBRegressor(**params, random_state=42, n_jobs=-1, objective='reg:squaredlogerror')
    bst_xgb = model.fit(X_train,y_train, eval_set = [(X_valid,y_valid)], eval_metric='rmsle', early_stopping_rounds=100,verbose=False)

    preds = bst_xgb.predict(X_valid)
    if (preds<0).sum()>0:
      print('negative')
      preds = np.where(preds>0,preds,0)
    loss = msle(y_valid,preds)

    return np.sqrt(loss)

  study_xgb = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=100))
  study_xgb.optimize(objective,n_trials=30,show_progress_bar=True)

  xgb_reg = XGBRegressor(**study_xgb.best_params, random_state=42, n_jobs=-1, objective='reg:squaredlogerror')
  xgb_reg.fit(X_train,y_train,eval_set = [(X_valid,y_valid)], eval_metric='rmsle', early_stopping_rounds=100,verbose=False)

  return xgb_reg,study_xgb


LGBM

def lgbm_modeling(X_train, y_train, X_valid, y_valid):
  def objective(trial):
    param = {
        'objective': 'regression',
        'verbose': -1,
        'metric': 'rmse',
        'num_leaves': trial.suggest_int('num_leaves', 2, 1024, step=1, log=True),
        'colsample_bytree': trial.suggest_uniform('colsample_bytree', 0.7, 1.0),
        'reg_alpha': trial.suggest_uniform('reg_alpha', 0.0, 1.0),
        'reg_lambda': trial.suggest_uniform('reg_lambda', 0.0, 10.0),
        'max_depth': trial.suggest_int('max_depth',3, 15),
        'learning_rate': trial.suggest_loguniform("learning_rate", 1e-8, 1e-2),
        'n_estimators': trial.suggest_int('n_estimators', 100, 3000),
        'min_child_samples': trial.suggest_int('min_child_samples', 5, 100),
        'subsample': trial.suggest_loguniform('subsample', 0.4, 1),
    }

    model = LGBMRegressor(**param, random_state=42, n_jobs=-1)
    bst_lgbm = model.fit(X_train,y_train, eval_set = [(X_valid,y_valid)], eval_metric='rmse',callbacks=[early_stopping(stopping_rounds=100)])

    preds = bst_lgbm.predict(X_valid)
    if (preds<0).sum()>0:
      print('negative')
      preds = np.where(preds>0,preds,0)
    loss = msle(y_valid,preds)

    return np.sqrt(loss)

  study_lgbm = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=100))
  study_lgbm.optimize(objective,n_trials=30,show_progress_bar=True)

  lgbm_reg = LGBMRegressor(**study_lgbm.best_params, random_state=42, n_jobs=-1)
  lgbm_reg.fit(X_train,y_train,eval_set = [(X_valid,y_valid)], eval_metric='rmse', callbacks=[early_stopping(stopping_rounds=100)])

  return lgbm_reg,study_lgbm


Catboost

def cat_modeling(X_train, y_train, X_valid, y_valid):
  def objective(trial):
    param = {
        'iterations':trial.suggest_int("iterations", 1000, 20000),
        'od_wait':trial.suggest_int('od_wait', 500, 2300),
        'learning_rate' : trial.suggest_uniform('learning_rate',0.01, 1),
        'reg_lambda': trial.suggest_uniform('reg_lambda',1e-5,100),
        'subsample': trial.suggest_uniform('subsample',0,1),
        'random_strength': trial.suggest_uniform('random_strength',10,50),
        'depth': trial.suggest_int('depth',1, 15),
        'min_data_in_leaf': trial.suggest_int('min_data_in_leaf',1,30),
        'leaf_estimation_iterations': trial.suggest_int('leaf_estimation_iterations',1,15),
        'bagging_temperature' :trial.suggest_loguniform('bagging_temperature', 0.01, 100.00),
        'colsample_bylevel':trial.suggest_float('colsample_bylevel', 0.4, 1.0),
    }


    model = CatBoostRegressor(**param, random_state=42)
    #task_type="GPU",devices='0:1'
    bst_cat = model.fit(X_train,y_train, eval_set = [(X_valid,y_valid)], early_stopping_rounds=100,verbose=False)

    preds = bst_cat.predict(X_valid)
    if (preds<0).sum()>0:
      print('negative')
      preds = np.where(preds>0,preds,0)
    loss = msle(y_valid,preds)

    return np.sqrt(loss)

  study_cat = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=100))
  study_cat.optimize(objective,n_trials=30,show_progress_bar=True)

  cat_reg = CatBoostRegressor(**study_cat.best_params, random_state=42)
  cat_reg.fit(X_train,y_train,eval_set = [(X_valid,y_valid)], early_stopping_rounds=100,verbose=False)

  return cat_reg,study_cat

수정한 코드

 파생변수는 위의 코드와 비슷하게 만들어주고 대구 데이터에 없는 object형 변수 값을 갖고 있는 전체 도시 데이터의 인덱스를 파악해 drop해준 다음 사고유형에 따라 데이터를 분리하였다.

train1=country_df[country_df["사고유형"]=="차량단독"]
train2=country_df[country_df["사고유형"]=="차대차"]
train3=country_df[country_df["사고유형"]=="차대사람"]
test1=test_df[test_df["사고유형"]=="차량단독"]
test2=test_df[test_df["사고유형"]=="차대차"]
test3=test_df[test_df["사고유형"]=="차대사람"]

display(train1.shape)
display(train2.shape)
display(train3.shape)

결과

(26620, 29)
(489871, 29)
(113105, 29)


이렇게 나눈 후 이상치 1% 제거, 사고 유형 drop, 지역별 가해운전자 & 피해운전자 평균 연령 추출, 지역별 가해운전자 & 피해운전자 평균 성별 추출, 가해운전자 & 피해운전자 차종 별 위험도 추출
+ 피해 & 가해 노인운전자 위험도(차량단독, 차대사람만)
+ 원핫 인코딩("노면상태", "도로형태1")
+ 레이블 인코딩("요일", "도시", "구", "동", "도로형태")
을 진행하였고 3개의 데이터에 대해 optuna를 사용하여 lgbm 하이퍼파라미터 튜닝, catboost 하이퍼파라미터 튜닝을 진행하였다.
마지막 앙상블은 lgbmx0.2+catboostx0.8로 하였을 때 가장 성능이 높게 나왔다.


그런데 생각보다 성과가 나오지 않고 제출 횟수도 제한되어 있어서 더 이상의 진행은 그렇게 도움이 되지 않을 것 같아 개선을 멈추려고 한다.(튜닝하는데 시간을 너무 보내서..)
수정한 코드의 ipynb는 다음 링크에 있다.
https://github.com/ParkSeokwoo/Dacon_Daegu-Traffic-Accident-Prediction-AI/blob/main/%EB%B8%94%EB%A1%9C%EA%B7%B8_%EC%9E%91%EC%84%B1%EC%9A%A9.ipynb

 

Dacon_Daegu-Traffic-Accident-Prediction-AI/블로그_작성용.ipynb at main · ParkSeokwoo/Dacon_Daegu-Traffic-Accident-Predict

A project predicting the risk of traffic accidents in Daegu - ParkSeokwoo/Dacon_Daegu-Traffic-Accident-Prediction-AI

github.com

 

Modeling Tabular Data using Conditonal GAN

Abstract

 표형 데이터의 확률 분포를 모델링하고 현실적인 합성 데이터를 생성하는 것은 어려운 작업이다. 표형 데이터는 이산형 및 연속형 열이 혼합되어 있으며, 연속형 열은 여러 모드를 가질 수 있고, 이산형 열은 종종 불균형하여 모델링을 어렵게 한다. 기존 통계 모델과 심층 신경망 모델은 이러한 데이터를 적절히 처리하지 못한다. 이를 해결하기 위해 우리는 조건부 생성기를 사용하는 CTGAN을 설계했다. 7개의 시뮬레이션 데이터셋과 8개의 실제 데이터셋을 포함한 벤치마크를 통해 CTGAN의 성능을 평가했으며, 대부분의 실제 데이터셋에서 베이지안 방법보다 우수한 성능을 보였다. 다른 딥러닝 방법들은 이러한 성과를 내지 못했다.

1. Introduction

 최근 심층 생성 모델의 발전은 이미지와 텍스트에서 높은 품질의 샘플을 생성할 수 있는 가능성을 열었다. 이러한 가능성은 표형 데이터 생성을 위한 GAN(Generative Adversarial Networks)의 개발을 촉진했다. GAN은 기존 통계 모델보다 더 큰 유연성을 제공한다. CTGAN은 이러한 문제를 해결하기 위해 제안된 조건부 표형 GAN으로, 모드 특정 정규화, 조건부 생성기, 샘플링 학습을 통해 데이터 불균형 문제를 해결한다. CTGAN은 여러 벤치마크 테스트에서 베이지안 네트워크 및 다른 GAN 기반 방법들보다 우수한 성능을 보인다.

2. Related Work

  전통적인 접근 방식은 각 열을 랜덤 변수로 간주하여 결합 다변량 분포를 모델링한다. 여기에는 의사 결정 트리, 베이지안 네트워크 및 코풀라가 포함되며, 복잡한 분포를 처리하는 데 한계가 있다. VAEs(Variational Autoencoders) 및 GANs(Generative Adversarial Networks)의 개발은 더 큰 유연성과 성능을 제공한다. medGAN, ehrGAN, tableGAN과 같은 다양한 GAN 기반 모델들이 의료 및 다른 분야에서 개발되어 유망한 결과를 보였으나, 표형 데이터에서는 여전히 도전 과제를 안고 있다.

3. Challenges with GANs in Tabular Data Generation Task

이 섹션에서는 표형 데이터에 GAN을 사용하는 데 있어 고유한 도전 과제를 설명한다:

  • 혼합 데이터 유형: 이산형 및 연속형 열을 동시에 생성해야 한다.
  • 비정규 분포: 표형 데이터의 연속 값은 종종 비정규 분포를 가지며, 이는 정규화를 복잡하게 만든다.
  • 다중 모드 분포: 연속형 열은 여러 모드를 가질 수 있다.
  • 희소 원-핫 인코딩 벡터: 이산형 열이 희소 벡터로 표현될 때 문제가 발생한다.
  • 불균형 범주형 열: 범주형 열의 높은 불균형은 모드 붕괴와 소수 범주의 불충분한 표현을 유발한다.

4. CTGAN Model

CTGAN 모델은 확인된 문제를 해결하기 위해 여러 기술을 도입한다:

  • 모드 특정 정규화: 각 연속 값을 모드와 해당 모드 내의 정규화된 값의 조합으로 나타내어 비정규 및 다중 모드 분포를 처리하는 새로운 정규화 방법이다.
  • 조건부 생성기 및 샘플링 학습: 생성기는 이산형 열 값을 조건으로 하여 모든 범주가 훈련 중에 잘 대표되도록 한다. 샘플링 학습 기법은 불균형한 범주형 열을 처리하는 데 도움을 준다.
  • 네트워크 구조: 모델은 특정 활성화 함수와 정규화 기술을 사용하여 고품질 합성 행을 생성하는 완전 연결 네트워크를 사용한다.

+ TVAE Model

VAE를 변형하여 tabular data에 사용할 수 있게 함. 훈련할 때에는 ELBO loss를 사용함.

5. Benchmarking Synthetic Data Generation Algorithms

이 섹션에서는 CTGAN을 평가하기 위한 벤치마킹 프레임워크와 데이터셋에 대해 설명한다:

  • 베이스라인 및 데이터셋: 벤치마크에는 베이지안 네트워크(CLBN, PrivBN)와 여러 심층 학습 접근 방식(MedGAN, VeeGAN, TableGAN)이 포함된다. 데이터셋에는 UCI 머신러닝 저장소와 Kaggle에서 가져온 7개의 시뮬레이션 데이터셋과 8개의 실제 데이터셋이 포함된다.
  • 평가 메트릭 및 프레임워크: 평가에는 두 가지 메트릭이 사용된다: 시뮬레이션 데이터의 우도 적합성과 실제 데이터의 머신러닝 효능. 우도 적합성은 합성 데이터가 훈련 데이터와 동일한 분포를 따르는지 확인하고, 머신러닝 효능은 합성 데이터를 사용하여 훈련된 모델이 실제 테스트 데이터에서 얼마나 잘 수행하는지를 평가한다.

6. Conclusion

논문은 CTGAN이 베이지안 네트워크를 포함한 기존 방법들보다 표형 데이터 분포를 더 잘 모델링함을 강조하면서 결론을 맺는다. 모드 특정 정규화와 조건부 생성기 및 샘플링 학습은 복잡한 표형 데이터를 처리하는 데 있어 크게 기여한다. 저자들은 GAN이 이산형 및 연속형 데이터를 모두 처리할 수 있는 이론적 근거를 제공하는 것을 향후 연구 과제로 제안한다.


CTAB-GAN: Effective Table Data Synthesizing

1. Introduction

이 장에서는 기존의 GAN 기반 테이블 데이터 생성 알고리즘의 한계점을 설명하고, CTAB-GAN의 필요성과 목표를 제시한다. 현재 사용되는 많은 GAN 기반 알고리즘들은 범주형 변수와 연속형 변수를 혼합하여 처리하는 데 어려움을 겪고 있다. 특히 데이터 불균형 문제를 해결하지 못해 생성된 데이터의 품질이 떨어진다. 이 문제를 해결하기 위해 CTAB-GAN은 설계되었다. CTAB-GAN은 혼합형 데이터를 효과적으로 처리하고 데이터 불균형 문제를 해결하기 위한 새로운 접근법을 제시한다.

2. Related Studies

GAN을 이용한 테이블 데이터 생성 연구는 크게 두 가지로 나뉜다: (i) 기본 GAN 기반 생성기와 (ii) 조건부 GAN 기반 생성기.

2.1 기본 GAN 기반 생성기

여러 연구들은 GAN을 확장하여 범주형 변수를 처리하려고 시도했다. 예를 들어, MedGAN은 자동 인코더를 GAN과 결합하여 연속형 및 이산형 변수를 생성할 수 있다. 이는 전자 건강 기록(EHR) 데이터를 생성하는 데 사용되었다. CrGAN-Cnet은 항공 승객 명단 데이터를 생성하기 위해 Cramér 거리와 Cross-Net 아키텍처를 통합했다. TableGAN은 정보 손실과 분류기를 GAN 프레임워크에 도입하여 데이터 생성의 품질을 높였다. 그러나 이러한 알고리즘들은 특정 클래스의 데이터를 생성하는 기능이 부족하며, 프라이버시 문제를 완벽히 해결하지 못한다.

2.2 조건부 GAN 기반 생성기

조건부 벡터를 사용하여 특정 클래스의 데이터를 생성하는 조건부 GAN이 점점 더 많이 사용되고 있다. CW-GAN은 조건부 벡터를 사용하여 소수 클래스를 과대표집하여 데이터 불균형 문제를 해결한다. CTGAN은 PacGAN 구조를 판별기에 통합하고, WGAN 손실 및 그래디언트 패널티를 사용하여 조건부 GAN 프레임워크를 훈련한다. CTGAN은 조건부 벡터를 활용하여 불균형한 범주형 변수 문제를 해결하는 전략을 채택했다.

우리의 논문에서는 연속형 또는 범주형 변수뿐만 아니라 혼합형 데이터 타입(범주형과 연속형 값이 혼합된 변수, 또는 결측값을 포함한 변수)을 모델링하는 데 초점을 맞춘다. 이전 연구의 장점을 효과적으로 결합하고, 긴 꼬리 변수 분포 문제를 해결하기 위해 새로운 조건부 벡터 구조를 제안한다.

3. CTAB-GAN

CTAB-GAN은 기존 알고리즘의 단점을 극복하기 위해 설계된 테이블 데이터 생성기다. 혼합형 인코더를 도입하여 범주형-연속형 혼합 변수와 결측값을 더 잘 표현할 수 있다. CTAB-GAN은 조건부 GAN(CGAN)을 기반으로 하여 소수 클래스를 효율적으로 처리하며, 분류기와 정보 손실을 추가하여 의미적 일관성과 훈련 안정성을 높인다. 마지막으로, 불균형 변수의 모드 붕괴 문제를 해결하기 위해 로그-빈도 샘플러를 활용한다.

3.1 Technical Background

GAN은 원래 이미지 데이터를 생성하는 데 큰 성공을 거두었고, 이후 테이블 데이터로 확장되었다. GAN은 생성기와 판별기 간의 적대적 게임을 통해 현실적인 데이터를 생성한다. 데이터 불균형 문제를 해결하기 위해 조건부 생성기와 샘플링 방법을 활용한다. 조건부 벡터를 사용하여 범주형 변수의 클래스를 나타내고, 이를 통해 소수 클래스의 데이터 학습 기회를 높인다.

생성 품질을 향상시키기 위해 생성기의 손실 함수에 두 가지 추가 항목을 도입한다: 정보 손실과 분류 손실. 정보 손실은 생성된 데이터와 실제 데이터의 통계적 차이를 최소화하고, 분류 손실은 보조 분류기를 추가하여 생성된 데이터의 의미적 일관성을 높인다. 예를 들어, "성별=여성, 질병=전립선암"과 같은 비논리적 기록이 생성되지 않도록 한다.

연속형 변수의 복잡한 분포를 처리하기 위해 모드-특정 정규화 아이디어를 채택하여 각 값을 가우시안 혼합 모델(GMM)에서 나온 값-모드 쌍으로 인코딩한다.

3.2 Design of CTAB-GAN

CTAB-GAN의 구조는 세 가지 블록(생성기, 판별기, 보조 분류기)으로 구성된다. 생성기는 노이즈 벡터와 조건부 벡터를 필요로 하며, 정보 손실과 분류 손실을 통해 생성된 데이터의 통계적 특성과 의미적 일관성을 높인다. 판별기는 생성된 데이터와 실제 데이터를 구분하며, 보조 분류기는 생성된 데이터의 클래스를 예측하여 의미적 일관성을 확인한다.

GAN은 생성기와 판별기 간의 제로섬 미니맥스 게임을 통해 훈련된다. 정보 손실은 생성된 데이터와 실제 데이터의 1차 및 2차 통계(평균 및 표준편차)를 맞추어 통계적 특성을 일치시킨다. 분류 손실은 생성된 데이터의 의미적 일관성을 확인하고, 비논리적 기록에 대해 페널티를 부여한다.

3.3 Mixed-type Encoder

CTAB-GAN은 세 가지 유형의 변수를 구분하여 인코딩한다: 범주형, 연속형, 혼합형. 혼합형 변수는 범주형 값과 연속형 값을 모두 포함하거나 결측값을 포함하는 경우로 정의한다. 새로운 혼합형 인코더를 도입하여 이러한 변수를 효과적으로 처리한다. 이 인코더는 혼합형 변수의 값을 값-모드 쌍으로 인코딩하여 연속형 값과 범주형 값을 모두 효과적으로 처리한다.

4. Experiments

CTAB-GAN의 성능을 다양한 데이터셋에서 실험적으로 평가한다. 기존 모델들과의 비교를 통해 CTAB-GAN의 우수성을 입증한다. 실험 결과, CTAB-GAN은 혼합형 데이터와 데이터 불균형 문제를 효과적으로 해결하며, 생성된 데이터의 품질과 의미적 일관성을 높인다.

5. Conclusion

CTAB-GAN의 주요 기여와 실험 결과를 요약하며, 향후 연구 방향에 대해 논의한다. CTAB-GAN은 혼합형 데이터와 데이터 불균형 문제를 효과적으로 해결하는 새로운 접근법을 제시한다. 이 모델은 다양한 실제 데이터 생성 응용 분야에서 유용하게 활용될 수 있다.


CTAB-GAN+: Enhancing Tabular Data Synthesis

1. Introduction

CTAB-GAN+는 민감한 개인정보 보호를 보장하면서 고품질의 합성 테이블 데이터를 생성하기 위해 설계된 새로운 조건부 테이블 GAN 모델이다. 데이터 공유는 지식 개발에 필수적이지만, 개인정보 보호와 규제 준수 문제로 인해 그 효과가 제한되고 있다. CTAB-GAN+는 이러한 문제를 해결하기 위해 Differential Privacy(DP)와 같은 기술을 활용하여 데이터 보호와 활용성 간의 최적의 균형을 추구한다.

2. Related Work

기존의 테이블 데이터 생성 모델들은 주로 연속형 또는 범주형 데이터만을 대상으로 하며, 혼합형 데이터나 불균형 데이터의 처리에 한계가 있다. 또한, 기존 모델들은 DP를 충분히 고려하지 않아 개인정보 유출 위험이 있다. CTAB-GAN+는 이러한 기존 모델들의 한계를 보완하고, 더욱 안전하고 유용한 합성 데이터를 제공하기 위해 개발되었다.

3. CTAB-GAN+

CTAB-GAN+의 주요 구성 요소는 Generator, Discriminator, 그리고 Auxiliary Component이다. Generator는 데이터의 다양한 특성을 학습하여 새로운 데이터를 생성하며, Discriminator는 실제 데이터와 합성 데이터를 구별하는 역할을 한다. Auxiliary Component는 생성된 데이터의 유용성을 높이기 위해 추가적인 학습 신호를 제공한다.

3.1 Conditional GAN Structure

CTAB-GAN+는 Conditional GAN 구조를 채택하여 다양한 조건에서 데이터 생성이 가능하다. 이 구조는 데이터 불균형 문제를 해결하고, 특정 클래스의 데이터를 더 많이 생성할 수 있는 능력을 제공한다.

3.2 Advanced Feature Encoding

CTAB-GAN+는 연속형, 범주형, 혼합형 변수를 효과적으로 처리하기 위해 새로운 특성 인코딩 방법을 도입한다. 이를 통해 다양한 데이터 타입을 정확하게 모델링할 수 있으며, 특히 불균형 데이터와 결측값 처리에 강점을 가진다.

3.3 Wasserstein Loss with Gradient Penalty

모델의 안정성과 성능을 높이기 위해 Wasserstein Loss with Gradient Penalty(Was+GP)를 사용한다. 이는 GAN의 훈련 과정에서 발생할 수 있는 불안정성을 줄이고, 더욱 일관된 학습을 가능하게 한다.

3.4 Differential Privacy

CTAB-GAN+는 Differential Privacy를 구현하여 민감한 데이터의 보호를 보장한다. DP-SGD(Differentially Private Stochastic Gradient Descent)를 사용하여 학습 과정에서 개인정보 유출을 방지하고, 데이터의 익명성을 유지한다.

4. Experiments

CTAB-GAN+는 다양한 평가 지표를 통해 성능을 평가한다. 이를 위해 7개의 데이터셋(Adult, Covertype, Credit, Intrusion, Loan, Insurance, King)에서 실험을 진행하였다. 이 데이터셋들은 각각 분류 또는 회귀 문제를 포함하고 있으며, 각 데이터셋에 대해 정확도, F1-score, AUC, Mean Absolute Percentage Error(MAPE), Explained Variance Score(EVS), R² Score 등의 평가 지표를 사용하여 모델의 성능을 평가하였다.

4.1 Datasets

각 데이터셋은 특정한 머신러닝 문제를 포함하고 있으며, CTAB-GAN+의 성능을 테스트하기 위해 사용된다. 데이터셋에는 다양한 형태의 변수가 포함되어 있으며, 특히 연속형, 범주형, 혼합형 변수를 다양하게 포함하고 있다.

4.2 Evaluation Metrics

평가 지표는 두 가지 주요 측면에서 모델의 성능을 측정한다:

  1. Machine Learning Utility: 합성 데이터가 실제 데이터를 얼마나 잘 대체할 수 있는지를 평가하기 위해, 합성 데이터와 실제 데이터를 사용하여 학습된 모델의 성능을 비교한다. 분류 문제의 경우 정확도, F1-score, AUC를 측정하고, 회귀 문제의 경우 MAPE, EVS, R² Score를 측정한다.
  2. Statistical Similarity: 합성 데이터와 실제 데이터 간의 통계적 유사성을 평가하기 위해, Jensen-Shannon Divergence(JSD), Wasserstein Distance(WD), Diff. Corr(변수 간 상관 관계 차이) 등을 사용한다.

4.3 Results

CTAB-GAN+는 모든 평가 지표에서 기존의 최첨단 모델들보다 뛰어난 성능을 보였다. 특히 분류 문제에서 CTAB-GAN+는 AUC와 정확도에서 각각 56.4%와 41.2%의 개선을 보였다. 회귀 문제에서도 CTAB-GAN+는 다른 모델들보다 높은 예측 정확도를 유지하며 우수한 성능을 나타냈다. 통계적 유사성 측면에서도, CTAB-GAN+는 JSD, WD, Diff. Corr에서 모든 비교 모델을 능가하는 결과를 보였다.

5. Conclusion

CTAB-GAN+는 다양한 유형의 테이블 데이터를 효과적으로 모델링하고, 개인정보 보호와 데이터 활용성 간의 최적의 균형을 제공한다. 이는 특히 금융, 보험, 제조업 등 데이터 공유가 중요한 산업 분야에서 활용될 수 있는 중요한 도구이다. 앞으로의 연구에서는 CTAB-GAN+의 응용 범위를 확장하고, 다양한 데이터셋에서 추가 실험을 통해 성능을 더욱 향상시키는 것이 목표이다.

CTAB-GAN+는 합성 데이터 생성에서의 새로운 가능성을 제시하며, 데이터 공유의 어려움을 해결하는 데 중요한 역할을 할 수 있을 것으로 기대된다.

 이번에 리뷰할 논문은 diffusion model의 기초를 세운 DDPM을 다룬 논문인 'Denoising Diffusion Probabilistic Models'이다. 이 논문 이전에도 diffusion 아이디어는 있었지만 그 과정을 수식적으로 명확히 다루고 품질인 좋은 샘플들을 생성하였으며 학습 안전성을 높혔기 때문에 유명한 논문이다.(이 논문을 기점으로 diffusion model에 관한 관심이 늘어났다.) 읽어보면서 VAE와의 연관성을 생각해보면 p(x)를 다루기 어려워 latent variable을 통해 분포를 예상한다음 새로운 샘플을 생성해내는 것, reparametrization trick이 사용되는 점 등등이 있겠다. 논문은 아래 사이트에 기재되어있다.

https://arxiv.org/abs/2006.11239

 

Denoising Diffusion Probabilistic Models

We present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models inspired by considerations from nonequilibrium thermodynamics. Our best results are obtained by training on a weighted variational bound

arxiv.org

Abstract

- 우리는 nonequilibrium thermodynamics에서 영감 얻은 diffusion probabilistic models(a class of latent variable models)를 사용하여 높은 품질의 이미지를 생성해냈다.

-> 간단히 찾아보니 nonequilibrium thermodynamics는 비평형 열역학으로 시스템이 평형 상태에 있지 않을 때의 동적 거동을 설명하는 이론이라고 한다. Diffusion의 diffusion process와 reverse diffusion process가 엔트로피의 변화와 유사한 원리를 바탕으로 작동한다고 한다.

 

-  우리의 가장 좋은 결과는 diffusion probabilistic models와 denoising socre matching with Langevin dynamics 사이의 새로운 연결에 따라 만들어진 weighted variational bound를 training함으로써 얻어냈다.

 

- 또한 우리의 모델은 progressive lossy decompression scheme을 허용하며, 이는 autoregressive decoding의 일반화로 해석될 수 있다.

-> Progressive lossy decompression scheme은 여러 단계에 걸쳐서 압축된 데이터를 복원하는 구조를 말하고(손실은 압축시 일부 정보가 사라질 수 있음을 의미, decompression은 압축된 데이터를 다시 원래 상태로 복원하는 과정) autoregressive decoding은 데이터를 순차적으로 예측하며 생성하는 방식이다. Autoregressive decoding의 핵심 아이디어를 포함하면서도, 더 넓은 범위의 문제를 해결할 수 있어 일반화라는 표현을 사용.

 

- unconditional CIFAR 10 dataset에서 우리는 9.46의 Inception 점수와 3.17의 sota FID 점수를 얻었다.

-> Inception 점수: 생성된 이미지가 얼마나 다양하고, 또 얼마나 실제 데이터와 유사한지 평가하는 지표, 높을수록 생성된 이미지가 다양하고 높은 품질을 가짐을 의미

-> FID 점수: 생성된 이미지와 실제 이미지 분포 차이를 측정하는 지표, 낮을수록 생성된 이미지가 실제 이미지와 매우 유사하며, 높은 품질을 가짐을 의미

-> unconditional은 클래스 레이블 정보를 사용하지 않고 이미지를 생성하는 것을 의미한다.

 

- 256x256 LSUN에서는 ProgressiveGan과 유사한 샘플 품질을 얻었다. 

1. Introduction

- 딥러닝을 사용하는 generative models는 다양한 data 종류에 대해서 좋은 퀄리티의 samples를 만들어냈다. 

 

- 이 논문은 diffusion probabilistic models의 progress를 제안한다. Diffusion probabilistic model은 매개변수화된 Markov chain으로 유한 시간내에 data에 대응되는 samples를 생성하기 위해 variational inference를 사용한다.

- 위 그림에서 q로 표현된 markov chain이 diffusion process로 noise를 추가하는 forward process임. p로 표현된 markov chain은 sampling process로 noise를 제거하는 denoising과정으로 reverse process임. DDPM은 p로 표현된 sampling process를 학습함.(q는 가정하기 때문에 학습하지 않음.)

 

- 만약 이렇게 추가하는 noise가 작은 양의 Gaussian noise라면 sampling chain의 transitions은 conditional Gaussian으로 표현하기에 충분함. -> 따라서, 간단히 신경망으로 평균과 분산만 예측하면 됨.

 

- Diffusion model는 정의하기 쉽고 훈련 효율도 높지만 지금까지 고품질 샘플을 생성할 수 있다는 증거가 없었다. 우리는 diffusio models도 좋은 품질의 samples를 만들 수 있음을 보였고 때로는 다른 유형의 생성 모델에서 발표된 결과보다 더 나은 성과를 보이기도 함.

 

- 추가로 이러한 매개변수화가 denoising score matching over multiple noise levels during traings와 annealed Langevin dynamics during sampling이 동일함을 보여줌.

-> denoising score matching: during traing: 데이터의 확률 밀도 함수를 추정하기 위한 방법으로, 데이터 포인트 주변의 확률 밀도의 기울기를 학습함. Denoising score matching에서는 노이즈가 추가된 데이터에 대해 스코어(확률 밀도 함수의 로그에 대한 기울기)를 추정하고 이를 통해 원래의 데이터 분포를 복원함.

-> annealed Langevin dynamics during sampling: 여러 단계에 걸쳐 노이즈를 점진적으로 줄여가며 데이터 샘플을 생성하는 방법. 각 단계는 앞 단계에서 학습된 스코어(확률 밀도 함수의 로그에 대한 기울기)를 이용하여 노이즈를 제거하고, 점차적으로 더 깨끗한 샘플을 만듦.

-> 두 방식 모두 데이터의 노이즈를 제거하고 원래의 데이터를 복원하는 것인데 본질적으로 같은 원리를 따을 논문에서 보인 것

 

- 우리의 모델은 다른 likelihood-based models에 비해 경쟁력 있는 log likelihoods를 가지지 못했는데 그 이유는 lossless codelength의 대부분이 사람이 인식할 수 없는  image의 세부적인 부분을 설명하는데 사용되고 있었기 때문이다. 이 현상을 손실 압축의 관점에서 분석해 개선하였다. 확산 모델의 sampling 과정은 progressive decoding의 한 유형으로 autoregressive decoding과 유사하지만, 더 일반화된 방식으로 작동하였다.

-> lossless codelength: 데이터를 압축할 때 손실 없이 필요한 비트 수

-> 손실 압축 관점은 데이터를 완벽히 복원하지 않아도 되지만, 중요한 정보는 남겨두는 방식이기 때문에 사람이 인식할 수 없는 세부사항을 생락하거나 덜 정확하게 표현하는 것. => 효율적이고 효과적인 모델

-> 그 결과 만들어진 것이 progressive decoding(이미지를 한 번에 새엉하는 대신 여러 단계에 걸쳐 점진적으로 만들어나가는 방식)이고 이는 데이터를 한 번에 하나씩 순차적으로 생성하는 방식인 autoregressive decoding보다 일반화된, 유연한 방식임.

2. Background

- 일단 가장 중요한 거

학습하려는 대상이 p가 아닌 q라는 점. VAE랑 또 다르다. 또한 왜 diffusion이 noising인지 단어의 의미로 해석해보면 데이터의 정보가 점점 퍼져서(확산되어서) 노이즈로 가득 차게 되는 것을 표현하기 위함이라 한다. 

 

- Diffusion models은 latent variable model로 p(x_0)는 다음과 같이 형성된다.

이 식의 정의는
이와 같다.

- 그런데 여기서 알아야 할 것이 이 x_1, ... x_t인 latents가 모두 x_0와 같은 차원이라는 것이다. -> VAE와 다른 점.

 

- x_0는 q(x_0)를 따른다.

 

- x_T는 Gaussian 분포를 따른다.

 

- reverse process: p(X_T)로 시작하는 학습되는 Gaussian trainsitions으로 이루어진 Markov chain

 

- forward process: 데이터에 가우시안 노이즈를 추가하는 과정으로 x_0에서 schedule된 베타들로 노이즈들이 추가된다.

왼쪽 분포를 approximate posterior이라 한다.

 사실 베타들은 reparameterization으로 학습해도 되고 그냥 상수로 둬도 된다. 베타 값들은 크기가 작은데 그 이유가 베타가 작은 경우 p와 q가 유사한 함수 형태를 갖기 때문에 reverse process의 표현력이 증가하기 때문이다.  

 또한 forward process의 놀라운 성질은 x_t를 t에 관계 없이 x_0로부터 closed form으로 샘플링할 수 있다는 점이다. 

위 두 표현으로 q(x_t|x_0)를 다음과 같이 쓸 수 있다.

-> 위 과정이 왜 놀랍냐면 sampling process를 매우 단축시킬 수 있기 때문이다.(reparameterization trick을 쓰면 하나의 noise를 샘플링하면 끝임)

 

- training은 negative log likelihood의 variational bound를 optimizing하는 것이 목표이다.

이 식의 유도는 아래 appendix A로 추가하겠다.

 

- 효율적인 학습을 위해 L을 다시 써서 variance를 낮추면 아래와 같은 식이 된다.(왜 variane가 낮고 아래 식이 유도되는 지는 appendix B에 첨부하겠다.)

위 식에서 처음 보는 term이 가운데 term인데 이 term은 p(x_{t-1}|x_t)와 q(x_{t-1}|x_t, x_0) -> forward process posteriors를 비교하는 KL divergence term이다. 갑자기 forward process의 분포에 given x_0가 생겼는데 이는 위의 L의 variance를 낮추는 과정에서 생긴 것이다.(이렇게 초기 추정량에 조건부 기댓값을 추가하여 분산을 낮추는 방법을 Rao-Blackwellization이라 한다.) 이 분포는 아래와 같이 정의되고

모든 term들이 gaussian을 다루거나 gaussian 사이의 KL-divergence를 구하기 때문에 closed form을 갖는다.

3. Diffusion models and denoising autoencoders

- Diffusion models은 마치 제한된 형태의 잠재 변수 모델처럼 보일 수 있지만, 구현에 있어 많은 자유도를 허용함.

-> forward process의 분산인 베타

-> reverse process의 모델 architecture, gaussian distribution parameters

을 선택해야함.

3.1 Forward process and L_T

- 베타 역시 reparameterization으로 학습될 수 있지만 여기선 constants로 고정함. 따라서 q에서 학습될 파라미터가 없기 때문에 식 (5)에서 L_T는 무시함.(p(x_T)도 학습할 거 없으니까)

3.2 Reverse process and L_{1:T-1}

- 먼저 p(x_{t-1}|x_t)(1<t<=T)에서 평균과 분산을 어떻게 고를지 생각해보자.

분산은 학습되지 않지만 시간에 따라 다른 상수로 정하였는데 

시그마의 후보론

 가 있다. 첫번째 선택은 x_0가 정규분포 N(0,I)를 따를 때 최적이고 두 번째 선택은 x_0가 한 점으로 정해질 때 최적이다. 

-> 이미지로 생각하면 x_0의 각 픽셀이 독립적으로 평균 0, 분산 1을 갖는 정규 분포를 따를 때 최적(다양한 이미지가 균일하게 분포되어 있을 때), x_0의 각 픽셀이 고정된 값을 갖는 것을 의미한다.(모든 이미지가 거의 동일한 구조와 패턴을 가지는 경우) 

-> coordinatewise unit variance를 갖는 data의 reverse process entropy의 상한과 하한에 대응된다.

분산을 위와 같이 잡아 reverse process의 분포가 다음과 같이 변하면

L_{t-1}을 아래와 같이 쓸 수 있다.

이 식은 당연히 최소화해야 하기 때문에 가장 간단한 접근은 forward process posterior의 평균으로 뮤(x_t,t)를 잡는 것이다.

위 식에서 reparameterization을 통해 


에서 x_0를 얻고 



를 (8)에 대입하면 

를 얻게 된다.

이 식에서 알 수 있는건 forward process posterior의 평균이

으로 표현할 수 있어서 µ(x_t,t)를 아래와 같이 잡는 것이다.

e(x_t)는 아래 x_t의 e를 예측하기 위해 

모델이 학습하여 예측하려는 노이즈 추정량이다.

그럼 reverse process에 x_{t-1}을 sampling하는 것은

reparameterization trick으로

을 계산하는 것과 같다.

예측한 평균인 (11)을 (10)에 넣으면

가 된다.

-> 이 식이 denoising score matching과 비슷하고, Langevin-like reverse process의 variational bound와 같아 둘이 동듬함을 보였다고 한다.

 

- 전체 알고리즘은 다음과 같다.

만약 이미지 데이터에서 training을 하면 2의 과정은 전체 이미지 데이터셋에서 하나를 뽑는 과정이다.

-> Training 과정에서 t를 sampling하여 접근하는 방식은 계산의 효율성을 높이고 다양한 노이즈 수준을 균형 있게 학습할 수 있게 한다.

+ Diffusion 모델은 다양한 수준의 noise를 학습하기 위해 시간 term을 sampling하고 특정 시간 단계 t에서도 다양한 노이즈에 대해 학습하기 위해 e를 sampling함. 모델은 주어진 x_t와 시간 t를 입력 받아 해당 시점의 노이즈를 e를 예측하도록 학습됨. 이렇게 충분한 훈련이 되면 x_t와 t를 입력받아 노이즈를 예측하고 예측된 노이즈를 사용하여 현재 이미지에서 노이즈를 제거해 x_{t-1}을 계산한다. 이 과정을 무수히 반복해 원본 이미지와 같은 수준의 이미지를 생성해감.

 

- 요약하자면, rever process의 mean function approximator인 µθ를 예측하도록 학습할 수 있고, 또는 매개변수를 수정하여 ε을 예측하도록 학습할 수 있음.(x_0를 예측하게 할 수도 있으나 초기 실험에서 이것이 더 낮은 품질을 생성함.) ε-prediction parameterization이 Langevin dynamics와 denoising score matching과 유사한 것을 최적화 하는 것이 목표로 하는 단순한 diffusion model의 variational bound 둘과 유사함을 보였다. 그럼에도 불구하고 이것은 단지 pθ(xt1xt)의 또 다른 매개변수화일 뿐이므로, 4장에서 을 예측하는 것과 μt를 예측하는 것을 비교하는 실험을 통해 그 효과를 검증함.

-> ablation study: 모델의 특정 부분을 제거하거나 변경하여 성능을 비교하는 방법

3.3 Data scaling, reverse process decoder, and L_0

- 우리는 이미지 데이터를 픽셀 단위로 scaling해서 [0, 255]를 [-1,1]로 linearly scaling해줌.(시작이 표준 정규분포이니 신경망은 모든 데이터 포인트를 동일한 범위에서 처리하게 됨.)

 

- discrete log likelihoods를 얻기 위해 마지막 항을 독립된 이산 디코더로 설정함. 이는

이 가우시안 분포로부터 유도된 것으로

D는 데이터의 차원 수이고 i superscript는 한 좌표를 추출하는 것을 의미 + L_0를 계산하는데 쓰인데

왜 이런 짓을 하냐면 애초에 이미지 데이터는 이산 데이터이기 때문. 연속적인 분포를 사용하여 이산 데이터의 로그 우도를 계산하려면 이렇게 이산 값에 따른 정해진 부분을 적분하여 이산값에 대한 확률을 계산해야 함.

-> 이렇게 하면 추가적인 노이즈를 넣거나 복잡한 수학 연산을 할 필요 없이 variational bound와 lossless codelength of discrete data가 같다고 알려져있다고 한.

-> 마지막 x_0를 구할 때는 노이즈를 넣지 않음.

3.4 Simplified training objective

- 3.1과 3.2, 3.3으로 구성한 variational bound는 세타에 대해 미분 가능해 training을 쓰일 수 있다. 그런데 여기서 기존 variational bound를 대신할 수 있는 간소화된 손실 함수를 사용할 것을 주장하는데 식은 다음과 같다.

t는 1과 T사이 unifrom variable이다.

t=1일 때 위 식은 L_0에 대응되는데 (13)에서 정의한 discrete decoder definition의 적분이 gaussian probability density funtion과 bin width를 곱한 것으로 근사된다.(시그마 제곱과 edge effects 무시)

t>1일 때 위 식은 L_1,...,L_t-1이 대응 되는데 (12) 가중치 없는 버전으로 NCSN denoising score matching과 유사하다 한다.

이 식은 표준 변분 경계와 비교했을 때 작은 t에 해당하는 손실 항목의 가중치를 낮추는 역할임. 따라서 네트워크가 더 큰 t값에서 더 어려운 노이즈 제거 작업에 집중할 수 있게 하고 이는 실제 샘플 품질을 높이는 것으로 이어졌다고 함.

4. Experiments

- 모든 실험에 T를 1000으로 맞춤

- 순방향 과정의 분산을 β_1 = 10^-4, β_T = 0.02로 선형 증가하는 상수로 설정함.

-> β 스케줄링 방법에는 여러가지가 있음

1. 선형 스케줄링 (Linear Scheduling)

: β를 일정하게 증가시키는 방법

2. 제곱 스케줄링 (Quadratic Scheduling)

: β 값을 제곱 함수 형태로 증가시키는 방법, 초반과 후반의 차이를 더 극대화

3.  코사인 스케줄링(cosine scheduling)

: α_t를 코사인 함수로 정의하고 β_t 값을 유도하는 방식

-> β들이 [-1,1]로 스케일된 데이터에 비해 작게 설정되어 reverse process와 forward process가 대략 같은 함수 형태를 유지하게 하면서 신호 대 잡음 비율을 가능한한 작게 유지하려 함.(L_T=D(q(x_T|x_0) || N(0, I))≈10^-5 bits per dimension, L_T가 실제 신호 대 잡음 비율을 의미하는 것은 아니지만 L_T가 작게 하면 신호 대 잡음 비율이 줄어듬.)

 

- reverse process를 나타내기 위해 그룹 정규화(배치 정규화와 유사하지만, 미니배치의 크기에 의존하지 않는 정규화기법, 채널을 여러 그룹으로 나누어 각 그룹 내에서 정규화를 수행한다.)를 전체적으로 사용하는 PixelCNN++과 유사한 U-Net backbone 구조를 가짐. 파라미터는 시간에 걸쳐 공유되며, Transformer 모델에서 사용하는 사인파 위치 인코딩을 적용하여 각 시간 단계에 맞는 위치 정보를 제공함. 또한 16*16 크기의 feature map에서 self-attention mechanism을 사용하여 중요한 부분에 집중할 수 있게 함.

4.1 Sample quality

- 아래 Table 1은 CIFAR10에 대해 Inception scores, FID scores, negative log likelihoods(lossless codelengths)을 기록해놓았다. FID score이 3.17로 우리의 uncoditional model은 알려진 대부분의 model보다 좋은 sample quality룰 보였다. 테스트 세트를 기준으로 계산한 FID score는 5.24로 알려진 다른 모델들의 test set FID score보다 좋다.

- 위 표를 보면 simplified objective로 구할 때보다 true variational bound로 구할 때 더 좋은 codelengths(작을수록 이득임.)를 보였는데 후자가 더 좋은 sample quality(큰 IS, 작은 FID)를 보였다.

다음은 실제로 만든 이미지들

4.2 Reverse process parameteriation and training objective ablation

- 아래 Table 2는 reverse process parameterization과 training objectives의 sample quality effects를 보여줌.

- 우리는 µ를 예측하는 방식은 true variational bound를 구할 때만 잘 작동하는 것을 확인함.

- 또한 reverse process의 variances를 학습하는 것도 실험해보았지만 고정 분산과 비교했을 때 불안정한 학습과 더 낮은 샘플 품질을 초래함.

- ε를 예측하는 방식은 고정 분산으로 variational bound를 사용하여 학습했을 때는 µ를 예측하는 것과 거의 동일하게 수행되었지만, simplified objecive로 학습한 경우 훨씬 더 잘 수행됨.

4.3 Progressive decoding

- Table 1에 CIFAR 10 model의 codelengths도 보여주는데 train과 test 사이의 gap이 최대 0.03 bits per dimension이므로 이는 다른 model에서 보고된 차이보다 적은 차이로 우리의 diffusion model이 overfitting되지 않았음을 나타냄. 

 

- 하지만 여전히 우리의 lossless codelengths는 energy based models와 score matching에서 보고된 큰 추정치보단 좋지만, 다른 유형의 likelihood-based generative models와 비교할 때는 경쟁력이 없음.

-> 우리의 샘플들이 높은 품질을 유지하고 있음에도 불구하고 우리는 diffusion models이 lossy compression에서 높은 품질의 샘플을 생성할 수 있는 inductive bias를 가지고 있다고 판단함.

-> L_1+...+L_T를 rate, L_0를 distortion으로 보면 rate는 1.78 bits/dim이고 distortion은 1.97bits/dim임.(둘이 더해서 3.75)

-> 그런데 이 1.97 비트/차원은 원래 픽셀 값이 [0, 255]로 변환했을 때 RMSE가 0.95에 해당하는 매우 작은 값임.

즉, 절반이 넘는 lossless codelength가 지각할 수 없는 distortions를 설명하는 것임.

 

Progressive lossy compression

- 우리는 progressive lossy code를 도입하여 이 rate-distortion behavior를 더 탐구할 수 있는데 이 부분은 어려워서 생략...

 아무튼 결론은 bits의 대부분이 impreceptible distortions를 설명하고 있다는 거임.

 

Progressive generation

- 이번엔 아래 식을 통해 각 reverse process에서 x_0를 예측해봄.

이 때 아래 그림처럼 대규모 이미지 특징이 먼저 나타나고 세부 사항은 나중에 나타남.

아래 그림은 다양한 t에 대해 x_t(4개 중 오른쪽 아)가 고정된 상태에서 x_0(가장 오른쪽 아래 사진)를 예측한 결과를 보여줌. t가 작을 때는 거의 모든 것이 보존되고 t가 클 때는 대규모 특징만 보존됨.

-> conceptual compression의 hints가 된다 하는데 conceptual compression은 중요한 대규모 특징을 먼저 보존하고, 세부 사항을 나중에 보존하는 방식임.

 

Connection to autoregressive decoding

- variational bound를 아래와 같이 다르게 쓸 수 있는데

만약 diffusion process length T가 data의 dimensionality라 하고 forward process q(x_t|x_0)를 t번째 좌표를 만들어내는 것 같이 조건들을 설정해주면 여기서 p_θ를 훈련하는 것이 마치 autoregressive model이 됨.

-> 이 때문에 Gaussian diffusion model을 autoregressive model의 일반화라 볼 수 있음.

4.4 interpolation

 - 우리는 stochastic encoder q를 사용하여 x_0, x_0'을 interpolate할 수 있음. q를 사용하여 x_t와 x_t'으로 변환한 후 선형 보간으로 새로운 벡터를 만든 다음 reverse process를 통해 이미지 공간으로 decoding 하는 것임.

즉, 아래와 같이 decoding하는 것.

이는 위 그림의 왼쪽에 모사된 것처럼, 소스 이미지의 손상된 버전을 선형 보간 후 reverse process를 통해 인위적인 흔적을 제거하는 효과를 가짐. 

 오른쪽 그림은 노이즈를 고정한 채 람다를 달리하면서 보간 및 복원을 보여주는 데 높은 품질의 복원을 생성하며, 포즈, 피부, 톤, 헤어스타일, 표정 및 배경과 같은 속성이 부드럽게 변하는 그럴듯한 보간을 생성하지만 안경은 그렇지 않음. 

5. Related Work

- 확산 모델은 흐름(flow) [9, 46, 10, 32, 5, 16, 23]과 VAE [33, 47, 37]와 비슷할 수 있지만, 확산 모델은 q에 매개변수가 없고 최상위 잠재 변수 x_T가 데이터 x_0와 거의 제로의 상호 정보를 가지도록 설계되었다. 우리의 ϵ-예측 역방향 과정 매개변수화는 확산 모델과 여러 노이즈 수준에서의 denoising score matching과 annealed Langevin dynamics를 통한 샘플링 사이의 연결을 확립한다 [55, 56]. 그러나 확산 모델은 간단한 로그 가능도 평가를 허용하고, 학습 절차는 변분 추론을 사용하여 Langevin dynamics 샘플러를 명시적으로 학습한다 이 연결은 또한 특정 가중 형태의 denoising score matching이 Langevin-like 샘플러를 학습하기 위한 변분 추론과 동일하다는 역방향 의미도 가진다. 마코프 연쇄의 전이 연산자를 학습하는 다른 방법들로는 infusion training [2], variational walkback [15], generative stochastic networks [1], 그리고 기타 [50, 54, 36, 42, 35, 65]가 있다.

 

- Score matching과 에너지 기반 모델링의 알려진 연결에 의해, 우리의 작업은 에너지 기반 모델에 대한 최근 연구 [67–69, 12, 70, 13, 11, 41, 17, 8]에 영향을 미칠 수 있다. 우리의 비율-왜곡 곡선은 하나의 변분 경계 평가에서 시간에 걸쳐 계산되며, 이는 annealed importance sampling의 한 번의 실행에서 왜곡 페널티에 대한 비율-왜곡 곡선을 계산하는 방법을 연상시킨다 [24]. 우리의 점진적 디코딩 논증은 convolutional DRAW 및 관련 모델 [18, 40]에서 볼 수 있으며, 오토회귀 모델 [38, 64]에 대한 더 일반적인 설계 또는 샘플링 전략으로 이어질 수도 있다.

6. Conclusion

 우리는 diffusion models를 사용하여 높은 품질의 이미지 샘플을 제시했으며 diffusion models과 variational inference를 통한 Markov chains training, denoising score matching과 Langevin dynamics(이를 확장한 에너지 기반 모델), autoregressive models, progressive lossy compression 간의 연결을 발견했따. Diffusion models이 이미지 데이터에 대해 뛰어난 inductive bias를 가지고 있는 것 같으므로 이 모델이 다른 데이터 형태에서도 유용한지, 다른 유형의 생성 모델 및 머신 러닝 시스템의 구성 요소로서 어떻게 활용될 수 있는지 조사해보고자 한다.

Broader Impact

- 우리의 확산 모델 연구는 기존의 다른 유형의 딥 생성 모델에 대한 연구와 유사한 범위를 갖는다. 예를 들어, GAN, 흐름, 오토회귀 모델 등의 샘플 품질을 개선하려는 노력이 그렇다. 이 논문은 확산 모델을 이러한 기법들의 범주 내에서 일반적으로 유용한 도구로 만드는 데 기여하며, 이는 생성 모델들이 세상에 미친(그리고 앞으로 미칠) 영향을 확대하는 데 기여할 수 있다.

 

- 불행히도, 생성 모델의 악의적인 사용은 많이 알려져 있다. 샘플 생성 기술은 정치적 목적으로 고위 인물들의 가짜 이미지와 비디오를 생성하는 데 사용될 수 있다. 소프트웨어 도구가 등장하기 전에도 수작업으로 가짜 이미지를 만드는 일이 있었지만, 생성 모델과 같은 도구는 이 과정을 더 쉽게 만든다. 다행히도, 현재 CNN이 생성한 이미지에는 미묘한 결함이 있어 이를 감지할 수 있지만, 생성 모델의 발전은 이를 더 어렵게 만들 수 있다. 또한, 생성 모델은 훈련된 데이터셋의 편향을 반영힌다. 많은 대규모 데이터셋이 인터넷에서 자동화된 시스템에 의해 수집되기 때문에, 특히 이미지가 라벨링되지 않은 경우 이러한 편향을 제거하기가 어렵다. 이러한 데이터셋을 기반으로 훈련된 생성 모델의 샘플이 인터넷에 확산되면, 이러한 편향은 더욱 강화될 것이다.

 

- 반면에, 확산 모델은 데이터 압축에 유용할 수 있다. 데이터가 더 높은 해상도를 가지게 되고 글로벌 인터넷 트래픽이 증가함에 따라, 이는 인터넷 접근성을 넓은 대중에게 보장하기 위해 중요할 수 있다. 우리의 연구는 이미지 분류부터 강화 학습에 이르는 다양한 다운스트림 작업을 위한 라벨이 없는 원시 데이터에 대한 표현 학습에 기여할 수 있으며, 확산 모델은 예술, 사진, 음악에서 창의적인 용도로도 사용될 수 있다.

 

 

 원래 autoencoder는 1980년대 만들어진 신경망 모델 중 하나로 데이터를 효율적으로 표현하기 위해서 고안되었다.  Encoder 구조를 통해 데이터를 압축하고 decoder 구조로 다시 복원하는 과정을 통해 데이터의 중요한 특징을 추출하는 것이 목표였는데 이 구조를 유지한 채 각각의 목적에 맞게 설계되어 noise를 제거하는 DAE, 새로운 데이터를 생성하는 VAE 등으로 발전하였다.

 오늘 다뤄볼 모델은 VAE이다. 참고한 논문은 'Auto-Encoding Variational Bayes' by. Diederik P Kingma, Max Welling이고 아래 사이트에 기재되어있다.

[1312.6114] Auto-Encoding Variational Bayes (arxiv.org)

 

Auto-Encoding Variational Bayes

How can we perform efficient inference and learning in directed probabilistic models, in the presence of continuous latent variables with intractable posterior distributions, and large datasets? We introduce a stochastic variational inference and learning

arxiv.org

수식은 아래 사이트를 참고하였습니다.

[논문리뷰] Auto-Encoding Variational Bayes(VAE) 모든 수식 알아보기 (tistory.com)

 

[논문리뷰] Auto-Encoding Variational Bayes(VAE) 모든 수식 알아보기

0. 들어가며 제목은 모든 수식을 알아본다고 호기롭게 썼으나 제가 이해한 만큼만 이 포스팅에 담길 예정입니다. 학습이 어떤식으로 이루어 지는지에 초점을 맞추기 보다는 왜 loss가 이런 식으

rla020.tistory.com

 

Abstract

  • 우리는 어떻게 intractable posterior distributions를 갖는 continuous latent variables가 존재하고 large datasets에서 효율적인 inference와 directed probabilistic models를 학습할 수 있을까?
    • by. stochastic variational inference & learning algo.
  • 우리는 이 논문을 통해 크게 2가지를 기여함.
    • reparameterization of the variational lower bound로 간단한 SGD로 최적화 가능한 a lower bound estimation를 만든 것
    • approximate inference model을 proposed lower bound estimator를 통해 intractable posterior에 fitting 시켜 posterior inference가 효율적으로 수행되게 하는 것

1. Introduction

  • Directed probabilistic models에서 연속적인 잠재 변수와 파라미터가 intractable(앞으로 '난해한, 복잡한'으로도 자주 쓰겠다.) posterior distributions(p(z|x))를 가지면 어떻게 효율적으로 근사추론하고 학습할 수 있을까?
    • variational Bayesian(VB) approach
      • 복잡한 사후 분포를 더 간단한 분포로 근사하여 계산의 용이성을 도모하는 접근법
      • 기본 아이디어는 근사 분포 선택과 ELBO(Evidence Lower Bound, evidence는 x의 log-likelihood) 최적화로 이루어짐.
      • variational은 원함수가 어려울 때 다른 함수로 대체하는 방법을 의미
      • 위 식의 유도과정
    • VB의 방법 중 하나인 mean-field접근법이 있는데
      • 근사 분포를 각 잠재 변수가 독립적인 형태로 근사해 다변수 분포를 단변수 분포의 곱으로 나타낸다.
      •  
      • mean-field 접근법은 물리학에서 유래되어 복잡한 시스템에서 모든 상호작용을 계산하기 어려워 평균적은 장으로 근사하는 방식임.
      • 하지만 이런 가정을 하더라도 general case에서 approximate posterior q(z)는 적분하기 어렵다.(논문에서 말하는 analytical solutions은 수학공식을 통한 적분을 말함.)
      • 따라서. variational lower bound를 reparameterization을 통해 simple differentiable unbiased estimator of the lower bound를 만들고 이 SGVB(Stochastic Gradient Variational Bayes) estimator가 efficient approximate posterior inference에 사용됨을 보일 것이다.
  • i.i.d. dataset(각 data points 독립적, from 동일한 분포)과 data point마다 continuous latent variable이 있는 경우 Auto-Encoding VB(AEVB) algo. 를 제안한다.
    • 이 알고리즘은 SGVB estimator로 inference와 learning을 효율적으로 가능하게 해 recognition model을 최적화할 수 있다.
    • 그 결과, simple ancestral sampling(모델의 구조에 따라 순차적으로 sampling 하는 것)으로도 매우 효율적인 approximate posterior inference가 가능하다. -> 빠른 learning으로 이어짐., 비싼 interative infernce(MCMC) 같은 거 안 써도 됨.
  • 이런 learned approximate posterior inference model은 다양한 task에도 쓰일 수 있고 특히 neural network와 결합하면 variational auto-encoder가 된다.

2. Method

    • 이번 장에선 lower bound estimator(a stochastic objective function)을 유도해 볼 것이다.
    • 사전에 하는 가정은 i.i.d dataset with latent variables per datapoint, maximum likelihood(ML) or maximum a poseteriori(MAP)가 목표이고 latent variables에 대해 variational inference를 하는 것이다.
      • variational inference: 복잡한 확률 분포를 계산하기 쉬운 분포로 근사하여 접근하는 방법
    • 이 시나리오를 글로벌 파라미터에 대해서도 variational inference를 수행하는 경우로 확장하는 것은 간단하다. 해당 알고리즘은 appendix F에 올려두지만 이 경우에 대한 실험은 앞으로 연구가 필요하다.(VAE는 잠재 변수에 대해서만 variational inference를 수행함.)
    • 우리의 아이디어는 실시간으로 연속적인 생성과 전달되어 분석 및 처리가 요구되는 streaming data에서도 사용할 수 있지만 간단히 하기 위해 fixed dataset으로 가정하겠다.






    • 2.1 Problem scenario
      • 우리는 데이터 x가 보이지 않는 continuous random variable z로부터 random process를 통해 만들어졌다고 가정하자.
      • 이 프로세스는
        • z는 true parameter 세타*로 이루어져 있는 prior distribution p_{세타*}(z)로부터 생성되고
        • x가 conditional distribution p_{세타*}(x|z)로부터 만들어진다.
      • 이렇게 two steps로 이루어진다.
      • p_{세타*}(z), p_{세타*}(x|z)는 각각 parametric families of distributions에서 온다고 가정하는데 이는 각각의 분포가 특정한 parameter를 통해 결정됨을 의미한다.(가우시안이면 평균과 분산)
      • p_{세타*}(z), p_{세타*}(x|z)는 세타와 z에 대해 미분 가능도 가정
      • 그리고 이러한 과정은 대부분 hidden process이기 때문에 true pparameter 세타*, latent variable z 역시 알지 못한다.
      • 매우 중요한 것이, marginal과 posterior에는 simplifying assumptions를 적용하지 않은 것!
      • prior과 likelihood는 parametric familes에서 오는 반면 marginal과 posterior에는 제약 x
      • 우리는 다음의 case에서도 작동하는 일반적인 알고리즘에 관심 있다.
        • Intractability: marginal likelihood인 p(x)= ∫p(z)p(x|z)dz가 intractable한 상황. 즉, p(x)를 계산할 수 없고 미분할 수 없다. + true posterior density p(z|x) = p(x|z)p(z)/p(x)가 intractable하여 EM algorithm을 사용할 수 없는 상황 + mean-field VB algo.에서 필요한 integrals 역시 intractable한 상황. 
          • likelihood functions p(x|z)가 적당히 복잡하기만 하더라도 자주 생기는 상황이다.(neural network with nonlinear hidden layer이면 당연)
          • EM algo를 사용하려면 p(x)를 알아야 한다.
          • 자세한 내용은 https://go-big-or-go-home.tistory.com/8 에
        • A large dataset: 데이터 셋이 많아 모든 데이터를 한꺼번에 처리하는 batch optimzation을 못하기 대문에 minibatches가 single datapoints로 update를 하려 한다. 이때, sampling methods는 각 데이터 포인트 혹인 mini batches마다 반복적으로 sampling을 수행해야 하므로 너무 많은 비용이 든다.
      • 우리는 이에 대한 해결책을 제시하기 위해 세 가지 관련된 문제로 쪼갰다.
        • Efficient approximate ML or MAP estimation for the parameter theta
          • hidden process를 모방하고 real data와 비슷한 데이터를 만들 수 있다.
        • Efficient approximate posterior inference of the latent variable z given an observed value x for a choice of parameters theta
          • coding or data representation tasks에 적합하다.
        • Efficient approximate marginal inference of the varible z
          • 여러 방면에 사용된다.(prior of x이니까) 
      • 위 문제들을 해결하기 위해 recognition model q_{파이}(z|x)를 도입한다. 이는 intractable true posterior p(z|x)를 근사한 것이다. 
      • 또한 알아야 할 것이 mean-field variational inference와 다르게 factorial할 필요가 없고(factorial하다는 것은 잠재변수끼리 독립적일 필요가 없다는 것) recognition model의 파라미터 파이는 단순한 수학적 기댓값 공식으로 계산될 필요가 없다.
        • 대신 recognition model parameters 파이와 generative model parameters 세타를 동시에 학습하는 learning method를 도입할 것이다.
      • Coding theory 관점에서 unobserved variables z는 latent representation or code로 볼 수 있어 recognition model q(z|x)를 확률적 encoder로 볼 수 있다. 주어진 datapoint x에 대해 z에 대한 분포를 만들기 때문.(단, x가 생성될 수 있는 z들로 한정) 같은 관점으로 p(x|z)는 확률적 decoder가 된다. 주어진 code z로 대응되는 x에 대한 분포를 만들기 때문.
    • 2.2 The variational bound 
        • marginal likelihood는 individual data points의 marginal likelihoods의 합으로 구성된다.
        • 그리고 이 각 데이터 포인트의 marginal likelihood는 다음과 같이 쓸 수 있다.
        •  


        • (1), (2) 유도
        • 우측항의 왼쪽 KL divergence는 true poseterior와 그것의 근사에 대한 차이이고 이 값은 non-negative이기 대문에 두 번째 항은 L(세타, 파이; x)는 (variational) lower bound on the marginal likelihood of datapoint i와 동일하다.
        • 이 식은 다시 아래와 같이 쓸 수 있는데
        •  
      • (3) 유도
      • 우리는 lower bound를 variational parameters인 파이와 generative parameters 세타로 미분하고 최적화하려 하는데 파이에 대한 미분은 좀 문제가 있다.
      • Monte Carlo gradient estimator를 기댓값에 적용한 식은 다음과 같은데 
      • where z^(l) ~ q(x❘x^(l)) 첫번째 term에서 두번째 term으로 넘어가는 부분 스코어함수 트릭인데 확률 분포에 대한 기대값의 그라디어트를 계산하는데 사용된다고 한다. 그라디언트 logq(z)를 score function이라 한다.
      • 이 값이 매우 높은 분산을 보여 실용적이지 않다는 것이다.(아래 2.4 section에서 reparameterization trick과 score function을 비교해 보겠다.)
    • 2.3 The SGVB estimator and AEVB algorithm
      • 이번 section에선 실용적인 lower bound estimator랑 그것의 미분된 것을 구해볼 것인데 여기서 사용되는 기법이 posterior을 근사한다고 가정한 q(z|x) 뿐만 아니라 q(z)에도 적용될 수 있다.(변분 추론 기법이 적용 범위가 넓음을 의미) 
      • section 2.4에서 소개될 조건 하에서 선택된 approximate posterior q(z|x)에 대해 q(z|x)를 따르는 random variable z틸다를 differentiable transformation g(e, x)와 보조 noise variable e를 통해 reparameterize할 수 있다.
      • section 2.4에 적절한 분포 p(e)와 함수 g(e, x)를 잡는 법을 소개한다. 우리는 이제 f(z)의 Monte Carlo estimates of expectations을 다음과 같이 계산할 수 있다.
      • 이를 eq. (2)에 적용하여 일반적인 Stochastic Gradient Variational Bayes (SGVB) estimator를 얻는다.
      • 시그마 오른쪽의 두 term에 괄호 있어야 한다.


      • eq.(3)의 KL-divergence D(q(z|x)||p(z))는 주로 적분가능하다.(appendix B에서 볼 거임.) 따라서 오른쪽에 있는 expected reconstruction error E_q[log(p(x|z))]의 sampling만 근사하면 된다. 식의 의미를 살펴보면 KL-divergence term은 approximate posterior를 prior p(z)에 가깝게 하는 파이에 대해 regularizing 하는 term이다. eq. (3)에 reparameterization trick을 사용하면


      • 이렇게 두 번째 버전 SGV estimator가 나오고 이 식은 일반적으로 generic estimator보다 작은 분산을 갖는다.
        • 왜 그런지에 대한 얘기는 없는데 단순히 z에 의존하는 term이 두 개여서 그런가 싶다...
      •  data set X가 총 N datapoints가 있다면 minibatches로 전체 marginal likelihood를 다음과 같이 구할 수 있다.
      • where the minibatch X^M = {x^(i)}(i=1,...,M) is a randomly drawn sample of M datapoints from the full dataset X with N datapoints.
      • 그럼 Auto-Encoding VB (AEVB) algo. 다음과 같이 구현된다.
      • auto-encoders관의 관계는 eq.(7)을 보면 명확하다. 
        • 첫 번째 term은 KL divergence of the approximate posterior from the prior로 regularizer의 역할을 수행한다.
        • 두 번째 term은 expected negative recounstruction term으로 함수 g()는 x와 noise vector e를 approximate posterior에서 뽑은 sample인 z로 mapping해주는 역할이고 그 z가 두번째 term으로 들어간다.
          • log(p(x|z))는 under generative model, given z에서 datapoint x의 확률을 의미하는데 당연히 크면 클수록 좋으니 negative가 붙어 negative reconstruction error이다.
    • 2.4 The reparameterization trick
        • 우리는 문제를 해결하기 위해 q(z|x)에서 샘플을 생성하는 부분을 
        • score function trick에서
        • z를 샘플링해 그라디언트 기호 뒤의 log값이 고차원일 때 큰 값을 가진다고 한다.
        • reparameterization trick으로 
        • noise를 샘플링해 미분가능한 함수로 z를 구하므로 상대적으로 분산이 작다.
        • 넘어왔다.
        • -------------------------------------------------------------------------------------------------------------------------------------------------
        • + 이 부분은 논문에 없지만 score function trick과 reparameterization trick의 분산을 비교해 보겠다.
        •  
          score function trick으로 gardient의 분산 samplin 하기
        • reparameterization trick으로 gradient의 분산 구하기


        • 이렇게 score function trick을 사용했을 때 분산이 훨씬 크다. 노이즈가 gardient 추정에 미치는 영향을 줄이기 때문에 안정적인 추정이 가능하게 한다고 한다.


        • 그럼 왜 높은 분산을 가지면 안 좋은 걸까?
          • 높은 분산은 학습에 불리하기 때문. 학습 속도가 느려지고 최적화 과정에서 적절한 방향으로 수렴하지 못할 가능성이 높아짐. 즉 학습이 불안정해지는 것. + overfitting, underfitting 가능성 모두 증가
        • -------------------------------------------------------------------------------------------------------------------------------------------------
        • 재매개변수화 트릭의 본질은 간단하다. 연속 확률 변수 z가 q(z|x)라는 분포를 다른다고 가정하면 random variable z를 z=g(e, x) 같이 결정론적 변수로 표현할 수 있다.(e는 independent marginal p(e)를 갖는 보조 변수, ㅎ()는 파라미터 파이에 의해 매개변수화된 벡터 함수)
        • 이 트릭이 왜 우리에게 유용한가면 이를 통해 q(z|x)의 Monte carlo estimate of the expecation를 미분가능하게 해 주기 때문이다.
          • 증명은 z = g(z|x)인 결정론적 mapping이 주어졌을 때
          • 확률 분포를 변환하면(이 부분이 잘 이해가 안 갔는데 수리 통계를 공부해야 할 거 같다..)
          •  
          • 가 성립하고  이어서
          • 가 성립한다. 2.3에서 이 트릭으로 variational lower bound에 대해 미분가능한 estimator를 얻은 것.
        • 몇 가지 예시를 들어보면 만약 z가 단변량 가우시안 분포를 따른다고 하면


        • 유효한 reparameterization은 z=μ+σϵ이다.
        • 따라서 기댓값이 다음과 같이 변하고
        •  

 

    • 몬테카를로 추정을 하면
    •  


    • 가 된다.
    • 이렇게 특정 분포 q(z|x)에 대해 미분 가능한 변화 g(e, x)아 보조 변수 e를 선택할 수 있는 건 다음 3가지 접근 방식 중 하나라도 가능할 때이다.
      • Tractable inverse CDF: 만약 q(z|x)의 역 누적 분포 함수를 계산할 수 있는 경우 적용할 수 있다. 이 경우 g(e, x)에서 e는 U[0, I]를 따른다.
        • examples: Exponential, Cauchy, Logistic, Rayleigh, Pareto, ...
      • Gaussian example과 유사하게 "location-sacle" family of distributions에 해당하는 경우 standard distribution을 따르는 e를 auxiliary variable로 사용할 수 있다.
        • examples: Gaussian, Laplcae, Elliptical, Student's t, Logistic, Uniform, ...
      • 랜덤 변수를 보조 변수의 다양한 변환으로 표현할 수 있는 경우
        • examples: Log-Normal(정규 분포된 변수의 지수 변환), Gamma(지수 분포된 변수들의 합), Dirichlet(감마 변수들의 가중합), Chi-Squared, Beta, ...
    • 이러한 접근법들이 모두 불가능한 경우 inverse CDF에 대한 좋은 근사 방법이 있긴 한데 PDF의 시간 복잡도와 필적한 계산이 든다.

3. Example: Variational Auto-Encoder

  • 이번 section에선 probabilistic encoder로 neural network를 사용한 example인 variational auto-encoder에 대해 알아보겠다. parameters 파이와 세타는 AEVB algo.에 의해 jointly optimize된다.
  • latent variables의 prior p(z)를 centered isotropic multivariate Gaussian으로 가정한다.(평균이 0이고 공분산 행렬이 단위행렬인 가우시안 분포)


    • 이 경우 사전 분포는 파라미터를 가지지 않는다. 평균과 공분산 행렬이 고정되어 있으므로 학습할 파라미터가 없다.
  •  p(x|z)의 경우 x가 실수값 데이터의 경우 multivariate Gaussian, 이진 데이터의 경우 Bernoulli 분포이다. 이 분포의 파라미터는 MLP(단일 은닉층을 가진 완전 연결 신경망)을 통해 z로부터 계산된다. -> appendix C
  • 실제 사후 분포 p(z|x)는 계산하기 어렵다. 반면 이를 근사한 q(z|x)의 형태에는 많은 자유도가 있지만 우리는 실제(계산 불가능하지만) 사후 분포가 대각 공분산을 가진 가우시안 분포를 따른다고 가정한다. 이 경우 variational approximate posterior 역시 대각 공분산 구조를 가진 다변량 가우시안 분포로 설정할 수 있다.
    approximate posterior의 평균과 표준편차는 encoding MLP의 출력이다. 이 MLP는 데이터 포인트 x와 variational parameters 파이의 비선형 함수로 평균과 표준편차 계산한다.
  • 2.4에서 설명했듯이 z를 아래와 같이 sampling한다
  • e는 N(0, I)를 따르고 원에 중심이 찍힌 기호는 element-wise product를 의미한다.


  • 이 모델의 경우 p(z) -> prior과 q(z|x)를 Gaussian으로 가정하기 때문에 eq.(7)에 estimator를 사용할 수 있다.(KL-divergence는 근사 없이 계산 가능함!  -> appendix B)
  • 따라서 data point x와 모델에 대한 최종 estimator는


  • 와 같다.
  • 뒤에 붙는 decoding term log(p(x|z))는 modeling하는 data의 type에 따라 Bernoulli or Gaussian MLP이다.

4. Related Work

  • 연속적인 잠재 변수를 사용한 model에 적용 가능한 온라인 학습 방법으로 wake-sleep 알고리즘만이 존재한다.
    • 우리의 방법과 마찬가지로 실제 사후 분포를 근사하는 recoginition model을 사용한다.
    • wake-sleep algo.의 단점은 두 objective functions를 동시에 근사해야 하는데 두 목표함수가 결합되어 이는 marginal likelihood의 최적화와 다르다는 것이다.
    • 장점은 이 알고리즘이 이산 잠재 변수를 포함하는 모델에도 적용될 수 있다는 점이다.
    • 데이터 포인트당 계산 복잡도는 AEVB와 동일하다.
  • 최근에 stochastic variational inferencec가 주목받고 있다. 최근에 2.1에서 논의된 단순 gradient esstimator의 높은 분산을 줄이기 위해 제어 변수를 도입하였고 이를 exponential family approximations of the posterior에 적용하였다. 좀 더 일반적인 방법으로 이 paper와 유사한 reparameterization이 exponential-family approximating distributions의 natural parameters를 학습하기 위한 stochastic variational inference algo.에 사용되었다.
  • AEVB algo.는 directed probabilistic models(trained with a variational objective)와 auto-encoders 사이의 관계를 보여준다. 선형 auto-encoders와 generative linear-Gaussian models 사이의 관계는 오래전부터 알려져 있었다. 
    • PCA와 사전 분포 p(z) = N(0, I)와 조건부 분포 p(x|z) = N(x:Wz, eI)(특히 e가 매우 작은 경우)를 가지는 특수한 경우의 linear-Gaussian models의 ML의 해와 일치함을 보였다.
  • autoencoders에 관한 최근 관련된 연구는 비정규화 오토인코더의 훈련 기준이 입력 X와 잠재 표현 Z 사이의 mutual information의 하한을 최대화하는 것과 일치함을 보여주었다. mutual information을 최대화하는 것은 conditional entropy를 최대화 하는 것과 같으며 이는 autoencoding 모델에서 데이터의 expected loglikelihood(negative reconstrunction error)의 하한이다. 그러나 이런 reconstruction criterion으론 유용한 표현을 학습하기에 충분하지 않다는 것이 알려져 있다. 유용한 표현을 학습하기 위해 정규화 기법이 제안되었으며, 그 예로 denoising , constractive and sparse autoencoder 변형이 있다.
  • SGVB objective는 variational bound에 의해 정해지는 regularization term이 포함되어 있으며 이는 유용한 표현을 학습하는데 필요한 일반적인 regularization hyperparameter가 필요하지 않다. Predictive sparse decomposition(PSD)와 같은 encoder-decoder 구조와도 관련이 있으며, 여기서부터 영감을 얻었다. 또한 최근에 도입된 Generative Stochastic Networks와도 관련 있다. 이 네트워크에서는 노이즈가 있는 auto-encoders가 마르코프 체인의 transition operator를 학습하여 data distribution에서 샘플링한다. Deep Boltzmann Machines의 효율적인 학습을 위해 recognition model을 사용한 사례가 있다. 이러한 방법들은 unnormalized model(Boltzman machines같은 undirected models)이나 sparse coding models에 중점을 둔 반면, 우리의 제안된 알고리즘은 일반적인 directed probabilistic models를 학습하는데 중점을 둔다.
  • 최근 제안된 DARN method 역시 auto-encoding 구조를 사용하여 directed probabilistic model을 학습하지만 이 방법은 binary latent variables에 제한된다. 더욱 최근에는 auto-encoders와 directed probabilistic models 및 우리가 paper에서 얘기한 reparameterization trick을 사용하는 stochastic variational infernce의 연결에 대해 제시했다. 그들의 연구는 우리와 독립적으로 개발되었으며 AEVB에 대한 추가적인 관점을 제시한다.

5. Experiments

  • 우리는 MNIST와 Frey Face 데이터셋의 이미지로 훈련시켰고 variational lower bound과 marginal likelihood의 측면에서 학습 알고리즘을 비교했다.
  • section 3에서 설명된 generative model(encoder)와 variatinal approximation(decoder)를 사용했으며 인코더와 디코더는 같은 수의 hidden units를 가진다. Frey Face 데이터는 연속적이기 때문에 Gaussian outputs를 갖는 decoder를 사용했으며 encoder와 동일하지만 디코더의 출력에 sigmoid activation function을 사용하여 평균을 (0, 1)의 범위로 제안했다. 여기서 hidden units는 인코더와 디코더 neural networks의 hidden layer를 나타낸다.
    • Frey Face 데이터의 얼굴 이미지의 각 픽셀 값은 0에서 255 사이의 값을 자유롭게 가지지만 MNIST 데이터의 이미지의 각 픽셀 값은 0 or 255 같이 특정 값만 갖는다.
  • 파라미터는 algorithm 1. 에서 이야기한 differentiating the lower bound estimator에 의해 계산된 gradients를 쓰는 stochatic gradient ascent로 업데이트되었다. 또한 사전 분포인 p(세타) = N(0, I)에 작은 wieght decay term이 추가되었다. 이 목표를 최적화하는 것은 likelihood gradient가 gradient of the lower bound로 근사되는 approximate MAP estimation을 수행하는 것과 동등하다.
  • 우리는 AEVB 알고리즘과 wake-sleep algorithm을 비교했다. wake-sleep 알고리즘과 variational auto-encoder 모두 동일한 encoder( = recognition model)을 사용하였다. 모든 파라미터, variational, generative paramters 모두 N(0, 0.01)에서 random sampling으로 초기화되었다고 MAP를 기준으로 사용하여 jointly stocastically optimize되었다. Stepsizes는 Adagrad로 조정되었으며, Adagrad global stepsize parameters는 초기 몇 번의 반복에서 훈련 세트 성능을 기준으로 {0.01, 0.02, 0.1} 중에서 선택되었다. 미니배치 크기는 M=100으로, 데이터 포인트당 샘플 L=1개를 사용하였다.
  • Likelihood lower bound
    • 우리는 MNIST의 경우 500개의 hidden units을, Frey Face 데이터셋의 경우 200개의 hidden units를 가지는 generative models(decoders)와 대응되는 encoders(a.k.a recognition models)로 훈련하였다. Frey Face dataset의 경우 상당히 작은 dataset이기 때문에 overfiting을 막기 위해 hidden units의 개수를 줄였다. 선택된 hidden units의 수는 auto-encoders에 대한 기존 문헌을 기반으로 하였으며, 다양한 알고리즘의 상대적인 성능은 이러한 선택에 크게 민감하지 않았다.
    • 다음 그림은 lower bounds를 비교한 결과를 알려준다.
    • 하한은 높을 수록 이득이다.
    • 흥미롭게도, 과도한 잠재 변수가 overfitting을 초래하지 않았으며, 이는 variational bound의 regularizing nautre로 설명된다.
  • Marginal likelihood
    • 매우 저 차원의 잠재 공간의 경우 learned generative models의 marginal likelihood를 MCMC estimator를 통해 추정할 수 있다.(자세한 내용은 appendix D에) Encoder와 decoder로 neural networks를 사용했으며 이번에는 100 hidden units과 3개의 잠재변수를 사용하였다.(높은 차원의 잠재 공간에서는 추정치가 신뢰할 수 없게 되었다.) 
    • 다시 한번 MNIST dataset을 사용하였다. AEVB와 Wake-Sleep method를 hybrid Monet Carlo(HMC) sampler를 사용한 Monte Carlo EM(MCEM)과 비교하였다.(자세한 내용은 appendix E에) 우리는 작은 훈련 세트와 큰 훈련 세트 크기에 대해 세 알고리즘의 수렴 속도를 비교했다. 
    • 결과는 아래 그림에 나와있다.


  • Visualization of high-dimensional data
    • 만약 저 차원 잠재 공간(ex. 2D)를 선택하면 learned encoders(recognition model)을 통해 high-dimensional data를 low-dimenstional manifold로 project할 수 있다. MNIST와 Frey Face 데이터 셋의 2D latent manifolds 시각화는 appendix A에 있다.

6. Conclusion

  • 우리는 연속적인 잠재 변수를 사용한 효율적인 근사 추론을 하는 variational lower bound의 새로운 estimator인 Stochastic Gradient VB(SGBV)를 소개했다.
  • 제안된 estimator는 standard stochastic gradient method를 통해 간단히 미분 및 최적화가 가능하다.
  • i.i.d. dataset과 continuous latent variables per datapoint의 경우, 우리는 SGVB estimator를 사용하여 근사 추론 모델을 학습하는, 효율적인 추론 및 학습 알고리즘인 Auto-Encoding VB (AEVB)를 소개한다.
  • 이론적인 장점은 실험 결과에 반영되었다.

7. Future Work

  • SGVB estimator와 AEVB algorithm은 continuous latent variables를 사용하는 거의 모든 inference and learning problem에 적용될 수 있으므로, 미래 연구 방향이 많이 있다.
    • AEVB와 jointly 훈련된 encoders와 decoders에 더 깊은 신경망(ex. convolutional networks)를 사용하여 hierachical generative architectures를 학습하는 것
    • time-series models(= dynamic Bayesian networks)
    • SGVB를 global parameters에 적용
    • 복잡한 noise distributions를 학습하는데 유용한 잠재 변수를 가진 supervised model

Appendix

A. Visualisations

 SGVB로 학습된 모델의 잠재 공간과 이에 대응하는 observed space의 시각화는 아래 두 그림이다.

B. Solutions of -D(q(z)||p(z)), Gaussian case

 Variational lower bound(the objective to be maximized)는 KL term을 포함하는데 이는 종종 analytically 적분 된다.

 VAE에서는 prior p(z)를 N(0, I)로 가정하고 posterior approximation q(z|x) 역시 가우시안이기 때문에 위 항이 생각보다 깔끔하게 적분 되는데 식을 전개해 보겠다.

뮤랑 시그마 모두 벡터임
뮤랑 시그마 모두 벡터임
여긴 위에가 되었으면 쉬운 부분

C. MLP's as probabilistic encoders and decoders

 VAE에서 신경망은 probabilistic encoders와 decoders로 사용된다. Encoders와 decoders의 선택은 데이터와 모델의 유형에 따라 다양한데 논문에서는 비교적 간단한 신경만인 multi-layered perceptrons(MLPs)를 사용하였다. 인코더로는 가우시안 출력을 가지는 MLP를 사용하였고, 디코더로는 데이터의 유형에 따라 가우시안 또는 베르누이 출력을 가지는 MLP를 사용하였다.

- C.1 Bernoulli MLP as decoder

 이 경우 p(x|z)를 z에서 계산된 확률을 갖는 다변량 베르누이 분포로 가정한다. 이는 단일 은닉층을 가진 완전 연결 신경망으로 이루어져 있다.

출력은 시그모이드 활성화 함수를 사용해 각 픽셀이 1일 확률을 계산한다.

- C.2 Gaussian MLP as encdoer or decoder

 이 경우 인코더와 디코더는 대각 공분산 구조를 가진 다변량 가우시안 분포로 가정한다.

출력은 평균 뮤와 분산 시그마 제곱을 예측하여 잠재 변수 z에서 입력 데이터 x의 확률 분포를 나타낸다.(두 개의 신경망으로 평균과 분산을 각각 예측)

 

D. Marginal likelihood estimator

 우리는 샘플링된 공간(잠재변수 z의 공간)의 차원이 낮은 경우(5차원 이하)와 충분한 샘플이 있는 경우 marginal likelihood에 대한 좋은 estimates를 만드는 marginal likelihood estimator를 유도하였다. p(x,z) = p(x)p(x|z)를 생성 모델이라 하고 given x에 대해 marginal likelihood p(x)를 estimate해보자.

 추정 과정은 세 단계로 구성된다.

1. Hybrid Monte Carlo같은 gradient-based MCMC를 사용하여 posterior에서 z 값을 L개 샘플링한다.

2. z samples에 대해 density estimator q(z)를 fit한다.

3. 다시, posterior에서 L개의 값을 샘플링하고 이러한 samples와 잘 학습된 q(z)를 다음 estimator에 대입한다.

아래 식으로부터 유도됨.

E. Monte Carlo EM

 Monte Carlo EM algorithm은 인코더를 사용하지 않고 잠재 변수z의 posterior p(z|x)에서 직접 샘플링한다. 이 때 posterior의 gradient를 사용하는데 gradient는 다음과 같다.

 Monte Carlo EM은 accpetance rate가 90%가 되도록 자동으로 조정된 stepsize로 10번의 HMC leapfrog 단계를 수행한 후, 획득된 sample을 이용하여 5번의 가중치 업데이트를 수행한다. 모든 알고리즘에서 파라미터는 Adagrad stepsizes(annealing schedule 동반)를 사용하여 update 된다.

 Marginal likelihood는 학습 및 테스트 세트의 첫 100개의 데이터 포인트에서 추정되었으며, 각 데이터 포인트에 대해 4번의 리프로그 단계를 사용하여 Hybrid Monte Carlo로 잠재 변수의 posterior에서 50개의 값을 샘플링했다.

F. Full VB

 논문에서 설명한 바와 같이, 잠재 변수에 대해서만 수행한 것과는 달리, 파라미터 세타와 잠재 변수 z 모두에 대해 variational inference를 수행할 수 있다. 여기서는 세타에 대한 estimator를 유도하겠다.

 알파로 매개변수화된, 위에서 소개한 parameters에 대한 hyperprior p_{알파}(세타)가 있다고 하자. 그럼 marginal likelihood는 다음과 같이 쓸 수 있다.

 

... 보충 필요

 

 이번 포스트에서 리뷰할 논문은 Chien-Liang Liu와 Yu-Hua Chang이 작성한 'Learning From Imbalanced Data with Deep Density Hybrid Sampling'이다. 논문은 아래 사이트에 기재되어 있다.

https://ieeexplore.ieee.org/document/9723474

Learning From Imbalanced Data With Deep Density Hybrid Sampling

Learning from imbalanced data is an important and challenging topic in machine learning. Many works have devised methods to cope with imbalanced data, but most methods only consider minority or majority classes without considering the relationship between

ieeexplore.ieee.org

 어떤 대회에서 이진 분류 task가 주어진다면 그 대회는 imbalance data일 확률이 높다. 저번 LG Aimers 4기 문제였던 영업 전환 여부를 구하는 문제도 imbalance한 문제였고 현재 kaggle playground에서 active한 대회인 binary classification of insurance cross selling 역시 그러하다. 저번 공모전에서는 SMOTE와 이를 응용한 방법, 모델에 scale_pos_weight 같은 minority calss의 loss에 가중치를 부여하는 방식 사이에서 고민을 많이 했는데 이 논문을 읽고 나서 이런 imbalance에 대처하기 위해 진행된 연구가 내 생각보다 많이 진행되어있었다. 위 논문은 간단히 말하면 auto-encoder의 idea인 latent space를 활용해서 oversampling과 undersampling을 동시에 수행하는 method이다. 이제 자세히 알아가보자.

Abstract

  •  Machine learning에서 imabalance data로부터 학습하는 것은 중요하면서 어려운 주제이다.
  • 하지만 대부분의 방법은 minority class와 majority class간의 relationship은 고려하지 않는다.
  • 또한 oversampling 방법은 original feature space에서 합성하고 neighbors 판단하는 기준이 Euclidean distance이다. 
    • Euclidean distancehigh-dimensional space에 적합하지 않다고 지적
  • 우리는 새로운 방법인 deep density hybrid sampling(DDHS)를 제안한다.
    • Embedding network를 통해 data samples를 low-dimensional separable latent space에 project 한다.
    • 목표는 class간 proximity(가까움)을 data projection시 유지하려 하고
    • within-class와 between-class concepts에서 고안한 loss functions을 사용한다.
    • density를 통해 minority, majority samples를 구하고
    • feature-level approach를 통해 선택된 minority samples로부터 다양하고 유용한 합성의 samples를 만든다.
  • 다양한 실험 환경에서 제안한 방법이 전도 유망하면서 안정적인 결과를 도출해 냈다.
  • 제안하는 방법은 data-level algorithm이기 때문에 boosting technique과 결합할 수 있었고 그 방법인 DDHS-boosting이다. 이 역시 좋은 결과를 가져옴.

1. Introduction

  • Learning from imbalanced data에 대해 보완책을 마련해야하는 이유는 대부분의 machine learning algorithms이 balanced class를 가정하기 때문이다.
    • 따라서 대처가 없다면 classifers는 majority class에 biased 됨.
    • 이 문제는 많은 domains에서 나타남.
  • 많은 방법들이 고안되었지만 high-dimensional, imbalanced dataset에서 stable performance를 달성하는 것은 여전히 어려운 문제임.
    • Random sampling methods(oversampling, undersampling)
      • oversampling -> overfitting 위험성
      • undersampling -> valuable information을 제거할 위험성
    • Synthetic minority oversampling technique(SMOTE) 
      • minority sample과 그들의 k-nearest neighbors에 linear interpolation을 사용하여 oversampling하는 기법
      • minority class만을 오직 고려한다는 점, high-dimensional space에서 부정적인 성능을 가져온다는 점이 문제임.
    • Hybrid methods of oversampling and undersampling
      • oversampling과 undersampling을 결합하여 접근하는 방식
      • original data distribution이나 characteristices를 해치는 arbitrary data samples를 제거한다.
  • Article에서 주장하는 deep density hybrid sampling(DDHS)
    • embedding network를 학습하여 data samples를 low-dimensional separable latent space에 project 한다.
    • project할 때 목표는 data projection시 class간 proximity를 유지하는 것
    • within-class와 between-class concepts으로 이끌어낸 loss fucntion을 사용한다.
    • density를 기준으로 high quality의 samples를 구하고
    • feature-level method를 통해서 선택된 minority samples에서 훌륭한 samples를 만들어낸다.
  • 다른 sota methods와 비교했을 때 유망하고 안정적인 결과를 가져옴.(low, high dimension 가릴 것 없이)
  • 제안된 방법은 data-level algorithm이기 때문에 boosting technique과 결합할 수 있었고 그 방법이 DDHS-boosting임. 이 역시 좋은 결과를 가져옴.
  • 제안한 방법이 공헌하는 바는 다음과 같음.
    •  imbalanced data 문제를 다루는 새로운 method
      • key idea: data projection시 class proximity를 유지하는 것
      • density를 통한 선택을 통해 high quality samples만 남긴다.
    • 방대한 실험을 통해 제안된 방법이 low, high dimenstion에서 모두 좋은 성능을 보인 것.
    • 제안된 방법을 분석하기 위해 추가적인 실험들을 수행함. + boosting technique과의 결합

2. Related Work

  • Imbalanced data problems를 다루기 위한 방법들은 크게 data-level, algorithm-level, ensemble learning, deep learning approaches로 나뉜다.
  • Data-Level Methods
    • key idea: class distributions를 balancing하여 classifiers가 bias 하지 않게 만들자!
    • 어느 classifier에 적용될 수 있기 때문에 활용성이 큰 장점이 있다.
    • random sampling
      • oversampling
        • minority class의 data를 복제한다.
        • overfitting에 취약함.
        •   
          oversampling
      • undersampling
        • majority class의 data를 제거한다.
        • 실제 데이터 분포를 잘 나타내는 samples를 제거할 수 있는 위험이 있음.
        • undersampling
      • hybrid methods
        •  oversampling + undersampling
        • hyprid methods
    • SMOTE(Synthetic Minority Over sampling Technique)
      • minority class의 두 data samples 사이의 line segment 사이의 data로 생산한다.
      • generated data samples가 제한된다는 단점(why? line segment 이외의 요소를 만들 수 없으니까)
        • sol) model-based synthetic sampling(MBS)
          • feature relationships을 capture 하기 위해 linear regression을 사용
          • feature relationship을 기반으로 합성 samples를 생성
      • SMOTE(빨간선 이외의 sample을 생성하지 못하는 단점.)
      • 알고리즘상 k nearest neigbors를 고르는 distance metric에 의존함.
        • 일반적으로 Euclidean distance를 고르지만 high-dimenstional space에서 두 데이터 사이의 거리를 정확하기 측정할 수 없음.
          • why? 차원의 저주(Curse of Dimensionality) 때문임.
            • 고차원의 데이터가 가지는 문제로 다음을 포함함.
              • 데이터 희소성: 차원이 증가할수록 데이터 포인트들이 점점 희소해지는 현상
              • 거리 측정의 비유효성: 고차원 공간에서는 모든 점들 사이의 거리가 거의 동일해지는 경향이 있음.(최소 거리와 최대 거리 사이의 차이가 작아짐.)
              • 노이즈 민감도: 고차원 공간에서는 노이즈가 축적되는 경향
              • 계산 복잡도 증가
            • high dimensions에서 일어나는 일들이 궁금해서 더 찾아봤는데  "A Few Useful Thing to Know about Machine Learning" by Pedro Domingos at the University of Washington에서 Intuition Fails in High Dimensions를 읽어보니 차원이 커질 때 일반화하는 것이 어렵고 중요하지 않는 features가 중요한 features보다 많다면 그 영향을 가려버린다고 한다. -> 예측 어려워짐. 뿐만 아니라 중요한 features가 많더라도 차원이 많아지면 가깝다고 판단하는 데이터들 역시 많아져(격자에서 d만큼 떨어진 게  1차원은 2개, 2차원은 4개, 3차원은 8개..) 가까운 몇 개를 정하는 일이 쉬운 일이 아니다. 이외에도 차원이 늘어나면 hypercube로 근사할 때의 오차, classifier가 reasonable frontier 찾기 어려움 등의 문제가 있다.(그런데 이런 문제들이 대부분 어떤 전제(uniformly distributed)를 가정하기 때문에 정확하지 않을 수 있고 생각보다 해결이 쉬울 수도 있다. 실제로 위 글의 마지막 부분에 handwritten digit recognition에서 대부분의 data들이 lower dimensional manifold(데이터가 존재하는 영역)에 존재해 dimension을 줄이는 algo.(ex. PCA)를 쓰면 완화할 수 있다고 한다.)  
            • Charu C. Aggarwal, Alexander Hinneburg, Daniel A. Keim, "On the Surprising Behavior of Distance Metrics in High Dimensional Space"(2001) 이 논문은 어떤 전제하에 선 the ratio of the distances of the nearest and farthest neighbors to a given target in high dimensional space가 1에 가까워지는 문제를 L_k에서 k가 작을 때(k=1이면 Manhattan, k=2이면 Euclidean) 완화되어서 L_k(k <1)라는 fractional distance norms를 써야 한다라고 주장하는 논문인데 바로 반박하는 "Fractional norms and quasinorms do not help to overcome the curse of dimensionality" by Mirkes, Allohibi, & Gorban (2020) 논문이 있어 연구가 더 필요해 보인다.
            • 해결책까진 완벽하진 않지만 확실한 건 고차원에서 단순 Euclidean distance로 similar를 다루는 것은 지양한다.
            • 더 많은 내용은 https://stats.stackexchange.com/questions/99171/why-is-euclidean-distance-not-a-good-metric-in-high-dimensions를 참고..
          • + 논문 스터디 참가자 중 한분이 말씀하신 대로 categorical data에서 과연 Euclidean distance가 무슨 의미를 갖는지? 에 관한 고찰도 동의한다. 임의로 부여하는 순서와 값들로 이 변수들의 가깝고 멂을 나타내는 것은 타당하지 않기 때문(마치 categorical data를 레이블 인코딩할 때의 단점)!
    • ADASYN(Adaptive Synthetic Sampling, 논문엔 없지만 이 아이도 유명해서 넣음.)
      • SMOTE를 확장해 minority class sample 주변에 majority class가 많이 분포해 있으면 더 많이 생성하는 방식
      • 경계에 위치한 minority samples를 더 생성하는 것이 목적 
    • Tomek link
      • overlapping samples를 제거하는 방식인 undersampling methods
      • overlapping을 정의해야 함.
        • minority sample a와 majority sample b가 있다 하고 d(a, b)를 둘 사이의 거리로 정의하자. 이때  a에  b 보다가 가운 majority sample이 없고 b에 a보다 가까운 minority sample이 없을 때 두 sample의 쌍을 Tomek link라 한다. 그럼 a와 b의 두 classes의 경계에 있는 것이므로 major sample b는 제거돼야 한다.
        •  
    •  borderline-SMOTE
      • SMOTE를 확장한 버전으로 idea는 Tomek link와 같다.
      • SMOTE는 모든 minority sample을 동등하게 보지만 경계에 있는 samples는 잘못 분류될 확률이 높기 때문에 더 중요하게 다루어야 한다.
      • 따라서, minority data를 safe level, danger level, noise level로 나누고 danger level에 해당하는 data들로 합성 samples를 만든다.
    • safe-level-SMOTE
      • SMOTE에서 생기는 class overlap을 지적함.
      • minority class의 모든 sample들은 safe score을 할당받음.
      • safe score를 기반으로 다양한 경우에 따라 합성 samples를 만들어서 합성 samples가 안전한 영역에 분포되게 함.
    • noise reduction a priori synthetic(NRAS)
      • noise reduction과 data generation에 기반한 oversampling method
      • non-noise minority samples로 합성 data samples를 만든다.
    • kernel density estimation(KDE)
      • random oversamppling은 underlying data distributions를 고려하지 않고 data samples를 만드는 것을 지적함.
      • nonparametric method(비모수 방법)
        • 데이터의 기저 분포나 특정 모수를 가정하지 않는 통계적 기법
      • kernel homogeneous funtions를 모아 평균 내어 density function을 추정한다.
      • minority class의 분포를 추정하고 추정한 분포로부터 데이터를 합성하는 방식
      • 아래에서 좀 더 자세히 다루겠음.
  • Algorithm-Level Methods
    • key idea: class별로 misclassification costs에 차이를 두어 classifiers가 minority class에 더 집중하게 만들자!
    • 만약 positive가 minority class라 가정하면 FN(P를 N으로 예측하는)이 FP에 비해 더 높은 cost를 가지는 방식 = cost-sensitive loss function
    • Sun이 주장한 meta-techniques
      • three cost-sensitive boosting algorithms
        • cost-sensitive learning with AdaBoost
    • Zhou and Liu가 주장한 methods
      • sampling과 threshold-moving, soft-ensemble을 통한 cost-sensitive neural networks 구현
    • complementary neural network(CMTNN)과 SMOTE를 결합한 방식
      • undersampling과 oversampling 기법을 결합
      • CMTNN은 Truth NN과 Falsity NN이라는 feedforward NN을 통해서 misclassified data samples를 찾고 제거한다.
  • Ensemble Methods
    • key idea: 이미 우리 알고 있는 bagging, boosting 같은 ensemble methods와 엮어보자! 
    • SMOTEBagging
      • bagging과 SMOTE 기법의 결합
      • 합성 샘플을 다양화하고 majority vote로 분류한다.
    • SMOTEBoost
      • boosting algo. 와 SMOTE를 결합
      • 매 boosting iteration마다 minority class의 합성 sample을 생성한다.
    • RUSBoost
      • 위 두 방식은 oversampling 기법, RUSBoost는 random undersampling에 기반
      • training time을 줄이고 AdaBoost와 결합하여 성능이 향상된다.
    • self-paced ensemble(SPE)
      • classification hardness = classifier가 정확히 예측한 예측을 기반으로 측정하는 classifier의 난이도를 측정하는 개념
        • noise가 많으면 어려운 거임.
      • imformative majority samples를 selecting 해서 얻는 hardness value를 기반으로 학습하는 방법
      • undersampling 기법
      • distance metric에 대한 고민 필요 없음.
  • Deep Learning
    •  key idea: deep neural networks를 통해 feature representations를 학습하고 classification tasks를 동시에 수행하는 것
    • deep learning 역시 balanced class distribution을 기반으로 만들어짐.
    • Buda 등은 CNN에서 imbalance가 야기하는 문제를 지적하고 oversampling이 dominant method임을 밝힘.
    • Havaei 등은 two-phase training을 제안함.
      • transfer learning technique
      • first phase: balanced dataset을 통한 pretrain
      • second phase: fine-tuning technique을 통해 representative distribution을 만듦
    • He 등은 cost-effective semisupervised learning with crowd framework(CSLC)를 제안함.
      • two sampling strategiescost-sensitive crowd labeling approach를 축적한 multivariate time series에 집중함.
    • Wang 등은 AUC maximization과 extreme learning machines(ELMs)를 결합함  -> AUC-ELM
      • SAUC-ELM은 imbalanced binary classification을 다룸.
    • Khan 등은 cost-sensitive deep neural network(CoSen)을 제안
      • network parameters와 class-sensitive costs를 동시에 optimize하는 방법을 제안. -> algorithm-level method이기도 함.
    • Arefeen 등은 undersampling methods인 NUS-1과 NUS-2를 제안함.
      • neural networks에 기반하여 minority class에 overlap 하는 majority samples를 제거하는 방식임.

3. Proposed Method

  • 많은 data-level methods는 SMOTE의 개념을 확장한 방법인데 imbalanced and high-dimensional datasets를 만나는 경우 두 가지 문제점이 존재
    • 1. minority samples만을 고려하고 majority class에서 오는 영향을 무시함.
    • 2. high-dimensional datasets에선 Euclidean distance가 data 간 거리를 정확히 측정하지 못함.
  • 많은 learning models는 data를 optimal lower-dimensional representation에 projecting하는 것이 이득임을 알려줌.
    • projection은 spectral clustering을 도와 optimal neighbors를 알게 해 준다.
      • spectral clustering: 그래프 이론에 기반한 클러스터링 알고리즘으로, 라플라시안 행렬을 사용한 projection을 통해 데이터 간의 유사도를 바탕으로 클러스터링을 수행한다.
      • 'optimal neigibor를 알게 해 준다' 것은 그 데이터 포인트에 가까운 것을 찾는 것을 의미함.
    • 내재적인 cluster structure을 밝혀내게 해 준다.(고차원에서 안 보였던 것들이 보이는 느낌..)
    • terms 사이 계산이 더 정확해진다.(차원의 저주 완화)
  • 그러므로, 우리는 다음의 steps를 가진 DDHS를 제안한다.
    • learnable embedding network를 통해 data points를 low-dimensional separable latent sapce에 project한다.
      • separable은 서로 다른 클래스의 데이터 포인트들이 잘 구분됨을 의미
      • 따라서 class proximity(동일한 클래스에 속하는 데이터 포인트들이 가깝게 위치함.)를 유지
    • density를 통해 high-quality data samples를 고름
    • feature-level oversampling을 통해 minority samples를 합성함.
    • 합성된 samples가 요구 사항을 충족하는지 검증
    • minority samples와 합성된 samples를 합함. majority samples 중 density criterion을 만족하는 samples만 사용
      • minority class oversampling, majority class downsampling이 동시에 수행되므로 hybrid approach임.
  • Notation
    • D: 원래 feature vector 차원
    • m: training examples 개수
    • d: projected data point의 차원
    • positive가 minority class라 가정
  • Embedding Network
    • autoencoder를 확장시킴
    • Traditional autoencoder
      • encoderdecoder로 이루어짐
      • encoderoriginal data를 low-dimenstional latent representation으로 바꾸는 역할
      • decoderlatent representation을 original data로 reconstruction 하는 역할
      • 목표는 reconstruction loss를 최소화하는 것으로 encoder와 decoder를 동시에 optimize 함.
reconstruction loss

 

  • labeled data를 동반하는 문제들은 training process에 label information을 활용하면 prediction performance가 향상되니 label information을 통해 class proximity 성질을 유지하면서 latent space를 학습하게 설계함.(reconstruction loss를 사용해 보다 정확하게 재구성하게 한다.) 
  • 이 접근은 세 가지 loss functions를 갖는데
    • reconstruction loss
      • autoencoder에 사용되는 loss로 MSE를 사용한다.
      •  
      • 잠재 공간으로부터 재구성한 공간을 학습하는 term으로 데이터에서 노이즈를 제거할 기반을 마련한다. 
    • 그다음은 between-class losswithin-class lossclass proximity를 유지하는 것이 목표이다.
      • between-class loss는 다른 classes의 data points는 가능한 한 멀게 만드는 것이 목표
      • within-class loss는 같은 class의 data들이 가깝게 만드는 것이 목표
      • 제안한 방법은 cross-entropy loss를 between-class loss로, center loss를 within-class loss로 설정함.
      • cross-entropy loss
      • cross-entropy loss는 data가 incorrect classes로 분류되었을 때 더 많은 penalty를 부과한다.
      • center-loss
      • centor-loss는 class center로부터 data가 멀리 떨어져 있을 때 더 많은 penalty를 부과한다.
      • 데이터들의 class의 center로 모이게 하는 효과
    • 제안한 방법은 세 가지 loss를 모두 결합하여 latent space에서 separable latent space를 만드는 represenations를 학습하는 것임. 
    • latent space의 차원은 orginal feature space의 차원보다 충분히 작아 고차원에서 일어나는 문제들을 완화할 수 있음. 
    • 따라서 최종 loss 식은 다음과 같음.
  • Density-Based Filtering
    • embedding network 학습이 끝난 후 latent sapce로 data들을 옮긴 다음 density를 통해 high-quality data points를 선별한다.
      • low-density data point는 다른 data points부터 멀리 있는 영역에 있는 점들을 말하고 noise일 확률이 높다.
      • high-density data point는 cluster를 잘 대표하는 data일 가능성이 높다.
    • 즉, high-density area를 선별하고 high-quality 데이터들을 얻는 것.
    • 저자들은 KDE를 통해 points들의 density를 계산하였다. 위에서도 잠깐 언급하였지만 KDE는 nonparameteric method로 random variable의 PDF를 추정하는 방식인데 각 data에서 PDF의 모양을 결정하는 kernel function과 각 density의 폭을 결정하는 bandwidth parameter가 중요하다.
    • Gaussian kernelclass의 중심에 데이터가 모여있을 때 그 지점의 PDF가 높은 값을 갖게 하고 strong computational advantages를 가지기 때문에 선택하였다.
      • 뒤의 discussion에서 자세히 다룸.
    • bandwidth hScott's rule을 통해 계산되었다.
    • density를 계산하는 방법을 좀 더 자세히 살펴보면 majority class와 minority class의 densities를 각각 계산하고 quartile of density를 통해 high-quality samples를 추출하였다. majority class의 경우 Q2 이상의 desnity보다 큰 density를 갖는 samples로 선정하였고 minority class의 경우 더 높은 Q3 이상의 density보다 큰 density를 갖는 samples로 선정하였다.
    • 즉, 25%의 minority samples는 high-quality로 선정되어 generation process로 넘어가고 나머지 75%는 classifier training process에만 활용되었다. majority의 경우 50%만 훈련하는 데 사용함.
  • Generation of Synthetic Samples
    • 다양하고 유효한 samples를 만들기 위해 feature-level sampling technique을 사용하였다.
    • feature domain V = [v_1, ... , v_d]는 각 feature의 값들을 모아둔 list(ex. v_1은 1번째 latent feature의 값들을 모아둔 것)를 원소로 갖는 list이다.
    • 각 v_i에서 feature를 하나씩 뽑아 합성하는 방식으로 사용


    • 이미 존재하는 feature 값들로부터 만들기 때문에 생성된 samples feature의 값이 유효하고 random process로 다양한 합성 samples를 만들 수 있다는 것이 장점!
  • Verification of Synthetic Samples
    • 합성 후 synthetic samples가 good quality인지 검증하는 과정
    • 마찬가지로 density를 사용하여 density가 높은 곳은 class의 center, 낮은 곳은 class의 boudary를 나타낸다고 보았다.


    • 이 그림에서 c^M과 c^N은 각각 majority, minority class의 center이고 minority class(25%로 선택된 거)에서 center와 boundary 사이의 거리를 minority classes의 radius인 r^N으로 잡았다. 합성된 sample인 z^S가 있을 때 2가지 기준을 통해 검증하였는데
      • z^S가 c^M보다 c^N에 더 가까워야 한다.(minority class의 center에 더 가까워야 한다.)
      • z^S와 c^N의 거리는 r^N보다 작아야 한다.(minority class의 바운더리 안에 존재햐야한다.)이다.
    • 식으로 나타내면
  • Algorithm for DDHS
    • 알고리즘을 정리하면 다음과 같다.
    • input은 training data와 oversampling rate p, output은 classifier에 사용될 dataset이다.
    • line 1-4에서 embedding network가 훈련되어 discriminative space를 학습하고 그 network로 project한다.
    • line 5-6에서 density-based filtering(DBF)를 통해 high-quality samples를 선별하고 low-quality majority samples를 제거한다.
    • line 7-14에서 DDHS는 data generation process를 수행하고 synthetic data를 검증한다.
  • Time Complexity Analysis
    • 대부분의 시간은 embeddidng network를 훈련하는 데 사용됨.
    • embedding network는 autoencdoerfully connected layer로 이루어져 있고 autoencoder는 encoder와 decoder로 구성됨.(각각은 three layers로 구성)
    • encoder의 3 hidden layers의 unit이 n_1, n_2, n_3 순이고 fully connected layers의 뉴런이 n_f = n_3, decoder는 encdoer의 reverse구조, data samples가 m개, epoch가 e회, data sample의 dimension을 D라 하면 한 epoch당 forward pass의 time complexity는
      • O(2m(Dn_1+n_2n_3+n_2n_3)+m(n_3n_f+n_f*2)) -> 논문 식이 말이 안 된다고 생각해서 바꿔봤는데 다른 의견이 있으시면 남겨주세요.. 
      • 인데 n_f = n_3, n_f는 n_2보다 작음, backpropagation은 forward pass와 time complexity가 같음, 모든 뉴런의 개수는 상수이니 time complexity는 O(emD)이다.

4. Experiments

  • Datasets
    • 사용한 dataset은 다음과 같다.
  • Comparison Methods
    • 11개의 comparison methods와 아무것도 하지 않은 baseline method와 비교함.
    • 제안하는 알고리즘이 data-level algorithm이므로 다른 data-level algorithm과 비교함.
      • SMOTE, Oversampling, Undersampling, Borderline SMOTE 1, Borderline SMOTE 2, Tomek Link, SMOTE Tomek, Safe-level SMOTE, Gaussian SMOTE, NRAS oversampling, MBS
  • Experimental Setting
    • 실험은 두 parts로 나뉨.
      • random하게 training sets와 test sets를 10개의 다른 random seeds로 나눔.(random sampling에 의해 달라지는 효과를 완화하기 위해서)
      • 대부분의 data-level methods는 sampling technique을 수반하기 때문에 이 역시 random seeds의 영향을 받아 10개의 다른 random seeds로 수행함.
      • 따라서, 총 100번의 실험을 하고 평균 냄.
    • 분류기 부분에는 아무거나 쓸 수 있었는데 linear support vector machine(SVM), logistic regression을 사용함. 이유는
      • feature combinations이나 kernel tricks를 쓰지 않는 linear methods라 data quality에 잘 의존하기 때문
      • 실제 settings에서 주로 쓰이기 때문
    • oversampling과 undersampling ratios는 모두 100%
    • 제안하는 방법은 latent space의 dimension이 하이퍼파라미터인데 16을 기준으로 dataset을 high-dimensional, low-dimensional으로 나누고 high- dataset에서는 latent space의 차원을 16으로, low- dataset에서는 latent space의 차원을 2로 만들었다.
    • Embedding network의 구성을 좀 더 살펴보면
      • encoder와 decoder 모두 3-layer로
        • high-dimensional dataset에서
          • (input size, 256), (256, 64), (64,16)으로 층을 쌓았고
        • low-dimensional은 
          • (input size, 64), (64, 16), (16, 2)으로 층을 쌓았다.
        • hidden layers의 activation은 ReLU, output layer에서는 sigmoid function을 사용함.
  • Evaluation Metric
    • AUCAUPRC를 사용
      • AUC: ROC (Receiver Operating Characteristic) 곡선 아래의 면적을 나타내며, 분류 모델의 성능을 평가하는 지표. ROC 곡선은 참 양성 비율(TPR, True Positive Rate)과 거짓 양성 비율(FPR, False Positive Rate)의 관계를 그래프로 나타낸 것
      • AUPRC: Precision-Recall 곡선 아래의 면적을 나타내며, 특히 불균형 데이터셋에서 분류 모델의 성능을 평가하는 데 사용됨. Precision-Recall 곡선은 정밀도(Precision)와 재현율(Recall, 또는 TPR)의 관계를 그래프로 나타낸 것
  • Experiments Results
    • First experiments(wiht linear SVM)
      • 제안한 방법 좋은 성능을 보임.
      • extremely high-dimension datset인 Isolet에서도 좋은 성능을 보임.
    • Second experiment(with. logistic regression)
      • 마찬가지로 좋은 성능을 보임.
    • 추가로 Wilcoxon rank-sum test(검증 방법 중 하나)를 통해 실제로 우리가 제안한 방법이 다른 방법들보다 유의미하게 좋은지 판단해 보았는데 위의 Table 2와 Table 4에서 asterisk가 표시된 것이 유의미한 차이가 없는 것.(위에 표 보면 대부분 유의미한 차이가 있음)
    • 또한 model training 하는 과정에서 data points를 시각화해 보기 위해 PCA와 scaler를 통해 data points들을 이차원 공간에 표현해 보았다.(자세한 이야기는 없지만 latent sapce에서의 vectors에 PCA를 수행한 것 같다.)


      • 처음에서는 overlap이 심했던 dataset(위쪽 4개의 그림) embedding network를 지난 후(아래쪽 4개의 그림) 밀도가 높아지면서 분리가 된 것을 알 수 있다.

 

5. Discussion

  • Loss Functions in Embedding Network
    • 실제로 embedding network는 3개의 loss를 결합한 loss function을 사용하였는데 세 개를 다 사용하는 것이 아닌 다른 조합에서는 어떨지 궁금하여 추가적인 실험을 진행함.


    • 위 그림과 표를 참고하면 위 그림에서 (b)와 (g)에 해당하는 세 개의 loss를 모두 쓸 때 가장 잘 분리가 되었고 실제 지표로도 가장 높은 성능을 보임을 알 수 있다.
    • 또한 Table 6에서 추가적인 분석을 해보면
      • L_CE매우 중요한 loss임을 알 수 있음.(L_C와 L_R만 쓰는 경우 성능이 확 떨어진다.)
      • 그러나 L_CL_R 역시 도움이 되는 게
        • L_Cclass center에 모델의 latent 표현이 집중되도록 도와주고
        • L_R data의 noise를 줄이면서 latent 표현을 모델이 만들도록 도와주기 때문으로 분석
    • 시각화 자료에서 추가적인 분석을 해보면
      • L_CE는 between-class loss의 역할을 잘 수행하고 있고(그림 (b)와 (e), (g)와 (j)를 비교하면 L_CE가 없는 경우 두 class간 구분을 잘하지 못한다.)
      • L_C는 within-class loss의 역할을 잘 수행하고 있음.(그림 (b)와 (d), (g)와 (i)를 비교하면 L_C가 없는 경우 class가 density가 확 옅어짐.)
  • Ablation(제거) Study of Density-Based Filtering(DDF)
    • 제안한 알고리즘에서 density를 기준으로 high-quality data samples를 선택하는 과정이 있다. 이 discussion에선 이 제거가 어떤 영향을 미치는지 살펴보겠음.(DDF를 했을 때와 DDF를 하지 않았을 때를 비교)
    • 위 table 7에서 보면 DBF를 수행하였을 때 항상 성능이 개선됨을 알 수 있음.
  • Comparison With PCA and Its Variants
    • 사실 low-dimension에서 data를 다루는 가장 유명한 방법은 PCA이다. 그래서 이 discussion에선 제안한 방법과 PCA, PCA의 변형(Kernel PCA, supervised PCA)간의 성능 비교를 해보겠다.
    • 위 table 8을 보면 DDHS가 다른 방법들보다 좋은 성능을 보인다.
    • 이유를 생각해 보면 PCA와 kernel PCA는 project 할 때 label information을 사용하지 않고 Supervised PCA는 linear transformation을 사용하지만 DDHS는 label information과 data reconstruction을 반영하는 three loss functions와 deep neural networks를 통한 nonlinear transformation을 수행하기 때문에 좋은 성능을 보이는 것이다.
  • Comparison of Kernel Density Estimation
    • 제안한 방법은 Gaussian kernel을 KDE kernel function으로 사용하는데 다른 kernel(linear, tophat, exponential, Epanechnikov) 역시 사용할 수 있으므로 비교가 필요하다.
    • Performance 측면과 computational time 측면에서 비교함.


    • performance를 보면 gaussian이 다른 kernel들에 비해 평균적으로 살짝 높지만 computational time은 다른 kenel들에 비해 압도적으로 작음. -> gaussian을 선택하게 된 이유
  • Ensemble Learning and Cost-Sensitive Models
    • Ensemble learning과 cost-sesnsitive learning algorithm-level methods에서 imbalance 문제를 해결하는데 유명한 technique임.
    • 제안한 방법은 data-level approach이기 때문에 이 둘을 결합하는 것은 어렵지 않음.
    • 그렇게 DDHS와 AdaBoost를 엮어 만든 algorithm이 DDHS-Boosting임.(각 훈련 iteration 마다 DDHS를 수행하는 방식)
    • DDHS-boosting와 다른 ensemble learning을 하는 sota methods(Isolation Forest, RUSBoost, SMOTEBoost, SMOTEBagging, SPE)와 비교해 봄. + cost-sensitive learning methods인 cost-sensitive decistion tree와도 비교해 봄.
    •  
    • 위 table 9를 보면 SPE가 top conference에서 출판된 최신 연구라 좋은 성능을 보일 때가 있지만 전반적으로 DDHS-Boosting이 좋은 성능을 보임.
  • Training Time and Predicntion Time
    • 제안한 방법을 large-scale datasets에 적용해 봄.
    • 20번의 실험을 반복하고 training time과 prediction time을 기록함.
    • Isolet, mnist, spambase, optdigits, crime datasets에 대해
      • training time는 288, 174, 179, 131, 48s가 걸렸고
      • prediction time은 0.016, 0.014, 0.0133, 0.009, 0.011s가 걸림
    • 제안한 방법이 large-scale datasets에서도 적용될 수 있음을 알 수 있음.

6. Conclusion

  • 본 article은 class imbalance problem을 다루기 위한 DDHS라는 method를 제안함.
  • 제안한 방법은 data-level methoddeep learning과 결합하여 발전시켰음.
  • 제안한 방법의 핵심은 embedding network로 저차원에서 데이터를 잘 분리시키는 latent sapce를 학습함.
  • Embedding network가 학습되고 project 한 다음 density-based data filtering과 feature-level method를 통해 유효하고 다양한 synthetic samples를 생성함.
  • Embedding network를 디자인할 때 latent space에서 data points가 class proximity 성질을 유지하기 위해서 cross-entropy와 center losses를 각각 between-class, within-class loss로 사용함.
  • 추가로 reconstruction loss를 통해 좋은 feature 표현을 학습하기 위한 제약을 둠.
  • 실험 결과 DDHS는 유망한 결과들을 보여줌.
  • 뿐만 아니라 DDHS를 boosting framework와 결합하여 다른 ensemble learning approaches를 능가함.

느낀 점

 논문의 conclusion에서 저자들이 써놓았듯이 imbalance problem을 deep learning을 통해 접근한 방식은 매우 참신했다. 구현 알고리즘을 보면 minority class에서 생성하는 과정, majority class에서 제거하는 과정 모두 세밀하게 연구하고 반영해 두어서 성능이 잘 나올 수밖에 없다고 생각한다.(매우 좋은 접근과 idea라고 생각함.)
 최근에 embedding network와 비슷한 auto-encoder에 대한 논문과 구현 과정을 보면서 생각보다 이 방식도 구현이 어렵지 않아 보였다. 당장 Kaggle 7월 playground에 적용할 수 있을지 모르겠지만(시간이...) 시간적 여유만 있다면 적용해보고 싶다.
 

+ Recent posts