mklink
GAN generative_adversarial_network - writing
aka 생성모형학습 generative_model_learning ?
GAN generative_adversarial_network - writing
저기에서는 서로 경쟁하는 두 신경망이 있는데 - 분류모형,classification_model vs 생성모형,generative_model을 경쟁시킨다
생성모델(위조지폐범)은 진짜같은 데이터를 생성하려 한다.
분류모델(경찰)은 진짜와 가짜를 판별하려는 확률을 높이려고 한다.
이런 zero-sum_game 관계 내에서 서로 경쟁적으로 발전해나가는 구조?? chk
semi-supervised_learning의 방법 중 하나가 생성모형?생성모델(위조지폐범)은 진짜같은 데이터를 생성하려 한다.
분류모델(경찰)은 진짜와 가짜를 판별하려는 확률을 높이려고 한다.
이런 zero-sum_game 관계 내에서 서로 경쟁적으로 발전해나가는 구조?? chk
aka 생성모형학습 generative_model_learning ?
1. tmp 1 ¶
KIAS Horizon - 머신러닝 시리즈 #2 - 볼츠만머신: 생성모형의 원리
https://horizon.kias.re.kr/18001/
(#1은 퍼셉트론,perceptron에 적음)
https://horizon.kias.re.kr/18001/
(#1은 퍼셉트론,perceptron에 적음)
// Boltzmann_machine, RBM 에 놓아도 상관 없는 내용임
이전글에서는 분류모형을 공부했는데 - 분류모형,classification_model - (분류,classification) - 퍼셉트론,perceptron에 의한.
이번글에서는 생성모형을 공부 - 생성모형 generative model
이번글에서는 생성모형을 공부 - 생성모형 generative model
머신러닝의 유명한 예제인 개/고양이의 이미지 데이터를 바탕으로 두 모형의 목적을 구별해 보면,
분류모형은 개/고양이 이미지 에 대한 라벨 을 분류하는 학습
생성모형은 동물 이미지 들이 가진 특징을 추출해서 데이터에 있는 동물들과 닮은 이미지 를 생성하는 학습
생성모형은 동물 이미지 들이 가진 특징을 추출해서 데이터에 있는 동물들과 닮은 이미지 를 생성하는 학습
분류모형의 목적은 모형이 예측하는 와 데이터의 라벨 을 가깝게 만드는 것
생성모형의 목적은 주어진 이미지 에 대한 데이터의 분포 와 모형의 분포 를 가깝게 만드는 것
생성모형의 목적은 주어진 이미지 에 대한 데이터의 분포 와 모형의 분포 를 가깝게 만드는 것
<youtube 영상>
그런데 data를 가만히 보면,
이런 규칙을 눈치챘다면 모형,model을 이용해 데이터를 영리하게 저장할 수 있음.
- 과 의 부호,sign가 같은 패턴이
- 인 패턴이
이런 규칙을 눈치챘다면 모형,model을 이용해 데이터를 영리하게 저장할 수 있음.
에너지 기반 모형에 경험이 많았던 물리학자 Hopfield는 패턴,pattern의 "에너지,energy"를 이렇게 설계함.
에너지가 낮은 패턴은 더 자주 관찰되는 볼츠만 분포(Boltzmann distribution)(QQQ =maxwell-boltzmann 분포?) 를 가정. (이 가정은 정보이론의 관점에서 매우 자연스러운 것)
여기서 는 모든 패턴에 대해 확률 의 합이 1이 되게 만들어 주는 상수. (정규화,normalization?) 이렇게 확률을 정의하면 모든 패턴에 대한 확률값이 자동으로 양수가 됨. 이 에너지 모형 energy_model 의 매개변수 값을 잘 정하면 모형의 확률 가 데이터의 확률 와 비슷해질 것인데, Hopfield는 좋은 매개변수 값을 금세 알아차림:
즉 데이터에서
- 의 편향,bias이 와 일치하고
- 의 상관관계가(상관,correlation이) 와 일치할수록
Hopfield_network에서 좋은 값이 정해지는 원리는 뇌과학의 헤비안 hebbian 규칙과 닮음
{ 동시에 발화하는 뉴런,neuron들의 시냅스,synapse 연결은 강화되고, 그렇지 않는 neuron들의 연결은 퇴화한다는 것 }
{ 동시에 발화하는 뉴런,neuron들의 시냅스,synapse 연결은 강화되고, 그렇지 않는 neuron들의 연결은 퇴화한다는 것 }
이렇게 모형으로 데이터를 저장하게 되면 생기는 세 이점은
- 데이터의 패턴과 빈도수를 통째로 저장하는 것 보다 세 개의 숫자 를 저장하는 것이 효율적
- 관찰된 데이터에는 없었던 패턴의 관찰확률을 유추(see 예측,prediction and 추론,inference) 가능
- 이 확률모형을 이용해서 상대적으로 확률이 높은 패턴을 추출할 수 있음
에너지 모형은 Hopfield_network와 동일하고 확률은 볼츠만 분포(Boltzmann_distribution)를 따른다. (hence the name)
(더 가깝게 만드는 방법은.. 아마 모형의 분포와 data의 분포 사이의 거리를 더 정교하게 정의하는??? chk)
(더 가깝게 만드는 방법은.. 아마 모형의 분포와 data의 분포 사이의 거리를 더 정교하게 정의하는??? chk)
이들은 모형의 분포 와 데이터의 분포 사이의 거리 (두 분포,distribution 사이의 거리,distance) 로,
즉 쿨백-라이블러 거리 Kullback-Leibler divergence (see 상대엔트로피,relative_entropy) 를 선택하였음.
수학적으로 오목함수,concave_function라는 얘기 하고나서 기울기하강,gradient_descent 수식 서술. (기울기,gradient 식 생략)
"해당 기울기는 의 상관관계를 데이터의 분포 에서 구한 기대값과 모형의 분포 에서 구한 기대값의 차이가 된다."(sic)
이 경사하강법을 통해 를 update하면 가 줄면서 model의 distribution 가 data의 distribution 에 점점 가까워지게 됨.
"해당 기울기는 의 상관관계를 데이터의 분포 에서 구한 기대값과 모형의 분포 에서 구한 기대값의 차이가 된다."(sic)
이 경사하강법을 통해 를 update하면 가 줄면서 model의 distribution 가 data의 distribution 에 점점 가까워지게 됨.
Boltzmann distribution과 KLD로 설계한 Boltzmann machine은 멋진 알고리즘이나, 치명적 문제가.. 데이터 의 차원 가 큰 경우, 로 합해야 할 패턴의 가지수가 너무 많아서 위 식으로 기울기를 계산하는 것이 실질적으로 불가. 인 경우에 전체 패턴이 백만 개 정도이며 이걸 계산해야 매개변수 겨우 한 번 갱신.. 매우 비효율적.
1.1. RBM ¶
그리하여 1986년 Paul Smolensky 가 제안한 - 제한된 볼츠만머신Restricted Boltzmann Machine, RBM - 은 데이터 표현 변수 와 더불어 이진값을 가지는 숨은 변수 를 포함하고 있다.
BM은 모든 들이 서로 연결. but,
RBM은 들끼리는 연결이 없고, 들끼리도 연결이 없다. 오직 와 사이의 연결만이 허용됨.
(조정효 제공)
RBM에서 패턴의 에너지식은 생략. 여기서 문제해결을 위해 변수 h에 대해 '하찮게 만듦 - marginalization' 을 씀... 이것도 연산횟수가 많은 문제... 결국 Hinton의 CD contrastive_divergence 알고리즘으로 해결.
RBM은 들끼리는 연결이 없고, 들끼리도 연결이 없다. 오직 와 사이의 연결만이 허용됨.
(조정효 제공)
RBM에서 패턴의 에너지식은 생략. 여기서 문제해결을 위해 변수 h에 대해 '하찮게 만듦 - marginalization' 을 씀... 이것도 연산횟수가 많은 문제... 결국 Hinton의 CD contrastive_divergence 알고리즘으로 해결.
1.2. Contrastive Divergence 알고리즘 ¶
이것은 들끼리 그리고 들끼리 연결 없이 독립(독립성,independence)이라는 것 (을 가정하여??? - 아니 RBM의 특성상 원래 그런듯??? chk) - 에 대한 조건부 확률을 들 각각의 조건부 확률의 곱으로 쪼개서(factorizable) 쓸 수 있게 해줌 - (see 조건부확률,conditional_probability) - 수식으로는
여기서 는 데이터 가 주어졌을 때 이 될지 이 될지 결정하는 확률임. 제한된 볼츠만머신의 에너지와 확률 규칙을 써서 계산을 조금 하면 이 조건부확률을 계산 가능.
이 식에서 는 데이터 가 일종의 순전파(?)를 통해서 에 도착한 신호,signal로 해석할 수 있음.
RBM에서는 숨은 노드 의 값이 0 또는 1이고, 의 기대값,expected_value은
즉 RBM에서 가 순전파된 기대값 가 (지난 연재에서 본) 퍼셉트론,perceptron에서 숨은 뉴런의 활성함수(활성화함수,activation_function) 와 일치함. RBM에선 가 대칭성,symmetry적 구조를 가짐. 그래서 역전파,backpropagation에 해당하는 조건부확률 도 정의 가능.
순전파확률 와
역전파확률 를 이용해서 표본추출(샘플링,sampling)할 수 있다. 이렇게 순전파와 역전파를 통해 얻는 표본 는 에너지 를 낮출 수 있는 서로의 짝꿍을 선호한다. (? chk)
역전파확률 를 이용해서 표본추출(샘플링,sampling)할 수 있다. 이렇게 순전파와 역전파를 통해 얻는 표본 는 에너지 를 낮출 수 있는 서로의 짝꿍을 선호한다. (? chk)
데이터에서 첫 표본을 하나 선택해서 이라 하자.
순전파를 통해 들을 하나씩 얻고 이들로 이루어진 을 결정.
이번에는 을 역전파시켜서 을 <새로> 결정.
(이제 위첨자를 써서 을 원래 표본 과 생성한 새 표본 로 구별)
순전파와 역전파를 번 반복하면 다음 순서대로 값을 얻게 됨:
CD알고리즘의 핵심 아이디어는: 의 상관관계(see 상관,correlation)를 표본추출(see 샘플링,sampling)을 통해 어림(근사,approximation)할 수 있다는 것.
즉, 라는 수많은 가지 수의 합을 계산하는 대신
개의 표본,sample에서 얻은 통계량,statistic을 이용하는 전략임.
순전파를 통해 들을 하나씩 얻고 이들로 이루어진 을 결정.
이번에는 을 역전파시켜서 을 <새로> 결정.
(이제 위첨자를 써서 을 원래 표본 과 생성한 새 표본 로 구별)
순전파와 역전파를 번 반복하면 다음 순서대로 값을 얻게 됨:
즉, 라는 수많은 가지 수의 합을 계산하는 대신
개의 표본,sample에서 얻은 통계량,statistic을 이용하는 전략임.
첫번째 식에서 data의 분포 를 따르는 sample은 data sample 과 짝을 이루는 로 이루어진 으로 어림할 수 있고,
두번째 식에서 model의 분포 를 따르는 sample은 순전파와 역전파를 번 반복했을 때의 짝꿍 으로 어림할 수 있음.
두번째 식에서 model의 분포 를 따르는 sample은 순전파와 역전파를 번 반복했을 때의 짝꿍 으로 어림할 수 있음.
( 인 경우, 은 정확히 를 따르는 sample이 됨. )
(`짝꿍'의 영어표현이 궁금)
(`짝꿍'의 영어표현이 궁금)
이를 알고리즘이라 함. 놀라운것은 인 로도 꽤 좋은 approximation이 가능.
의의: 차원이 커져도 RBM 학습이 가능해졌다.
최근에는 변분추론variational_inference에 기반한 변분오토인코더Variational Autoencoder, VAE 분류모형을 기발하게 응용한 적대적생성망generative_adversarial_network, GAN이 개발.
2. bmks ¶
----
- [1] David H. Ackley, Geoffrey E. Hinton, and Terrence J. Sejnowski, "A learning algorithm for Boltzmann machines", Cognitive Science, 9(1): 147-169 (1985).