본문 바로가기

전체 글

(85)
PyTorch로 GAN을 만들 때 detach()를 사용하는 이유 GAN을 구현할 때 netD(fake.detach())를 산다. 왜 이렇게 구현하는 것일까? ## 가짜 데이터들로 학습을 합니다 # 생성자에 사용할 잠재공간 벡터를 생성합니다 noise = torch.randn(b_size, nz, 1, 1, device=device) # G를 이용해 가짜 이미지를 생성합니다 fake = netG(noise) label.fill_(fake_label) # D를 이용해 데이터의 진위를 판별합니다 output = netD(fake.detach()).view(-1) # D의 손실값을 계산합니다 errD_fake = criterion(output, label) # 역전파를 통해 변화도를 계산합니다. 이때 앞서 구한 변화도에 더합니다(accumulate) errD_fake.bac..
Gradient 추적과 그것을 멈춰야 하는 이유 Gradient 추적 멈추기 기본적으로, requires_grad=True인 모든 텐서들은 연산 기록을 추적하고 gradient 계산을 지원한다. 그러나 모델을 test 할 때와 같이 forward 연산만 필요한 겨우, 이러한 추적이나 지원이 필요 없을 수 있다. 그럴 때에는 연산 코드를 torch.no_grad()을 사용하여 연산 추적을 멈출 수 있다. z = torch.matmul(x, w)+b print(z.requires_grad) # True with torch.no_grad(): z = torch.matmul(x, w)+b print(z.requires_grad) # False 동일한 결과를 얻는 다른 방법은 텐서에 detach() 메소드를 사용하는 것이다. z = torch.matmul(x,..
초거대 AI란 무엇인가? 초거대 AI(Hyper scale AI)란? 초거대 AI는 대량의 데이터를 슈퍼 컴퓨터를 활용해 매개변수를 늘려 AI에게 학습시키는 방식을 말한다. 초거대 AI가 주목을 받기 시작한 시점은 2020년 OpenAI에서 GPT-3가 공개되면서부터였다. 초거대 AI의 언어 능력 활용 사례 챗봇 구글의 LaMDA는 척하는 것이 가능한 챗봇이다. 명왕성 인척을 한다거나 비행기 인척을 해서 인간과 대화할 수 있다. 이 때문인지, 람다가 인지능력이 있다고 주장한 구글 직원이 해고되었던 사례가 있었다. META사는 BlenderBot3을 발표했고, 네이버는 하이퍼 클로바를 발표했다. 하이퍼 클로바는 한국어를 학습시켜서 한국어에 특화되어있고, 맥락을 이해하고 대화할 수 있다. 그러나 이런 기능들을 AI 스피커나 스마트폰..
Multi-Modal (멀티 모달) AI Multi-Modal AI는 무엇일까? 인류는 '사과'라는 개념을 이해하기 위해 시각, 미각, 촉각, 텍스트까지 여러 개념을 통합해서 인식을 한다. 그렇다면, AI는 어떻게 '사과'라는 개념을 받아들일까? 이왕이면 인간이 학습했던 방법으로 배워야 인간과 제대로 소통할 줄 아는 AI가 될 것이다. 그래서 등장한 것이 Multi Modality Modality는 어떤 형태로 나타나는 현상이나 그것을 받아들이는 방식을 말한다. 지금의 multi modal은 시각, 청각을 비롯한 여러 인터페이스를 통해서 정보를 주고받는 것을 말하는 개념이며, 이렇게 다양한 채널의 모달리티를 동시에 받아들여서 학습하고 사고하는 AI를 Multi Modal AI라고 한다. 쉽게 말하면, 인간이 사물을 받아들이는 다양한 방식과 동일..
Semantic segmentation에서 입력 데이터 전처리 하는 방법 Semantic segmentation이란? 이미지에 무엇이 있으며, 어디에 있는지 레이블링을 하는 것이다. Labeling을 하는 방법 입력으로 들어가는 RGB 이미지의 shape은 (H x W x 3)이다. 그리고 semantic segmentation model을 통과해서 나온 결과 이미지의 shape은 (H x W x 1)이다. 그래서 데이터 전처리를 하는 방법은? Semantic Segmentation 모델도 Supervised Learning을 하기 때문에, 입력으로 이미지와 그에 해당하는 segmented map을 넣어야 한다. Semgented map은 앞에서 설명했듯이 shape이 (H x W x 1)이다. 그리고 각 픽셀은 클래스를 나타낸다. Segmented map을 모델에 넣기 위해..
Convolutional Neural Networks 기초 CNN (Convolutional Neural Networks) 구조 Convolution(합성곱) Layer 이미지는 높이 x 너비 x 채널의 3차원 텐서로 표현될 수 있다. RGB 이미지의 경우, 채널은 3이 된다. Filter 하나의 합성곱 계층에는 입력 이미지의 채널 개수만큼 필터가 존재한다. 채널이 3이면 필터의 개수도 3이 되는 것이다. 각 채널에 할당된 필터를 적용함으로써 합성곱 계층의 출력 이미지가 생성된다. Stride 이미지에 필터를 적용할 때는 필터의 이동량을 의미하는 스트라이드를 설정해야 한다. 스트라이드가 1이면 필터가 1칸씩, 2이면 필터가 2칸씩 이동한다. 스트라이드 값이 커질수록 입력 이미지를 훑는 횟수가 적어지므로 결과 feature map의 크기는 작아진다. Padding..
Few-Shot Learning Few-Shot Learning이란? Few shot learning은 Meta learning의 한 종류이고, 목적은 "배우는 법을 배우는 것"이다. 전통적인 딥러닝 모델은 호랑이와 토끼를 구분하기 위해 호랑이 이미지 1000장, 토끼 이미지 1000장이 있어야 할 것이다. 그러나 Few shot learning은 호랑이와 토끼를 "구분하는 법"을 배운다. 그래서 호랑이 이미지와 토끼 이미지가 학습 데이터셋에 없어도 호랑이 이미지를 주었을 때 "호랑이"라고 맞출 수 있다. Few shot learning을 하려면 Training set, Support set, Query image가 필요하다. Training set을 통해 "구분하는 법을 배우"고, Query image가 들어왔을 때 Support s..
FID (Frechet Inception Distance) 란 무엇인가? Frechet Inception Distance란 무엇일까? FID는 실제 이미지와 생성된 이미지가 얼마나 유사한지 계산하는 메트릭이다. 이 점수가 낮을수록 두 그룹의 이미지(Real & Fake) 또는 통계가 유사하다는 뜻이다. 그래서 점수가 낮을수록 좋은 것이다. FID는 GAN에 의해 생성된 이미지의 quality를 평가하는데 사용된다. FID는 왜? 어떻게? 개발되었을까? FID는 "GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium"이라는 논문에서 처음 제안되었고, 기존에 있던 IS(Inception Score)를 개선시키기 위해 오직 GAN의 성능 평가를 위해 특별히 개발되었다. Inception S..