theory

머신러닝 모델을 학습시키는 과정엔 다양한 하이퍼파라미터가 있다.그 중에서도 배치 사이즈(batch size)는 중요한 역할을 한다.이번 포스팅에서는 배치 사이즈가 무엇이고 배치 사이즈를 작게 하거나 크게 했을 때의 효과를 예시 코드를 통해 알아보자.그리고 배치 사이즈를 어떻게 선택해야하는지도 알아보자.Batch size (배치 사이즈)배치 사이즈는 머신러닝에서 모델을 훈련시킬 때 사용되는 데이터의 묶음 크기를 나타내는 개념이다.훈련 데이터셋을 작은 묶음으로 나누어 모델에 순차적으로 제공하는 방식을 사용하는데, 이때 각 묶음의 크기가 바로 배치 사이즈이다. 배치 사이즈는 주로 확률적 경사 하강법(SGD) 및 미니 배치 경사 하강법과 같은 최적화 알고리즘에서 사용된다.이 방법은 전체 데이터셋을 한 번에 처리..
이전 포스팅에서 이항계수를 계산할 때 재귀함수를 사용하는 방법과 약간의 문제점을 살펴봤다. [Python] 재귀 함수와 예제(팩토리얼, 이항계수 계산)재귀 함수 재귀 함수는 함수가 자기 자신을 호출하는 프로그래밍 기법이다. 이는 어떤 문제를 해결할 때 그 문제를 더 작은 부분 문제로 나누고, 각 부분 문제를 해결함으로써 전체 문제를 해결dykm.tistory.com 재귀 함수를 사용한 이항계수를 구하는 코드와 문제점은 다음과 같다.class BinomialCoefficientCalculator: def calculate(self, n, k): # 기저 조건: k가 0이거나 k가 n과 같을 때 if k == 0 or k == n: return 1 ..
재귀 함수재귀 함수는 함수가 자기 자신을 호출하는 프로그래밍 기법이다.이는 어떤 문제를 해결할 때 그 문제를 더 작은 부분 문제로 나누고, 각 부분 문제를 해결함으로써 전체 문제를 해결하는 방법이다.재귀 함수는 일반적인 반복문 대신에 사용되며, 특정 문제를 더 간단하게 해결하기 위해 적합한 경우가 많다. 재귀 함수를 사용할 때 주의해야 할 몇 가지 중요한 점이 있다. 기저 조건(또는 종료 조건)재귀 함수는 무한히 호출되는 것을 방지하기 위해 함수가 종료되는 조건을 가져야 한다.기저 조건은 함수가 더 이상 자기 자신을 호출하지 않고 종료되는 지점을 말한다.스택 사용재귀 함수는 호출 스택을 사용한다.각 재귀 호출은 스택에 쌓이고 종료 조건에 도달하면 스택에서 제거된다.하지만 이러한 스택 사용은 메모리 소비에..
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 ..
저번 포스팅에서 모델 일반화(generalization)의 필요성과 일반화 중 어떤 방법이 있는지를 살펴보았다.[Machine Learning] 오버피팅(Overfitting), 언더피팅(Underfitting)의 개념 및 해결 방법위 글에서 오버피팅을 막기 위한 여러가지 방법을 소개했었다.개념은 이미 설명했으니 헷갈리기 쉬운 개념 하나만 짚은 다음 그 방법들이 얼마나 효과적인지 직접 테스트 해보자.Generalization와 Regularization의 차이점일반화(generalization)와 정규화(regularization)는 서로 연관되어 있지만 별개의 개념이다. 일반화는 훈련된 모델이 본 적이 없는 데이터, 즉 훈련 중에 사용되지 않은 데이터(예를 들어, 테스트 데이터)에 대해 모델의 기능을 ..
아니그니까
'theory' 태그의 글 목록