-
Notifications
You must be signed in to change notification settings - Fork 0
Weekly Report #3
이번 주 (2월 마지막 주) 목표는 모델 돌려보는 것이다!!!!!
pre-trained 임베딩? vs 코퍼스로 하는 nn.Embedding
무엇을 해야할까? kor2vec 시도해보았지만, 우리의 데이터셋으로 corpus 구축하는 데 시간이 오래 걸려서 하다가 포기.
일단 임베딩 패스
이해 안 가는 파라미터 들이 많다.. 공부 더 필요
- word2vec은 생각보다 성능이 좋지 않고, 한영번역에 굳이 필요할까 ? 라고 말씀하심.
- 이번주까지 GPU 서버 설치하도록 노력해보신다고 함. IP 따는게 오래걸릴 수 있다고 함.
- 제일 좋아 보이는 코드 그대로 돌려보고 조금씩 바꾸라고 조언해주심.
주말까지 Attention, encoder, decoder (seq2seq) 부분 코드 공부해서 돌려보아야지 우리가 할 방법은 top-down 방식. 일단 대충만 이해하고
입력 : one-hot encoding (아래)
1 X vocab_size * vocab_size X word_vec_dim ==> 해당 단어에 대한 임베딩 벡터
nn.Embedding(input_size, word_vec_dim)
input_size : len(loader.src.vocab)
wor_vec_dim : 사용자 정의
word2vec은 skip-gram 기반. 중심 벡터가 더 많이 조회되는 것이 skip-gram인데, 단점이 있다면 윈도우를 최대 5개 정도 할 수 있음.
즉, 모든 단어를 고려하지 않기에 성능이 떨어질 수 있음.
그런데 우리는 그냥 쓸 까 함.
- pack 하는 부분 이해함. (flatten 하면서 불필요한 패딩 0을 계산하지 않게 됨.)
- Linear 하는 이유 -> 가중치 행렬을 곱해서 attention score를 구하기 위해 (h_target^tgt (디코더 timestep에서의 히든 벡터), W)
- decoder 부분 + attention 부분 + generator 부분 공부 (개념 이해 + 코드 이해)
kh-kim 님의 설명 조금 참조는 여기 - 코드 돌릴 수 있는 만큼 시도해보기.
- 전체적으로 이해 안가는 부분을 정리해와서 물어보기
-
kh-kim 님 코드 최대한 돌리려 시도
-
argparser 부분 -> easydict 라이브러리로 해결
-
코드 돌리던 중 이상한 점 발견 : dataloader.py - class TranslationDataset - src파일, trg파일 열어 한 줄씩 불러오는 과정에서 찍어보니 한글, 영어 줄이 대응되지 않았음.
- 한영 문장 비교한 결과,
- 어떤 영어 문장들은 한글 문장에는 없는 내용을 포함해 또 다른 문장이 추가 번역 되어있음. (ex) 안녕! -> Hi! What's your name?
- 어떤 문장들에는 줄바꿈 기능이 들어가 여러 문장으로 분리되어 인식됨. (아래 사진)
- 한글 문장도 마찬가지.
- = 결과적으로 줄이 많이 밀리게 된 것..
- 한영 문장 비교한 결과,
