데이터 스터디 60

[논문 읽기] BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding (NAACL 2019)

BERT ( Bidirectional Encoder Representations from Transformers) 2018년에 구글이 공개한 트랜스포머 기반의 사전 훈련된 모델 위키피디아(25억 단어)와 BooksCorpus(8억 단어)와 같은 레이블이 없는 텍스트 데이터로 사전 훈련 주로 fine-tuning을 거쳐 여러 task에 이용 → 사전 훈련된 BERT 모델 + 추가적 훈련 + 하이퍼 파라미터 재조정 BERT는 사전 학습을 위해 두 가지 방법 (Masked Language Model(MLM)과 Next Sentence Prediction(NSP))를 사용함으로써 BERT가 양방향으로 학습되어 문맥을 더 잘 파악할 수 있게 한다. # Intro 전이학습 모델 구글의 Devlin(2018)이 제안..

BoW(Bag of Words), DTM

단어의 표현 방법 단어의 표현 방법에 대한 큰 체계를 한 번 정리해보자면, 지금까지 원핫인코딩, n-gram까지는 짚어봤다. 이들은 단어들끼리의 관계를 봐주진 않았고, 해당 단어 자체만 보고 특정값을 매핑하는 방법이었다. 되새겨보자면, 원핫인코딩의 경우에는 해당하는 자리에는 1을 쓰고 그 이외에는 0으로 벡터를 다 채워줬었다. 그리고 n-gram에서는 해당 단어구가 전체 훈련문장들 사이에서 몇 번 등장하냐 카운트해줬었다. 그리고 이들을 국소표현이라고 한다. 반대로 단어들 간에 중심단어를 두고 주변단어를 둬서 둘 사이의 관계로 표현하는 방법은 분산표현이라고 한다. Bag of words Bag of words란 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도수에만 집중해서 텍스트를 수치화하는 표현..

[논문 읽기] GPT-1 : Improving Language Understanding by Generative Pre-Training (OpenAI)

GPT1 Abstract 1. Natural language understanding comprises a wide range of diverse tasks such as textual entailment, question answering, semantic similarity assessment, and document classification. 2. large unlabeled text corpora are abundant, labeled data for learning these specific tasks is scarce 3.We demonstrate that large gains on these tasks can be realized by generative pre-training of a l..

[Pytorch] 파이토치 Dataset, Dataloader

torch에는 데이터를 처리하기 위해 torch.utils.data.DataLoder와 torch.utils.data.Dataset의 두가지 요소를 제공 dataset : 미리 준비된 데이터셋을 불러 올 수 있으며, 가지고 있는 데이터와 라벨을 저장 dataloader : dataset을 데이터에 쉽게 접근할 수 있도록 batch를 설정해 iterable(반복가능객체)로 만듦. Dataset 관련 모듈 torch.utils.data: 데이터셋의 표준을 정의하고 데이터셋을 불러오고 자르고 섞는데 쓰는 도구들이 들어있는 모듈입니다. torchvision.dataset torchtext.dataset torchvision.transforms torchvision.tils Dataset의 기본 구성 요소 fro..

[Pytorch] 파이토치 nn.Module, nn.funcional (parameter, forward, backward연산)

torch.nn.Module & nn.funcional 두 패키지가 제공하는 기능은 비슷하지만 사용하는 방법에 차이가 있다. nn패키지 : 가중치(weight), 편향(bias) 값들이 내부에서 자동 생성되는 layer nn.functional : weight나 bias를 직접 선언 nn이 제공하는 기능 Parameters Containers Conv Layers Pooling Layers Padding Layers Non-linear Activation Normalization Layers Recuurent Layers Linear Layers Dropout Layers Sparse Layers Distance Functions Loss ... nn.functional이 제공하는 기능 Conv func..

[Pytorch] 파이토치 텐서(tensor) 기초함수, 연산

Tensor PyTorch 딥러닝 프레임워크는 현재 활발히 사용되는 프레임워크 중 하나입니다. PyTorch 의 tensor는 numpy의 ndarry와 비슷한 구조를 가지고 실제로 numpy와 tensor간의 변환이 가능하다. Tensor 생성 1차원 텐서 tensor = torch.FloatTensor([0., 1., 2., 3.]) 2차원 텐서 data = [[1, 2],[3, 4]] x_data = torch.tensor(data) numpy nd-array를 tensor로 변경 n_array = np.arange(10).reshape(2,5) # nd array를 PyTorch tensor로 변환합니다. t_array = torch.FloatTensor(n_array) print("ndim :"..

[논문 읽기] Attention IS All You Need (Transformer)

Transformer 0) Architecture 배경 seq2seq은 sequence가 길어지는 경우 앞부분의 gradient를 잘 반영못한 context vector를 이용하게 돼 기울기 소실 문제 발생 문맥 벡터 하나로는 모든 정보를 담기 힘듦. ⇒ attention mechanism을 이용하자 encoder에서 모든 hidden state를 보존 ⇒ 내적값을 구해서 alignment score 구하는 방식 채택 1) Input into Encoder input embedding 문장의 토큰을 원-핫인베딩으로 인코딩 후 가중치행렬 w와 내적(=인덱싱)함 이때 토큰은 sequential(x) parallel(한꺼번에) 입력되는 형태이므로 순서정보가 보존되지 않아, positional encoding ..

[논문 읽기] Neural Machine Translation by Jointly Learning to Align and Translate (Attention)

Attention 1. seq2seq의 한계 seq2seq란? 인코더 - 디코더라 불리는 두 개의 순환 신경망을 활용해 각각 입력 시퀀스를 벡터화하고 새로운 시퀀스를 출력하는 모델. ex) 기계번역 1) 압축에 따른 정보 손실 문제 인코더가 문장(시퀀스)을 길이에 상관 없이 하나의 고정된 크기의 벡터(Context Vecor)에 모든 정보를 압축하여 정보 손실 발생. 2) RNN의 기울기 소실 문제 기울기가 일정 수준 이하로 작아지면 장기 의존 관계 학습이 어려움. ex) 하이퍼볼릭 탄젠트 함수의 미분 → x가 0에서 멀수록 작아짐. 따라서, 입력 시퀀스(문장) 이 길어져도 출력의 정확도를 지킬 수 있는 기법 필요 → 어텐션! 2. 어텐션(Attention) 어텐션의 기본 아이디어 매 시점마다 전체 입력..

[논문 읽기] Sequence to Sequence Learning with Neural Networks (Seq2Seq)

Seq2Seq(Sequence-to-Sequence) 입력으로서, sequence of item을 받고 아웃풋으로도 sequence를 내어줌. 입력의 sequence of item 개수와 출력의 sequence of item개수는 같을 필요는 전혀 없다 ! ex) 입력을 3단어로 구성된 문장이어도, 4단어로 구성된 문장이 나올 수 있음 가변적인 길이의 source 문장의 문법적, 의미적 특징을 고정된 크기의 벡터로 압축하는 아키텍처 Encoder와 Decoder로 구성되어 있으며, encoder는 문장을 압축하는 역할, decoder는 문장을 생성하는 역할 입력된 정보를 어떻게 저장할 것이냐(인코더) → 어떻게 풀어서 반환할 것인가(디코더) Encoder의 역할 가변적인 길이의 source 문장의 문법적..

[논문 읽기] Generating Sequences With Recurrent Neural Networks (LSTM)

LSTM의 개요 RNN이, hidden state 하나만을 가지고, 모든 time step의 정보를 저장하고자 했다면, LSTM은 크게 2가지 구조를 통해서 RNN과의 차이점을 가짐 ① hidden state를 통해 short term memory (단기기억)를 조절하고 cell state를 통해 long term memory(장기 기억) 보존 ② forget, input, output, 3개의 gate를 통해 , 매 time step의 cell state와 hidden state, input에서 취할 정보의 양 결정 LSTM의 구조 LSTM의 구조는 총 4단계로 구분할 수 있음. Cell state를 도출하기 위해서, 1) forget gate와 2) input gate, new cell content..