딥러닝/자연어 처리
-
FAISS = Facebook AI Similarity Search 유사한 벡터를 검색해서 가져오는 Facebook 라이브러리 이다. 벡터화된 데이터를 인덱싱하고 이를 효율적으로 검색할 수 있도록 도와주는 C++ 기반 라이브러리이다. 라이브러리를 사용해보기 위해 해당 링크에서 sentence embedding 파일을 다운받았다. import os import numpy as np import faiss import requests from io import StringIO import pandas as pd # download sentence embedding files os.mkdir("./data") data_url = "https://raw.githubusercontent.com/jamescalam..
[Vector Similarity Search] FAISSFAISS = Facebook AI Similarity Search 유사한 벡터를 검색해서 가져오는 Facebook 라이브러리 이다. 벡터화된 데이터를 인덱싱하고 이를 효율적으로 검색할 수 있도록 도와주는 C++ 기반 라이브러리이다. 라이브러리를 사용해보기 위해 해당 링크에서 sentence embedding 파일을 다운받았다. import os import numpy as np import faiss import requests from io import StringIO import pandas as pd # download sentence embedding files os.mkdir("./data") data_url = "https://raw.githubusercontent.com/jamescalam..
2023.06.04 -
Vector-based Search. 방식에는 대표적으로 TF-IDF, BM25, 그리고 BERT 기반 방식들이 있다. TF-IDF / BM25 → Sparse Vector SBERT → Dense Vector 1. TF-IDF TF-IDF 은 명칭처럼 Term Frequency (TF: 단어의 빈도)와 Inverse Document Frequency (IDF: 역 문서 빈도)라는 두 가지를 이용한다. TF : 특정 문서 D에서 특정 단어 q의 등장 횟수 "바나나"라는 단어에 대한 TF를 위와 같이 "바나나" 단어 등장 횟수 / 전체 단어 수로 나타낼 수 있다. 그러나 TF만으로는 흔한 단어와 흔하지 않은 단어에 차별점을 둘 수 가 없다. 위 예시에서 "the'라는 단어의 TF를 구해도 "바나나"와 같기..
[Vector Similarity Search] 3 Vector-based Methods for Similarity Search - TF-IDF / BM25 / SBERTVector-based Search. 방식에는 대표적으로 TF-IDF, BM25, 그리고 BERT 기반 방식들이 있다. TF-IDF / BM25 → Sparse Vector SBERT → Dense Vector 1. TF-IDF TF-IDF 은 명칭처럼 Term Frequency (TF: 단어의 빈도)와 Inverse Document Frequency (IDF: 역 문서 빈도)라는 두 가지를 이용한다. TF : 특정 문서 D에서 특정 단어 q의 등장 횟수 "바나나"라는 단어에 대한 TF를 위와 같이 "바나나" 단어 등장 횟수 / 전체 단어 수로 나타낼 수 있다. 그러나 TF만으로는 흔한 단어와 흔하지 않은 단어에 차별점을 둘 수 가 없다. 위 예시에서 "the'라는 단어의 TF를 구해도 "바나나"와 같기..
2023.05.28 -
Jaccard Jaccard 유사도는 두 개체간의 유사성을 계산한다. 예를 들어 두 텍스트 문서의 유사성을 계산하는데 활용할 수 있다. 계산 방식은 교집합을 합집합으로 나눈 것이다. def jaccard(x: str, y: str): # convert to sets x = set(x.split()) y = set(y.split()) # calculate intersection = x.intersection(y) union = x.union(y) return len(intersection)/len(union) 다음 두 문장의 Jaccard 유사도를 계산해본다고 하자. b와 c의 교집합은 위 하이라이트가 되어있는 단어 6개이다. 합집합은 21개의 단어이므로 6/21이 Jaccard Similarity가 될 ..
[Vector Similarity Search] 3 Traditional Methods for Similarity Search - Jaccard / w-shingling / LevenshteinJaccard Jaccard 유사도는 두 개체간의 유사성을 계산한다. 예를 들어 두 텍스트 문서의 유사성을 계산하는데 활용할 수 있다. 계산 방식은 교집합을 합집합으로 나눈 것이다. def jaccard(x: str, y: str): # convert to sets x = set(x.split()) y = set(y.split()) # calculate intersection = x.intersection(y) union = x.union(y) return len(intersection)/len(union) 다음 두 문장의 Jaccard 유사도를 계산해본다고 하자. b와 c의 교집합은 위 하이라이트가 되어있는 단어 6개이다. 합집합은 21개의 단어이므로 6/21이 Jaccard Similarity가 될 ..
2023.05.13 -
Part 1: Foundations of Contrastive Learning Contrastive Learning Objectives Contrastive Data Sampling and Augmentation Strategies Analysis of Contrastive Learning 아래와 같이 3가지 측면에서 Contrastive Learning을 살펴볼 예정이다. ● Geometric Interpretation ● Connection to Mutual Information ● Robustness and Security 1. Geometric Interpretation Understanding Contrastive Representation Learning through Alignment and..
[Contrastive Data and Learning for Natural Language Processing] - 1.3 Analysis of Contrastive LearningPart 1: Foundations of Contrastive Learning Contrastive Learning Objectives Contrastive Data Sampling and Augmentation Strategies Analysis of Contrastive Learning 아래와 같이 3가지 측면에서 Contrastive Learning을 살펴볼 예정이다. ● Geometric Interpretation ● Connection to Mutual Information ● Robustness and Security 1. Geometric Interpretation Understanding Contrastive Representation Learning through Alignment and..
2023.03.06 -
Part 1: Foundations of Contrastive Learning Contrastive Learning Objectives Contrastive Data Sampling and Augmentation Strategies Analysis of Contrastive Learning 1. Self-Supervised Contrastive Learning 대부분의 Contrastive Learning 프레임워크는 Self-Supervised Learning이다. 보통 Positive Pair의 경우 Data Augmentation을 진행하고 Negative Pair의 경우 랜덤으로 선정한다. (e.g. In-batch Negatives) 이렇게 Self-Supervised Learning을 할 때 ..
[Contrastive Data and Learning for Natural Language Processing] - 1.2 Contrastive Data Sampling and Augmentation StrategiesPart 1: Foundations of Contrastive Learning Contrastive Learning Objectives Contrastive Data Sampling and Augmentation Strategies Analysis of Contrastive Learning 1. Self-Supervised Contrastive Learning 대부분의 Contrastive Learning 프레임워크는 Self-Supervised Learning이다. 보통 Positive Pair의 경우 Data Augmentation을 진행하고 Negative Pair의 경우 랜덤으로 선정한다. (e.g. In-batch Negatives) 이렇게 Self-Supervised Learning을 할 때 ..
2023.03.01 -
Part 1: Foundations of Contrastive Learning Contrastive Learning Objectives Contrastive Data Sampling and Augmentation Strategies Analysis of Contrastive Learning 1. What is Contrastive Learning 최근의 NLP 모델들은 representation learning 알고리즘에 크게 의존한다. Contrastive Learning은 유사한 데이터 샘플 쌍은 가깝게 representation되고, 유사하지 않은 데이터 샘플 쌍은 멀리 떨어져 있도록 임베딩 공간을 학습하는 기법이다. Contrastive Learning을 하기위해서는 두 가지 필수 요소가 필요하다..
[Contrastive Data and Learning for Natural Language Processing] - 1.1 Contrastive Learning ObjectivesPart 1: Foundations of Contrastive Learning Contrastive Learning Objectives Contrastive Data Sampling and Augmentation Strategies Analysis of Contrastive Learning 1. What is Contrastive Learning 최근의 NLP 모델들은 representation learning 알고리즘에 크게 의존한다. Contrastive Learning은 유사한 데이터 샘플 쌍은 가깝게 representation되고, 유사하지 않은 데이터 샘플 쌍은 멀리 떨어져 있도록 임베딩 공간을 학습하는 기법이다. Contrastive Learning을 하기위해서는 두 가지 필수 요소가 필요하다..
2023.02.24 -
Encoder source 문장을 압축한 context vecotor를 decoder에 넘겨준다. Encoder 자체만 놓고 보면 non-auto-regressive task이므로 Bi-directional RNN을 사용 가능하다. import torch import torch.nn as nn from torch.nn.utils.rnn import pack_padded_sequecne as pack from torch.nn.utils.rnn import pad_packed_sequence as unpack class Encoder(nn.Module): """ :input: Embedding tensor :return: y, h """ def __init__(self, word_vec_size, hidde..
LSTM sequence-to-sequence with attentionEncoder source 문장을 압축한 context vecotor를 decoder에 넘겨준다. Encoder 자체만 놓고 보면 non-auto-regressive task이므로 Bi-directional RNN을 사용 가능하다. import torch import torch.nn as nn from torch.nn.utils.rnn import pack_padded_sequecne as pack from torch.nn.utils.rnn import pad_packed_sequence as unpack class Encoder(nn.Module): """ :input: Embedding tensor :return: y, h """ def __init__(self, word_vec_size, hidde..
2022.07.04 -
n-gram 모델의 경우 단어를 discrete symbol로 보기 때문에 '애완동물' 이라는 단어 시퀀스는 학습 코퍼스에 존재하지만 '반려동물'이라는 단어 시퀀스는 학습 코퍼스에 존재하지 않는다면 '애완동물'과 '반려동물'의 단어의 유사도를 알 수 없기 때문에 P(보호 단체 | 반려 동물)를 0으로 연산할 것이다. (Unseen sequence에 대한 대처가 미흡) 따라서 Markov Assumption이나 Smoothing 같은 기법들을 도입하여 문제점을 완화하였으나 문제점을 근본적으로 해결하지는 못하였다. Neural Network Language Model 단어의 유사성을 학습할 수 있다면 unseen sequence에 대해 대처를 할 수 있을 것이다. 단어 벡터 간 유사도를 구하는 벡터를 얻어내..
[Language Model] Neural Network Language Modeln-gram 모델의 경우 단어를 discrete symbol로 보기 때문에 '애완동물' 이라는 단어 시퀀스는 학습 코퍼스에 존재하지만 '반려동물'이라는 단어 시퀀스는 학습 코퍼스에 존재하지 않는다면 '애완동물'과 '반려동물'의 단어의 유사도를 알 수 없기 때문에 P(보호 단체 | 반려 동물)를 0으로 연산할 것이다. (Unseen sequence에 대한 대처가 미흡) 따라서 Markov Assumption이나 Smoothing 같은 기법들을 도입하여 문제점을 완화하였으나 문제점을 근본적으로 해결하지는 못하였다. Neural Network Language Model 단어의 유사성을 학습할 수 있다면 unseen sequence에 대해 대처를 할 수 있을 것이다. 단어 벡터 간 유사도를 구하는 벡터를 얻어내..
2022.07.02