저번 포스팅에서 모델 일반화(generalization)의 필요성과 일반화 중 어떤 방법이 있는지를 살펴보았다.[Machine Learning] 오버피팅(Overfitting), 언더피팅(Underfitting)의 개념 및 해결 방법위 글에서 오버피팅을 막기 위한 여러가지 방법을 소개했었다.개념은 이미 설명했으니 헷갈리기 쉬운 개념 하나만 짚은 다음 그 방법들이 얼마나 효과적인지 직접 테스트 해보자.Generalization와 Regularization의 차이점일반화(generalization)와 정규화(regularization)는 서로 연관되어 있지만 별개의 개념이다. 일반화는 훈련된 모델이 본 적이 없는 데이터, 즉 훈련 중에 사용되지 않은 데이터(예를 들어, 테스트 데이터)에 대해 모델의 기능을 ..
Convolutional Neural Network (CNN, 합성곱 신경망)컨볼루션 신경망(Convolutional Neural Network, CNN)은 이미지 분류, 객체 감지, 세분화와 같은 컴퓨터 비전 작업에 널리 사용되는 신경망이다.기존 신경망에서는 모든 입력 데이터가 1차원으로 평면화되어 신경망에 직접 입력된다.그러나 이런 접근 방식은 입력 데이터가 2D 또는 3D 구조를 갖는 이미지 또는 신호의 평면화 과정에서 원본 데이터의 구조적인 정보를 잃기 때문에 한계가 있다.이런 한계를 극복하기 위해 구조적인 데이터를 유지하면서 입력 데이터에서 중요한 특징을 효과적으로 학습하고 추출할 수 있는 CNN(컨볼루션 신경망)이 사용된다.Convolution 이란CNN은 컨볼루션이라는 연산을 사용한다.CNN..
이전 글에서는 0 또는 1, 개 혹은 고양이처럼 데이터를 두 가지로 분류하는 방법을 알아보았다.이번 글에서는 두 가지가 아니라 더 많은 클래스로 분류하는 방법인 Multinomial Logistic Regression 을 알아보자.Multinomial Logistic Regression\( k \) 개의 서로 겹치지 않는 카테고리가 있다고 하고 각 카테고리 \( i \)의 확률을 \( P(i) \)라고 하자.이제 \( k-1 \) 로지스틱 분류를 할 건데, 카테고리 \( 0 \)을 레퍼런스로 두고 레퍼런스 카테고리와 \( i \in [1, 2 \ldots k-1] \)의 카테고리를 비교해보자.비교를 위해 linear projection, 그러니까 \( \beta\cdot x \)을 로지스틱 함수 \( \..
이번 글에서 알아볼 주제는 Logistic Regression이다.먼저 예제를 통해 문제를 간단하게 알아보자.Logistic function먼저 logistic function을 알아보자.로지스틱 함수는 다음 함수를 말한다.Sigmoid function이라고도 부른다.흔히 "turn-on" 커브라고도 하는데 데이터를 두 종류로 분류할 때 쓰인다.데이터가 0인지 1인지, 개인지 고양이인지 구분할 때 사용한다.데이터가 어떤 모델에서 계산된 값이 있다고 하자.그 값이 위의 그래프에서 y값이 0.5 이상이면 1(혹은 개), 0.5 이하이면 0(혹은 고양이)으로 분류할 수 있다.즉, x축에서 0이상이면 분류를 1(혹은 개)로, 0이하이면 분류를 0(혹은 고양이)으로 하겠다는 이야기다. 이제 아래 데이터 분포를 생..
PyTorch을 사용해 선형 회귀(Linear Regression)을 구현해보자.먼저 PyTorch의 설치는 이전 포스팅을 참고하자.[PyTorch] m1 맥에 GPU 사용 Pytorch 설치 및 에러 해결 / ERROR: Could not find a version that satisfies the requirement torch먼저 필요한 라이브러리를 임포트하자.import torchimport matplotlib.pyplot as plt 이제 임의의 데이터셋을 만들어보자.x = torch.rand(100)# Calculate y = 3x + 2 + epsilony = 3*x + 2 + torch.rand(len(X))먼저 x는 100개의 0부터 1까지의 랜덤 넘버이고 y는 x에 3을 곱한 다음 2를..