공부방/Upstage AI Lab 4기 썸네일형 리스트형 [NLP] EDA | max_length 확인 학습 데이터인 대화문은 어떻게 생겼을까?트랜스포머 모델은 입력 시퀀스의 최대 길이 제한이 있다. 현재 베이스라인에 설정된 최대 길이는 아래와 같다. "tokenizer": { "encoder_max_len": 512, "decoder_max_len": 100, "bos_token": f"{tokenizer.bos_token}", "eos_token": f"{tokenizer.eos_token}", # 특정 단어들이 분해되어 tokenization이 수행되지 않도록 special_tokens을 지정해줍니다. "special_tokens": ['#Person1#', '#Person2#', '#Person3#', '#PhoneN.. 더보기 [NLP 경진대회] 대회에 들어가며, 베이스라인 이해하기 부트캠프에서 진행하는 3번째 경진대회 NLP가 시작됐다! 가장 기대하고 가장 관심이 많았던 주제였어서 뽜이팅이 넘친다. 일상 대회문을 요약하는 모델을 만드는 것이고, 이번에는 점수 평가 방법이 다른 대회들과 조금 다른 것 같다. 이번 대회에서 얻어가야 할 것텍스트 데이터로 다양한 딥러닝 모델을 구축하는 경험데이터 전처리, 모델 구축, 평가 파이프라인 전반의 사이클을 도는 경험 인공지능 모델의 lifecycle학습 Training 대화문(문제)-요약문(정답)을 주고 모델이 학습하는 과정추론 Inference학습된 모델을 사용하는 단계. 문제(입력)만 주고 정답을 예측/생성하게 하는 단계 EDA학습 데이터를 분석해보면, 대화문과 요약문은 약 5배 차이 정도 난다고. 나중에 인코더와 디코더의 최대 길이를 .. 더보기 RNN에 attention 더하기 RNNRNN은 시퀀스 단위로 입력과 출력을 처리하는 모델을 말해요. 여기서 시퀀스는 “순서가 있는 데이터”, 우리가 쓰는 언어의 문장같은 게 시퀀스인데요.(정확하게는 단어나 문장만이 아니라 시간 순서가 있는 모든 데이터를 포괄하는 뜻). 쉽게 말해 한글 문장을 입력하면, 영어 문장으로 번역해서 출력해주는 것을 상상하면 됩니다. 이런 시퀀스를 처리하기 위해 개발된 가장 기본적인 모델이 RNN이죠. 순서가 있는 데이터이기 때문에, 이전 상태를 다음 상태에 기억시키기 위해 정보를 넘겨주면서 가는 방식이에요. 이걸로 번역기 모델을 짠다고 치면,(이게 Seq2seq 모델인데) 크게 이런 구조로 짜여 있어요. 인코더 RNN -> 컨텍스트 벡터 -> 디코더 RNN인코더는 입력받은 문장을 일정한 크기를 가진 벡터로 바.. 더보기 Attention! Attention! Attention! Attention은 왜 등장한 걸까?seq2seq 모델은 문장을 입력하면 -> 문장이 출력되는 모델이다. 예를 들어서 번역이라고 했을 때, 나는 점심을 먹었다 -> I ate lunch 이렇게 문장을 넣고 다른 문장이 나오는 것. 예를 들어 RNN에서 seq2seq 방식은, 인코더 -> 컨텍스트 벡터 -> 디코더인코더는 문장의 단어들을 입력받은 뒤에 모든 정보를 하나의 고정된 컨텍스트 벡터에 담고 디코더로 넘긴다. 디코더는 컨텍스트 벡터를 받아 단어를 출력.그런데 여기서 문제가 발생!long term dependency 입력하는 문장 전체를 하나의 고정된 벡터로 압축해서 디코더로 전달하는 과정에서 문제가 발생. 인코더가 입력 시퀀스를 고정 길이의 컨텍스트로 압축하는 과정에서 정보가 소실되어서 이전 정보를.. 더보기 패스트캠퍼스 Upstage AI Lab 부트캠프 4기, "Upstage 경진대회 CV편" 새로운 공부를 하니 시간이 정말 천천히 가는 것 같으면서도 또 순삭이네요. 첫 경진대회인 아파트 실거래가 예측하는 머신러닝 경진대회가 지나고, 바로 MLOps를 지나, CV 경진대회까지 쉴틈없이 달리는 중인데요. 이번 포스팅에서는 지난 주에 마무리했던 CV 경진대회에 대한 이야기를 해볼까 합니다. 이번 대회는 CV, Computer vision domain에서 중요한 이미지를 분류하는 태스크가 주제였습니다. CV의 아주 클래식한 예시처럼, 강아지 사진을 넣고 모델이 강아지인지 고양이인지 맞추게 하는 것처럼 말이지요. 대회에서 주어진 이미지들은 총 17가지 클래스로 구분되어 있었는데요. 1570장의 학습 이미지가 주어지고, 각 이미지는 클래스1(자동차 번호판), 클래스2(이력서), 클래스3(진료확인서) .. 더보기 [CV 문서 분류 대회] 어떤 사이클을 돌았나요? 사이클별 실험 정리 CV로 문서 이미지들을 분류하는 대회를 마무리하며.. 대회 이틀 정도 남았을 무렵, 급격한 일교차 때문인지 감기 몸살에 걸렸다. 그래서 코드를 백업해둔다는 걸 깜빡하고 말았다. 코드는 없어도 남아있는 기억의 지푸라기를 잡고 대회 회고를 풀어본다. 어떤 시도를 해봤나요? 어그멘테이션: Torchvision이용해서 학습이미지 5배로 증강(뒤집기, 15도 회전, 블러 등 효과 랜덤하게 -> Albumentation이용해서 학습이미지 10배로 증강 -> 더욱 강한 어그멘테이션 적용하여 17만장으로 증강 -> mixup, cutout, cutmix 온라인 어그멘테이션 적용Validation set: StratifiedKFold로 폴드 5개 구성 후 하나를 밸리데이션 셋으로 사용하는 방식. 모델: 초반에는 Den.. 더보기 [CV 문서 분류 대회] 최적의 계산 효율을 이끌어낼 데이터셋의 크기? 우리 팀은 열정적인 팀이였다. 팀장을 맡은 분께서 처음부터 점수가 굉장히 잘 나왔고, 그 코드를 공유해주시면서 다같이 으쌰으쌰 다양한 모델과 하이퍼파라미터 등을 실험해볼 수 있었다. 그리고 각자 모델을 돌렸을 때 어떤 결과가 나왔고, 또 어떤 점이 달랐는지도 매일 피드백하며 공유했는데, 다른 분들께 "시간이 너무 오래 걸린다"는 얘기를 많이 들었다. 나는 처음에 학습데이터를 그대로 사용해서 돌려봤고, 그 다음에는 1570장의 학습데이터를 5배로 어그멘테이션시켜서 약 7800정 정도로 이것저것 실험을 했고, 어그멘테이션 기법을 늘려갈 때에도 10배, 1만 5000여장으로 학습을 시켰다. 그래서 그런지 에폭 하나 돌 때에도 2~3분 내외로 그렇게 오래 걸리지 않았는데, 다른 분들은 약 14만 장으로 오프라인.. 더보기 [CV 문서 분류 대회] 신뢰성 있는 validation set은 어떻게 만들지? 대회를 앞둔 특강에서 강사님께서 이런 얘기를 강조하셨다. 신뢰할 수 있는, 테스트 결과와 비슷한 추세를 갖는 validation set을 만들어 놓으면, 나중에 제출횟수의 부담 없이 많은 실험을 해볼 수 있다. 테스트 데이터셋을 보니 어그멘테이션이 강하게 들어간 더러운(?) 이미지들이 많았다. 그래서 트레인 이미지도 테스트 이미지처럼 최대한 더럽게 만들고 폴드를 나눠 검증하기로 했다. k-fold는 클래스별로 비율을 맞춰서 넣을 수 있게 하는 StratifiedKFold를 사용해 폴드 5개로 나눠서 4개 폴드가 돌 때 1개 폴드는 검증용으로 쓸 수 있도록 했다. (처음에는 임밸런스된 데이터, 1, 13, 14번 클래스의 이미지가 적은 상태로 데이터를 증강시킨 것을 사용했기 때문에, 부족한 클래스도 골고루.. 더보기 이전 1 2 3 4 5 6 7 ··· 15 다음