부스트캠프 AI Tech 1기 [T1209 최보미] 94

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 기..

Day10 학습정리 - Stage1 마무리

2주간의 이미지분류 프로젝트가 모두 마무리되었다. 나의 최종 점수와 순위는 다음과 같다. Public score: 0.7242, 108등 / Private score: 0.7059, 117등 Public 순위도 만족스럽지 않았는데 오늘 공개된 Private 순위는 더 내려가서 처음에는 실망했지만 순위에 연연하지 않기로 했다. 이번 프로젝트를 하면서 배운 것도 많았고 아쉬웠던 점도 많았는데 이를 토대로 다음 프로젝트는 더 잘 해봐야겠다. 아래 파일은 그동안 실험했던 것들을 정리한 엑셀파일과 Wrap-up Report이다.

Day9 학습정리

1. 오늘의 목표 지식증류법 학습데이터 나이 보정 앙상블 후 최종제출 2. 목표를 달성하기 위해 한 행동 오늘은 가장 먼저 지식증류법을 시도해봤다. teacher model은 efficientnet-b0을 사용했고 student model은 resnet50을 사용했다. 그리고 리더보드 상위권에 계신 Ustage 팀원분이 학습데이터의 나이를 보정하는 방법을 사용했다고 하셔서 나도 시도해봤다. 기존에 학습된 모델을 사용해 30세~60세로 라벨링된 train 이미지의 나이를 예측해서 60세 이상으로 나오면 이미지의 라벨을 바꿔주는 방식으로 했다. 일종의 noise labelling 제거라고 할 수 있을 것 같다. 이미지 사이즈는 300*224로 할 때 효과가 좋았다. 마지막으로 성능이 좋았던 5개의 모델을 앙..

Day8 학습정리

1. 오늘의 목표 랜덤시드 고정하기 피어세션에서 나왔던 여러가지 방법들 시도해보기 앙상블할 모델 정하기 2. 목표를 달성하기 위해 한 행동 어제 토론게시판에 랜덤시드 관련 글이 올라온 것을 보고 랜덤시드를 고정해주는 코드를 추가했다. 모델을 efficientnet-b0, resnext50_32x4d로 바꿔봤는데 resnet50이랑 비슷하게 나왔다. 이미지사이즈를 크게 하는것이 좋다는 말이 있어서 384*256으로 바꿔봤는데 오히려 성능이 떨어졌다. optimizer 중에서 AdamP가 좋다는 말이 있어서 사용해봤는데 이것도 오히려 더 안 좋게 나왔다. 3. 회고 지금까지 랜덤시드는 신경 안 쓰고 있었는데 어제 글을 보고 그동안 했던 실험들은 다 엉터리라는 것을 깨달았다. 이제라도 뒤늦게나마 시드를 고정해..

Day7 학습정리

1. 오늘의 목표 overfitting이 있는지 확인해보기 Tensorboard 사용해보기 2. 목표를 달성하기 위해 한 행동 overfitting이 있나 싶어서 5번째 epoch이 아닌 4번째 epoch을 제출해봤는데 결과가 더 안 좋았다. 그냥 원래대로 5 epoch까지 해야겠다. 그리고 tensorboard를 사용해보기 위해 예시코드를 복사해서 붙였는데 계속 cuda:0 device type tensor를 numpy로 변환할 수 없다고 에러가 나서 Tensor.cpu()를 사용해 해결했다. 하지만 그 이후로도 계속 에러가 나서 내일 다시 시도해봐야겠다. 3. 회고 오늘은 이것저것 시도를 많이 못 해봤는데 내일은 진짜 여러가지 시도를 해봐서 앙상블에 사용할 최종 모델을 정해야겠다.

Day6 학습정리

1. 오늘의 목표 앙상블에 사용할 모델 찾기 나이 분류 기준 바꿔보기 2. 목표를 달성하기 위해 한 행동 원래 사용하던 resnet50보다 무거운 resnet101을 사용해봤는데 오히려 더 안 좋게 나왔다. 모델이 복잡하고 무거울수록 overfitting되어서 잘 안 나오나 싶어서 resnext도 시도해보려다가 안 했다. 그리고 나이 분류 기준을 60세에서 58세로 바꾸면 성능이 더 좋아진다는 이야기를 들어서 해봤는데 나는 효과가 없었다. 3. 회고 resnet50 이외의 다른 모델들이 기대보다 성능이 떨어지는 이유는 overfitting 아니면 하이퍼파라미터가 최적화가 안 되어서 그런 것 같다. 그래서 토론게시판에 올라온 hyperparameter Optimization 라이브러리를 한 번 사용해볼 생..