데이터사이언스 이론 공부 31

하이퍼 파라미터 튜닝 구현하기 - Random Forest(랜덤포레스트)

Hyper-Parameter optimization 랜덤포레스트 모델의 하이퍼 파라미터 튜닝(optimization)에 대해서 알아본다. 로그 데이터 저장 로그데이터를 log파일로 남기는 함수를 작성했다. 이를 활용하면 편리하게 결과를 하나의 로그파일에 적재할 수 있다. import logging def get_logger(name, dir_, stream=False): """log 데이터 파일 저장 Args: name(str): 로그 이름 지정 dir_(str): 로그 파일을 저장할 경로 지정 stream(bool): 콘솔에 로그를 남길지에 대한 유무 Returns: logging.RootLogger """ logging.basicConfig(level=logging.INFO) logger = logg..

ERC - CoMPM 모델 논문 구현

ERC - CoMPM 모델 논문 구현 url: https://aclanthology.org/2022.naacl-main.416.pdf Context Modeling with Speaker’s Pre-trained Memory 핵심: 대화 속 감정 인식 task에서 Common sense knowledge와 같은 외부 데이터 셋을 활용하는 것이 제한될 경우(한글과 같이 관련 데이터가 부족할 경우) CSK를 이용하지 않고도 PM이라는 기법을 통해 CSK를 사용한 경우에 못지 않은 성능을 도출할 수 있다고 주장한다. Dataset 활용 데이터셋: MELD Dataset Friends 드라마 대본이며 Dialogue_ID로 대화(상황)가 구분되어 있다. 하나의 Dialogue 내에서 마지막 발화에 대한 감성을 ..

DNN(Deep Neural Network) 구현하기 with numpy(2) - Initialize

4. Initialization 앞으로 학습시킬 파라미터를 준비합니다. 이를 초기값을 설정한다 하여 initialize라고 합니다. 먼저, 필요한 파라미터 개수는 Fully-Connected layers의 개수 및 dimension에 따라 달라지므로 해당 정보를 argument로 받은 뒤 그에 맞게 weight와 bias를 initialize 합니다. 해당 세션에서는 총 4개의 layer로된 FC를 구성할 계획입니다. 그래서 model = [784, 128, 64, 10]와 같이 리스트 형태로 모델을 정의하도록 하겠습니다. 오직 MLP만 사용할 계획이므로 리스트로 표현하는 것만으로도 충분합니다. class Initializers: """Initializers Initializer list: xavier_..

DNN(Deep Neural Network) 구현하기 with numpy(1) - Preprocess

다층 퍼셉트론을 파이토치나 텐서플로가 아닌 numpy로 구현하는 작업이다. 이를 통해 머리로만 끄덕이고서 넘어갔던 구체적인 딥러닝 작동 방식을 좀 더 깊게 체득하고자 한다. 당연히 pytorch나 tensorflow보다 효율성이 떨어지겠지만 순수하게 어떤 방식으로 MLP가 작동하는지 직관적으로 이해하는데 도움이 된다. 데이터는 MNIST를 사용하고, 총 4개의 Fully-connected layers (784, 128, 64, 10)로 구성된 DNN 모델을 구현한다. 아래 코드를 통해 코드 전체를 확인할 수 있다. https://github.com/issuebombom/DNN_model_numpy GitHub - issuebombom/DNN_model_numpy Contribute to issuebomb..

GPT3 모델의 대한 간략한 정리

GPT3 왜 나왔는가? 기존 PLM (pre-trained model) 은 사전 학습 이후 fine-tuning해서 사용. Downstream Task에 수천~수만 건이 데이터가 필요함 fine-tuning은 기존의 지니고 있던 일반화 성능을 저하시킨다. 실제 성능보다 SQuAD같은 특정 벤치마크에서 과대평가될 수 있다. (이것도 성능의 일반화 문제) 각 Task마다 fine-tuning된 모델이 필요하게 된다. (모델의 기능이 복합적이지 못함) GPT3의 특징 Few-shot learning이 가능 (매우 적은 수의 데이터로도 downstream task 학습이 가능함을 의미) GPT 모델의 작동 방식을 살펴보면 엄연히 말해서 학습한다고 말하기도 애매함 추가적인 파라미터 업데이트 없이 다양한 task ..

BERT의 파생모델 [DistilBERT]

DistilBERT 사전 학습된 Large BERT의 성능은 확실히 뛰어나지만 그에 걸맞는 무게를 자랑한다. 그렇기에 downstream task를 위해 fine-tuning을 마친 모델 또한 부담스럽고 무거운 모델이 되므로 주어진 컴퓨팅 리소스 내에서 모델을 실행하기가 어려울 수 있다. 가령 모바일 환경에서 모델을 실행해야할 경우 말이다. 이 문제를 해결하기 위해 지식 증류라는 개념이 도입되었고, 이를 기반으로 제작된 모델이 DistilBERT이다. DistilBERT는 BERT에서 레이어 수를 줄이면서 성능 저하를 최소화 하는 방향으로 설계되었다고 한다. 결과적으로 BERT 모델 사이즈의 40% 수준으로 감소할 수 있었고, 97% 수준의 성능을 유지하면서 60% 가량 빠른 속도를 뽑아낼 수 있다고 한..

BERT의 파생모델 [SpanBERT]

SpanBERT SpanBERT는 텍스트 범위를 예측하는 질문-응답과 같은 Task에서 주로 사용된다. 기존 BERT의 MLM방식과 더불어 SBO방식을 함께 사전 학습에 활용한다. token = [you, are expented, to, know, [MASK], [MASK], [MASK], [MASK], country] SBO span boundry objective의 줄임말이다. 토큰의 연속 범위를 무작위로 MASK 처리한다. 기존 BERT 모델에서는 MASK 토큰의 예측을 위해 MASK의 representations을 활용했다면 SBO에서는 연속적인 MASK 토큰의 예측을 위해 나열된 MASK의 양쪽 경계에 있는 문자 토큰의 representation을 예측에 활용한다. [you, are expent..

BERT의 파생모델 [ELECTRA]

ELECTRA MLM 방식에서 좀 더 확장된 태스크와 NSP으로 학습을 진행한다. 마스킹된 토큰을 맞히는 방식에서 더 나아가 MLM 예측값이 실제 토큰인지 아닌지 맞히는 태스크를 진행한다.→ 기존 BERT 모델에서도 마스킹된 15% 단어 내에서 10%는 마스킹 토큰[MASK] 대신 틀린 단어를 넣어 두고, 또 다른 10%는 마스킹하지 않는 방식으로 fine-tuning 학습 데이터와의 간극을 좁히고자 하였다. 하지만 MLM이 모델 학습의 주요 태스크이므로 MASKED 데이터를 안쓰는 것이 아니다. 반면 ELECTRA 모델에서 적용된 replaced token detection task의 경우 인풋 데이터로 실제 문장에서 일부 단어가 대체된 문장이 활용되므로 구멍없는 멀쩡한 문장을 쓴다는 점에서 MLM에서..

BERT의 파생 모델 [RoBERTa] 특징

BERT 모델과 비교했을 때 어떤 차이가 있는지 알아봅니다. MLM 태스크를 동적 마스킹 방법으로 학습 적용 NSP 태스크를 제외함 배치 크기를 증가해서 학습 BBPE 토크나이저 사용 동적 마스킹(Dynamic masking) 기존 BERT 모델은 MLM 사전 학습에서 정적 마스킹을 사용한다. → 정적 마스킹은 전처리 단계에서 단 한번 수행되어 epoch 마다 동일한 마스킹을 예측하도록 학습한다. 동적 마스킹은? → 학습 데이터(문장) 하나 당 $\times$10개의 문장을 복제해서 각각 다른 마스킹 결과가 나오도록 전처리한다. 40epoch을 돌리는 동안 10개의 마스킹된 문장이 학습되도록 하여 같은 문장이더라도 다른 마스킹 단어를 맞히는 태스크를 부여한다. 이렇게 되면 40epoch이 진행될 동안 마..

BERT의 파생 모델 [ALBERT]

BERT의 파생 모델 ALBERT A Lite version of BERT의 줄임말로 BERT의 라이트 버전이다. BERT모델 학습 및 추론 시 소비되는 시간 감소, 컴퓨팅 리소스 감소를 위한 모델 리소스 감소를 위해 아래 두 가지 방법을 제안한다 - factorized embedding parameterization - cross-layer parameter sharing Factorized embedding parameterization 논문에서는 토큰이 임베딩 레이어를 거치는 것은 맥락과는 독립적인 representation(임베딩 벡터) 학습을 거치지만, 그 뒤 히든 레이어를 거치는 것은 맥락 의존적인 결과를 낸다고 본다. 그리고 BERT와 같은 모델이 좋은 성능을 발휘하는데는 맥락에 대한 학습에..