반응형

pytorch 5

RNN이 오래 기억하지 못하는 이유: 기울기 소실과 LSTM·GRU

지난 글에서는 CNN이 이미지의 공간 구조를 어떻게 다루는지 살펴보았습니다. 커널을 이미지 위로 미끄러뜨리며 국소 패턴을 잡아내고, 같은 커널을 모든 위치에서 재사용해 파라미터를 아끼는 방식이었습니다.그런데 우리가 다루는 신호 중에는 이미지처럼 한눈에 펼쳐 놓을 수 없는 것들이 많습니다. 음성은 시간에 따라 흘러가고, 문장은 앞에서 뒤로 읽히며, 센서 데이터는 계속 쌓입니다. 이런 데이터에는 CNN이 곧바로 대응하기 어려운 두 가지 성질이 있습니다.첫째, 순서가 의미를 바꿉니다. "철수가 영희를 불렀다"와 "영희가 철수를 불렀다"는 완전히 같은 단어들로 이루어져 있지만 뜻이 정반대입니다. 단어들을 그저 모아서 평균을 내는 방식으로는 이 차이를 절대 구분할 수 없습니다.둘째, 길이가 제각각입니다. 어떤 문..

CNN: 학습되는 2차원 FIR 필터 — 컨볼루션 신경망의 커널과 텐서 Shape

이미지 인식 분야에서 딥러닝이 급격하게 발전할 수 있었던 배경에는 여러 가지 요소가 있지만, 그 중심에는 Convolutional Neural Network(CNN)가 있었습니다. CNN은 단순히 이미지에 Convolution 연산을 적용하는 신경망을 의미하지 않습니다. 핵심은 이미지가 가진 공간적 구조(Spatial Structure)를 신경망의 구조 자체에 반영하고, 동일한 필터를 이미지 전체에 공유하면서 필요한 특징을 계층적으로 학습한다는 데 있습니다.오늘날에는 Vision Transformer(ViT)와 같은 Transformer 기반 모델이 컴퓨터 비전의 중요한 축을 이루고 있지만, CNN이 만들어 놓은 구조적 아이디어는 여전히 중요합니다. 실제로 현대의 비전 모델에서도 Convolution은 ..

VQGAN: 지각 손실과 트랜스포머로 완성한 고해상도 이미지 생성

지난 포스팅에서 우리는 PixelCNN을 통해 픽셀을 하나씩 차례대로 예측하는 자기회귀(Autoregressive) 생성 모델의 작동 원리를 살펴보았습니다. VQ-VAE가 만들어 놓은 이산적인 잠재 공간(Latent Space) 위에 PixelCNN을 얹어 새로운 숫자를 직접 생성해 내는 과정은 생성 AI의 본질을 관통하는 짜릿한 경험이었습니다.하지만 MNIST와 같은 작고 단순한 이미지가 아니라, 고해상도의 풍경이나 정교한 인물 사진을 다루게 되면 곧 두 가지 벽에 부딪힙니다. 첫째, 픽셀 수가 폭발합니다. 256×256 컬러 이미지는 19만 개가 넘는 서브픽셀을 가지므로, 한 픽셀씩 순차 생성하면 현실적인 시간 안에 끝나지 않습니다. 둘째, 픽셀 단위 복원 손실(MSE 등)을 사용하는데, 이 MSE는..

PixelCNN: 픽셀을 하나씩 그리는 자기회귀 이미지 생성 모델

지난번 발행했던 "VQ-VAE 이후: 이산 토큰 위의 생성 모델" 개괄편을 통해 우리는 데이터의 압축을 넘어 실제 새로운 이미지를 창조해 내는 사전 분포 모델(Prior Model)의 역할과 전체적인 발전 흐름을 조망하면서, VQ-VAE가 만든 이산 코드 위에 작은 PixelCNN을 얹어 새 숫자를 생성했습니다. 그때 PixelCNN은 "코드의 분포를 학습하는 자기회귀 모델"로 짧게 소개했을 뿐, 그 안에서 무슨 일이 벌어지는지는 자세히 들여다보지 않았습니다. 사실 PixelCNN은 잠깐 빌려 쓰고 지나칠 부품이 아니라, 그 자체로 깊이 살펴볼 가치가 있는 생성 모델입니다.PixelCNN은 이미지를 한 픽셀씩 차례대로 그려 나가는 모델입니다. 이미 그린 픽셀들을 보고 다음 픽셀의 확률을 예측하고, 그 확..

VQ-VAE: 벡터 양자화로 학습하는 이산 잠재 표현, 그리고 생성 AI의 초석

벡터 양자화에 대해 두 편의 글을 먼저 살펴보았습니다. 한 편에서는 벡터 양자화의 이론을, 다른 한 편에서는 이미지 압축에 적용하는 방법을 다루었습니다. 두 글에서 공통적으로 등장했던 핵심 개념은 "연속적인 벡터를 유한한 코드북(Codebook) 안의 가장 가까운 대표 벡터로 바꾸어 표현한다"는 것이었습니다. 그리고 그 코드북은 LBG 알고리즘이나 k-means 같은 군집화 기법으로, 양자화 대상이 되는 데이터와는 별개로 미리 만들어 두는 것이 일반적이었습니다.여기서 자연스럽게 떠오르는 질문이 하나 있습니다. 양자화할 대상이 되는 특징 벡터 자체를 신경망이 학습하게 하고, 코드북까지도 그 신경망과 함께 처음부터 끝까지(end-to-end) 동시에 학습시킬 수는 없을까 하는 것입니다. 즉, 무엇을 양자화할..

반응형