전체 글

ML 엔지니어 컴공누나입니다:) wodbs9522@gmail.com
인공지능공부/자연어처리

Self-Attentive Sentence Embedding(SASE)의 모든 것

등장 배경 Word2vec, Fasttext와 같이 개별 단어에 대해 의미있는 표현들을 학습하는 word embedding 기법들은 많은 발전을 이루었는데요. 여러 단어 혹은 구가 나열된 문장의 표현을 학습하는 sentence embedding 기법들은 word embedding에 비해 많이 부족합니다. sentence embedding은 크게 두 가지로 나누어질 수 있는데요. 첫 번째는 unsupervised learning을 통해 universal sentence representation을 만드는 방법입니다. 대표적인 예로는 Skip Tought vector, ParagraphVector 등이 있습니다. ※ universal sentence representation이 뭐죠? 문장의 의미를 잘 표현..

인공지능공부/그래프

[Stanford/CS224W] 6. GNN(1) : Graph Neural Networks

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 Belief Propgation에 대해서 알아보았습니다. 이번 포스팅에서는 드디어 그래프 신경망에 대해서 알아보겠습니다! 딥하게 들어가는 것은 다음 포스팅 부터이니 가볍게 읽어주세요! 현재까지의 Node Embedding 지금까지 우리가 노드 임베딩을 하려고 했던 이유는 그래프의 노드를 d차원의 벡터로 표현하기 위함이었습니다. 임베딩 할 때는 실제 그래프에서 가까운 노드끼리 벡터 공간에서도 가깝에 유지하도록 매핑 함수 f를 학습하려고 하였습니다. 위의 학습을 위해서는 크게 두 가지를 정의해야합니다. (참고 포스팅) 1. 인코더 인코더는 '노드를 어떻게 벡터로 바꾸는가' 입니다. 즉, 노드를 수치로 나타내는 것이죠. 여기서는 shallow enco..

인공지능공부/그래프

[Stanford/CS224W] 5. Message Passing(3) : Belief Propagation

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 Relational Classification, Iterative Classification에 대해서 알아보았습니다. 이번 포스팅에서는 Belief Propgation에 대해서 알아보겠습니다. Belief Propagation 지난 포스팅에서 설명한 방법론들을 살펴보면 모두 이웃 노드로부터 받은 확률의 가중 평균으로 자기 자신을 업데이트합니다. (초기에는 라벨로 부터 받죠) 이 말은 즉, 주변 노드가 현재 노드의 결정에 영향을 준다는 말이죠. 학교에서 쪽지 돌리는 것을 생각해보죠. 서로 가깝거나 연결된 사람에게 쪽지를 돌릴 수 있습니다. 이것을 이웃 노드가 belief를 준다 라고 표현합니다. 노드는 이웃 노드들로부터 belief를 받아 자신을 ..

인공지능공부/자연어처리

fasttext의 모든 것

fasttext fasttext는 word2vec이후 페이스북에서 개발한 모델입니다. 두 방법이 크게 다르지는 않지만 관점의 차이가 있습니다. word2vec에서는 말 그대로 "단어"를 최소단위로 생각했습니다. 하지만 fasttext같은 경우 단어를 더 작은 단위로 쪼개어 봅니다. 즉, n-gram의 구성으로 취급합니다. 예를 들어 kitty라는 단어가 있다고 합시다. fasttext에서는 이 단어의 시작과 끝에 를 붙여 를 만들어주고, n-gram이 2일때, 아래와 같이 쪼개줍니다. 이를 내부 단어(subword)라고 합니다. word2vec였으면 kitty자체를 하나의 단어로 취급했지만, fasttext같은 경우 위의 7개를 단어로 취급합니다. 즉, 위의 7개의 토근을 벡터화합니다. 위와 같이 단어를..

인공지능공부/자연어처리

word2vec의 모든 것

word2vec 등장 배경 word2vec라는 것은 워드 임베딩(word embedding)의 한 종류입니다. 다른 포스팅을 참고해 보시면 단어 임베딩에는 다양한 방법이 있는데요. 가장 쉽게 접근할 수 있는 방법은 원핫 인코딩(one-hot encoding)입니다. 원핫 인코딩은 0 또는 1로 단어를 표현하는 방법으로, 단어의 수만큼 matrix를 만들고, 그 단어에 해당하는 인덱스를 1로 채워 주는 방법입니다. 더 자세히 알고 싶으시다면 위의 포스팅을 참고해주세요. 이 방법은 직관적으로 정말 이해하기가 쉽습니다. 하지만 모든 단어를 matrix로 만들기에는 무리가 있고, matrix가 굉장히 sparse하다는 단점이 있죠. 그리고 가장 큰 문제점은 단어의 인덱스를 표기하기 때문에 단어의 의미를 담을 수..

인공지능공부/그래프

[Stanford/CS224W] 5. Message Passing(2) : Relational Classification and Iterative Classification

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 대략적으로 Node Classification을 하기 위해 어떤 과정이 필요한지 알아보았습니다. 이번 포스팅에서는 앞의 포스팅에서 언급한 Relational Classification, Iterative Classification에 대해서 알아보겠습니다. Relational Classification relational classification의 기본 아이디어는 노드 v의 라벨 확률인 Yv는 그 노드의 주변 노드들 확률의 가중 평균을 내는 것입니다. 여기서 노드는 v, 초기화 된 라벨은 Yv, 정답 라벨은 Yv*라고 하겠습니다. 라벨이 없는 노드는 초기 Yv = 0.5가 됩니다.(여기서는 이진 분류로 가정하겠습니다.) 즉, 두 라벨 중 어떤것도..

인공지능공부/그래프

[Stanford/CS224W] 5. Message Passing(1) : Message Passing and Node Classification

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 노드 임베딩의 Matrix Factorization에 대해서 알아봤습니다. 이번 포스팅에서는 노드 분류를 위해 노드 간의 의미 교환은 어떻게 하는지 알아보겠습니다. Node Classification 앞의 강의에 노드를 임베딩 하는 방법 또는 그래프를 임베딩하는 방법에 대해서 배웠습니다. 이제 여기서 조금 더 나아가면 각 노드가 어떤 라벨을 가지는지 분류하는 node classification를 생각해 볼 수 있습니다. node classification이란 위와 같이 그래프가 있을때, 각 노드에 라벨이 존재하는 것을 뜻합니다. 왼쪽 그래프에서 빨간색, 초록색이 라벨이고, 회색은 라벨이 없는 노드입니다. 즉, 위의 라벨이 있는 노드로부터 라벨이 ..

인공지능공부/그래프

[Stanford/CS224W] 4. PageRank(4) : Matrix Factorization and Node embedding

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 Personalized PageRank(PPR), Random Walk with Restarts(RWR) 알고리즘에 대해서 알아봤습니다. 페이지 랭크 알고리즘의 문제점과 해결방법을 알아 보았습니다. 이번 포스팅에서는 노드 임베딩의 Matrix Factorization에 대해서 알아보겠습니다. Matrix Factorization 노드 임베딩 관련 예전 포스팅에서 우리는 노드 임베딩 매트릭스를 위와 같이 정의했었죠. 각 노드들은 전체 matrix의 한 행을 의미하고, 이 임베딩의 목적은 각 노드의 내적이 최대가 되는것이었습니다. 간단하게 생각하면 노드 사이의 내적(유사도)라는 것은 노드 끼리 연결되어 있는 것을 뜻하죠. 따라서 두 노드 v, u가 ..

인공지능공부/자연어처리

[huggingface🤗] 3.Trainer사용해보기

Trainer Trainer는 말 그대로 모델 학습을 담당하는 핵심 클래스입니다. Trainer는 데이터 로딩 전처리, 모델 생성과 최적화, 학습 루프 관리, 중간 결과 보고, 학습 결과 저장 등의 다양한 기능을 수행할 수 있습니다. 클래스 초기화 trainer = Trainer( model=model, # 학습할 모델 args=args, # TrainingArguments train_dataset=train_dataset, # 학습에 사용될 데이터셋 eval_dataset=val_dataset, # 평가에 사용될 데이터셋 tokenizer=tokenizer, # 토크나이저 compute_metrics=compute_metrics, # 평가 지표 계산 함수 callbacks=[early_stopping_..

인공지능공부/그래프

[Stanford/CS224W] 4. PageRank(3) : Random Walk with Restarts(RWR)와 Personalized PageRank(PPR)

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 페이지 랭크 알고리즘의 문제점과 해결방법을 알아 보았습니다. 이번 포스팅에서는 재시작이 포함된 랜덤 워크와 개인화된 페이지 랭크에 대해서 알아보도록 하겠습니다. 앞의 포스팅에서 페이지 랭크의 해결 방법으로 모든 노드를 균일한 확률로 순간이동을 했었습니다. 여기서는 두 노드가 유사성을 전혀 고려하지 않습니다. 일반적으로 생각했을 때, 유사한 노드에 더 많이 이동해야 더 명확한 값을 가질 수 있겠죠? Recommendation 먼저 각 알고리즘에 대해 알아보기 전에 그래프를 이용한 추천에 대해서 알아보고 가겠습니다. 다음과 같이 하나의 유저 노드가 여러개의 아이템 노드를 가질 수 있는 bipartite graph(이분 그래프)로 표현해 줄 수 있습니..

컴공누나
컴공누나의 지식 보관소