티스토리 뷰

  • Maximum Likelihood Estimation (최대 가능도 추정, 최대 우도 추정)

> 어떤 확률변수에서 뽑은 표본(x)을 바탕으로 theta를 추정하는 방법

image

> 압정을 던졌을 때 두 가지 가능성이 있다. (Class1, Class2) - 이항분포

> 100번을 던졌을 때 Class1 27번 나타남

image

> Observation값들을 대입을 하게 된다면 theta 대한 함수로 표현이 가능하다.

> theta: 압정의 확률분포를 결정하는 파라미터

image

> 관찰한 데이터를 가장 잘 설명하는 어떤 확률분포 함수의 parameter를 찾아내는과정

> theta가 0.27일때 Likelihood가 가장 높다.

image

> Gradient Ascent를 통해서 Likelihood가 최대가 되는 theta를 찾는다.

> Gradient descent는 Gradient을 빼주지만, Gradient Ascent는 Gradient를 더해준다. image에 있는 식은 Grdient descent의 예


  • Overfitting(과적합)

image

> 주어진 데이터에 대해서 과도하게 fitting된 현상

> 새로운 데이터가 들어오게 되었을 때 정확한 분류가 어려워지는 현상이 발생합니다. (주어진 데이터에 대해서만 잘 분류할려고한다.)

image

> Overfitting을 방지하기 위해서 data를 training set(0.8), validation set(0~0.1), test set(0.1~0.2)으로 나눈다.

  • Training set - Model 학습
  • Validation set – hyper parameter tuning
  • Test – 최종 검증

image

> Validation loss가 가장 작은 지점을 가진 모델을 선택한다.


  • Overfitting 여러 해결방안

    • More data : 데이터를 적게 모을수록 실제 분포에서 편향된 데이터를 얻을 가능성이 높다. 데이터를 많이 모을수록 실제 분포에 가까워진다.

    • Less features

    • Regularization

      • Early stopping : validation loss가 더 이상 낮아지지 않을 때 까지 학습진행

      • Reducing Network Size : neural network size 줄이기, 학습하는 크기를 줄이는 것

      • Weight Decay : weight parameter 크기를 제한

      • Dropout

      • Batch Normalization


  • Learning rate

image

> Learning rate를 조절하면 Gradient가 움직이는 크기를 조절을 한다.

> learning rate가 크다면 수렴하지 못하고 발산하게 되어서 cost가 늘어난다.

> learning rate가 작다면 cost가 거의 줄어들지 않는다


  • Epoch / Batch size / Iteration

Epoch :

> 전체 training dataset을 한번 학습하였을 시, 1 Epoch이 진행되었다고 한다.


Batch size :

>전체 training dataset을 한꺼번에 학습시키면 학습속도가 느리고 많은 메모리를 잡아먹는다.

> Batch size를 정해 Training dataset을 나누어 학습이 바람직하다.

Ex) training set = 60000 , batch size = 100, batch의 개수 600개


Iteration :

> batch를 학습에 사용한 개수

Ex) training set = 1000, batch size =500, 2batch, 2iteration to 1 epoch


  • 기타 코드 정리

IN[1]

mnist_train = dsets.MNIST(root='MNIST_data/', train = True, transform=transforms.ToTensor(), download=True)
mnist_test = dsets.MNIST(root='MNIST_data/', train = False, transform=transforms.ToTensor(), download=True)

> ToTensor() : img파일(0-255)(H, W, P) Pytorch.Tensor(0-1)(C, H, W)로 바꾸어주는 명령어


IN[2]

data_loader = torch.utils.data.DataLoader(dataset=mnist_train, batch_size=batch_size, shuffle = True, drop_last=True)

> Shuffle = True : 데이터를 불러올 때 무작위로 섞어서 불러온다.

> drop_last = True : batch_size만큼 잘라서 데이터를 불러올 때 숫자가 맞지 않는 남는 데이터는 버린다




참고링크:

[PyTorch] Lab-07-1 Tips

[PyTorch] Lab-07-2 MNIST Introduction

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함