PyTorch Autograd 100% 이해하기: loss.backward() 한 줄 뒤에 숨겨진 모든 것
·
Deep Learning
PyTorch 를 쓰다보면 습관처럼 쓰는 문장이 있습니다. 바로, loss.backward() 입니다. 신경망을 배우고 역전파를 위한 미분을 배우고나서 PyTorch를 접했을 때 loss.backward()를 마주치면 마법같다는 생각을 할 수 밖에 없습니다. 그 복잡한 계산이 loss.backward() 한 줄이면 해결되니까요.하지만 엔지니어로서 "아 좋다"라고 넘어가기에는 조금 찜찜합니다. 도대체 loss.backward()가 내부적으로 어떻게 작동하는지 궁금합니다.오늘은 PyTorch의 핵심 중 하나이자 이 마법을 가능하게 해주는 Autograd 에 대해서 알아보겠습니다.0. 들어가기 전에: 딥러닝 학습의 4단계 흐름코드를 뜯어보기전에 딥러닝 모델 학습의 기본 흐름을 다시 한번 떠올려보겠습니다. 딥러..
Transformer로 한국어 품사 태거 만들기
·
Deep Learning
한국어 품사 태거를 만들어 봅시다 품사 태거(Part-of-Speech Tagger)는 NLP에서 기본이 되는 태스크이고, 그 때문에 NLP를 배울 때 많이 만들어보는 기능이기도 합니다. 품사 태거가 NLP에서 나름 인기있는 이유는 몇가지가 있을 겁니다. 다른 NLP Task의 입력 또는 전처리 역할을 합니다. 요즘은 트렌드가 언어학적인 요소를 많이 배제하는 추세지만 전통적으로 파싱, 번역 등의 NLP 파이프라인에 많이 쓰였습니다. 한국어에서 BPE와 같은 통계적인 Tokenizer를 대신하는 방법으로 쓰이기도 합니다. 한국어의 특성상 통계적인 Subword보다는 형태소 단위를 토근으로 쓸 때 성능이 더 좋긴 경우들이 있습니다. (참조: 한국어 토큰의 단위는 뭐가 좋을까?) 품사 태깅은 Sequentia..
Pytorch로 훈련 이어서하기 (checkpoint)
·
Deep Learning
모델을 훈련시키는데 오랜 시간이 걸리다보면 여러가지 이유로 처음에 생각했던 Epoch만큼 훈련을 시키지 못하고 중간에 끝나는 경우가 있습니다. 누군가 실수로 Ctrl+C를 눌러버린다거나, 모종의 이유로 훈련 프로세스가 죽어버린다거나, 아니면 GPU를 다른 곳에 쓰기 위해서 눈물을 머금고 중간에 멈추는 경우도 있습니다. 이럴 때 유용한 방법이 중간 중간 모델을 저장해두고 나중에 그 시점부터 훈련을 이어서 하는 것입니다. 오늘은 중간중간 모델을 저장하는 방법과 나중에 이어서 훈련을 시작하는 방법을 알아보겠습니다. import torch import torch.nn as nn import torch.optim as optim import argparse class MyModel(nn.Module): def _..
Logit, Sigmoid, Softmax
·
Deep Learning
Logit, Sigmoid, Softmax 오늘은 Logit, Sigmoid, Softamx에 대해서 알아보려고 합니다. 코드와 함께 Logit, Sigmoid, Softmax의 차이와 활용처를 알아보겠습니다. import torch import torch.nn as nn x = torch.rand(8, 256) print(x) linear_layer = nn.Linear(256, 5) tensor([[0.8509, 0.5229, 0.0945, ..., 0.0343, 0.9828, 0.8862], [0.2340, 0.6683, 0.6794, ..., 0.0669, 0.7153, 0.4655], [0.8962, 0.0695, 0.5760, ..., 0.9555, 0.3334, 0.7940], ..., [0..
한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리
·
Deep Learning
한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리 아름다운별지구에오신여러분을환영합니다 딥러닝도 좀 배웠고, 자연어처리도 좀 배웠고, pytorch도 좀 배웠는데 막상 뭔가를 만들어 보려면 막막할 수 있습니다. 오늘은 pytorch를 이용해서 한국어 띄어쓰기 모듈을 바닥부터 만들어보고, 이 과정에서 실제로 어떻게 간단하 자연어처리기를 개발하는지 살펴보려고 합니다. "아름다운별지구에오신여러분을환영합니다"를 입력으로 주면 "아름다운 별 지구에 오신 여러분을 환영합니다"로 바꿔주는 것이 오늘의 목표입니다. 딥러닝과 Pytorch에 대해서 기본적인 부분을 습득하고 있다고 가정하겠습니다. 특히 Pytorch에 대한 사용법은 설명하지 않으니 참고 부탁드립니다. 문제 정의, 발상의 전환 머신러닝 문제를 풀 때..