AI 63

HuggingFace Trainer로 모델 학습 및 평가하기

HuggingFace Trainer는 PyTorch와 같은 딥러닝 프레임워크에서 모델을 학습하기 위한 편리한 인터페이스를 제공하는 파이썬 라이브러리이다. Trainer 클래스와 TrainingArguments 클래스는 Trainer를 사용하여 모델을 학습시키기 위한 설정과 제어를 담당하는 중요한 클래스들이다. 이 두 클래스를 통해 모델 학습의 다양한 설정을 조정하고, 학습 과정을 관리할 수 있다. Trainer 클래스 Trainer 클래스는 모델의 학습을 관리하고 제어하는 클래스로, transformers 라이브러리에서 제공되는 핵심 클래스 중 하나이다. Trainer 클래스를 사용하면 모델 학습에 필요한 다양한 기능들을 활용할 수 있다. 주요 속성 model: 학습할 모델 객체. PyTorch와 같은 ..

AI/기타 2023.04.18

WandB(Weights & Biases)로 하이퍼 파라미터 튜닝하기

모델의 성능을 개선하기 위해 다양한 하이퍼 파라미터를 조정하고, 여러 번의 실험을 반복하며 모델의 동작을 이해하는 것은 필수적이다. 이를 위해 Weights & Biases(WandB)라는 도구를 사용하면 효과적으로 모델 실험을 관리하고 하이퍼 파라미터 튜닝을 할 수 있다. 이번 글에서 WandB에 대한 간략한 소개와, PyTorch 프레임워크에서 WandB Sweep을 사용하는 방법에 대해 알아보자. WandB(Weights & Biases)란? WandB(Weights & Biases)는 머신러닝 실험 관리를 위한 오픈소스 도구로, 실험의 결과와 메트릭을 추적하고 시각화하는 기능을 제공한다. 또한, 하이퍼파라미터 튜닝을 위한 Sweep 기능을 제공하여 자동화된 하이퍼파라미터 검색을 수행할 수 있다. ..

AI/기타 2023.04.18

[Deep Learning] LSTM을 직접 구현해보자!

LSTM Cell 위 그림은 LSTM Cell의 구조이다. LSTM의 Cell을 구현한 코드는 아래와 같다. from typing import Optional, Tuple import torch from torch import nn class LSTMCell(nn.Module): def __init__(self, input_size: int, hidden_size: int): super().__init__() self.hidden_lin = nn.Linear(hidden_size, 4 * hidden_size) self.input_lin = nn.Linear(input_size, 4 * hidden_size, bias = False) def forward(self, x: torch.Tensor, h: t..

AI/Deep Learning 2023.03.29

[논문 리뷰] Sequence to Sequence Learning with Neural Networks

논문이 다루는 Task 본 논문에서는 LSTM을 활용해 높은 정확도로 입력 sequence가 주어졌을 때, 그에 상응하는 출력 sequence를 생성해내는 아키텍쳐를 제안하고, 이를 기계 번역 task에 사용한다. 기존 연구 한계 DNN (Deep Neural Network) DNN은 입력 벡터와 출력 벡터의 차원이 고정적이다. 따라서, 출력 벡터의 차원(출력 sequence의 길이)를 사전에 알기 힘든 Seq2Seq task에는 적합하지 않다. RNN (Recurrent Neural Network) 일반적으로 sequence 학습을 위해서는 RNN을 활용한 encoder와 decoder 구조를 사용한다. 그러나 이 방법은 long-term dependency 문제로 인해 이전의 정보들이 뒤로 갈수록 보..

AI/논문 리뷰 2023.03.28

[Deep Learning] RNN의 구조

sequential data를 처리하기 위한 모델인 RNN(Recurrent Neural Network)에 대해 알아보자. Sequential Model Naive sequence model Autoregressive model Markov model Latent autoregressive model RNN (Recurrent Neural Network) The problem of long-term dependencies RNN 구조에서는 먼 과거에 대한 정보가 잘 고려되지 않는 문제점이 있다. LSTM (Long Short Term Memory) RNN 구조의 한계인 long-term dependency 문제를 해결하기 위해 등장했다. previous cell state cell 밖으로 나가지 않는 정..

AI/Deep Learning 2023.03.24

[Deep Learning] modern CNN의 특징

ILSVRC라는 Visual Recognition Challenge와 대회에서 수상을 했던 4개의 Network의 특징에 대해 알아보자. VGGNet convolution filter의 크기를 가장 작은 크기인 3x3으로 고정시켜 모델의 layer를 깊게 만들고, 파라미터의 수는 상대적으로 적게 줄였다. 3x3 filter로 두번 convolution 연산하는 것과 5x5 filter로 한번 convolution 연산하는 것은 같은 크기의 receptive field를 갖는다. 그러나, 3x3 filter를 2번 사용하는 것이 파라미터의 수가 훨씬 적게 필요하다. (3*3*2 < 5*5) 3x3 convolution filter를 사용함으로써 네트워크의 깊이가 깊어져 비선형성이 증가하고, 파라미터의 수는..

AI/Deep Learning 2023.03.24

[PyTorch] Troubleshooting 팁

GPUtil GPU의 상태를 보여주는 모듈이다. !pip install GPUtil import GPUtil GPUtil.showUtilization() OOM (Out Of Memory) GPU에서 메모리가 부족할 때 발생한다. batch 사이즈를 줄인 뒤, GPU를 clean 시키고 재실행시켜 본다. del 명령어 python에서는 loop이 끝나도 loop 안에서 선언된 변수가 메모리를 차지하고 있기 때문에, del 명령어를 사용해서 삭제해주는 것이 필요하다. for x in range(10): i = x print(i) # 출력: 9 torch.cuda.empty_cache() 사용되지 않는 GPU 캐시를 정리하여 가용 메모리를 확보한다. del은 객체를 삭제하지만, 해당 객체에 대한 모든 참조가..

AI/PyTorch 2023.03.23

[PyTorch] Transfer Learning (전이 학습)

Transfer Learning 대량의 데이터 셋이 학습되어 있는 pre-trained model에 현재 데이터를 학습시켜 사용하는 방식이다. freeze pre-trained model을 가져와 일부 layer만 학습시키고 싶은 경우에 사용한다. 학습시키지 않을 layer를 freeze하여 파라미터 값이 업데이트되지 않게 한다. from torch import nn from torchvision import models class MyNewNet(nn.Module): def __init__(self): super(MyNewNet, self).__init__() # pre-train된 vgg19 모델 불러오기 self.vgg19 = models.vgg19(pretrained=True) self.linea..

AI/PyTorch 2023.03.23

[Deep Learning] Regularization

머신 러닝에서 모델이 과적합되는 것을 방지하기 위해 사용하는 여러 Regularization 기법들에 대해 알아보자. Early Stopping validation 데이터 셋에 대한 loss 값이 커지기 직전 시점의 값으로 모델의 파라미터를 결정한다. Parameter Norm Penalty loss function에 파라미터의 패널티 항을 추가해서 weight 값이 커지는 것에 제약을 준다. Data Augmentation 가지고 있는 훈련 데이터 셋을 여러가지 방법으로 증강하여 그 수를 늘린다. Noise Robustness 입력값 또는 weight에 노이즈를 넣어 다양한 입력값들에 대해 강건한 모델을 만든다. Label Smoothing 여러 라벨의 데이터를 섞음으로써, 정확히 하나의 클래스만 표현..

AI/Deep Learning 2023.03.21

[Deep Learning] 최적화 기법

Gradient Descent 1차 미분 계수를 활용해 파라미터를 최적화한다. 문제점 적절한 Learning rate를 설정하는 것이 어렵다. global minimum이 아닌, local minimum로 수렴할 수 있다. Momentum 이전 gradient에 대한 정보를 활용하여 파라미터 값을 업데이트한다. 문제점 momentum으로 인해 loss function의 minimum 값에 수렴하지 못하고, 발산하는 문제가 발생한다. Nesterov Accelerated Gradient momentum과 비슷한 방식이지만, gradient 대신 Lookahead gradient를 활용한다. Lookahead gradient는 현재 시점의 gradient가 아닌, 다음 예상 위치의 gradient이다. Lo..

AI/Deep Learning 2023.03.21