728x90

Feature가 필요한 이유?

 머신 러닝은 input data를 output data로 대응시키는 블랙박스 형태입니다. 이 블랙박스는 input data의 함수이며 선형 또는 비선형의 형태를 가질 수 있습니다. 우리는 train data를 사용해서 이 함수를 학습하지만 항상 잘 되는 것은 아닙니다.

 

ex) 한 카페의 매출 가격을 입력으로 해서 가장 잘 팔리는 음료가 무엇인지 알려고 합니다. 매출 가격만으로 가장 잘 팔리는 음료가 무엇인지 정확하게 예측하는 것이 가능할까요? 아마도 매출 가격 정보만으로는 결과를 도출하기에는 충분하지 않을 것입니다.

 

위 예제를 통해 머신 러닝의 성능은 데이터의 양과 질에 굉장히 의존적이라는 것을 알 수 있습니다. 가장 이상적인 입력 데이터는 부족하지도, 과하지도 않은 적확한 데이터만 갖는 것입니다.

 

적확한 데이터를 모으기 위해서는 먼저 충분한 데이터를 모으고, 모은 데이터들 가운데 어떤 feature가 유용한지 아닌지 확인하는 과정을 거칩니다. Feature의 유용성을 확인하는 과정을 특징 선택(teature selection), 또는 특징 추출(feaure extraction)이라고 합니다. 이 과정은 보통 learning 과정 전에 실행됩니다. 이 과정은 머신러닝 구조에서 가장 핵심적인 전처리 과정에 속합니다.

 


 

차원 축소란?

우리가 훈련에 필요한 충분한 고차원의 입력 값을 가지고 있다고 가정해 봅시다. 모든 개수의 fearture가 필요하지 않을 수도 있고, 가지고 있는 feature들 중 몇몇 개는 다른 특징들의 조합으로 표현 가능하므로 불필요할 수도 있습니다. 따라서 관찰 대상들을 잘 설명할 수 있는 잠재 공간(latent space)은 실제 관찰 공간(observation space) 보다 작을 수 있습니다. 이렇게 관찰 공간 위의 샘플 기반으로 잠재 공간을 파악하는 것을 차원 축소(dimensionality reduction technique)라고 합니다.

 

차원 축소는 데이터의 압축, 잡음 제거 효과가 있지만,

가장 중요한 의의는 관측 데이터를 잘 설명할 수 있는 잠재 공간(latent space)를 찾는 것입니다.

 


 

앞서 언급했던 특징선택과 특징 추출의 차이점을 간단하게 정리해봤습니다.

 


 

 

간단 정리

 

 

 

 

 

 

-----------------------------------------------------------------------------------------------

본 포스팅은 졸업작품을 위한 미팅 자료에 기반을 두고 있습니다. 팀원과 함께 진행하는 프로젝트입니다.

참고 자료: Generative adversarial network GAN, https://iostream.tistory.com/110

 

'IT > GAN' 카테고리의 다른 글

Mode collapse 아주 간단 정리  (0) 2019.08.03
Regularization & Norm 간단 정리  (0) 2019.07.04
VAE & GAN 간단 비교  (0) 2019.06.28
728x90

GAN을 학습시키다 보면 어느 순간 제대로 학습이 되지 않을 때가 있습니다. 이것을 바로 모드 붕괴, Mode Collapse현상이라고 하는데요.이는 생성자가 다양한 이미지를 만들어내지 못하고 비슷한 이미지만 계속해서 생성하는 경우를 뜻합니다. GAN을 학습시킬 때는 생성자와 구분자가 비슷한 수준으로 학습을 반복하고 있는지 잘 확인해야 합니다.

 

 

간단 정리

  • 생성자(G)가 입력 값을 하나의 mode에 치우쳐 변환시키는 현상
  • 특정 값에 대해 G <-> D 를 반복해 올바르지 못한 학습이 진행
  • 일부 값에만 치우쳐 전체 분포에 대해 학습하지 못하는 현상

 MNIST의 경우: 

         G가 하나의 숫자만 생성하다 판별기(D)의 값이 진동해 다른 숫자의 분포로 이동하여 G가 다른 숫자만 생성하는 현상

 

 

 

MNIST에서의 정상 학습 이미지와 mode collapse된 이미지

빨간 박스 안의 이미지가 Mode Collapse 발생한 이미지입니다.

 

 

 

 

 

 

 

 

 

-----------------------------------------------------------------------------------------------

본 포스팅은 졸업작품을 위한 미팅 자료에 기반을 두고 있습니다. 팀원 함께 진행하는 프로젝트입니다.

'IT > GAN' 카테고리의 다른 글

Latent space 간단 정리  (0) 2019.08.03
Regularization & Norm 간단 정리  (0) 2019.07.04
VAE & GAN 간단 비교  (0) 2019.06.28
728x90

오늘은 CNN, ML 알고리즘에서 많이 보이는 Norm에 대해 간단히 정리하려고 합니다.

 

 

일반적으로 Deep Learning에서 network의 Overfitting(과적합) 문제를 해결하는 방법으로 3가지 방법을 제시합니다.

 

1. 더 많은 data를 사용

2. Cross validation

3. Regularization

 

 *2번의 cross validation(교차 검증)

- 모든 데이터가 최소 한 번은 test set으로 사용하도록 함

- Training set과 Test set을 분리하여 training set에서 모델의 계수를 추정한 후, test set으로 성능을 평가

 

test set을 어떻게 잡느냐에 따라 성능이 아주 상이하게 나올 경우 우연으로 모델 평가 지표에 편향이 생기게 됨 

cross validiation은 모든 data를 test set으로 사용하기 때문에 편향을 줄일 수 있음

 

장점

- 총 데이터 갯수가 적은 data set에서 정확도 향상 가능 (데이터 추가하지 않고 overfitting 해결 가능)

 

 

 

다시 돌아와서, 더 이상 data 추가가 어렵거나, 학습 data를 늘려도 overfitting 문제가 해결되지 않을 때 

3번 Regularization을 사용합니다. 이 Regularization은 lose function을 변형시켜 사용합니다.

 

 

Regularization(정규화)

 

- Regulaization을 통해 특정 값을 가지는 outlier의 영향을 적게 받도록 하여 일반화에 적합한 특성을 갖게 만드는 것

- Regularization은 L1과 L2로 나뉨

 

 

• L1 Regularization

- L1 Regularization은 1차항

- C0: 원래의 cost function

- n: training data의 개수

- λ: regularization 변수

- w: weight

- w에 대해서 편미분 수행 시 

- 상수 값을 빼기 때문에 작은 가중치들은 거의 0으로 수렴 (몇 개의 중요한 가중치만 남음)

- 몇 개의 의미 있는 값을 내고 싶을 때에 효과적

 

 

 

• L2 Regularization

- 학습의 방향을 단순히 C0값이 작아지는 방향으로만 진행시키는 것이 아니라 w값 역시 최소로 작아지는 방향으로 진행

- 새롭게 정의된 cost function을 가중치 w에 대해 편미분 수행 시

- 특정 가중치가 비 이상적으로 커지고, 학습 효과에 큰 영향을 끼치는 것을 방지할 수 있음

 

 

 

 

NORM

 

norm이란?

- 수학적으로 벡터 공간 또는 행렬에 있는 모든 벡터의 전체 크기

- 단순화를 위해 표준이 높을수록 행렬 또는 벡터의 값이 커짐

p: norm의 차수 (p의 차수에 따라 L0, L1, L2결정)

n: 대상 벡터의 요소 수

 

 

 

• L0 Norm

 

- 실제로는 norm이 아님

- 벡터의 0이 아닌 요소의 총 수에 해당

- ex) v(0,0), v(0,2)의 L0 norm의 개수: 1개 (0이 아닌 요소가 1개뿐이기 때문)

L0 norm 예시

 

 

 

• L1 Norm

 

- Manhattan Distance 또는  Taxicab norm으로 많이 알려짐

- 벡터의 요소에 대한 절대 값

- 벡터 사이의 거리를 측정

- 벡터의 모든 구성 요소에 동일한 가중치가 적용됨

 

- L1 Regularization, computer vision 영역에서 사용

 

- 출발지(0,0)에서 목적지(3,4)에 도착하기 위해 블록 사이를 여행하며 거리를 측정하는 방식

- vector X = [3,4] = 7

 

 

 

 

 

• L2 Norm

- Euclidean norm이라고도 알려진 가장 일반적인 Norm

- 한 지점에서 다른 지점으로 갈 때의 가장 짧은 거리를 측정

- L2 Norm은 가장 직접적인 경로

- L2 Regularization, KNN알고리즘, K-means 알고리즘에서 사용

- *고려할 점: 벡터의 각 구성 요소가 제곱이 되어있기 때문에 결과 값의 왜곡 가능성이 있음

 

 

 

• L - Infinity Norm

 

- 벡터 요소 중 가장 큰 크기를 제공

- vector X = [-6,4,2] 일 때, L - Infinity Norm = 6

- 가장 큰 요소만 효과가 있음

- Color pixel에서 R, G, B 최대 차이 계산에 사용

 

 

 

 

• Maximum Norm

 

- p값을 무한대로 보냈을 때의 norm

- 벡터 성분의 최댓값

 

 

 

 

 

'IT > GAN' 카테고리의 다른 글

Latent space 간단 정리  (0) 2019.08.03
Mode collapse 아주 간단 정리  (0) 2019.08.03
VAE & GAN 간단 비교  (0) 2019.06.28
728x90

오랜만에 블로그를 다시 잡아보는데요, 

앞으로 다룰 주제는 제가 현재 졸업작품으로 다루고 있는 인공지능 작곡기(정확히는 편곡기)에 대해서 설명할 예정입니다.

오늘은 가장 기본이 되는 주제를 다룰 것은 아니고, 부수적으로 필요한 기본 개념들을 먼저 정리했습니다.

큰 주제는 조금 더 정리해서 올릴 예정입니다.

 

순서대로 정리하고 싶은 마음 반, 이미 정리된 것들을 먼저 올리고 싶은 마음 반이여서 고민을 했는데, 

하고 싶은걸 먼저해야 계속해서 블로그를 할 수 있을 것 같아서 오늘은 간단하게 전에 정리했던 내용을 올리려고 합니다.

 

 

 

처음에 이 인공지능 작곡기를 계획하면서, midi 파서를 VAE, DAE기법으로 인디코딩시키려고 했습니다만,

생각보다 듣기 좋은 음악이 나올 것 같지가 않아서 Resnet과 cycleGAN을 이용하는 쪽으로 회선 시켰습니다.

 

그렇기에 오늘은 VAE와 GAN의 간단한 차이점을 적어보려고 합니다.

 

VAE는?

 

- Variational Auto-Encoder  

- 복잡한 데이터 생성 모델을 설계하고 대규모 set에 적응 할 수 있게 해줌

- input data를 잠재변수 z로 encoding 한 후, 스스로 input을 복원해 내는 방법

- VAE에서의 Loss functoion은 input x와 복원된 x'(decoding 된 x) 간의 Loss로 정의

- VAE에서는 Auto-Encoder가 input을 따라 그리는 것에만 맞게 학습 시킴

- 결론적으로 z는 의미론적이지 않음

 

 

GAN은?

- Generative Adversarial Nets

- Generator과 Discriminator가 서로 대립하여 서로의 성능을 점차 개선해 나가는 개념

- ex) 지폐위조범(Generator)은 경찰(Discriminator)을 최대한 열심히 속이기 위해 노력함

       경찰은 지폐위조범의 위조된 지폐를 감별하기 위해(Classify) 노력함

       이런 경쟁 속에서 두 그룹 모두 속이는 능력, 구별하는 능력이 발전하게 됨

     = 결과적으로, 진짜 지폐와 위조 지폐를 구별할 수 없을 정도에 이름

 

- Generative model G -> data x의 distibution을 알아내려고 노력

  (G가 data distribution을 모사할 수 있으면 sample과 data를 구별할 수 있다.)

 

- Discriminator model D -> sample이 training data인지, G가 만들어낸 data 인지 구별하여 각각의 확률을 estimate시킴

 

 

결론적으로 VAE와 GAN의 차이점은?

 

GAN

 

-generator model의 목적 자체가 어떤 data의 분포를 학습하는 것이 아님

- 진짜 같은 sample을 generate하는 것이 목적

 

 

VAE

- data의 분포를 학습하고 싶은데, 이 data가 다루기 힘들기 때문에 variational inference(변화 추론)하는 방법

- VAE는 data 분포가 잘 학습되기만 하면 sampling (=data generation)이 저절로 따라옴

 

 

 

 

 

'IT > GAN' 카테고리의 다른 글

Latent space 간단 정리  (0) 2019.08.03
Mode collapse 아주 간단 정리  (0) 2019.08.03
Regularization & Norm 간단 정리  (0) 2019.07.04

+ Recent posts