1. Abstract - 기존 모델의 한계점과 저자의 모델에 대한 설명

    abstract.JPG

    기존 BOW 모델의 단점 : 단어 간 순서, 의미관계를 무시한다.

    제안하는 Paragraph Vector의 특징: +

    1. 비지도학습 알고리즘 → 인간이 개입한 라벨이 없기 때문인데, 밑에 북마크 해둔 글을 보면 Backprop을 하는 과정에서 정답 데이터 생성 과정이 결국 라벨을 만드는 것과 유사한 행위이기 때문에 엄밀하게는 자기지도학습이 맞다고 한다. 자기지도학습에 대한 설명은 링크 참고. https://greeksharifa.github.io/self-supervised learning/2020/11/01/Self-Supervised-Learning/

    Is Word2vec a supervised/unsupervised learning algorithm?

    1. 입력 텍스트의 크기가 가변적이다

    2. 텍스트 분류 및 문장 분석 작업에서 SOTA 성능을 내었음 → 기존 word2vec이 단순히 관계 분석 task에만 활용된 것에 벗어나 다양한 작업에도 사용. 근데 이건 좀 찾아보니 기존 word2vec도 번역에 사용된 예시가 있긴 하다. https://code.google.com/archive/p/word2vec/ 여기 밑에 있는

    이 멘션을 참고. 시간 상 다루지는 않겠음.

    word2vec 기계번역.JPG

  2. Introduction - 모델에 대한 설명/기원

    intro.JPG

    1. paragraph 벡터와 word 벡터들을 Concat. 하여 다음 단어를 예측함. 두 종류의 벡터는 SGD, backprop을 활용하여 학습됨.

    2. paragraph 단위에서 paragraph vector는 모두 다름(즉 모여서 행렬을 이룸). 단 word vector의 경우 vocab size * hidden dim_size의 행렬이 공통으로 주어짐(parameter 개수를 줄이는 효과가 있다).

    3. 추론 단계에서 word vector는 고정하고 paragraph vector들을 활용하여 새로운 paragraph vector를 예측함.

    intro2.JPG

    1. 벡터들을 결합 또는 평균내는 개념은 이전의 논문들을 참고하였음.

    2. 많이 영향을 받은 건 Bengio의 논문, 여기서 다음 단어를 예측하는 방식을 채택하였음.

    →공동저자는 Mikolov인데 이 사람처럼 가운데를 기준으로 학습하지 않음. 근데 중간에 나오는 식이나 개념에선 CBOW 및 Skip-gram개념을 활용하였음. 결국 가운데 단어를 예측하는 방법은 폐기한건가? 기존 NN 방법론을 쓰려는 건지 아무튼 의아함.

    intro3.JPG

    1. 단어 레벨에서 확장하기 위해 다야한 방법이 시도 되었음. 전체 문서에 등장하는 단어들에 대한 가중치 평균을 활용하거나, Parse tree를 활용하는 방법, 그러나 두 방법 모두 한계가 있음(단어 순서 고려 X, parsing에 의존하여 문장단위에만 활용가능)

    intro4.JPG

    1. 문장단위 분석 task에서 SOTA 성능, 텍스트 분류 task에서 BOW 모델보다 30% 더 나은 성능을 보임.
    1. Algorithm

    3-1. 기존 방법 복습

    algorithm1.JPG

    w1~wT가 주어질 때 다음 단어를 예측하기 위해 중간에 있는 로그 확률의 평균을 최대화한다.

    근데 저 수식은 COW에서 등장한 개념이다. (window의 가운데를 예측) 그런데 figure는 Bengio의 방식을 기준으로 과정을 표현하고 있다. → 개념의 혼동이 옴.

    또한 CBOW와 마찬가지로 계층적 Softmax를 활용하고 Binary Huffman tree를 통해 구현하여 시간을 줄였다고 함.

    3-2. PV-DM

    algorithm2.JPG

    1. PV를 활용한 계기는 단순히 다음 단어를 예측하는 용도로 vector를 만들었더니, 의도치않게 그게 단어 간의 의미관계까지 포착한다는 것! → 분명 지난 논문들 리뷰 중에 비슷한 의미의 단어는 주변 단어의 배치가 유사하다는 가정하에 test data를 만들고 그랬던 것 같은데 좀 이상하다.

    2. 모든 문단은 행렬 D의 고유한 row vector 하나로 mapping 되며, 모든 단어는 행렬 W의 고유한 row vector 하나로 mapping된다.

    3. 문단 토큰은 또 다른 단어로 생각할 수 있다. 이것은 마치 현재 문맥을 상기시키는 역할을 한다. 이런 이유로 저자는 Distributed Memory라는 명칭을 제안하였다.

    4. 문맥은 고정된 길이이며, 문단 내부에서 sliding window를 통해 샘플된다. → 근데 한 window 안에서 상반된 내용이 등장할 때는 어떻게 처리하지? 가장 높은 확률의 context가 선택되나?

    → context라는 단어를 써서 햇갈리게 했는데 여기서 the cat sat이 context가 되는 듯.

    algorithm3.JPG

    1. 예측 단계에선 새로운 문단에 대한 paragraph vector를 생성하는 과정을 거침. 단어 벡터 및 softmax 가중치는 고정됨.

    → 근데 새로운 문단에서 새로운 단어가 등장하면 어떻게 되나? 학습 전에 전체 데이터에 대한 Vocab를 만드는 과정이 있어야 할 듯. 생각해보니 paragraph vector를 생성하는 것이 아니라 전체 paragraph matrix 중에서 알려진 id와 mapping 되는 행만 업데이트 되어 있기 때문에, 새로운 id와 mapping 되는 행을 업데이트 하는 것으로 보면 될 듯. → 이거도 근데 다시 뒤를 보니 새로 paragraph matrix의 행을 추가하는 것으로 되어있음?

    → test data에 대해서도 Backprop을 진행하는 것에 대해 이상하다 느껴진다. test data에 대해 label을 출력하는 것이 아니라 test data에서 자체적으로 label(마지막 단어)를 형성해서 그걸로 backprop을 진행한다 생각하면 이해가 될 듯하다. 그래서 비지도학습이라고 부른 것 같다.

    algorithm9.JPG

    experiment6.JPG

    1. 전체 파라미터 수는 상기된 수치와 같음. 제곱의 형태가 없어 parameter 숫자가 적다(물론 N,M이 corpus에 따라 커질 수 있다). 또한 학습 과정에서 row vector만 갱신 되므로 굉장히 효율적이다.

    algorithm4.JPG

    학습이 완료되면 문단 벡터 D를 활용하여 다양한 머신러닝 기법을 수행한다.

    algorithm5.JPG

    소개된 장점 중에 n-gram 모델보다 parameter 숫자가 적어 성능이 좋게 나오지 않을까라는 추측이 있음.

    3-3 PV-DBOW

    algorithm6.JPG

    Skip-gram을 활용한 방식도 있음. 여기선 대신 가운데 단어 대신 paragraph vector를 활용한다. 1) window를 통해 문장을 수집하고, 2) 문단 벡터를 통해 예측기를 만들고, 3) 예측기를 통해 문장의 단어를 예측한다.

    algorithm7.JPG

    algorithm8.JPG

    PV-DBOW는 parameter 숫자가 적다. 그래서 보조용으로 사용하는 것 같다.

    보통 PV-DM만 활용하는 것이 성능이 좋지만, PV-DBOW를 같이 사용한 경우 대부분의 task에서 일관성을 보였기 때문에 같이 사용하는 것을 저자는 강력하게 추천하였다.

    1. Experiment

    experiment1.JPG

    두 가지 실험을 진행하였다. Stanford 데이터는 한 문장 단위이며 IMDB 데이터는 여러 문장으로 구성되었다.

    4-1. Stanford Dataset

    experiment2.JPG

    실험 데이터에 대한 자세한 설명 → train/valid/test 구분을 보니 뭔가 마음이 편안하다.

    sentence마다 라벨이 있고, sentence도 subphrases로 parse 하여 라벨링을 진행하였음.

    실험은 subphrase 단위로 진행하였음.

    experiment3.JPG

    5개의 라벨 중 추측 + 2개의 라벨 중 추측 task에 대한 error rate에서 기존 논문 대비 더 나은 성능을 보였다. → 51프로면 많이 처참한데, 추천시스템이 정말 많이 어렵구나 싶다.

    experiment4.JPG

    Train 단계에선 학습을 위해 모든 subphrases를 하나의 독립된 문장으로 취급하였음. 모든 문장과 그 부속구를 표현하는 vector에 대한 학습이 끝나면(→word+paragraph vector로 이해하면 될 듯) logistic regression 입력으로 문장을 전달하여 predictor를 학습하였음.

    experiment5.JPG

    Test 단계에선 아까 언급한 바와 같이 모든 단어벡터를 freeze하고 sentence 표현벡터를 Gradient descent를 통해 학습하였음. test 문장에 대한 벡터 표현의 학습이 완료되면 그 문장을 logistic regression 입력으로 문장을 전달하여 movie rating을 예측하게 하였음.

    Cross-validation을 통해 알아낸 최적의 window size는 8임.

    paragraph vector 와 7개의 단어벡터를 합치고 8번째 단어를 예측하는 방식으로 paragraph+word vector+sftmax parameter를 학습하였음.

    experiment6.JPG

    experiment7.JPG

    실험 결과 parsing 사용하지 않고도 SOTA 성능을 달성하였다.

    4-2 IMDB Dataset

    experiment8.JPG

    이전 실험에서 우수한 성적을 거둔 RNN 모델의 경우 parsing을 하기 때문에 여러 문장으로 구성된 이번 실험에서는 활용할 수 없다. 하지만 저자가 제안한 모델은 parsing 과정이 없기 때문에 이번 Dataset에서도 우수한 성적을 거둘 수 있었다.

    experiment9.JPG

    Train 과정에서 라벨된 데이터를 sentiment classifier에 feed해서 classifier의 parameter 들이 학습될 수 있도록 함(이전 방식과 동일함).

    Test 과정 역시 이전 과정과 동일함.

    마찬가지로 SOTA 성능을 얻었다.

    4-3. Information Retrieval with Paragraph Vectors

    experiment10.JPG

    정보 검색 task는 정해진 길이의 문단 표현이 필요하기 때문에 Paragraph Vector가 좋은 성능을 낼 것으로 예측되었다. 주어진 Dataset은 백만개의 가장 인기있는 질문에서 검색 엔진이 답안으로 제출하는 10개의 후보를 담은 백만개의 문단이다. 이 문단들 하나하나를 스니펫(!)으로 부른다.

    → 이거 완전 구글에서만 할 수 있는 task인데 ㅋㅋㅋ

    Paragraph Vector의 성능을 측정하기 위해 저자는 새로운 데이터셋을 생성하였다. 하나의 쿼리에 대해 3개의 문단을 묶어 구성하였다. 두 개의 paragraph는 하나의 쿼리에서 생성된 결과물이며, 다른 하나는 다른 쿼리에서 생성된 문단이다.

    → 원래 10개의 답변이 있기 때문에 3,3,4으로 쪼개서 한 것 같음.

    저자의 목표는 이 세 문단 중 어떤 두 문단이 같은 쿼리에서 왔는지 판별하는 것이다. 달성하기 위해 문단 벡터를 사용하여 각 문단 별 거리를 측정하였다. 좋은 표현일수록 같은 쿼리에서 생성된 두 문단 사이 거리는 좁고, 다른 쿼리에서 생성된 문단과의 거리는 길 것이다.

    experiment11.JPG

    저자는 매력적인 판별치를 얻지 못한 경우에 error로 기록하였다.

    → 사람의 주관이 개입??

    결과적으로 Paragraph Vector가 매우 좋은 성능을 낸 것을 알 수 있다.

    이를 통해 저자는 제안한 모델이 입력 텍스트의 의미를 포착하는데 매우 유용하다고 제언하였다.

    → 이건 지난주에도 얘기한 바인데, 두 문단의 관계를 얻는 거로 입력 텍스트의 의미를 모두 얻었다 볼 수 있을까? 구글에서 얻은 스닙셋이 아니라면 비슷한 실험 조건을 만들 수 있을지 의문이 들었다.

    4-4. Some further observations

    experiment12.JPG

    실험 도중에서 기록한 특이사항

    → 이렇게 일일히 기록한 점이 너무 좋았다. 이게 논문이지! 라는 느낌을 받았다.

    1. Discussion

    discussion1.JPG

    1. 내가 생각한 이 논문의 의의

    → Word2Vec의 사용 용도에 대해 진지하게 고민한 흔적이 느껴진다. 이전 논문에서 아마 dataset과 관련해서 많이 tackle을 받았던 것일까? 다른 논문에서 사용한 dataset 및 task에 대해 자신들의 방법을 활용하려고 노력했다.

    → 그 과정에서 현대의 BERT, GPT가 선두하는 Transfer Learning의 시초격을 보여줬다고 생각한다. 그리고 애매하게 기억하는 self-supervised learning에 대해 잘 알게 되는 계기가 되었다.

    다른 사람 정리글

    Review: Distributed Representations of Sentences and Documents (Doc2Vec)