Pytorch

    딥러닝 과적합 문제, 성능 저하 문제, 경사 하강법 유형, 기울기 소실과 폭주

    딥러닝 과적합 문제, 성능 저하 문제, 경사 하강법 유형, 기울기 소실과 폭주

    Overfitting Problem 딥러닝에서 활성화 함수가 적용된 은닉층 개수가 많을수록 데이터 분류가 잘 된다. 하지만 훈련데이터를 과하게 학습하여 과적합이 발생될 수 있다. 예측 값과 실제 값 차이인 오차가 감소하지만 , 검증 데이터에 대해서는 오차가 증가하는 것이다. 과적합을 방지하는 방법에는 무엇이 있을까? 1. 데이터의 양을 늘린다 만약 데이터의 양이 적을 경우에는 의도적으로 기존의 데이터를 조금씩 변형하고 추가하여 데이터의 양을 늘리는 Data Augmentation을 적용하기도 한다. 이미지의 경우에 이미지를 돌리거나 노이즈를 추가하는 등의 방법으로 데이터를 증식시킴 2. 모델의 복잡도를 줄인다 ex) 선형 레이어(linear layer)의 수를 줄임 3. 가중치 규제 적용 L1 규제 : ..

    퍼셉트론과 딥러닝, 활성화 함수, 손실 함수, 순전파와 역전파

    퍼셉트론과 딥러닝, 활성화 함수, 손실 함수, 순전파와 역전파

    들어가기 전에, *하이퍼 파라미터와 매개변수의 차이점 하이퍼 파라미터 - 사용자가 직접 정해줄 수 있는 변수 ex) 경사하강법에서 learning rate, 딥러닝에서 은닉층의 수, 뉴런의 수, 드롭아웃 비율 매개변수 - 모델이 학습하는 과정에서 얻어지는 값 , 기계가 훈련을 통해서 바꾸는 변수. 훈련용 데이터로 훈련을 모두 시킨 모델은 검증용 데이터를 사용하여 정확도를 검증하며 하이퍼 파라미터를 튜닝한다. 또한 이 모델의 매개변수는 검증용 데이터로 정확도가 검증되는 과정에서 점차 검증용 데이터에 점점 맞추어진다. 하이퍼 파라미터 튜닝이 끝났다면, 검증용 데이터가 아닌 새로운 데이터로 모델에 대한 평가를 진행한다. 하나의 데이터, 하나의 행을 샘플이라고 부름. 퍼셉트론 오늘날 인공 신경망에서 이용하는 구..

    MNIST 분류 by softmax regression

    MNIST 분류 by softmax regression

    import torch import torchvision.datasets as dsets import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn as nn import matplotlib.pyplot as plt import random random.seed(777) torch.manual_seed(777) training_epochs = 15 batch_size = 100 mnist_train = dsets.MNIST(root='MNIST_data/', train=True, transform=transforms.ToTensor(), download=True) mnist_test =..

    SoftMax Regression

    SoftMax Regression

    소프트맥스 회귀 선택지 개수만큼의 차원을 가지는 벡터 생성, 그 벡터가 각 벡터의 모든 원소 합이 1이 되도록 원소들의 값 변환 시키는 어떤 함수 지니게 만들어야함. 분류하고자 하는 클래스가 k개일 때, k차원의 벡터를 입력 받아서 모든 벡터 원소의 값을 0과 1 사이의 값으로 값 변경 후에 다시 k개의 벡터 리턴. 소프트맥스 함수의 입력으로 사용되는 벡터는 벡터의 차원이 분류하고자 하는 클래스 개수가 되어야 하므로 가중치 연산을 통해서 3차원 벡터로 변환되어야 함. 이때 가중치 곱을 진행한다. 이러한 과정으로 소프트맥스 함수의 입력으로 바꾼다. 오차 계산은 어떻게 할까? 그 전에 소프트맥스 함수의 출력은 어떠한 형태를 띄고 있는지 확인 해야한다. 소프트맥스 함수의 출력은 분류하고자 하는 클래스 개수만큼..

    Logistic Regression

    Logistic Regression

    logistic regression : Binary Classification을 풀기 위한 대표적인 알고리즘 로지스틱 회귀의 가설 그래프는 S자 모양. 이러한 관계를 표현하기 위한 가설 : H(x) = f(Wx + b) 이때 시그모이드 함수 f를 사용한다. *cf) Sigmoid 함수 출력값을 0과 1 사이 값으로 조정 -> 분류 작업에 사용 가능 W값이 클 수록 경사가 커지고 W가 작아지면 경사가 작아짐. b값에 따라 그래프가 좌,우로 이동한다. 로지스틱 회귀 cost fuction 선형회귀와 같이 MSE를 사용하면 안된다. 왜? 비용함수를 미분하면 심한 비볼록 형태 그래프 나옴. 이러한 구불구불한 형태의 그래프에 경사 하강법을 사용할 경우 문제점 -> 경사 하강법이 오차가 최솟값이 되는 구간에 도착했..

    Mini Batch and Data Load

    Mini Batch and Data Load

    Mini Batch 전체 데이터를 더 작은 단위로 나누어서 해당 단위로 학습하는 개념 미니 배치 학습 시, 미니 배치만큼 가져가서 그에 대한 비용(cost)를 계산하고 경사하강법 수행한다. 그리고 그 다음 미니 배치를 가져가서 경사 하강법을 사용하고 마지막까지 이를 반복. 이렇게 전체 데이터에 대한 학습 1회 끝나면 -> 1 Epoch DONE *Epoch(에포크) : 전체 train data가 학습에 한번 사용된 주기를 말함 *미니 배치 경사 하강법은 전체 데이터의 일부만을 보고 경사 하강법을 수행하므로 최적값으로 수렴하는 과정에서 값이 조금 헤매기도 하지만 training 속도가 빠름 *Iteration : 한 번의 에포크 내에서 이루어지는 매개변수인 W와 b의 업데이트 횟수. Data Load fr..