분류 전체보기 110

Day 10 학습정리 - Stage2 마무리

2주간의 이미지분류 프로젝트가 모두 마무리되었다. 나의 최종 결과는 LB 점수: 78.50%, 순위: 84등이다. NLP에 대한 지식과 경험이 거의 없었는데 이번 프로젝트를 하면서 많이 배운 것 같다. transformers 라이브러리와 모델에 대해 잘 모른 채로 그냥 가져와서 썼는데 더 깊게 공부해야겠다는 생각이 들었다. 아래 파일은 그동안 실험했던 것들을 정리한 엑셀파일과 Wrap-up Report이다.

Day9 학습정리 - 최신 자연어 처리 연구

프로젝트 회고 문장 길이를 어느정도 맞추기 위해 엔티티 앞뒤 30자까지만 남기고 나머지는 잘라봤는데 큰 효과는 없었다. 엔티티를 'e1, e2의 관계는?'와 같이 질문 형태로 바꿔봤는데 이것도 큰 효과는 없었다. 토론게시판에 올라온 NER 적용한 csv파일을 받아서 사용해봤는데 이것 역시 효과가 없었다. maxlength를 160에서 130으로 바꿔봤는데 성능이 비슷했다. 스페셜토큰을 문장에만 주는 것이 아니라 엔티티에도 줘봤는데 큰 효과가 없었다. 토론게시판에 올라온 정확도 80% 나온다는 train.py 코드를 그대로 가져와서 사용해봤는데 내가 했을 땐 성능이 안 좋게 나왔다. 마지막으로 가장 정확도가 높았던 submission 파일 5개를 hard voting 방식으로 앙상블했더니 정확도가 1.5%..

Day8 학습정리 - GPT 언어 모델 소개

프로젝트 회고 데이터셋 문장을 변형해서 ...[E1]엔티티1[/E1]...[E2]엔티티2[/E2]...와 같이 엔티티를 강조하는 식으로 special token을 적용해봤는데 정확도가 2%정도 떨어졌다. tokenizer에 entity를 따로 넣어주지 않고 변형한 문장만 넣어줘서 그럴 것이라고 추측한다. + entity도 같이 넣어줬더니 지금까지중 최고의 정확도가 나왔다. max-length를 200으로 늘려봤는데 오히려 정확도가 1%정도 떨어졌다. 무조건 max-length를 늘린다고 성능이 좋아지는 것은 아닌 것 같다.

Day7 학습정리 - BERT 기반 문장 토큰 분류 모델 학습

프로젝트 회고 xlm-roberta-large 모델이 성능이 좋다는 이야기를 많이 들어서 시도해봤다. 모델이 무거워서 그런지 저장용량이 부족해서 중간에 자꾸 멈추는 바람에 폴더를 지워가면서 몇 번이나 처음부터 다시 했다. 우여곡절 끝에 간신히 성공했는데 성능이 72%에서 무려 76.4%로 올랐다. 다음에는 special token도 한 번 적용해볼 생각이다.

Day6 학습정리 - BERT 기반 두 문장 관계 분류 모델 학습

프로젝트 회고 argparse를 사용해서 run.py를 실행할 때 config 파일을 인자로 받도록 코드를 바꿨다. 설정값들을 config.json파일로 관리하니까 확실히 실험할 때 훨씬 편했다. pretrained model을 제대로 불러오도록 베이스라인 코드를 수정하고 다시 돌려봤다. 저번주에 bert보다 koelectra가 더 성능이 안 좋아서 이상하다 생각했었는데 코드를 수정하니까 정확도가 50프로대에서 70프로대로 확 올랐고 koelectra가 bert보다 더 성능이 좋았다. kobert도 사용해봤는데 뭔가를 잘못 설정했는지 성능이 현저하게 낮았다. 기본 bert에서 사용하던걸 그대로 사용해서 그런 것 같다.argparse를 사용해서 run.py를 실행할 때 config 파일을 인자로 받도록 코..

Day5 학습정리 - BERT 기반 단일 문장 분류 모델 학습

프로젝트 회고 1. 오늘의 목표 run.py 파일 만들어서 한번에 실행시키기 다른 모델 적용해보기 random seed 고정하기 2. 목표를 달성하기 위해 한 행동 koelectra-small이랑 koelectra-base-v3 모델을 사용해봤는데 오히려 BERT보다 정확도가 낮게 나왔다. random seed를 고정하기 위해 seed.py 파일을 만들고 그 안에 여러 random seed들을 한번에 설정해주는 seed_everything() 함수를 넣었다. 그리고 run.py에서 seed를 import해준 다음 학습 시작하기 전에 seed_everything()을 호출했다. 기본값은 42로 설정했다. 3. 회고 electra 모델이 BERT보다 성능이 안 좋아서 이상하다 했는데 알고보니까 베이스라인 코..

Day4 학습정리 - 한국어 BERT 언어 모델 학습

강의 복습 BERT 학습의 단계 Tokenizer 만들기 데이터셋 확보 Next sentence prediction(NSP) Masking 이미 있는 걸 쓰지 않고 새로 학습하는 이유: 도메인 특화 task의 경우, 도메인 특화된 학습데이터만 사용하는 것이 성능이 더 좋기 때문 학습을 위한 데이터 만들기 프로젝트 회고 오늘은 주어진 베이스라인 코드를 그대로 돌려서 첫 제출을 해봤더니 58.3%가 나왔다. VSCode로 연동해서 코드를 좀 손본 다음에 제출하고 싶었는데 왜인지는 모르겠지만 ssh 연결이 잘 안 되어서 어쩔 수 없이 그냥 주피터에서 돌렸다. VSCode 연동에 성공하면 우선 train이랑 inference를 한 번에 실행하는 run.py를 만들고 config.json 파일도 따로 만들 생각이..

Day2 학습정리 - 자연어의 전처리

강의 복습 1. 자연어 전처리 Python string 관련 함수 정규표현식 greeksharifa.github.io/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D(re)/2018/07/20/regex-usage-01-basic/ 2. 자연어 토크나이징 토큰화(Tokenizing) 주어진 데이터를 토큰(Token)이라 불리는 단위로 나누는 작업 기준: 어절, 단어, 형태소, 음절, 자소 등 문장 토큰화(Sentence Tokenizing): 문장 분리 단어 토큰화(Word Tokenizing): 구두점 분리, 단어 분리 한국어 토큰화 영어는 띄어쓰기를 기준으로도 잘 동작하는 편 한국어는 조사나 어미를 붙여서 말을 만들기 때문에 띄어쓰기만으로는 부족 어절이 의미를 가지는..

Day1 학습정리 - 인공지능과 자연어 처리

강의 복습 1. 인공지능의 탄생과 자연어처리 ELIZA: 최초의 대화형 챗봇, 심리 상담사 역할을 하도록 설계 (www.eclecticenergies.com/psyche/eliza) 다양한 자연어처리 응용분야: 의미 분석기, 구문 분석기, 감성 분석기, 형태소 분석기, 개체명 분석기 등 자연어 단어 임베딩 특징 추출과 분류: 데이터를 수학적으로 표현, 분류 대상의 특장을 파악(Feature extraction), 그래프 위에 표현 가능 Word2Vec: 단어의 의미를 벡터 공간에 임베딩, 주변 단어를 예측하는 방식으로 학습 (Skip-gram) Fasttext: 단어를 n-gram으로 분리한 후, 모든 벡터를 합산한 후 평균을 통해 단어 벡터 획득 2. 딥러닝 기반의 자연어처리와 언어모델 Markov 기..