본문 바로가기

DL/Generative

[wasserstein gan-gp와 cegan] cegan 세미나 사전 지식

현실적 상황 속 데이터 => 불균형 데이터 분포가 많음 => 원시 데이터의 증강이 목표

DCGAN 등 다양한 GAN이 존재 => 그 중 WGAN, WGAN-GP는 안정적으로 최적화됨

 

기본 지식인데 이제 내가 헷갈리던 것들 //ANN, DNN, CNN, RNN

더보기

//ANN, DNN, CNN, RNN

일단 인공지능:artificial intelligence에서 이제 기계학습의 한 분야로 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야가 machine learning임

machine learning에서 더 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(다량의 복잡한 자료들에서 핵심적인 내용만 추려내는 작업)를 진행하게되는 게 deep learning

 

여기서 이제 머신러닝의 한 분야인 딥러닝은 기본적으로 인공신경망(Artificial Neural Network)을 본따서 학습을 진행하게 됨

ANN:(Artificial Neural Network)에서 몇가지 문제들이 발생하였고 이들을 해결하기 위해 모델 내 은닉층을 많이 늘려서 학습의 결과를 향상시키는 방법이 등장하였고 이것이 DNN:deep neural network

DNN의 종류에 여러가지가 존재하는데 여기에 CNN, RNN, LSTM, GRU 등이 존재

    CNN:convolution neural network

    RNN:recurrent neural network

    LSTM:Long Short Term Memory


1) 기본 GAN의 알고리즘

2) WGAN-GP를 사용한 검증 방법

3) GAN 효과 test 실험

순으로 정리해보겠음 //왜냐면 논문에 그렇게 정리되어있으니까 ㅋ

 

 

https://pdf.sciencedirectassets.com/271597/1-s2.0-S0925231220X00191/1-s2.0-S0925231219304953/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEM7%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJGMEQCIGK5Cz3nEcCro%2Bg4edjNmFfOJWpDxV5qVQ0rZmknNCkIAiAKWPGSfmtyXvvok047YGZfzKjWeNaYR7%2BiFj2XQRl%2Bgyq7BQi3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAUaDDA1OTAwMzU0Njg2NSIMTu0fQDMFhYdudBwVKo8FP2pa8wfR5SwlHUHdulayPvDe50ZSS%2FNQSds9%2BufdjmfV%2FqgkKfllPxVe5JIcdtu20IEcX5OwBrPV8bRx%2FhVdSlko%2F%2BiiYojDC79RvKWthG%2BqMVJN6BhgA2jZqnmNH9drvr3G9PimY8%2FgUK0GKrlI03pNngrmA8SisfyISMwEF07LuTozgcp6unvQxGLxT8oDhwmQbKRaWKJWEM2ZpdxvY936ZuC3t1NjkEtEpsoPajB66%2BjyGyPneq10xzelbloUXnew3UzBppFIsT8IsC9dL710PYcdaJrmJJcIKQpyxqnE7Eyqey51CmsO7fBQ9arBWTsQfMYk8%2FUkmjnSowx2sBN%2BZZblSa3irVN4dcgfs9T5gdDvLA1wSk00ynXG0bduYkS8FoStTY6MSCJCi2KkTDGlwia5B9LoYhNqD%2B9asn8xYL4nP10LpNWgRm889qpiEthYfqRzzLxwaS67d1V%2Fi3wUUuFyWjq5UCZMhYl9kLv3vJzqVVUjtVgMmokiAzNdbBtRhZMv%2BPvyecITAcEVc%2BrqQVH%2BEQlRk%2B0fwU%2FiDGJtHF4Yr7nEJn4SC%2BAdtz%2BOkyTMGHb6kHzAp%2FP%2BsZIzuaqAN8xmnkbLoGkLICpjYmnwzqexkUvEDrMp0si%2BjzbqxBLGQzSHGhSURXlgrRoh7LqJIxO6RIuKKN5tCfdN7369TkF3GYn6jhDJTHa0e4pqVTg3Wfy9umVkLMvuFf1xlw4dw4JqzhEbWSAw5Hq2NeGupaPshrxHCno%2FMeWz7lz8w5BJW0Je%2FOQ9aQhW6ZjVj9%2FBQLoYFL2JBNFciX%2Ff2hEQqlN5JXVzyf%2FS7BuuYRRXplg3VQ5VNsw37FLYSDCQAmIBVay1i4MFNaAHoC58XjCS76SoBjqyASTRA52lhCMSNxY6EvIM9gKUzCYk%2FmtmsMAzEnRyfuMuyAdGb7zBwmvxwWYvnQs2fJftgaV1WNSI4zvv4M22%2F0T6xxBdm7TGZ1R%2BRFOTbhQ9PzfPTPm70ZzZFlABEWXrALliF3scmMlKLdaSlC9vapFDLPw2Espi%2FMcLlB33OTOS6nYJXVVRjnD6h1%2BlUtnI%2BYEdmiLHmX%2F36DgE4EKDI4KrDjmJPlWkL%2BarDukoRB5l0pM%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230919T063604Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAQ3PHCVTYZJ5CO6ON%2F20230919%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=56964882a137f5d33306f9664d9bde2b1888e17b8c59721899cff906b97211fa&hash=0ead6135ac257f4d70a9c1b309c639280a36c9a5ab29dde5b627bad5d48bce14&host=68042c943591013ac2b2430a89b270f6af2c76d8dfd086a07176afe7c76c2c61&pii=S0925231219304953&tid=spdf-8df3d94b-d16d-464f-a4c0-cd307c495e86&sid=91cfe3aa78a8634f576aa0116a56134a7253gxrqa&type=client&tsoh=d3d3LnNjaWVuY2VkaXJlY3QuY29t&ua=11175c5357020c050354&rr=808fcff15fcd30cd&cc=kr

 

Data augmentation in fault diagnosis based on the Wasserstein generative adversarial network with gradient penalty

Fault detection and diagnosis in industrial process is an extremely essential part to keep away from undesired events and ensure the safety of operato…

www.sciencedirect.com

https://pdf.sciencedirectassets.com/271454/1-s2.0-S0263224120X00078/1-s2.0-S0263224120303067/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEM%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJGMEQCIBIrJ0jX5TskMzO6m9hRwxeaafDyrfylpZsgAKnxgnwaAiBSv4jAfbWZxxnvQF4L1BuNzN3MDMC8HRtpkfESKloJCCq8BQi3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAUaDDA1OTAwMzU0Njg2NSIMwnTtVqZHWUMsptXUKpAFQc%2B95KfZHdFz2RBCFYPpTJDsHjNTtg6qPkJAQBKT1KWpT%2FdKwGGBRt4oVT3ucYm3HJ9S4kBuk%2BVo9FMwybTm3TZHG0SuL6HhWHYmN3vSMC7RhZw%2FRxjx6lr9ZPTA3ygfN4wgOoYFE4Zj3fJlsTv%2BWuhFAcOH6JFGBPMLgA1wVQotTQz7iua7T4pYKnD6mmzthPgiGMjN995OLaU4zWlB1DsxnZOuaE4RMun2OsZOCyLekcDyCBmqL0hVhvBww4rdpDKPLbrJ6uneQ0z8WxFArhaFiC4OorZ30wXwWxX%2B4DsK1Qg%2FFo56GAsWiMGZiEKiMromQ1EEodW8JWY%2FigHGlfWpmFv065mbUv9Y%2B4vAq8Rjmh%2B0niKh9uYDUzSmwMBHZfRX3agMwcfRgbgcKI2%2FHgurAFnPcDacTT4vH0L%2BonSrQr%2B5ctpVVfxuDU%2Bzh2C8VJdxyaixgJmcHpLdOwYBFYS56Xr9RxXuxsrRgbXF4qsxq2KIFQTZr7JIj2VsQj8ifwT4bIDezB7yVzyI0ymp0cULaB0eb3epa3h0w1RjVmLCq4rkAb3efQQcOjGBAyIWvzL9thF3B65i080ivKCxcwmn3E3MVG6tHk4oOVV6wIjyISOXf5C80A1c1EC9V%2BBC5U6B8SxELR1Jcs%2B93xpGbRWLI0WumN5FQ7HNoLgbyba8rzb3anywVNs0t5ownlC%2Fuz4tVCW1eYZj%2F8Schk%2B2VlalFmppqzGvlf%2B53AxHClfgWBYeihx7kq8DPlmzUIqz%2Fhl1coJGKLaiSOTXIobRtjKFxW79FsafRNFs1cXYVGplnd4oIiZxnYmXkk9NLzMwhIRnK%2FrKAgJe62Yqg3hWN%2FTtLmhR%2FRKcri4wQk2ejswwyPWkqAY6sgFtXpiLFBitnDt2N6zepz5NlhzT9xR1YVylMbR%2BpXmfhfFbelPeiBVD61oE3%2BfXR04riD2bXmLJ6Ti3cx74FdLOjvZ7%2B3WEC%2FFHNDCEhNWakae3OiTu9ljP%2BsF9m5CJDWXdazONmGMoI2amnNujsEgq6D6q7ARQn73hJv8t2PYpUG0yAdirywMhZbRHTSDeJK8jl7Z8T82ueQu0Z3uFnz72jOfufLpQucgILm%2FkOiJjdrwP&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230919T063413Z&X-Amz-SignedHeaders=host&X-Amz-Expires=300&X-Amz-Credential=ASIAQ3PHCVTYRUOOSTS7%2F20230919%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=839d54bc50ba49ffdd21a7d280723aec064e459d25084c7d91a73e50f8624eda&hash=27da5cd1143e732a0ca74e6c757e58600e5a2c38405e08cca72d4b82d931cecd&host=68042c943591013ac2b2430a89b270f6af2c76d8dfd086a07176afe7c76c2c61&pii=S0263224120303067&tid=spdf-ded49191-3961-4095-898c-ec97f3f28985&sid=91cfe3aa78a8634f576aa0116a56134a7253gxrqa&type=client&tsoh=d3d3LnNjaWVuY2VkaXJlY3QuY29t&ua=11175c5357020c075653&rr=808fcd366fd530cd&cc=kr

 

1) Generative Adverserial network

훈련 전략 : minimax 게임

-generator : 가우스, 균일 분포의 noise 분포에서 샘플을 가져와서 기존 실제 데이터와 동일한 데이터 공간으로 mapping

                      => 가능한 현실적인 데이터를 만들어내도록 훈련받음

-discriminator : 입력된 가짜(생성된) 데이터와 실제 데이터 구분

                           => 생성된 데이터에 속지 않도록 훈련받음

두 모델이 적대적 관계를 가지며 학습진행됨

generator : G, G의 parameter : θ / discriminator : D , D의 parameter : ϕ

1 : real data, 0 : fake data, x : real data 분포, z : nosie

discriminator : D(x) => 1로 만들어 real data를 1로 분류 / D(G(z)) => 0으로 만들어 fake data를 0으로 분류

generator : D(G(z)) => 1로 만들어 판별자를 속이려 한다.

근데 이제 (1) minimax 게임은 원래 불안정함 => Jensen-Shannon 발산

                (2) 수렴 문제 존재, 훈련을 언제 멈춰야하는지 모른다. 

                      학습 정도를 알려면 샘플을 직접 확인하여 보는 수밖에 없다. 

+ 위 object function을 적용하면 훈련 결과 학습이 잘 진행이 안됨

generator의 성능이 좋지 않아 gradient가 굉장히 작음

 

gan 훈련 개선 방법

- feature matching

- minibatch discrimination

- historical averaging

- one-sided label smoothing

- virtual batch normalization

- adding noise

- use better metric of dictribution similarity

 

 

즉 mode collapsing과 vanishing gradient 문제가 존재하였기 때문에 

위 문제들을 해결하기 위해 나온 방법이 WGAN

 

mode collapsing : 학습시키려는 모형이 실제 데이터의 분포를 모두 커버하지 못하고 다양성을 잃어버리는 현상

//loss만 줄이려하다보니 G가 전체 데이터 분포를 찾지 못하고 한번에 하나의 mode에만 강하게 몰린다.


2) Wasserstein GAN

GAN의 값 함수에서 Jensen-Shannon 발산 대신 연속적인 Wasserstein 거리(=Earth Mover's distance = EM distance) 사용

=> 좀 더 smooth한 측정을 통해 안정적인 gradient descents를 사용한 learning 진행

WGAN의 목적함수
wasserstein distance : 흙의 양(X) / 흙의 이동거리로 정량화

에서 로 얼마의 흙 비율이 이동되어야 하는지 설명하여 P가 Q의 확률 분포를 따르도록 만듦

x에 대한 주변 분포는 P로 더해짐

=> P에서 Q로 옮겨진 흙의 총량dr(x,y) * 이동거리c(x,y)

즉 모든 x,y 쌍에 대한 평균 예상 비용 : E(x,y)∼γ​[c(x,y)]

 

위 솔루션 중 최솟값이 EM distance

 

gan과 wgan

-js 발산은 불연속적으로 급격히 변하거나 미분 불가능한 부분 존재

-wasserstein 지표만이 부드러운 측정을 제공하며, 경사하강법을 사용한 안정적인 학습 과정에 유용함

이를 통해 gan의 문제점들을 보완함

 

근데 이제 wgan을 사용하려면 기반되는 조건이 Lipschitz continuity가 있음

∣f(x)−f(y)∣≤K∣∣x−y∣∣

실수값 함수 f가 모든 x,y에 대해 위 식을 만족할 때 K-Lipschitz 연속

 

위 조건들이 학습되는 과정

-f가 파라미터 θ로 매개변수화된 1-Lipschitz 연속 함수들이라면

수정된 wasserstein-GAN에서 'discriminator'은 좋은 θ를 찾기 위해 fθ를 학습하는데 사용

-손실 함수는 P와 Q 사이 EM distance를 측정하는데 사용됨

위 과정에 따라 discriminator은 더이상 진짜와 가짜를 직접 구별하는 것이 아닌 EM distance를 계산하기 위해 1-Lipschitz 연속함수를 학습하는데 훈련됨

훈련 중 손실함수의 감소에 따라 EM distance는 줄고 생성 모델의 출력은 real data의 분포에 더 근접한다

 

=> 단, 이때 1-Lipschitz 연속성을 유지해야하는 것이 문제

위 조건에 부합하기 위해 트릭 사용

- 가중치 w를 [-0.01,0.01]로 clipping 진행하여 상한과 하한을 얻음 : weight clipping

[Algorithm]

-weight clipping

-wasserstein distance

-Adam => RMSProp 최적화기 사용

 

 

 

 

 

 

 

 

 


3) WGAN-GP

 

https://jonathan-hui.medium.com/gan-wasserstein-gan-wgan-gp-6a1a2aa1b490