<Generative model>

Generative model(생성 모델) 기존의 데이터셋 X 분포를 근사하는

새로운 data 생성하는 것으로 기존의 데이터셋 x 나타날 있는 확률 분포 p(x)

구하는 것이라고 생각할 있습니다. 이는 기존의 discriminative model과는

차이점이 있는데, discriminative model이란 데이터 x 주어졌을때, 그에 해당하는 레이블

Y 나타날 있는 조건부 확률 P(x|y) 구하는 입니다. 그렇기 때문에 discriminative model

레이블 y정보가 있어야 하기 때문에 supervised learning 범주에 속합니다.

이와 반대로 generative model 레이블 y 대한 정보없이 데이터 x 주고 P(x|x) = P(x)

근사하는 확률 분포를 찾는 semi-supervised learning이라고 있습니다.

이러한 generative model 활용한 대표적인 딥러닝 기술로 현재 무궁무진하게 발전하고 있는

GAN(generative adversial network) 있습니다. GAN 기본적인 학습방향을 쉽게 얘기한다면 서로

반대되는 목적을 가진 모델 2개가 서로 상충하는 목표를 향해 학습하면서 서로를 이기기 위해 더욱 발전하는 구조로 만들어져 있습니다.

현재까지 정말 다양한 GAN 구조가 논문으로 나왔고, 이에 관련된 정보는

추후에 깊게 공부하여 자세하게 업로드를 하도록 하겠습니다.

 

 

<Metric for generative model>

해당 리뷰에서는 이런 generative model 활용하여 생성된 data 생성이 되었는지 평가할 있는 metric

대해 연구한 논문을 소개해보겠습니다

예를 들어 image 생성한다고 하면, 얼마나 image generative model 학습시킨 dataset 비슷한지,

얼마나 사람의 눈으로 보기에 natural image인지, 실제 이미지에 비해 얼마나 다양한 이미지를 생성하는지 등등 생성된 이미지의 품질을 평가할 있는 척도가 존재합니다. 이렇게 다양한 척도가 존재하고 그것이 좋다 안좋다를

평가할 있는 기준 또한 인간마다 다르기 평가할 있기 때문에 정확한 기준을 정립하는 것이 어렵습니다.

그렇기에 해당 논문에서는 이러한 모호함을 없애기 위해 노력합니다. 논문 제목에서도 알 수 있듯이 reliable metric입니다. 사람의 주관적인 기준에 따른 평가가 아닌 객관적인 평가를 할 수 있는 metric을 제안하고 있습니다.

이를 위해 논문에서는 생성된 이미지를 평가하는 기준을 2개로 정의합니다. 바로 fidelity diversity입니다.

Fidelity 생성된 이미지의 품질입니다. 얼마나 natural 이미지를 생성했는지, 원본과 비교했을 경우

차이가 없는지 등을 평가하는 것이 여기에 포함됩니다. 그리고 이를 모두 포함할 있는 것이 바로

원본 이미지의 데이터 분포에서 크게 벗어나지 않는 것입니다.

Diversity 그대로 생성된 이미지가 비슷비슷한 이미지를 만드는 것이 아닌 다양한 이미지를 만들어내고

있냐의 척도입니다. 2개의 평가 척도에 관련된 자세한 정보는 해당 논문을 참조해주세요.

 

 

<Density and Recall>

그래서 2가지를 평가하기 위해 논문에서 주장하는 metricDensity(for fidelity)와 coverage(for diversity) 입니다.

먼저 이 metric을 적용하기 전에 원본 이미지와 생성된 이미지를 특정한 vector 공간에 embedding을 해야합니다.

이렇게 embedding을 하는 이유는 원 이미지의 차원이 너무 크기 때문이고 원 이미지에는 불필요한 정보가 많기 때문입니다.

그렇기에 이미지의 핵심적인 특징을 잘 추출할 수 있는 feature extractor를 사용하여 차원이 더 낮은 공간에 embedding하게 됩니다.

Embedding을 하는 방법에는 다양한 차원 축소 기법이 있지만, 현재 이미지를 사용하는 방법에는 pretrained 된 CNN 모델을 사용하는것이 보편적입니다. CNN 모델은 이미지의 특징을 정말 잘 추출하기에 보편적으로 사용되지만 모델이 학습한 데이터의 분포와 평가하려는 데이터의 분포가 너무 상이한 경우에는 문제가 생길 수 있다는 점이 한계라고 생각됩니다.

이렇게 embedding된 vector들이 공간상에서 어떤 manifold를 형성하면서 분포하고 있는지 직관적으로 이해하기 위해 해당 논문에서는

k-nearest neighborhood로 manifold를 형성합니다. 즉, 하나의 백터에서 euclidean-distance가 가까운 데이터 k개를 포함할 수 있는 가장 짧은 거리를 해당 데이터의 manifold로 가정합니다. 이러한 방법으로 manifold를 형성한 뒤, 직관적인 방법으로 fidelity와 diversity을 정의합니다.

Density는 원본 이미지로 생성된 manifold 상에 생성된 이미지가 어느 정도의 밀도로 포함되는지에 대한 비율입니다. 즉, 이에 해당하는 비율이 높을수록 생성된 이미지가 manifold내에 밀도높게 분포하고 있다는 뜻이고 원본 데이터 셋의 분포를 벗어나지 않으므로 원본 데이터의 특징을 잘 잡아내어 이미지를 잘 생성한다고 생각할 수 있습니다.

이와 반대로 coverage(=diversity)는 원본 이미지로 생성된 manifold 전체 중에 생성된 이미지가 몇개의 manifold에 속하는지에 대한 비율입니다. 직관적으로 생각해보면 원본 이미지 manifold 내에 좁은 공간에서만 데이터를 생성한다면 fidelity는 높을지언정 diversity가 크다고 할 수 없을 것입니다. 원본 이미지 분포를 전체적으로 포괄하는 분포를 생성해야 diversity가 높다고 볼 수 있습니다. 그런 의미에서 recall은 원본 이미지의 분포를 모두 고려한 비율이므로 diversity를 고려할 수 있습니다. 해당 2개의 metric은 아래의 이미지를 보면 더욱 직관적으로 이해할 수 있습니다.

그림에서의 precision과 recall은 이 논문 전에 nvidia에서 발표한 생성모델에 대한 metric으로 해당 논문에서는 이 두개의 metric이 outlier에 너무 민감하게 반응한다는 점을 들어 density와 coverage가 더욱 reliable한 metric임을 주장하고 있습니다. 그리고 이들이 주장하는 metric은 analytic한 유도가 가능하다는 점을 들고 있는데 이와 관련된 유도와 다양한 GAN을 사용해 생성한 이미지들에 대해 실험한 결과는 본 논문을 참조해주세요.

마지막으로 해당 metric은 기존에 생성모델의 평가로 사용되던 FID, IS등의 metric의 fidelity와 diversity를 구별하여 평가할 수 없던 단점을 극복하고 outlier에도 덜 민감한 metric임에는 분명하다고 생각합니다. 하지만 density의 정의상 값이 100%를 넘을 수 있어 절대적인 평가 값으로 사용할 수가 없다는 점, 실제로 생성되는 data의 분포가 k-nearest neighborhood로 이루어진 manifold를 정확하게 따를 것인지에 대한 고민이 필요하다고 생각됩니다.

 

본 게시글은 Generative Adversarial Networks(GAN)를 공부하며 흥미로웠던 CycleGAN에 대한 포스팅입니다. 해당 논문은 버클리 AI Research (BAIR) lab에서 진행된 연구로, 2017년 ICCV에 accept되었습니다. 해당 논문을 참조하시려면 논문 링크 클릭해주세요.

 

CycleGAN은 training set이 {X,Y} 처럼 paired data가 아닌 unpaired된 data인 경우, source 도메인 X에서 target 도메인 Y로 이미지를 변환하는 image-to-image translation 방식입니다. 아래의 예시는 CycleGAN을 활용했을때의 두가지의 도메인에 대해서 이미지를 translation 하는 예시입니다. 

CycleGAN을 활용한 image-to-image translation 예시

이러한 두가지 도메인에 대해 image-to-image translation을 진행하기 위해서는 training set이 이미지 i에 대해 pair가 되는 X와 Y 도메인 데이터(paired data)가 존재해야 합니다. CycleGAN이전에 연구되었던 Pix2Pix 모델에서는 반드시 두 도메인 양쪽에 대응되는 paried data가 존재해야 했지만 CycleGAN에서는 paired data 없이도 하나의 이미지 도메인을 다른 도메인으로 바꾸는 것이 가능합니다.

paired data, unpaired data 설명

CycleGAN에서는 아래 그림과 같이 2가지 generator인 $G$와 $F$를 사용합니다. generator $G$는 source 도메인 X를 target 도메인 Y로 translate해주며 generator $F$는 $G$와 반대로 Y 도메인을 X 도메인으로 translate 시키는 generator입니다.

 

또한 Disciriminator도 $D_x$, $D_y$로 2가지를 사용합니다. $D_x$ $D_y$는 각각 X 도메인과 Y 도메인으로 생성된 이미지를 판별하는 역할을 수행합니다. $D_x$는 generator $F$가 만들어낸 ${F(y)}$ 이미지와 실제 X 도메인의 이미지 {$x$}를 구별하며 $D_y$는 generator $G$가 만들어낸 Y 도메인의 이미지 ${G(x)}$ 가 실제 Y 도메인의 데이터 {$y$}와 얼마나 다른지를 구별해냅니다.

 

따라서 G를 통해 Y 도메인으로 변환된 X 데이터 ${G(x)}$ 가 있을 때, 이를 다시 generator $F$를 통해 X 도메인으로 보내면 source 도메인인 X로 다시 되돌아와야 한다는 것입니다. 즉, F(G(X)) {x}가 되어야 하며 (forward cycle consistency) G(F(Y))는 ${y}$가 되어야 합니다. (backward cycle consistency) 이러한 특징을 본 논문에서는 cycle consistency 라고 칭하고 있습니다. 

 

따라서 CycleGAN에서는 기존의 Adversarial loss와 cycle consistency loss, 총 2가지의 loss를 사용합니다. CycleGAN에서는 generator와 discriminator를 각각 2개씩 사용하므로 Adversarial loss term인 $L_{GAN}$이 2개로 나누어집니다. 

CycleGAN full objective

Adversarial loss는 기존의 GAN의 loss와 같으므로 $G$는 {$G(x)$}가 Y 도메인의 실제 데이터 {$y$}와 유사하게 만들어내는것을 목표로 합니다. $D_y$는 {$G(x)$}와 {${y}$}를 구별합니다.  $L_{GAN} (F,D_x,Y,X)$ 또한 마찬가지로 $F$는 {$F(y)$}가 실제 X 도메인 데이터 {$x$}와 유사한 이미지를 만드려고하며 $D_x$는 {$F(y)$}와 {${x}$}를 구별합니다.

Adversarial loss

Cycle Consistency loss는 {$x$} 이미지를 $G$에 통과시켜 {$G(x)$}로 만들어 Y도메인의 데이터를 만든 후 이를 다시 $F$에 넣어 다시 X 도메인으로 inverse 과정을 거친 이미지로 만듭니다. 이러한 과정으로 inverse된 $F(G(x))$와 실제 X 도메인의 이미지 {$x$}를 pixel-wise하게 loss를 구성하였습니다. 마찬가지로 {$y$} 이미지를 $F$를 통해 X 도메인에 속하는 {$F(y)$} 이미지로 만든 후 이를 다시 $G$를 통해 Y 도메인으로 inverse 과정을 거칩니다. $G(F(y))$ 이미지와 실제 Y 도메인의 이미지 {$y$}와의 pixel-wise한 차이를 loss에 반영합니다. 이러한 두개의 term을 cycle consistency loss로 정의하고 있으며 해당 loss를 통해 unpaired한 X와 Y 도메인의 쌍을 연결할 수 있게 됩니다.  

Cycle Consistency loss

CycleGAN의 최종 loss는 아래식과 같으며 해당 loss를 통해 generator는 실제 이미지에 가까운 이미지를 만들기 위해 노력하며 discriminator는 generated된 이미지를 실제 이미지와 판별하는것을 목표로 합니다.

아래의 그림은 CycleGAN을 활용하여 실제 풍경데이터 (X 도메인 데이터)와 각 화가의 스타일 (Y 도메인 데이터) 를 활용하여 Image-to-Image translation을 진행한 결과입니다. X 도메인의 데이터가 각 Y 도메인으로 style transfer가 된것을 볼 수 있습니다. 

두번째 예시로 말과 얼룩말, 겨울과 여름 등 서로다른 도메인으로의 Image-to-Image translation 결과입니다.

CycleGAN의 구현 및 자세한 실험 결과는 논문을 참조해주세요. 이상 논문 리뷰를 마치겠습니다. 

융합연구단 과제 선정

카테고리 없음 2020. 12. 30. 09:15 Posted by KDST

저희 팀이 참여하는 "고위험 재난의료 및 산업재해 대응기술 개발" 과제가 선정되었습니다. 

과제 내에서 저희 팀의 역할은 센서로부터의 생체 신호를 딥러닝 기술 등에 기반한 시계열 분석으로 중증도 예측 등으로 활용하는 내용은 맡게 되었습니다. 

재미있는 주제이고 과제 규모도 적지 않은 만큼 열심히 수행해서 좋은 결과 내도록 최선을 다할 생각입니다. 

 

안녕하세요, KDST에서 인턴 연구원으로 근무했던 김우정입니다.

 

이번에 김수현 박사님, 박민철 인턴 연구원님, 전근석 학연님과 함께 제출했던 논문이 NeurIPS (NIPS) 2020에 poster presentation으로 accept 되었습니다. 논문 제목은 "Neuron Merging: Compensating for Pruned Neurons" 입니다.

 

기존 structured network pruning 논문들에서는 신경망에서 덜 중요한 뉴런이나 필터를 제거하고 accuracy를 회복하기 위하여 fine-tuning을 합니다. 하지만 이때 제거된 뉴런에 상응하는 다음 layer의 차원 또한 제거됩니다. 따라서 pruning 직후에 다음 layer의 output feature map이 원래 모델과 매우 달라지게 되어 accuracy loss가 발생합니다.

본 논문에서는 제거된 neuron의 효과를 보상할 수 있는 "Neuron Merging" 컨셉을 제안했습니다. 또한 Neuron Merging 컨셉 안에서의 한가지 방법론으로, 추가적인 training이나 data 없이 pruning 직후 accuracy를 향상시키는 알고리즘을 제안했습니다. 

 

더욱 자세한 내용은 Conference 후에 다른 게시글로 소개하겠습니다. 감사합니다.

 

새 도메인 주소 (kdst.re.kr)

카테고리 없음 2020. 9. 26. 14:00 Posted by KDST

이제 https://kdst.re.kr 또는 http://www.kdst.re.kr 주소로도 저희 블로그에 접속하실 수 있습니다. 

물론 기존 그대로 kdst.tistory.com 주소도 동작합니다.