고양이 이미지를 학습해서 새로운 고양이 이미지를 만들어주는 GAN을 제작해보자.만들기 전에 GAN에 대한 설명과 예시는 아래 링크를 참조하자.이 글에서 catGAN은 카테고리 GAN이 아니라 고양이 GAN이다.PyTorch로 GAN 구현하기PyTorch로 DCGAN 구현하기1. 데이터 준비Kaggle에서 데이터를 받아올 것이다.이 링크를 통해 이미지를 다운받거나 아래 명령어를 터미널에 복사해서 붙여 넣고 실행하자.curl -L -o ~/Downloads/archive.zip https://www.kaggle.com/api/v1/datasets/download/spandan2/cats-faces-64x64-for-generative-modelscURL을 사용하려 할 때, Kaggle API가 설정되어있지 ..
데이터 전처리 (Data Preprocessing)데이터 전처리는 머신러닝 모델을 훈련하기 전에 데이터를 준비하는 과정이다.전처리를 거치지 않은 원시(raw) 데이터는 머신러닝 모델 학습에 적합한 형태로 되어 있지 않기 때문에 데이터 전처리 과정이 필요하다.이 과정은 데이터를 분석하고 정제하여 모델이 이해할 수 있는 형태로 변환하는 것을 포함한다.데이터마다 특성이 다르기 때문에 데이터 전처리 과정은 데이터마다 다르지만 보통 다음과 같은 과정을 따른다.데이터 수집 (Data Collection):프로젝트 목적에 맞는 데이터를 수집한다. 이는 주로 데이터베이스, 파일, API, 웹 크롤링 등을 통해 이루어진다.데이터의 양과 품질을 고려하여 데이터를 수집하고 필요한 경우 데이터를 정제한다.데이터 탐색 및 이해..
머신러닝 모델을 학습시키는 과정엔 다양한 하이퍼파라미터가 있다.그 중에서도 배치 사이즈(batch size)는 중요한 역할을 한다.이번 포스팅에서는 배치 사이즈가 무엇이고 배치 사이즈를 작게 하거나 크게 했을 때의 효과를 예시 코드를 통해 알아보자.그리고 배치 사이즈를 어떻게 선택해야하는지도 알아보자.Batch size (배치 사이즈)배치 사이즈는 머신러닝에서 모델을 훈련시킬 때 사용되는 데이터의 묶음 크기를 나타내는 개념이다.훈련 데이터셋을 작은 묶음으로 나누어 모델에 순차적으로 제공하는 방식을 사용하는데, 이때 각 묶음의 크기가 바로 배치 사이즈이다. 배치 사이즈는 주로 확률적 경사 하강법(SGD) 및 미니 배치 경사 하강법과 같은 최적화 알고리즘에서 사용된다.이 방법은 전체 데이터셋을 한 번에 처리..
Optuna 소개Optuna는 머신러닝용 하이퍼파라미터 최적화 프레임워크이다.하이퍼파라미터 최적화의 중요성은 아래 링크를 통해 확인하자.[Machine Learning] Hyperparameter Tuning on PyTorch (하이퍼파라미터 튜닝) 개념과 방법 [Machine Learning] Hyperparameter Tuning on PyTorch (하이퍼파라미터 튜닝) 개념과 방법Hyperparameter 머신 러닝에서 Hyperparameter는 모델이나 알고리즘을 제어하는 변수이다. 이러한 변수는 모델의 학습 과정을 제어하며, 모델의 성능에 큰 영향을 미친다. 예를 들어, neural network에서 하dykm.tistory.com Optuna는 주어진 모델 아키텍처 및 데이터 세트에 대해..
GAN(Generative Adversarial Networks)은 실제 데이터와 매우 유사한 가짜 데이터를 생성하는 데 사용되는 딥러닝 알고리즘이다.GAN은 두 개의 네트워크 즉, Generator(생성기)와 Discriminator(판별기)으로 구성된다.Generator는 가짜 데이터를 생성하고 Discriminator는 데이터가 진짜인지 가짜인지 구분한다.제네레이터는 디스크리미네이터를 속일 수 있는 데이터를 생성하도록 훈련되고 디스크리미네이터는 실제 데이터와 가짜 데이터를 구별하도록 트레이닝된다. GAN은 사실적인 이미지나 비디오 등 학습한 데이터와 유사한 데이터를 생성하는 데 효과적이다.하지만 이런 GAN도 부족한 점이 있다.GAN의 한계는 생성된 데이터의 속성을 제어하는 능력이 부족하다는 것이다..
지난 글에서 아무 기술이 들어가지 않은 Vanilla GAN을 살펴보았다.GAN에 대한 설명은 다 지난 글에서 다뤄봤으니 바로 본론으로 넘어가자. 오늘은 간단한 기술을 하나 추가한 GAN을 살펴보자.참고로 추가할 기술은 이미지 처리에 적합한 convolution이다.DCGAN (Deep Convolutional GAN)본 블로그에서 CNN에 대해 다뤘던 적이 있다.CNN은 이미지의 구조적인 정보를 해치지 않기 때문에 이미지 처리에 적합한 네트워크라고 설명했었다. 이번에는 CNN을 GAN에 적용해서 이미지 판별 및 이미지 생성에 적합한 GAN을 제작해보자.즉 Discriminator와 Generator을 다중 퍼셉트론이 아닌 CNN을 사용한다는 이야기이다. 이미 우리는 CNN와 GAN을 모두 알고 있으니 ..
지금까지 살펴본 대부분의 머신러닝은 타겟을 예측하는 방법에 대한 내용이었다.이런 종류의 학습을 discriminative learning이라고 하는데 classifier(분류기)나 regressor(회귀기?) 모두 discriminative learning의 한 종류이다.그리고 이런 종류의 학습은 모두 정답이나 레이블이 제공되는 지도학습(supervised learning)이라고 불린다. 하지만 머신 러닝에는 데이터의 레이블이 없이 학습을 하는 비지도 학습(Unsupervised learning)도 있다.오늘 살펴볼 GAN(Generative Adversarial Network)은 비지도 학습에 혁명을 일으킨 신경망이다.2014년 Ian Goodfellow가 소개한 GAN은 두 개의 신경망을 동시에 훈련..
지난 번에 RNN을 살펴보았다. RNN(Recurrent Neural Network)은 한 단계의 출력이 다음 단계의 입력으로 피드백 되어 순차적 데이터를 처리합니다.이를 통해 RNN은 보통 시계열 데이터의 시간적 특징을 파악하고 과거 컨텍스트를 기반으로 출력을 뱉는다.하지만 RNN은 이전 입력에 대한 중요한 정보를 쉽게 잊어버릴 수 있다는 단점을 가지고 있다. 이번 포스팅에서는 이런 RNN을 대신할 LSTM(Long Short-Term Memory)에 대해 알아보자. LSTM에 대한 아주 디테일한 내용과 수학이 궁금하다면 https://blog.floydhub.com/long-short-term-memory-from-zero-to-hero-with-pytorch/을 방문해보자.LSTM 개요LSTM(Lo..
본 블로그의 Machine Learning 카테고리에서는 주로 이미지를 처리하는 내용을 다루었다.각각의 이미지 데이터는 하나의 독립적인 데이터였다.하지만 이런 패러다임에 맞지 않는 데이터는 어떻게 처리할 수 있을지 생각해보자.텍스트로 이루어진 문장은 짧거나 길어질 수도 있고, 그 사이의 단어는 문맥이나 의미를 바꿀 수 있다.자율 주행 자동차가 인식하는 주변 환경에 대한 비디오는 다른 자동차나 사람의 궤적을 찾고 예측해야 한다.이때 시퀀스(sqeuences)라는 개념이 등장한다.SequencesSequences(시퀀스)는 특정 순서로 배열된 데이터 포인트 집합을 말한다.말이 어렵지 사실 자연어 처리에서 시퀀스의 개념을 간단히 이해할 수 있다.자연어 처리에서 시퀀스는 문장이나 단락이다.이때 각 단어가 데이터..
기존 네트워크의 한계 및 Residual Network의 등장기존에 우리가 살펴본 머신 러닝 모델에는 여러 레이어를 배열해서 데이터가 그 레이어들을 통과하도록 설계하였다.하지만 이런 모델은 레이어의 깊이가 깊어질수록 몇 가지 문제가 발생한다.위의 예를 살펴보자. (출처: https://arxiv.org/abs/1512.03385)20개 및 56개의 레이어가 있는 vgg 스타일의 네트워크에 대한 트레이닝 커브를 보자.56개의 레이어가 있는 모델은 capacity가 더 큼에도 불구하고 20 레이어보다 나쁜 성능을 보여주고 있다.이것은 네트워크의 깊이가 깊어지면 발생하기 쉬운 현상으로 Vanishing Gradient Problem(기울기 소실 문제) 등의 문제들이 원인이다.Vanishing Gradient ..