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

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

Self-Attentive Sentence Embedding(SASE) 구현해보기

모델 성명은 여기를 참고해주세요. pytorch version 1.8.0입니다. SASE모델을 크게 아래처럼 쪼개갰습니다. embedder self-attention classifier loss function 먼저 들어가기 전에 라이브러리 import를 해주셔야합니다. import torch import torch.nn as nn import torch.nn.functional as F 1. Embedder 임베더는 말 그대로 초기 단어를 임베딩하고, bi-LSTM을 통해 문맥정보를 압축시켜주는 역할을 하는 부분입니다. 저는 word2vec을 따로 학습시켜주었고요. 다음과 같이 구현해주었습니다. 모델 그림으로 보면 위의 빨간 네모박스 부분이라고 생각해주시면 됩니다. 수식을 한번 볼까요? 윗 부분은 wo..

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

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이 뭐죠? 문장의 의미를 잘 표현..

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

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하다는 단점이 있죠. 그리고 가장 큰 문제점은 단어의 인덱스를 표기하기 때문에 단어의 의미를 담을 수..

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

[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_..

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

[huggingface🤗] 2.Auto Class사용해보기

Auto Class 허깅 페이스는 정말 다양한 모델들이 있다고 말씀드렸었죠. 만약에 이 모델들을 불러올 때마다 다 다르게 선언해 줘야 한다면, 매우매우 복잡할 것입니다. 현재 약 15만건 정도 올라와 있는 것으로 보이는데, 그러면 15만개의 모델로 각각 불러와야합니다. 매번 새 모델마다 코드를 다시 짜야하기 때문에 정말 귀찮은 일이 생기죠ㅠ..ㅠ 그래서 허깅 페이스에는 단 하나의 함수로! 이름만 주면! 바~~~로 모델을 불러올 수 있습니다. 그렇기 때문에 Auto Class라고도 부릅니다. 허깅 페이스에는 텍스트, 이미지, 멀티모달 등등 정말 다양한 모델들이 있는데요. 저는 텍스트 위주로 보겠습니다. Auto Class는 아래와 같이 총 3가지가 있습니다. (텍스트에서 사용하기 위해서) AutoConfi..

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

[huggingface🤗] 1.허깅페이스란?

허깅페이스 허깅페이스는 트랜스포머 기반의 다양한 모델들과 학습 스크립트를 구현해놓은 일종의 모듈입니다. 기존의 트랜스포머를 학습시킨다고 하면 딥러닝 프레임워크를 선택하고, 그에 맞게 구현을 해야했습니다. 하지만 허깅페이스는 그런 함수들이 이미 정의 되어있기 때문에, 간단하게 모델을 불러서 쓸 수 있습니다. 즉, 따로 구현을 하지 않고 arguments를 줌으로써 편하게 사용이 가능합니다. 또한 가장 좋은 점은 다른 누군가가 이미 학습한 모델을 가져다 쓸 수도 있다는 것입니다. 기존에는 직접 파일을 찾고, 받아서 사용했지만 간단하게 코드 몇 줄이면 그것도 손쉽게 할 수 있습니다. 이 말은 즉, 내가 학습시킨 모델도 허깅페이스에 올릴 수 있다는 것이죠! 뿐만 아니라 데이터도 다운받을 수 있습니다. 하지만! ..

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

[NLP이론]3.텍스트 분류-영어 텍스트 분류

▶텍스트 분류 앞의 포스팅에서도 작성했듯, 자연어 처리 기술을 활용해 글의 정보를 추출하고, 문제에 맞게 사람이 정한 범주(Class)로 분류하는 문제입니다. 이번 포스팅에서는 영어로 구성된 영화 감상평을 보고, 긍정인지 부정인지 분류하는 과정과, 모델 종류들을 설명하겠습니다. ​ ▶사용할 데이터 Bag of Words Meets Bags of Popcorn데이터입니다. 이 데이터셋은 인터넷 영화 데이터베이스(IMDB)에서 나온 영화 평점 데이터를 활용한 캐글 문제입니다. 각 데이터는 영화 리뷰 텍스트와 평점에 따른 감정(긍정 혹은 부정) 값으로 구성되어있습니다. ​ ▶데이터 처리 과정 첫 번째 과정은 데이터를 불러오고, 정제되지 않은 데이터를 활용하기 쉽게 전처리하는 과정입니다. 두 번째 과정은 데이터..

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

[NLP실습]2.자연어 처리 개요-유사도 및 문제들

이번 포스팅은 앞의 이론에서 언급했었던 유사도 계산 방법들을 한번 더 설명하고, 구현해보겠습니다. 이론 포스팅은 여기를 클릭해주세요. ​ 텍스트 유사도는 두 개 이상의 텍스트가 얼마나 유사한지 표현하는 방식 중 하나입니다. 텍스트 유사도 측정 방법은 여러가지가 있지만, 여기서는 4가지를 다루겠습니다. ​ 1. 자카드 유사도(Jaccard Similarity) ▶구현 포인트 (1) 입력 받은 문장을 단어 단위로 쪼개주고, 중복을 제거해줍니다. (2) 두 단어 집합의 합집합을 구해줍니다. (3) 두 단어 집합의 교집합을 구해줍니다. (4) 교집합/합집합을 통해 유사도를 구해줍니다. 아래 코드는 자카드 유사도를 구현한 코드입니다. def jaccard(sent1,sent2): #(1) 입력 받은 문장을 단어 ..

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

[NLP이론]2.자연어 처리 개요-유사도 및 문제들

▶자연어 처리의 문제들 앞의 포스팅에서 자연어 처리를 활용하는 아래와 같은 여러 문제들이 있다고 언급했습니다. 이번 포스팅에서는 그 문제들에 대해서 알아보겠습니다. · 텍스트 분류 · 텍스트 유사도 · 텍스트 생성 · 기계 이해 ​ (1) 텍스트 분류 텍스트 분류란 자연어 처리 기술을 활용해 특정 텍스트를 사람들이 정한 몇가지 범주(class) 중 어느 범주에 속하는지 분류하는 문제입니다. 2가지 문제일 경우 이진 분류 문제, 3가지 이상일 경우 다중 범주 분류 문제라고 합니다. 텍스트 분류의 예시로는 스팸 분류, 영화 리뷰의 감정 분류, 뉴스 기사 분류 등이 있습니다. 텍스트 분류는 크게 지도 학습을 통한 분류, 비지도 학습을 통한 분류가 있습니다. ​ · 지도 학습을 통한 분류 지도 학습을 통한 분류..

컴공누나
'인공지능공부/자연어처리' 카테고리의 글 목록