목록Machine Learning (57)
elevne's Study Note

저번 시간에 모델을 만들어 보는 코드까지 알아보았다. 이번에는 모델에 넣어줄 수 있는 파라미터들에 대해 알아보았다. 파라미터들로는 손실함수, 옵티마이저, 스케줄러, 메트릭을 넣어주어야 했다. 손실함수: 학습하는 동안 출력과 실제 값 사이의 오차를 측정한다. BCELoss: 이진 분류 CrossEntropyLoss: 다중 클래스 분류 MSELoss: 회귀 모델 옵티마이저: 데이터와 손실함수를 바탕으로 모델의 업데이트 방법을 결정한다. step() 메서드를 활용하여 전달받은 파라미터들을 업데이트하며, zero_grad() 메서드를 활용하여 옵티마이저에 사용된 파라미터들의 기울기를 0으로 만든다. 스케줄러를 활용하여 에포크에 따른 학습률을 조절할 수 있다. optim.Adadelta, optim.Adagrad..

PyTorch 는 2017 년에 공개된 딥러닝 라이브러리로 Lua 언어로 개발되었던 Torch 를 페이스북에서 파이썬 버전으로 내놓은 것이다. PyTorch 는 GPU 에서 텐서 조작 및 동적 신경망 구축을 지원한다. 내부적으로 CUDA, cuDNN 를 사용하여 GPU 연산을 진행한다. 아래 사진은 PyTorch 의 구조를 보여준다. Top-level API 에 해당하는 패키지들은 아래와 같다. torch: GPU 를 지원하는 텐서 패키지로 다차원 텐서를 기반으로 다양한 수학적 연산이 가능하도록 한다. torch.autograd: 자동 미분 패키지로, '자동 미분(auto-differentiation)' 이라는 기술을 사용하여 미분 계산을 효율적으로 처리한다. '연산 그래프'가 즉시 계산(실시간으로 네트..

지금껏 NLP 모델을 만드는 작업을 진행할 때, 항상 하나의 언어에 대한 데이터를 구한 후 이를 통해 전체 모델을 학습시키는 방법을 사용하였다. 하지만 하나의 문서가 여러 언어로 이루어져 있는 경우도 있을 것이다. 그러한 경우에는 다중 언어 트랜스포머 모델을 사용할 수 있다. 다중언어 트랜스포머 모델들은 BERT 와 같이 사전훈련 목표로 마스크트 언어 모델링을 사용하지만, 100 개 이상의 언어로 된 텍스트에서 동시에 훈련을 진행한다고 한다. 다중 언어 트랜스포머는 많은 언어로 된 대규모 말뭉치에서 사전 훈련하여 Zero-shot Cross-lingual transfer 이 가능하다고 한다. (한 언어에서 Fine Tuning 된 모델이 추가훈련 없이 다른 언어에 적용될 수 있다는 것.) 이번 실습에서는..

본격적으로 Model을 Train 돌리기 전, Model에 Sequence를 입력하였을 때 어떠한 Output이 나오게되는지 확인해보았다. 아래와 같은 코드를 작성한다. text = "This is a text for test" inputs = tokenizer(text, return_tensors="pt") print(inputs["input_ids"]) print("Input Tensor Size:", inputs["input_ids"].size()) 이전에 확인해보았듯이, 우선 Sequence는 tokenizer에 들어가게 될 것이고 이는 하나의 tensor data로 바뀌게된다. inputs를 print 하여 확인해보면 아래와 같은 모습을 띈다. 아래와 같은 코드를 작성하여 불러온 model에 S..

Transformers, Huggingface는 NLP와 ML 프로젝트의 속도를 높이는 다양한 라이브러리와 도구를 갖춘 생태계로 빠르게 성장했다. Huggingface는 크게 Library, Hub 둘로 구성된다고 한다. Library는 코드를 제공하고, Hub는 사전훈련 모델 가중치, 데이터셋, 평가지표를 위한 Script 등을 제공한다고 한다. 전이학습은 Transformer의 성공을 견인한 주요 요소라고 한다. 사전훈련되 모델을 새로운 작업에 빠르게, 재사용하는 것이 가능해졌기 때문이다. Huggingface Hub에서는 20,000 개 이상의 무료 모델을 사용할 수 있고 Pipeline Class를 사용하여 단 한줄로 Test를 해볼 수 있다. 또, NLP task에서는 텍스트를 Token으로 분..

Google은 2017년 논문에서 Sequence Modeling을 위한 새로운 Neural Network 아키텍쳐, Transformer를 제안하였고 이는 기존의 RNN을 능가하였다. 이 모델은 오늘날의 GPT, BERT의 기반이 되었다. 두 모델은 Transformer 구조와 비지도학습을 결합하여 작업에 특화된 모델을 밑바닥부터 훈련할 필요를 거의 없애고 거의 모든 NLP Benchmark에서 큰 차이로 기록을 갱신하였다고 한다. Transformer 이전에는 RNN 기반 Encoder-Decoder 형태의 Seq2Seq가 많이 사용되었다. RNN은 단어 또는 문자와 같은 입력을 받아 Network를 통과시킨 후 은닉상태라는 벡터를 출력한다. 동시에 출력된 정보를 피드백 루프로 보내 자기자신에 다시 ..

코드로 작성한 톰슨 샘플링 문제가 어떻게 이루어지는 것인지 생각해본다. 우선 각 손잡이를 한 번씩 모두 당기게된다. 이 때 각 (모르는)기계의 각 확률에 따라서 결과가 산출될 것이다. 그 후부터는 각 슬롯머신에 대해 두 개의 새 변수가 도입되는데, 하나는 해당 슬롯머신이 보상으로 0을 반환한 횟수, 다른 하나는 해당 슬롯머신이 보상으로 1을 반환한 횟수이다. 이를 코드에서는 win, lose로 표현하였다. 이 두 개를 사용하여 베타분포를 활용할 수 있는 것이다. 위 베타분포 매개변수 a, b에 대해서 베타분포는 아래와 같은 규칙을 지닌다. 매개변수 b가 동일한 두 개의 베타분포가 있을 때, 매개변수 a가 큰 분포가 오른쪽에 있다. 매개변수 a가 동일한 두 개의 베타분포가 있을 때, 매개변수 b가 큰 분포..

강화학습이란 분야에 대한 공부를 처음 시작해보았다. 우선 강화학습의 정의부터 짚고 넘어가야 했다. 강화학습이란 컴퓨터 Agent가 반복적인 시행착오 상호작용을 통해 작업 수행 방법을 학습하는 Machine Learning 기법의 한 유형이다. 이 학습법을 통해서 Agent는 인간의 개입 혹은 작업 수행을 위한 명시적인 프로그래밍 없이 작업에 대한 보상 Metric을 최대화 하는 결정을 내릴 수 있다고 한다. 강화학습에는 아래와 같은 5가지의 원칙이 있다고 한다. 1. 입출력 시스템 모든 AI 모델은 입력과 출력의 보편적인 원칙에 기반한다. 강화학습에서 입력은 input state, 출력은 AI가 수행하는 행동 즉 action이라고 불린다. 그 사시에는 상태를 입력으로 취하고 행동을 출력으로 반환하는 함수..