WMD 문서 유사도 구하기 (word mover's distance)

Поделиться
HTML-код
  • Опубликовано: 20 сен 2024
  • 최근 문서 유사도 구하기로 각광을 받고 있는 WMD (word mover's distance)를 이해 쉬운 예제와 함께 알아봅니다.
    제가 만든 모든 머신러닝 관련 영상은 아래 재생목록에서 쉽게 찾으실 수 있습니다.
    • 머신러닝

Комментарии • 11

  • @kroos650
    @kroos650 4 года назад +1

    그리고 친절하게 유튜브로 강의 올려주셔서 정말 감사합니다.

  • @CopprerLight
    @CopprerLight 5 лет назад

    좋은 설명 감사합니다 ~

  • @kroos650
    @kroos650 4 года назад +1

    문서라고 말씀해주셨는데, 어떻게 보면 가까운 문장을 뽑는데 유용하겠네요. 지금도 단어-문장-문서라는 개념이 혼동되는데 문서라고 하면 그냥 단순 문장이라고 생각하고 이해하면 될까요?

    • @TheEasyoung
      @TheEasyoung  4 года назад

      네 그러셔도 됩니다. 워드 임베딩(word2vec)을 사용할 경우, 문장과 문서는 벡터 공간에서 어차피 같은 개념이기 때문에(문서나 문장이나 여러 단어의 결합) 혼용되서 많이 사용됩니다.

  • @user-uk7pt7kc1k
    @user-uk7pt7kc1k 4 года назад

    민석님!! 좋은 강의 너무 감사합니다. 다름이 아니라 질문이 있어 남겨요 ,,!! 혹시 한국어 문서 유사도를 측정하는데 사용하는
    doc2vec과 이번강의에서 말씀하신 WMD중 어떤게 더 효과적인지 알 수 있을까요?!

  • @한상현-z4i
    @한상현-z4i 5 лет назад

    쓰신 글과 영상 wmd 친절한 설명 잘 보았습니다. 질문이 있습니다.
    뉴스기사나 위키피디아 같은 수십만,수백만 문서를 처리할 때 top N개를 뽑으려고 한다면 word2vec을 이용하여 큰 행렬을 만들면 사이즈가 엄청 커질것같은데 이러건 어떻게 처리하나요? 램에 행렬 데이터셋이 다 안올라갈것같은데 해결하기위한 방법이 있을까요?

  • @myungchulkang5716
    @myungchulkang5716 5 лет назад +1

    안녕하세요! 강의 너무 잘 보고 있습니다. 이제 막 NLP에 관심에 생겨 공부를 시작한 학생입니다. 궁금한 점이 하나 생겨 질문드립니다.
    word2vec는 skip-gram의 경우 단어를 예측하는 방식으로 학습을 하는 알고리즘으로 알고있는데요,
    brave라는 word는 king과 man이라는 2개의 target으로 짝이 이루어져 있는데, 어떻게 하나의 단어가 2개의 단어를 예측할 수 있는 것인지 궁금합니다. (그 내부의 자세한 행렬 계산이 궁금합니다. 저번 비디오에서도 자세하게 다루시지 않으셨던것 같습니다.)
    감사합니다!

    • @TheEasyoung
      @TheEasyoung  5 лет назад +2

      Myungchul Kang 안녕하세요. word2vec의 생성 과정에 대한 질문이시네요. 제 word2vec 유튜브 영상에 이번 영상 보다는 조금 자세히 설명했는데요, 기본적으로 윈도우 안에서 (현재 단어, 이웃 단어)로 학습 데이터로 만들고 딥러닝 모델을 학습 시키죠. 학습 과정상 (king, man), (king,brave)라는 학습 데이터가 있었다면 덴즈레이어의 노드들의 웨이트들이 king이 들어왔을 때 man 또는 brave의 원 핫 인코딩으로 최대한 맞추도록 설정이 됩니다. 물론 word2vec을 생성하기 위한 네트워크의 예측값이 원 핫 인코딩으로 정확히 일치하진 않습니다만, word2vec은 예측값이 아닌 가운데 있는 덴즈 레이어의 웨이트 값들이죠. 그리고 이 웨이트 값들을 각 단어의 임베딩으로 사용할 경우 유사도가 있음을 발견할 수 있습니다. 행렬곱은 덴즈 레이어에 두개의 노드가 있고 총 단어의 갯수가 10개일 경우, (1,10)*(10,2)*(2*10)이 되고 가운데 (10,2) 행렬이 word2vec이 됩니다.

    • @myungchulkang5716
      @myungchulkang5716 5 лет назад

      @@TheEasyoung 답변 감사합니다 :) 하나만 더 여쭤봐도 될까요? 말씀하신대로 word2vec는 가중치 벡터 행렬이라고 하면 단어 하나당 하나의 벡터로는 어떻게 표현되는 것인가요? 허민석님께 드시는 예시를 보면 king = [1,1] , brave = [1,2] , ... 이런식으로 나타납니다.(물론 그림으로 보여주기 위해 이차원 벡터를 사용할 수 있습니다.) 말씀하신 word2vec는 input과 output으로 (과정 생략) 학습되는 모델의 가중치 벡터라고 하셨는데, 그렇다면 위의 예시는 어떻게 이해하면 될까요? 감사합니다.

    • @TheEasyoung
      @TheEasyoung  5 лет назад +1

      Myungchul Kang 단어의 인풋이 원 한 인코딩이기 때문에 덴즈 레이어의 해당 컬럼의 웨이트가 결국 임베딩과 동일합니다. 말로 설명 드리기 어렵지만, 제 word2vec 영상 보시면 더 이해에 도움 될 것 같습니다.

    • @myungchulkang5716
      @myungchulkang5716 5 лет назад

      @@TheEasyoung 감사합니다 좀 더 고민해 보겠습니다 !! :)