본문 바로가기
성장하기

[E-7] 나랑 닮은 연예인은 누구?

by 예시카의 일상 블로그 2021. 1. 25.

Opening


  • 이번 시간에 임베딩에 대한 기본 개념을 제대로 익혀봅시다.
    • [답변 예시]
    • 임베딩이란: 자연어 처리(Natural Language Processing) 분야에서 임베딩(Embedding)은 사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자 형태인 vector로 바꾼 결과 혹은 그 일련의 과정 전체를 의미합니다. 
    • 임베딩의 역할?
      1. 단어/문장 간 관련도 계산 : 단어-문서 행렬은 가장 단순한 형태의 임베딩입니다. 현업에서는 이보다 복잡한 형태의 임베딩을 사용합니다. 대표적인 임베딩 기법은 Word2Vec을 뽑을 수 있습니다. 이렇듯 컴퓨터가 계산하기 쉽도록 단어를 전체 단어들 간의 관계에 맞춰 해당 단어의 특성을 갖는 벡터로 바꾸면 단어들 사이의 유사도를 계산하는 일이 가능해집니다. 자연어 상태 일 때는 불가능했던 유사도를 계산할 수 있습니다. 임베딩 덕분에 코사인 유사도 계산이 가능해 집니다. 또한 임베딩을 수행하면 벡터 공간을 기하학적으로 나타낸 시각화 역시 가능해 집니다. 
      2. 의미적/문법적 정보 함축 : 임베딩은 벡터인 만큼 사칙 연산이 가능합니다. 단어 벡터 간 덧셈/뺄셈을 통해 단어들 사이의 의미적, 문법적 관계를 도출해낼 수 있습니다. 예를들면, 아들 - 딸 + 소녀 = 소년이 성립하면 성공적인 임베딩이라고 볼 수 있습니다. 아들 - 딸 사이의 관계와 소년 - 소녀 사이의 의미 차이가 임베딩에 함축돼 있으면 품질이 좋은 임베딩이라 말할 수 있습니다. 이렇게 단어 임베딩을 평가하는 방법을 단어 유추 평가(word analogy test)라고 부릅니다.
      3. 전이 학습(Transfer learning) : 품질 좋은 임베딩은 모형의 성능과 모형의 수렴 속도가 빨라지는데 이런 품질 좋은 임베딩을 다른 딥러닝 모델의 입력값으로 사용하는 것을 transfer learning이라 합니다. 예를 들면, 대규모 Corpus를 활용해 임베딩을 미리 만들어 놓습니다. 임베딩에는 의미적, 문법적 정보 등이 녹아 있습니다. 이 임베딩을 입력값으로 쓰는 전이 학습 모델은 문서 분류라는 업무를 빠르게 잘할 수 있게 되는 것입니다.

 

Check-up 항목


  • Face Recognition 전체 분야에 대해서 History와 주요 논문이 잘 설명된 동영상추천
    • PR-127: FaceNet
    • Google의 FaceNet을 중심으로 그 전, 후 알고리즘 및 Face Recognition 분야의 여러 Keyword와 Issue에 대해서 간략히 정리되어 있습니다. 
  • FaceNet에서 Face L2 Embedding을 어떻게 하는지 살펴봅시다. (위 동영상 16분 30초 부분)
    • 장점은 Verification(같은 사람인가?), Identification(누구인가?), Clustering(같은 사람 얼굴 묶기)을 한 번에 할 수 있다는 점입니다.
      1. Verification: 두 사람이 같은 사람인가 아닌가를 Thresholding으로 판단합니다. (지름이 같은 원 안에 있으면 같은 사람)
      2. Identification: 이 사람이 누구냐는 K-NN Classification을 해서 가까운 곳에 있는 사람과 같다고 판단합니다. 
      3. Clustering: 같은 사람을 K-means로 묶어 줍니다. 

  • FaceNet에서 Verification Loss를 Triplet Loss를 사용합니다. 
    • 세 개의 데이터를 이용해서 계산하는 거리 함수를 손실 함수로 사용해서 네트워크를 학습시킵니다.
      • Anchor(Reference 얼굴)이 있다면 Positive(같은 얼굴) 가깝게 Negative(다른 얼굴) 멀게 학습합니다. 
      • FaceNet 논문에서는 label이 있는 얼굴 이미지 데이터 셋인 LFW(Labeled Faces in the Wild) 데이터셋을 사용했다고 합니다.
    • Triplet Loss 학습 시 문제점
      • Large batch size (1,800) for Anchor-Positive-Negative Balance
      • Hard Positive (같은 사람인데 다른 사람으로 인식함) : All Anchor-Positive 모두 다 학습 시킵니다. 
      • Hard Negative (다른 사람인데 너무 닮아서 같은 사람으로 인식함) : Semi-Hard 일부만 학습 시킵니다. 

 

Figure from Deep Face Recognition: A Survey Paper

 

Closing


  • 프로젝트를 할 때 초반에 시간을 많이 걸렸던 부분이 얼굴 데이터를 찾고 모으는 거였습니다.
    • 물론 직접 구글에서 크롤링을 해서 raw 한 데이터를 모아서 전처리를 해볼 수 있겠습니다.
    • 하지만 경험이 없으시면 시간이 오래 걸릴 수 있습니다.
    • 함께 학습시킬 수 있는 데이터셋을 공유해 보는 것은 어떨까요?

댓글