목록분류 전체보기 (56)
개발자의 스터디 노트
1. MLP(다층 퍼셉트론)는 기본적인 신경망 구성 요소입니다. 첫 번째 단계는 입력 벡터입니다. 입력 벡터를 첫 번째 Linear 층이 은닉 벡터(hidden vector)를 계산합니다. 이 벡터가 두 번째 표현 단계입니다. 입력과 출력 사이에 있는 은닉층의 출력을 은닉 벡터라고 부르고 은닉 벡터의 값은 층을 구성하는 각 퍼셉트론의 출력이라고 이해해도 됩니다. 두 번째 Linear 층은 은닉 벡터를 사용해 출력 벡터(output vector)를 계산합니다. 다중 분류에서는 출력 벡터의 크기가 클래스 개수와 같습니다. 위 그림에서는 은닉층이 하나지만 중간 단계는 여럿일 수 있습니다. 단계마다 각각의 은닉 벡터를 만듭니다. 최종 은닉 벡터는 항상 Linear 층과 비선형 함수를 사용하여 출력 벡터에 매핑됩..
앞서 포스팅으로 학습까지 되었습니다. 학습하기 전에 우리는 학습 모델을 평가하기 위하여 테스트 데이터를 만들어 두었습니다. 이번에는 테스트 데이터로 모델을 평가해 보도록 하겠습니다. 1. 테스트 데이터로 평가하기 # 데이터로 평가하기 # 테스트 세트 평가 dataset.set_split('test') batch_generator = generate_batches(dataset, batch_size=args.batch_size, device=args.device) running_loss = 0. running_acc = 0. classifier.eval() for batch_index, batch_dict in enumerate(batch_generator): #출력을 계산합니다. y_pred = clas..
먼저 포스팅으로 훈련에 필요한 데이터를 로딩하고 가공하는 준비를 하였습니다. 이제부터는 앞에서 만들어 두었던 부품을 가지고 조립을 해보겠습니다. 주피터 노트북을 사용할 경우 앞서 포스팅의 소스파일에 이어서 작업하여야 합니다. 1. 훈련 준비 - args 매개변수로 훈련할 정보를 받아 데이터셋과 모델을 만듭니다. 그리고 마지막으로 손실 함수와 옵티마이저를 만듭니다. import torch.optim as optim import torch def make_train_state(args): return { 'epoch_index' : 0, 'train_loss' : [], 'train_acc' : [], 'val_loss' : [], 'val_acc' : [], 'test_loss' : -1, 'test_ac..
파이 토치에서 제공하는 데이터인 옐프 리뷰 데이터셋의 라이트 버전을 사용하여 퍼셉트론 분류기 학습을 준비합니다. 우선 리뷰 데이터를 아래의 경로에서 다운로드합니다. yelp_light | Kaggle yelp_light www.kaggle.com 라이트 버전인 reviews_with_splits_lite.csv 파일을 다운로드하였습니다. 우선 소스코딩에 필요한 패키지를 import 하겠습니다. from torch.utils.data import Dataset import pandas as pd from collections import Counter import string import torch.optim as optim import numpy as np import string 1. ReviewDat..
1. 모델 성능 올바르게 측정하기 : 평가지표 - 핵심 지도 학습 훈련 반복 이외에 가장 중요한 요소는 모델이 훈련에 사용하지 않은 데이터를 사용해 성능을 측정하는 것입니다. 모델은 평가지표를 하나 이상 사용해 평가됩니다. 가장 널리 사용하는 평가 지표는 정확도(accuracy)이며 이장에서도 사용합니다. 정확도는 훈련하는 동안 만나지 못한 데이터에 대해 올바르게 예측한 비율입니다. 2. 모델 성능 올바르게 측정하기 : 데이터 분할 - 훈련 데이터의 샘플뿐만 아니라 본 적 없는 분포의 샘플에서도 오차를 줄일 때 일반화가 잘된 모델이라고 말합니다. 모델이 훈련 데이터에서 손실을 낮출수록 진짜 데이터 분포에 없는 특징에 적응하여 '과대적합(overfit)'이 될 수 있습니다. - 좋은 일반화를 달성하려면 데..
지도 학습 훈련 순서는 데이터 생성 > 모델 선택 > 손실 함수 선택 > 최적화 알고리즘 설정 > 학습 실행의 순서를 가집니다. 1. 학습 데이터 생성 - 선형적으로 구분할 수 있는 예제 데이터 만들기, 이 분류 작업은 데이터 포인트가 지정된 클래스 중 어디에 속하는지 구별하는 작업입니다. 2. 모델 선택 - 학습 모델은 퍼셉트론을 사용합니다. 퍼셉트론은 어떤 크기의 입력도 다룰 수 있습니다. 일반적인 모델 구축 과정에서 입력 크기는 문제와 데이터에 따라 결정됩니다. 2차원 평면에 들어갈 데이터를 만들면 입력 크기는 2입니다. 클래스가 2 개 있는 문제를 위해 클래스에 인덱스 0과 1을 할당합니다. 출력이 0과 1이기 때문에 퍼셉트론의 활성화 함수는 시그모이드입니다. 퍼셉트론의 출력은 데이터 포인트(x)..
1. 퍼셉트론 : 가장 간단한 신경망 - 가장 간단한 신경망으로 생물학적 뉴런을 대략 본떠 만들었습니다. - 퍼셉트론 유닛에는 입력(x), 출력(y)과 3개의 다이얼이 있습니다. 가중치(w), 절편(b), 활성화 함수(f)입니다. 가중치와 절편은 데이터에서 학습됩니다. 활성화 함수(activation function)는 신경망과 타깃 출력을 기반으로 설계자의 직관에 따라 결정됩니다. 수학적으로 표현하면 아래와 같습니다. y = f(w * x + b) 일반적으로 퍼셉트론에는 입력을 하나 이상 사용합니다. 이런 일반적인 상황을 벡터로 표현할 수 있습니다. 즉 x와 w는 벡터이고 x와 w의 곱셈은 점 곱으로 바뀝니다. y=f(wx + b) f로 표시한 활성화 함수는 일반적으로 비선형 함수입니다. 선형 함수는 ..
1. 말뭉치, 토큰, 타입 1.1 말뭉치 - 고전이나 현대의 모든 NLP 작업은 말뭉치(corpus)라 부르는 텍스트 데이터로 시작합니다. 말뭉치는 일반적으로 원시 텍스트와 이 텍스트에 연관된 메타데이터를 포함합니다. 원시 텍스트는 문자 시퀀스지만 일반적으로 문자를 토큰(token)이라는 연속된 단위로 묶었을 때 유용합니다. 메타데이터는 식별자, 레이블, 타임스탬프 등 텍스타와 관련된 어떤 부가 정보도 될 수 있습니다. 머신러닝 분야에서는 메타데이터가 붙은 텍스트를 샘플(sample) 또는 데이터 포인트(data point)라고 부릅니다. 샘플의 모음인 말뭉치는 데이터셋(dataset)이라고 부릅니다. 2. 토큰화(tokenization) - 텍스트를 토큰으로 나누는 과정을 의미합니다. 2.1 텍스트 토..