분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
Private 17위(점수 : 0.19078) 솔루션입니다. (Bert)
안녕하세요, 저는 이번 컴피티션에 Bert 바닐라 모델을 사용하였습니다.
외부 데이터가 사용된 pre-trained 모델이 아니라, 주어진 데이터만을 사용하여 pre-train과 fine-tuning을 진행하였습니다.
전처리는 개인 PC에서 진행하였고, 학습은 google colab의 tpu를 사용하였습니다.
특수문자 제거, stopword 제거 등의 전처리 없이 소문자 변환만 진행하였습니다.
Vocab은 Transformers의 BertWordPieceTokenizer를 사용하여 build했습니다.
모델 학습은 아래 구글의 코드를 사용하였습니다.
https://github.com/google-research/bert
모델 사전 학습 시 nsp loss는 포함하지 않고 mlm loss만 사용하여 사전학습하였습니다.
데이터 양이 상대적으로 적어, 기본 모델보다 파라미터 수를 줄인 모델을 사용했습니다.
아래는 기본 모델에서 변경한 config입니다.
intermediate_size : 3072 -> 2048
num_hidden_layers : 12 -> 8
두 개의 개별적 환경에서 모델 학습이 이루어져 두 개의 ipynb 파일이 존재하는데, 파일이 하나밖에 업로드되지 않아서
하나의 파일로 병합하여 공유합니다.
감사합니다.
* 구글의 bert 코드 중 run_classifier.py 부분에 추가한 부분도 파일에 첨부했습니다.
코드 공유 감사합니다.
한가지 질문이 있는데, 모델 파라미터를 줄였다고 하셨는데, 그러면 공유되어 있는 bert모델을 쓴게 아니라, 기존의 공개되어 있는 모델을 기반으로 스스로 새로 구축한건가요?
네, 공유되어 있는 학습된 bert 모델이 아니라 대회 데이터만을 사용해 기초부터 새로 학습한 모델입니다.
코드는 구글의 repo를 사용했습니다. (https://github.com/google-research/bert)
아무래도 데이터의 양이 기존 bert보다 현저히 적기 때문에 오버피팅 방지를 위해 일부 파라미터를 수정했습니다.
네 감사드립니다.
코드 공유 감사합니다.
코드에 가중치를 불러와서 test data predict하는 과정이 없는 것 같은데,
마지막 줄에서 생성된 가중치 값만 load해서 bert layer에 classifier 달아서 사용하면 되는 건가요?
마지막 줄에서 --do_predict를 True로 주시면 됩니다.
run_classifier.py 코드에 대회 데이터셋을 추가해야 하는데, 해당 코드도 첨부하였습니다.
pretrain_corpus는 학습에 필요한 데이터를 tf_record 형태로 변환하여 저장된 파일입니다.
역시 구글 코드 중 create_pretraining_data.py를 이용하여 만드시면 됩니다.
제 환경 기준으로
python create_pretraining_data.py --input_file=pretrain_corpus.txt --vocab_file=vocab_20000-vocab --output_file=pretrain_corpus
명령어를 사용하시면 됩니다.
model config 파일인 bert_config_20000.json는 아래와 같습니다.
{
"attention_probs_dropout_prob": 0.1,
"hidden_act": "gelu",
"hidden_dropout_prob": 0.1,
"hidden_size": 768,
"initializer_range": 0.02,
"intermediate_size": 2048,
"max_position_embeddings": 512,
"num_attention_heads": 12,
"num_hidden_layers": 8,
"type_vocab_size": 2,
"vocab_size": 20000,
"num_labels": 5
}
댓글이 너무 길어서 한 번에 안올라가네요 ^^;
max_position_embeddings는 max_seq_length와 동일하게 적어주시면 됩니다.
와 감사합니다~^ hidden size조절해서 한번 해봐야 겠네요 구체적인 답변 다시한번 감사합니다ㅎㅎ
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
잘 봤습니다 수고하셨습니다~