일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 머신러닝
- Normalizing flow
- 캐나다월세
- MachineLearning
- GenerativeModel
- 캐나다 TD 예약
- iterm2환경설정
- 캐나다 은행 계좌 개설
- 캐나다 TD 한국인 예약
- 캐나다콘도렌트
- Generative model
- 프라이탁
- 딥러닝
- DTW
- agnoster폰트
- EATS
- Flow
- GAN
- 터미널꾸미기
- agnoster폰트깨짐
- iterm2꾸미기
- agnoster폰트꺠짐
- 캐나다 은행계좌 개설
- Docker
- 프라이탁 존버
- iterm2자동완성
- 캐나다 TD 한국인 직원 예약
- 콘도렌트
- pytorch
- 캐나다 TDBAnk
- Today
- Total
TechNOTE
[논문리뷰] Glow: Generative Flow with Invertible 1×1 Convolutions 본문
Normalizing flow 를 이용한 유명한 generative model 중의 하나인 Glow 를 리뷰해 보도록하겠다.
1. Introduction
Flow based generative model 은 다음과 같은 이점을 가지고 있는데
- log likelihood $p(x)$ 가 구성되는 과정이 tractable 하고, 그건 latent variable $z$ 에도 마찬가지로 적용된다.
- 학습, inference 단계에서 병렬화가 가능하다.
저자들은 invertable 1*1 Convolution으로 구성된 모델인 Glow를 제안하고, 놀라운 성능을 보여주었다.
다음은 Glow 에 의해서 생성 된 예시이다.. 실제 있을법한 사람 같아서 더 신기하다..
2. Background: Flow-based Generative Models
이 section에서는 generative flow가 뭔지, 설명하고 있다..
를 참고해서 보도록 하자 헿
3. Proposed Generative Flow
저자들이 제안한 generative flow는 이전의 NICE 와 RealNVP 위에 얹어졌다.
각 flow step은 actnorm + invertable 1*1 convolution + coupling layer 로 이어진다.
3.1 Actnorm: scale and bias layer with data dependent initialization
기존 batch normalization이 해주는 역할과 비슷한데,, batch normalization은 한 processing unit 당 처리하는 minibatch size가 클수록 효과가 좋은데 큰 이미지에는 minibatch size를 크게 할 수 없으므로, actnorm layer를 사용하여 이를 극복하고자 했다.
한 채널의 activation에 scale , bias parameter 를 사용하는 것. 이 파라미터들은 평균이 0이고 unit variance가 data의 minibatch size와 같게 초기화가 된다. data dependent initialization의 한 종류.
3.2 Invertable 1x1 convolution
이전에는.. channel의 order을 바꿔서 permutation 하는 flow 를 사용했다면,, 이걸
invertable한 1x1 convolution 을 통해 fixed permutation을 수행하도록 대신하였다. weight matrix은 random rotation matrix로서 초기화된다. 1x1 convolution에서 input channel 과 output channel 이 같으면 permutation operation의 일반화가 되는 것.
Normalizing flow를 사용하려면 invertable 1*1 의 log determinant 가 필요한데, 이는
다음과 같이 구해줄 수 있다. $det(W)$ 를 구하는 cost 는 $O(c^3)$ 이다. conv2d를 그냥 써서 구하면 $O(h*w*c^2)$가 된다.
LU Decomposition
다음을 사용하면 computational cost를 $O(c)$ 까지로 줄일 수 있다. W에 LU Decomposition을 수행하는 건데,
가 된다. P는 permutation matrix, L은 lower triangular matrix. U는 upper triangular matrix 그리고 s는 vecot이다. 이를 사용하면 log-determinant 는 간단하게
다음으로 구할 수 있다. c 값이 크다면 computational cost 또한 커지겠지만, 저자들이 한 실험에서는 문제가 없었다고 한다.
3.3 Affine Coupling layer
RealNVP 에서 제안된 layer 인데, 다음과 같은 과정으로 tranformation이 이루어진다.
input을 xa, xb 로 나누고 첫번째 d dimension (xa)는 가만히 있고, xb에 affine tranformation을 해 준다. (scale and shift)
zero initialization
이 경우에 NN의 last convolution layer를 zero intialization해 주면, 각 affince coupling layer는 처음에는 identity function처럼 작동하는데, deep network 를 training 하는데 아주 좋다고 한다..
다음은 Glow의 flow와 reverse function, log determinant를 나타낸 표이다.
위의 flow들이 합쳐지고, multi scale architecture(RealNVP)가 적용되어서 다음과 같은 구조로 구성되었다고 한다.
4. Result
RealNVP 에 비해서 bit per dimension 결과이다.
이전 모델들에서 사용한 reverse /shuffle permuation에 비해서 1*1 convolution이 효과적임을 보여주는 NLL 그래프이다.
'딥러닝, 연구' 카테고리의 다른 글
[GLOW] Affine Coupling Layer (0) | 2021.04.30 |
---|---|
Set python3 as default in ubuntu (0) | 2021.04.28 |
Normalizing flow 설명 (0) | 2020.12.01 |
[논문리뷰] VAE(Auto-Encoding Variational Bayes) (0) | 2020.11.27 |
[논문리뷰] CGANS with Projection Discriminator (0) | 2020.11.23 |