본문 바로가기

필기 노트30

[Huggingface] Datasets / Preprocessing / Training / Evaluating 출처 : https://www.youtube.com/watch?v=_BZearw7f0w&list=PLo2EIpI_JMQvbh6diTDl2TwbAyu8QWdpx&ab_channel=HuggingFace Dataset / Preprocessing load_dataset() 을 통해서 Huggingface에서 제공하는 데이터셋을 불러와서 사용할 수 있다. load_dataset() 을 통해서 불러온 데이터셋은 DatasetDict 클래스로 제공된다. (그냥 dictionary라고 생각하면 된다.) split 에 따라서 "train", "validation", "test" 등으로 구분되어 있어서 해당 split의 이름으로 데이터셋에 접근할 수 있다. raw_dataset = load_dataset('...') .. 2021. 7. 18.
[Huggingface] PreTrainedTokenizer class 모든 Tokenizer들이 상속받는 기본 tokenizer 클래스이다. Tokenizer에 대한 간단한 정리는 여기에서 확인할 수 있다. Tokenizer는 모델에 어떠한 입력을 넣어주기 위해서 전처리를 담당한다. Huggingface transformers 라이브러리에서는 크게 두 가지 종류의 tokenizer를 지원하는데, 첫 번째로는 파이썬으로 구현된 일반 tokenizer와 Rust 로 구축된 "Fast" tokenizer로 구분할 수 있다. "Fast" tokenizer에서는 batched tokenization에서 속도를 더 빠르게 해주고, 입력으로 주어진 문장과 token 사이를 mapping 해주는 추가적인 함수를 지원한다. 참고로, "Fast" tokenizer들을 SentencePiec.. 2021. 7. 18.
[Huggingface] PretrainedConfig class PretrainedConfig 공식 문서 : https://huggingface.co/transformers/main_classes/configuration.html 코드 : https://huggingface.co/transformers/_modules/transformers/configuration_utils.html#PretrainedConfig 모든 모델들의 configuration class의 base class. 모델들의 configuration 값들을 가지고 있고, 모델을 저장하고 불러오는데 필요한 configuration 들도 가지고 있다. 공통적으로 사용되는 파라미터 - model_type - vocab_size - hidden_size - num_attention_heads : mult.. 2021. 7. 16.
[Huggingface] PreTrainedModel class 최근들어 Huggingface에서 제공하는 Transformers 라이브러리를 많이 사용하는데, 구체적인 동작 방식을 이해하고 사용하면 좋은 것 같아서 기초부터 차근차근 정리해본다. 간단하게 정히한거라, 공식 문서와 코드를 참고하면 더 도움이 될 듯! PreTrainedModel 공식 문서 : https://huggingface.co/transformers/main_classes/model.html 코드 : https://huggingface.co/transformers/_modules/transformers/modeling_utils.html 모델의 configuration을 저장하고, 모델을 불러오고 저장하는 역할을 수행한다. 추가적으로, 임베딩의 크기를 바꿔주는 역할, self-attention h.. 2021. 7. 16.
[Huggingface] Huggingface Tokenizer Huggingface의 tokenizer 동작 방식에 대한 간단한 정리. 컴퓨터는 (당연히) 텍스트를 이해하지 못하고, 각 텍스트에 대응하는 숫자들을 이해한다. 그러므로, 우리는 어떤 텍스트를 어떤식으로 분리해서, 분리된 텍스트를 특정한 숫자(id)에 대응시키고, 해당 id를 모델의 입력으로 넣어주는 과정이 필요하다. 우선, 입력으로 들어온 텍스트를 조금 더 작은 단위로 분리하는 과정이 있는데, 이 과정에서 크게 3가지 방식이 사용된다 : word-based, character-based, subword-based. 1. word-based : 단순하게 단어 단위로 분리하고, 각 단어별로 고유의 id 값을 부여한다. 상당히 단순한 방식이고 구현이 간단하지만 몇 가지 문제점이 있다. 첫 번째로, 각 id에.. 2021. 7. 9.
[자연어 처리 입문] 순환 신경망 (Recurrent Neural Network) 을 읽고 간단하게 정리한 내용이다. Vanilla RNN에 대해서 알아보고, Vanilla RNN의 한계를 개선한 LSTM과 GRU에 대해서 간단하게 알아본다. 기존의 신경망들은 입력의 크기가 정해져있다는 단점이 있었다. 하지만, 자연어 처리를 위해서는 다양한 길이의 입력을 처리할 수 있는 인공신경망이 필요했다. # RNN (Recurrent Neural Network) RNN은 시퀸스 모델이다. 시퀸스 모델이란 입력과 출력을 시퀸스 단위로 처리한다는 뜻이다. RNN 은닉층의 셀에서는 셀의 값을 출력층 방량으로 보낼 수 도 있고, 재귀적으로 은닉층의 다음 입력의 계산을 위한 입력으로 사용되기도 한다. 은닉층의 셀은 이전 값을 기억하기 위해 값을 저장하는 역할을 수행하기 때문에, 메모리 셀이라고도 한다. .. 2021. 1. 7.
[자연어 처리 입문] 토픽 모델링 (Topic Modeling) 을 읽고 간단하게 정리한 내용이다. Topic modeling의 대표적인 예로, LSA와 LDA에 대해서 알아본다. 주어진 문제의 추상적인 주제를 발견하는 것이 Topic modeling의 목표이다. # LSA (Latent Semantic Analysis) LSA (LSI 라고 부르기도 한다.) 는 DTM의 잠재된 (latent) 의미를 이끌어내는 방법이다. (DTM에 관련된 내용은 여기에서 확인할 수 있다.) LSA에 대해서 이야기하기 전에, 먼저 SVD(Singular Value Decomposition)에 대해서 이야기해보겠다. SVD는 m×n 차원의 행렬 A 를 3개의 행렬 U, ∑, 로 분해하는 방법이다. 이 때, U, V 는 직교행렬이고, ∑ 는 직사각 대각행렬(주대각선의 값을 제외한 모든 .. 2021. 1. 5.
[자연어 처리 입문] 문서 유사도 (Document similarity) 을 읽고 간단하게 정리한 내용이다. 두 문서(두 벡터)의 유사도를 구하는 방식에 대해서 이야기해본다. 가장 대표적으로는 코사인 유사도가 있고, 유클리드 거리, 자카드 유사도도 고려해볼 수 있다. 두 문서가 얼마나 유사한 내용을 포함하고 있는지, 문서의 유사도를 구하는 방법에 대해서 이야기해본다. # 코사인 유사도 (cosine similarity) 코사인 유사도는 두 벡터간의 각도를 이용해서, 두 벡터의 유사도를 구하는 방법이다. 두 벡터의 방향이 같다면 1, 수직을 이루고 있으면 0, 완전 반대 방향을 향하고 있으면 -1의 값을 결과로 갖는다. 코사인 유사도의 값이 1에 가까울수록 두 벡터는 유사하다고 판단한다. 벡터의 크기로 나눠주기 때문에, 벡터의 크기가 아닌, 방향에 초점을 두고 있다. 그러므로 .. 2020. 12. 31.
[자연어 처리 입문] Count-based word representation (BoW, DTM, TF-IDF) 을 읽고 간단하게 정리한 내용이다. Count-based word representation 중 가장 대표적인 BoW, DTM, TF-IDF에 대해서 간단하게 알아본다. Count-based 단어의 표현 방법은 크게 두 가지로 구분할 수 있다. 현재 단어만 고려하는 local representation(discrete representation)과 주변 단어들을 모두 고려하는 distributed representation (continuous representation) 으로 구분할 수 있다. 이번에는 count-based word representation 방식 중 몇 가지를 알아본다. # Bag-of-Words (BoW) BoW 방식은 단어들의 순서를 고려하지 않고, 출연 빈도수에만 집중하는 방식이.. 2020. 12. 31.