Text Representation 2 : Distributed Representations
Sentence/Paragraph/Document-level
Document Embedding?
아이디어 : 단어를 임베딩 할 수 있다면 centences, phrases, documents도 되지 않을까?
실제로 많이 하는 부분
위의 그림은 각각의 문단들에 대해서 먼저 임배딩을 한 후에 t-SNE를 통해서 차원 축소를 한 후 보여준 그림
하나의 점들은 각각의 paragraph
색상은 해당하는 paragraph가 속한 섹션
주게가 비슷한 위키피디아의 글들의 paragraph들이 나름대로 거리적으로 유사한 위치에 임배딩이 되고 있음
Paragraph Vecotr model?
두 가지 형태
첫번째 형태 : distributed memory(PV-DM)
paragraph마다 각각 아이디를 가지고 있음
입력으로 함께 단어가 들어감
단어 몇 개를 집어 넣을 것인지는 윈도우 사이즈에 해당하는 하이퍼 파라미터가 됨
이걸 통해서 다음번 시퀀스에 해당하는 단어가 무엇일지를 예측하는 것이 PV-DM 모델의 구조
문서 자체가 The cat sat on the table이라고 하면 the/cat/sat을 넣어서 on을 예측, cat/sat/on을 넣어서 the를 예측 등
context word와 다음번 단어들은 바뀌지만 핵심은 같은 paragraph에서 단어들의 시퀀스를 예측하는 랭귀지 모델 형태를 취할 때 이 id는 동일한 값을 갖음
index paragraph vector는 항상 해당하는 paragraph에 대응하는 단어들을 가지고 모델링을 할 때는 같은 값을 갖는다는 뜻
word vector도 역시 모든 paragraph에 대해서 똑같은 값을 가짐
a 문서에서의 cat word 벡터와 b 문서의 cat word 벡터는 사실은 같아야 됨
두번째 형태?
Distributed Bag of Words(PV-DBOW)
입력 자체는 paragraph id 하나만 집어넣음
paragraph matrix를 통해서 해당하는 paragraph id를 넣고 그 paragraph에 존재하는 일정 개수의 단어를 예측
한 가지 유의해야 될 점 : PV-DM 모델같은 경우에는 일련의 몇 개의 단어를 통해서 다음 단어가 뭐가 될 지를 예측하는 방식
이 paragraph id는 꼭 The cat sat on 순서대로 할 필요가 없음
즉 예측을 하는데 있어서 cat table sat the 이런 식으로 순서를 바꿔도 상관없음
입력을 사용할 때는 word vector를 필요로 하지 않음
PV-DM만 가지고서도 대부분의 taks에서는 working을 잘 하는데 만약에 가능하다면 PV-DM 모델과 PV-DBOW 모델 두가지를 다 사용하는 것을 추천함(논문 명시)
Embed Everything?
Class자체도 임배딩할 수 있지 않을까?
Supervised Paragraph Vector(SPV)
리뷰 데이터를 사용
리뷰 데이터에 대해서 각각의 단어들이 입력으로 들어감
여기에 대한 paragraph vector도 정의
해당하는 평점 벡터도 직접 적용
워드 임배딩 공간에서 1점부터 5점 척도의 평점을 받은 상황이라면 1점 벡터는 어디에 위치해야 되고 이점 백터는 어디에 위치해야 되고 3, 4, 5점 벡터들은 각각 어디에 위치하는 게 적합한가 질문에 대답을 하고 싶었던 게 연구의 모티베이션
초록색으로 표시되어 있는 부분들은 단어 벡터들
영어로 작성된 영화 리뷰 데이터
awful, horro 단어가 나오면 굉장히 부정적인 뉘앙스를 가지짐
wonderful, awesome 단어들이 않았을 때는 굉장히 긍정적임
초록색은 단어 벡터들이고 보라색에 해당하는 벡터들이 이제 paragraph
즉, 각각의 리뷰들임
단어와 리뷰가 같은 공간에 있음
임베딩을 하고 차원 축소를 해서 봤을 때 빨간색으로 보이는 파트가 각각의 평점들에 대한 벡터
다시 말하면 가장 왼쪽에 있는 것은 1점 벡터, 가장 오른쪽에 있는 것은 5점 벡터
평점의 임베딩 벡터들과 가까이에 있는 paragraph들은 해당하는 평점을 가질 확률이 상당히 높음
몇몇 데이터 세트의 대해서는 paragraph와 class까지 임배딩을 했을 때 분류 퍼포먼스가 좋았음
More Things to Embed?
Day Embedding in News corpus?
뉴스 단어가 임베딩이 되고 뉴스 기사가 임배딩이 되면 그 날의 대표적인 뉴스들은 공간 상에 어디에 위치해 있을까?
날짜를 임베딩 할 수 있지 않을까라는 아이디어에서 출발
첫번째 접근 같은 경우에는 데이 임배딩 벡터가 있고 모든 기사의 제목들을 병합한 후 해당하는 단어들을 예측
두번째 접근은 각각의 뉴스 기사를 따로 따로 취급 에서 데이 임배딩 벡터가 여러번 학습이 되도록 함
날짜뿐만이 아니라 정치 경제 사회 등 섹션 까지도 임베딩, 다큐먼트 인덱스까지를 임베딩, 토픽에 해당하는 부분들까지 임베딩하거나 여러 가지 구조들을 살펴봄
모티베이션 자체는 오늘 무슨 일이 일어났지 라는 것을 뉴스를 통해서 사람들이 많이 파악을 하는데 그 날의 생성된 개별적인 뉴스들이 아니라 종합적인 뉴스들을 다 고려해서 뉴스들로 이루어진 공간 상에서 하루 하루 하루는 어디에 위치할 것인가임
오늘 일어났던 일련의 사건들은 1년 전에 일어났던 어떠한 사건들 또는 그 당시의 사회 경제 정치적인 상황과 유사할 수 있음
System Call Trace Embedding for System Anomaly Detection?
서버에 사용자들이 뭔가 작업을 했을 때 로그가 남음
호스트 기반으로 보면 시스템에 접속을 해서 누군가가 행위를 하면 숫자들이 하나하나 코드화 되어 있음
예를 들어서 접속을 했다, 파일을 열었다, 파일을 삭제했다. 이러한 행위들을 쭉 나열을 지키면 사용자의 로그가 됨
이 행위가 시스템 관리자 측면에서 관점에서 봤을 때 일반적인 사용자의 행동인지 아니면 뭔가 의심이 가는 행동이어서 조치를 취해야 되는 이상 행동인지 를 파악하고 싶었던 것이 목적
가장 큰 이슈 systemcall trace의 길이가 가변적이라는게 특징
길이가 가변적이기 때문에 이미 갖고 있는 벡터 스페이스 모델을 직접 활용하기가 어려움
숫자 자체도 연속형의 숫자가 아닌 코드화된 숫자기 때문에 의미를 갖는다고 볼 수는 없음
다시 말하면 코드 100번과 90번의 차이가 150번과 200번의 차이보다 가깝다라는 결론을 내릴 수가 없음
임배딩 방식을 통해서 Vectorization을 수행한 후 만들어진 최종적인 vector를 통해서 Anomaly Detection을 수행
벡터화가 된 output을 가져다가 이상 탐지 알고리즘에 적용을 해서 특정한 시스템 콜이 정상적인 콜인지 아니면 의심 가는 콜인지를 판별하는 프레임워크를 만듦
핵심은 어떻게 하면 가변적 길이를 갖는 시스템 콜 트레이스를 벡터 스페이스 모델(뉴럴네트워크 모델, 랜덤 포레스트 등)에 적용할 수 있도록 고정 길이의 백터로 변환할 수 있을까였음
길이가 짧은 시퀀스도 10차원 벡터로, 길이가 긴 시퀀스도 10차원 벡터로
paragraph 임배딩 관점에서의 아이디어를 차용하면 어렵지 않게 만들어 낼 수 있음
하나의 System Call Trace를 Document로 취급
개별 syscall을 word로 취급하여 임배딩 수행
임배딩하는 데 있어 Bi-Directional RNN을 이용한 auto-encoder 사용
입력을 정방향과 역방향으로 흘려가면서 시퀀스가 있는 모양이기 때문에 순환 신경망에 태워서 최종적인 hidden state vector들을 concat한 후 자기 자신이 다시 예측 되도록 하는 구조
오리지널 오토 인코더를 사용해 보기도 함
임의로 입력을 curruption을 시키는 모델도 씀
임의의 시스템 콜을 일정 확률로 없애 버리거나 또는 시퀀스를 permutaion 함
쉽게 말하면 입력에 임의로 노이즈를 줌
노이즈를 조금 첨가해도 출력이 제대로 나온다고 한다면 보다 더 간결한 모양이 만들어 짐
Live2Vec in afreecaTV?
CBOW같은 경우에는 특정한 단어를 예측하기 위해서 주변의 context 단어들을 이용해 모양을 만듦
이것을 시청자의 시청 이력으로 봐서(일련의 시간의흐름을 가지고 봤다면) 각각의 방송을 워드라고 볼 수가 있겠고
전체 시퀀스 자체를 paragraph라고 볼 수도 있음
Doc2Vec 모델을 학습을 시키게 되면 나중에는 하나의 영상 자체가 어떤 특정한 d차원의 연속형 벡터로 임베딩이 되고
어떠한 방송들이 또는 영상들이 유사한 지를 찾아서 추천 해주는 시스템
댓글