Skip to content

Weekly Report #2

jeongwonKwak edited this page Feb 23, 2020 · 21 revisions

2월 3째 주 주간보고서

2월 19일 (수)

  • 기계번역 흐름에 대한 파이프라인이 kh-kim님이 정리해 놓으신 여기에 잘 정리 되어 있다.

  • 위 사진의 4. 미니배치 구성에서 배치 내 문장 길이를 통일해주는 것이 시간을 최소화할 수 있는 방법이다. (예) 단어 개수가 5인 문장 & 단어 개수가 70인 문장이 같은 미니배치에 포함되면, 단어 개수가 5인 것은 65번의 time step을 더 돌게 되어 비효율적.

  • 데이터를 통해 학습을 진행할 때, Encoder의 RNN에는 하나의 미니 배치가 삽입됨. 이 때, 하나의 미니 배치 내에 길이의 차이가 많이 나는 문장이 동시에 존재할 경우 time-step이 낭비될 수 있음. 하나의 layer에 존재하는 단일의 RNN은 여러 번의 time-step을 진행하므로 이와 같은 현상이 나타날 수 있음.

  • 그럼 1 epoch 이 끝난 후 데이터를 랜덤으로 shuffle 해 미니배치를 구성할 때, 문장 길이에 제한을 두고 비슷한 길이의 문장끼리 shuffle 해야 하는 걸까? (예) 길이 4~5인 것들 안에서 shuffle 해야되는걸까? 이 부분 더 공부해보기.

  • Q. data_loader부분에서 BucketIterator함수의 인자 중 "sort_within_batch = True"가 있는데, 배치 내에서 정렬은 어떤 의미와 효과가 있는가?

  • A. sort_within_batch를 해주었기 때문에 두 번째 tensor가 길이의 순서대로 나왔음을 알 수 있다. ex) tensor([8, 8, 8, 7, 7, 7, 6, 1]))

  • padding을 처음에 1로 설정해주었기 때문에 아래와 같이 길이를 맞춰주기 위해 src와 tgt 각각의 긴 문장에 대해서 1로 채워졌음을 알 수 있다.

2월 21일 (금)

한글 데이터 정제 및 분절

  1. MeCab을 이용해 조사를 제거하여 vocabulary 사전 구축
  2. 구축한 사전을 이용해 sentencepiece 적용하여 단어를 분절하였다.
  • 고민해 볼 것!
  1. vocab 사전 구축할 때 조사만 제거했는데, 사전 구축할 때 또 삭제할 형태소가 있을까?
  2. vocabulary size 도 잘 정해주어야 할 듯. 너무 많아도 오버피팅 날 수 있을 것 같다.

영어 데이터 정제 및 분절

sentencepiece 사용하여 분절.

seq2seq 시작!

  • Embedding Size Rule
    • nn.embedding의 두 번째 인수(embedding_dim(=word_vec_dim))
    • 여기에 자세히 설명되어있음.
    • number_of_categories = vocabulary size
    • 왜 1/4승?
20200221_181751 20200221_175616

다음 미팅까지 할 것

  • embedding에 관한 내용 더 공부해오기

Clone this wiki locally