2019. 11. 17. 17:23ㆍ관심있는 주제/GAN
https://ecmlpkdd2019.org/downloads/paper/23.pdf
최근 커뮤니티에서 SVM과 GAN에서 Gradient Penalty 관련 논문을 찾다가 우연히 찾게 된 논문이다.
내용이 흥미로웠던 점은 Imbalanced 한 데이터셋에 대해서 GAN으로 풀겠다는 것이다.
나도 GAN을 공부하면서, 생성된 데이터를 이용하여 데이터의 Class의 균형을 맞추면 성능 향상에 더 기대할 수도 있을 것 같다고 속으로 생각만 했다가, 이 논문을 발견하게 되어서 먼가 반갑다.
일단 머 유명한 논문은 아닌 것 같지만, 일단 아이디어를 보는 정도로 쭉 봐야겠다.
Prognostics and Health Management (PHM)이라고 하는 것에 대한 이야기를 하는 것 같고,
잘은 모르겠지만, 암튼 고장 예측을 잘하는 것이 중요하다고 하는데, 현실은 이러한 고장에 대한 정보가 적기 때문에 Imbalanced 해진다는 것이다. 그리고 이러한 고장이 나면, 당연히 큰 사고와도 직결될 수 있기 때문에 높은 비용을 감수해야 하고, 이러한 고장의 패턴은 복잡하기 때문에 일부러 만들기도 어렵다는 것이다.
그래서 아마 여러분이 이러한 주제에 관심을 가지고 구글에 검색을 하다 보면 꼭 나오는 것이 OverSample(SMOTE) 같은 방법이 있을 것이다. 그러나 이러한 방법론은 기존 실패에 관한 복잡성을 잘 볼 수도 있고 그리고 training data에 과적합(overfitting)하게 한다고 저자는 주장한다.(동감)
여기서는 실패 예측을 위해 GAN을 쓴다고 하고 이름을 GAN-FP (Failure Prediction)이라고 명명했다.
GAN-FP는 training data도 생성하고 새로운 샘플의 실패를 예측하기 위한 추론 네트워크를 빌드하기 위해서 2개의 GAN Network를 활용한다고 한다.
GAN-FP 은 일단 InfoGAN을 사용하여 현실적인 실패와 정상 데이터를 생성한다. 그리고 추론 네트워크의 앞단의 몇 개의 Layer의 가중치를 초기화한다고 한다. 그러면 이 추론 네트워크는 실패 실패와 정상 데이터를 사용하여 가중화된 목적 함수를 최적화하는 방향으로 조정된다.
추론 네트워크는 생성된 샘플과 해당 라벨 사이의 일관성을 보장하는 것을 목적으로 하는 두 번째 GAN을 사용하여 추가로 조정된다.
그렇게 함으로써 불균형 데이터셋의 분류 문제를 해결하는데 잘 사용할 수 있다고 ㅗ한다
그래서 기존에 있던 방법론은 under-sampling , SMOTE , ADASYN , Weight Loss , InfoGAN을 능가한다고 하니,
일단 기대가 되니 계속 빠르게 너무 디테일한 것은 빼고 보려고 한다.
암튼 여러 가지가 나오는데, 결국 개요에서 말한 것처럼 실패에 대한 경우를 얻기 어렵다고 합니다.
1. 충분한 실패에 관한 데이터를 모으기 어려움
2. 복잡한 물리적인 시스템으로 인해 다양한 조건에서 발생해 복잡도가 굉장히 높음
그래서 이러한 방법을 해결하기 위해 인공적으로 실패 관련 데이터를 생성한다.
전통적은 방법으로는 OverSampling
그러나 이러한 방법은 실패 패턴에 관한 복잡성을 확보할 수 있다.
그리고 oversampling의 한계로 인해 과적합 문제를 발생시킨다.
이러한 복잡성과 과적합의 문제를 해결하기 위해 요즘 핫한 현실 데이터를 잘 만드는 GAN 쪽을 이용할 생각을 함.
요즘 GAN은 이미지에서는 완전 활발...
그리고 요즘은 GAN을 사용하여 semi-supervised learning을 사용하는 분류 문제를 증가시키는 데 사용되어옴.
그러나 GAN 방법론 같은 경우 레이블에 관한 생성된 데이터의 일관성을 보장할 수 없음
예를 들어 InfoGAN 같은 경우, 생성된 MNIST 숫자에서 5%가 에러라고 함.
그래서 저자는 GAN-FP라는 것을 제안함
기여한 점
- 3개의 다른 모듈들이 추론 네트워크를 훈련시키기 위해 협력한다.
- 하나는 실제와 같은 실패와 정상의 데이터를 만든다 (InfoGAN)
- 다른 하나는 현실적인 실제와 같은 실패와 정상을 사용하여 추론 네트워크를 훈련하기 위해 가중화된 LOSS 함수를 채택한다. 우리가 사용한 아키텍쳐에서는 이 추론 네트워크는 InfoGAN의 Discriminator Network 초기 layer의 Weight를 공유하게 한다.
- 마지막으로는 추론 네트워크는 더 나아가 추론 네트워크로써 생성된 레이블과 처음 GAN의 결과물 사이에 일치성을 강화하게 하는 두 번째 GAN을 사용하여 조정한다.
- GANs 및 추론 네트워크를 위한 협업 미니 배치 교육 계획을 설계한다.
- 다른 평가 기준에 따른 기존의 접근 방식보다 유의미한 향상을 보여주는 몇몇의 실험을 진행
- 많은 경우에 이러한 Imbalanced 한 상황을 겪고 있기 때문에, 우리 꺼를 잘 사용하면 좋다
기존에 Imbalanced를 다루는 방식은 총 2가지 그룹이 있다고 함
- Re-Sampling ( oversampling / undersampling)
- 정상 데이터를 under sampling 하거나 / 수가 적은 비정상 데이터를 oversampling 한다.
- SMOTE oversampling
- 해당 클래스로부터 가까운 이웃들 사이에서 수가 적은 비정상 데이터를 새로 생성
- ADASYN oversampling
- 학습의 난이도 수준에 따라 다른 소수 계층 예제에 가중 분포를 사용한다.
- boosting alogrithm과 ensemble 학습의 성공에 따라 재 표본 기술(resampling) 은 enesemble learning에 많이 통합됨
- Cost-sensitive learning
- 정상 클래스보다 비정상 클래스에 대해서 오분류 cost를 더 높게 주는 방식
- Zhang이라는 분이 불균형 분류 문제에 대한 cost-sensitive deep belief network 제안을 했다.
- 오분류 비용을 최적화하는 adaptive differential evolution 사용 (weight softmax loss function)
- Jia라는 분이 Deep Normalized CNN 사용
많은 사람들이 저 2개를 혼합해서 사용함
그러나 2개 다 한계가 존재함.
예를 들어, oversampling 은 쉽게 과적합되고, unsersampling은 데이터 손실로 인한 가치 있는 정보가 없어진다.
그리고 cost-sensitive learning은 수정된 학습 알고리즘에 대한 좋은 통찰력과 왜곡된 분포를 채굴하는 데 실패한 이유를 정확하게 파악해야 한다.
매우 왜곡된 클래스에 데이터는 또한 전통적인 차별화 알고리즘에 문제를 제기한다. (subspace , feature representation learning) 이러한 것들은 이상적인 분류 정확도를 달성하는데 어려움을 준다.
GAN
적대적 신경망으로 minimax two-player game처럼 학습이 되는 거라서, 서로 경쟁하면서 생성하는 알고리즘이라고 간단히 설명! 그래서 더 리얼한 데이터를 만들 수 있다.
InfoGAN은 정보이론을 기반으로 한 GAN
아주아주 간단히 말하면 entagled 된 code를 disentagled code로 변환하여 원하는 특성을 담는 데이터를 생성
ex) class label도 하나의 code라고 볼 수 있음 / 숫자에서는 회전, 크기, 등등이 다 하나의 code
결국 잘 학습이 되면 원하는 latent를 가지고 있는 데이터를 생성할 수 있게 됨
(문제라고 생각하는 점) 일반적인 이미지는 눈으로 쉽게 분간이 가능하지만, 데이터에서 그걸 볼 수 있을런지?
예젠에 수식도 다 공부를 했는데,... 왜 다 까먹지...
암튼 Generator 입장에서는 상호 정보량이라고 하는 것을 크게 하여서 최소화하게 하여야 함.
GAN-FP: GAN for Failure Prediction
실패 예측 문제에서 하나의 방법은 깊은 추론 네트워크를 만드는 것이다 그리고 가중화된 Loss function을 구성한다.
그러나 이렇게 되다 보면 실제 실패 데이터가 적기 때문에 테스트 데이터에서 오분류로 측정된다.
그래서 GAN을 사용하여 실패 데이터를 생성하려고 하는 것을 제안한다고 함
생성된 샘플의 Class Label을 조정하기 위해, Conditional GAN이나 InfoGAN을 사용한다고 함.
CGAN은 class 수준 변수를 주요하게 잡는다.
InfoGAN은 클래스 레벨 형상을 캡처하는 것 외에도 연속 잠금 코드를 사용하여 자연에서 연속되는 형상의 미세한 변형을 캡처한다.
PHM 데이터 같은 경우 다중 실패 모드를 가지기 때문에 자연적으로 연속적이어야 되고, 그래서 InfoGAN을 사용한다고 함.
저자가 문제로 삼는 것은 생성된 클래스가 생성된 이미지라고 보장할 수 없다고 함 (동감)
이것은 생성된 샘플이 잘못된 라벨을 가지는 상태로 끝날 수 있다는 것이다.
예) InfoGAN을 사용해서 생성된 데이터의 5%가 잘못된 숫자와 매칭이 되게 함
실패 예측과 같은 매우 불균형한 분류 문제가 있을 때, 이러한 접근의 유용성에 부정적인 영향을 줄 수 있다
그래서 이러한 문제를 완화하기 위해서, 데이터와 LABEL 쌍의 일치성을 강화하는 두 번째 GAN의 사용을 제안
두 번째 GAN에서는 Label을 생성하는 P라는 추론 네트워크를 사용한다.
데이터를 한번 생성할 때, 전통적인 방식은 생성된 것과 실제 샘플을 같이 사용하여 분류기를 학습시킨다.
그러나 첫 번째 GAN의 Discriminator Network와 추론 네트워크(P) 사이에 Weight를 공유하기 때문에, 3가지 모듈들이 동시에 훈련한다. 그래서 이런 추론 네트워크를 사용하여 더 높은 추론 정확도로 향상할 수 있다고 주장
다음 단계를 따른다고 함.
1. 비정상과 정상 데이터 생성하기 위해 InfoGAN Update
2. 실제 데이터를 사용하여 추론 네트워크 P를 업데이트. 그리고 InfoGAN에서 Discriminator Network 처음 몇 개의 layer을 사용하여 P를 bootstrap 함. (특징을 추출하기 위해 GAN의 능력을 활용하고 훈련 시간을 절약하는 흔한 방식)
3. 생성된 샘플과 레이블의 일치성을 확인하기 위한 두 번째 GAN의 Discriminator Network를 따라서 추론 네트워크(P)를 업데이트 이렇게 해서 추론 네트워크 P의 분류하는 검정력을 증가시킴
GAN-FP model
- Module 1
- 균형있는 클래스의 샘플을 생성하기 위해 InfoGAN 사용
- category latent code c에 의해서 랜덤 하게 동일 확률로 정상과 비정상 데이터 생성됨.
- continuous latent code c와 noise vector z는 0~1 사이 범위 내에서 uniform random process를 사용하여 생성
- Generatork network는 (z, c)를 받고 샘플을 생성
- Discriminator network는 실제와 생성된 샘플을 분류하려고 함.
- Q Network는 생성된 샘플과 latent code c 사이에서 상호 정보량을 최대화하려고 노력함.
- D+Q의 Discriminator Netowork 처음 몇 개의 Layer는 데이터에 대한 많은 정보를 확보할 것이다.
- 시간을 줄이기 위해서 Module2에서 재사용
- Module 2
- P Network와 Weighted Loss를 사용한 이진 분류 문제를 해결하는 것으로 이루어짐. (실제 레이블을 기반으로 한 Loss)
- P Network는 D의 Network 처음 몇 개의 Layer를 공유한다 그리고 결괏값은 0 ~1로 확률 값 내뱉는다.
- Loss는 weight 된 cross entropy를 사용함
- Module 3
- Netowork P와 D2로 이루어짐
- 데이터와 라벨의 페어를 맞게 생성하는 것을 강요하는 부분
- P는 Generator Network 역할을 한다.
- 데이터가 주어졌을 때 라벨을 생성함
- D2는 실제 쌍과 생성된 쌍을 분류하는 방향으로 학습함.
- 기대하는 점은 이러한 모듈을 학습하면서 정상과 실패 레이블들 사이에서 분류를 더 증가시키게 하도록 추론 네트워크 P의 Weight를 더 잘 조정하게 되는 것
4 Visualization of generated samples
5.2 Experimental setup and evaluation criteria (AUC)
- Model
- GAN-GP
- DNN
- SVM
- RF
- DT
- Sampling & Cost-Sensitivie Learning
- Undersampling
- SMOTE (oversampling)
- Weighted Loss
- ADASYN (oversampling)
결론
GAN-GP를 통해 모델 향상뿐만 아니라, 유의미한 잠재적인 경제가치가 있다고 생각함
내 생각
일반적으로 프로젝트를 하다보니 불균형 문제가 큰 문제가 되고 있다.
이런 문제를 해결하기위해 oversampling이나 weighted loss를 사용함.
하지만 이 방식대로하면, 좀 더 현실적인 데이터를 만들 것 같음.
그래서 프로젝트 시간이 많다면, 반드시 해볼 것 같음.
하지만 오히려 이러한 모델링은 결국 시간이 많이 걸릴수도 있는 부분이기 때문에,
너무 집착하다간 배보다 배꼽이 큰 상황을 될 수도 있을 것 같음.
혹은 결국 데이터 변수 선택이 완벽히 되고 나서이기 때문에 사전에 모듈화를 진행해 놓는게 좋을 것 같음!
'관심있는 주제 > GAN' 카테고리의 다른 글
Self-Attention Generative Adversarial Networks - 설명 (0) | 2020.02.16 |
---|---|
This Will Change the Way You Look at GANs - 리뷰 (0) | 2020.01.07 |
MISGAN: LEARNING FROM INCOMPLETE DATA WITH GENERATIVE ADVERSARIAL NETWORKS 리뷰 (0) | 2019.10.20 |
[ TGAN ] Modeling Tabular data using Conditional GAN - Review (2) (0) | 2019.08.25 |
[ TGAN ] Modeling Tabular data using Conditional GAN - Review (1) (0) | 2019.08.25 |