[Day19] Transformer
·
AI/부스트 캠프 AI tech
[Day19] Transformer Transformer 이론 https://n-brogrammer.tistory.com/93 중요 BPE(Byte Pair Encoding) 일반적으로 하나의 단어에 대해 하나의 embedding을 생성할 경우 out-of-vocabulary(OOV)라는 치명적인 문제를 갖게 된다. 학습 데이터에서 등장하지 않은 단어가 나오는 경우 Unknown token으로 처리해주어 모델의 입력으로 넣게 되면서 전체적으로 모델의 성능이 저하될 수 있다. 반면 모든 단어의 embedding을 만들기에는 필요한 embedding parameter의 수가 지나치게 많아지게 된다. 서브워드 분리(Subword segmenation)작업은 하나의 단어는 더 작은 단위의 의미있는 여러 서브워드..
Transformer 이론
·
AI/이론
Transformer¶ RNN: Long-Term Dependency¶ 위 그림과 같이 $h_{3}$의 값을 계산하려면 뒷 단의 모든 RNN값을 거쳐서 계산 되기 때문에 정보 유실이 일어나기 쉽다. Bi-Directional RNNs¶ encoding방향을 정방향과 역방향 2가지를 가지고 RNN를 구성하면 해당 time step에서 왼쪽의 hidden state값과 오른쪽의 hidden state 값 모두를 고려 할 수 있다. 정방향과 역방향의 hidden state를 concat하여 구성하고 hidden state의 dim의 2배가 되는 새로운 hidden state가 생긴다. Transformer(Self-Attention)¶ 위 그림을 보면 Seq2Seq with Attention모델에서 decod..
[Day18] Seq2Seq
·
AI/부스트 캠프 AI tech
[Day18] Seq2Seq Seq2Seq with Attention https://n-brogrammer.tistory.com/90 Beam Search and BLEU https://n-brogrammer.tistory.com/91 중요 BLEU score BLEU score는 데이터의 X가 순서정보를 가진 단어들(문장)로 이루어져 있고, y 또한 단어들의 시리즈(문장)로 이루어진 경우에 사용되며, 번역을 하는 모델에 주로 사용된다. 여기서 3가지 요소를 고려하여 계산한다. n-gram을 통한 순서쌍들이 얼마나 겹치는지 측정(precision) 문장길이에 대한 과적합 보정(Brevity Penalty) 중복을 제거하여 보정(Clipping) 위 3가지 경우를 아래 예제로 진행하겠다. 예측 문장: Th..
Beam search and BLEU
·
AI/이론
Beam search and BLEU¶ ✅ Beam search¶ Greedy decoding¶ Greedy decoding은 결정을 취소 할 방법이 없다. 위 그림에서 같이 문장을 영어로 번역할 때 각 단어마다 나올 확률이 가장 높은 값으로 출력이 진행된다. 이때 "a"라는 단어가 잘못 나오게 됐다면 이 방법대로면 고칠 수 없다. Exhaustive search¶ 우리가 입력 문장을 $x$라고하고 출력 문장을 $y$라고 하면 첫번째 단어인 $y_{1}$이 나타날 확률, 두 번째 단어인 $y_{2}$가 나타날 확률 등등은 위와 같이 표현할 수 있다. 여기서 우리는 $P(y|x)$의 값이 크게 만드는 것이 목적인데 순차적으로 각각의 조건부 확률의 최적값을 찾는다고 해서 $P(y|x)$가 최대가 되지 않는다..
Seq2Seq
·
AI/이론
Seq2Seq¶ Seq2Seq Model¶ 입력 문장을 읽어들이는 RNN은 ENCODER라고 부르고 출력문장을 순차적으로 단어 하나씩 생성하는 RNN를 DECODER라고 부른다. ENCODER와 DECODER는 파라미터를 공유하지 않는다. 위에 RNN의 세부 구조를 볼때 LSTM를 채용한 것을 볼 수 있다. ENCODER의 마지막 단어까지 읽어 들인 후 그 이후에 나오는 hidden state vector 즉, ENCODER 마지막 time step의 hidden state vector는 DECODER RNN에 $h_{0}$로 들어간다. 다시 말해 $h_{0}$는 DECODER의 첫번째 time step에 입력으로 주어지는 이전 time step의 hidden state값이 된다. DECODER에 처음 ..
[Day17] LSTM and GRU
·
AI/부스트 캠프 AI tech
[Day17] LSTM and GRU RNN and Language modeling https://n-brogrammer.tistory.com/87 LSTM and GRU https://n-brogrammer.tistory.com/88 중요 pack_padded_sequence NLP에서 매 배치(batch)마다 고정된 문장의 길이로 만들어주기 위해서 토큰 넣어야 한다. 아래 그림의 파란색 영역은 토큰이다. 위 처럼 batch에 문장들을 배치하고 연산을 진행 하게 되면 계산이 필요없는 토큰까지 연산을 진행 할 수 밖에 없다. 여기서 를 계산 안하고 효율적으로 진행하기 위해 아래와 같이 PackedSequence를 만든다. 위 그림과 같이 배치내에 문장의 길이를 기준으로 정렬 후, 하나의 통합된 배치로 만..
LSTM and GRU
·
AI/이론
LSTM and GRU¶ LSTM¶ http://colah.github.io/posts/2015-08-Understanding-LSTMs/ $W$값은 각각의 $x_{t}$와 $h_{t-1}$을 한번에 계산하기 위해 열의 길이는 2h가 된다. 정확히 말하면 $x_{t}$와 $h_{t-1}$의 차원의 합이 $W$의 열의 길이이다. 또한 행의 길이는 4개로 나눠서 각각 cell에 값을 계산하게된다. i: Input gate, Whether to write to cell f: Forget gate, Whether to erase cell o: Output gate, How much to reveal cell g: Gate gate, How much to write to cell $sigmoid$는 0~1사이 값..
RNN and Language modeling
·
AI/이론
RNN and Language modeling¶ Basic structure¶ An unrolled recurrent neural network¶ Input and outputs of RNNs(rolled version)¶ $h_{t-1}$: old hidden-state vector $x_{t}$: input vector at some time step $h_{t}$: new hidden-state vector $f_{W}$: RNN function with parameters W $y_{t}$: output vector at time step t (can be obtained through $h_{t}$) ❗ 여기서 주의 점은 매 time step마다 같은 함수와 같은 parameters를 사용한다...
[Day16] NLP 기초
·
AI/부스트 캠프 AI tech
[Day16] NLP 기초 Intro to NLP, Bag of Words https://n-brogrammer.tistory.com/85 Word Embedding https://n-brogrammer.tistory.com/84 중요 CBOW 주변 단어들을 가지고 중심 단어를 예측하는 방식으로 학습한다. 전체 과정은 다음과 같다. 주변 단어들의 one-hot encoding 벡터를 각각의 embedding layer에 projection한다. 각각의 embedding 벡터를 얻고 이 embedding들을 element-wise한 덧셈으로 합친다. 다시 linear transformation하여 예측하고자 하는 중심 단어의 one-hot encoding벡터와 같은 사이즈의 벡터로 만든 뒤, 중심 단어의 ..
Bag of Words
·
AI/이론
Bag of Words¶ Bag of Words 표현¶ 1️⃣ unique words를 가지는 단어장을 만든다.¶ Example sentences: "John really really loves this movie", "Jane really likes this song" 위 문장이 있다면 공백을 기준으로 나눠서 각각의 단어를 단어장으로 만든다. Vocabulary: {“John“, “really“, “loves“, “this“, “movie“, “Jane“, “likes“, “song”} 여기서 really라는 단어는 2번 나오지만 단어장에는 1개가 들어간다. 2️⃣ 단어장의 단어를 one hot vectors로 encoding한다.¶ Vocabulary: {“John“, “really“, “loves“..
Word Embedding
·
AI/이론
Word Embedding¶ word를 vector로 표현한다. "cat"과 "kitty"와 같이 비슷한 비슷한 벡터로 표현 → 짧은 거리 "hamburger"와 같이 "cat"이나 "kitty"와 완전 다른 단어는 다른 벡터로 표현 → 먼 거리 Word2Vec¶ 같은 문장들 안에서 인접한 단어들은 의미가 비슷할 것이라고 가정 한 단어가 주변에 등장하는 단어들을 통해 의미를 알 수 있다는 사실에서 착안 Input: “study” [0, 1, 0] Output: “math” [0, 0, 1] 위 경우에 대해서는 위 그림과 같다. 주어진 학습 데이터가 "I study math"라고 하자. 먼저 tokenization을 진행하고 unique한 단어를 모아서 단어장을 만들게 된다. 그리고 각 단어를 one ho..
[Day15] Generative model
·
AI/부스트 캠프 AI tech
[Day15] Generative model Generative Models https://n-brogrammer.tistory.com/80 중요 피어세션 유니온 파인드내용을 공부함. 위 정리한 LSTM 내용을 가지고 토론하였습니다. 그래프로 커밋로그 확인 : git log —graph —oneline 존재하는 모든 브랜치 확인 : git branch -a 현재 브랜치와 다른 브랜치끼리의 차이점 비교 : git diff --name-status BRANCH_NAME 다른 브랜치 상태로 현재브랜치 변경하기 : git checkout -p BRANCH_NAME add에 올라온 것 빼기: git reset HEAD 파일명 강제 푸쉬: git push origin +main git 참고사이트 다른 브랜치의 일부..
Generative Model
·
AI/이론
Generative model¶ 참고자료 - https://deepgenerativemodels.github.io/ Auto-regressive Model¶ 우선 28x28 binary pixels이 있다고 가정하자. 우리의 목표는 $x ∈ \{0,1\}^{784}$에서 $p(x) = p(x_{1},...,x_{784})$를 배우는 것이다. 우리는 어떻게 $p(x)$을 표현 할 수 있을까? 우리는 현재 픽셀은 그 전 픽셀들에 영향을 받는다고 가정을 해보자. $p(x_{1})$은 그대로 이고 $x_{2}$는 $x_{1}$에 영향을 받으므로 $p(x_{2}|x_{1})$이라 표현 가능하다. 또 $x_{3}$는 $x_{2}$와$x_{1}$에 영향을 받으므로 $p(x_{3}|x_{1:2})$로 표현 가능하다. ..
[Day14] RNN
·
AI/부스트 캠프 AI tech
[Day14] RNN RNN 맛보기 https://n-brogrammer.tistory.com/76 RNN - Sequential Models https://n-brogrammer.tistory.com/77 Transformer - Sequential Models https://n-brogrammer.tistory.com/78 중요 LSTM의 내용 정리 nn.LSTM nn.LSTM(input_size=28,hidden_size=256,num_layers=3,batch_first=True) 기본적으로 쓰이는 인자들만 예시로 넣었다. 아래는 LSTM의 인자들의 설명이다. 여기서 batch_first는 LSTM의 output이 어떤식으로 나올지 이다. input_size: The number of expect..
Transformer - Sequential Models
·
AI/이론
Transformer - Sequential Models¶ 참고자료 - http://jalammar.github.io/illustrated-transformer/ 전반적인 Transformer에 대해서 이야기 하겠다. 불어가 입력으로 주어지면 번역하여 영어로 출력하는 모델을 만들려고 한다.즉, 입력 문장이 주어지면 출력 문장으로 생성. sequence to sequence모델이라고 한다. 여기서 몇 가지를 알 수 있다. 입력 sequence와 출력 sequence의 숫자가 다를 수 있다(입력은 3개, 출력은 4개) 입력의 도메인과 출력의 도메인도 다를 수 있다는 것(입력은 불어, 출력은 영어) 동일한 구조를 갖지만 네트워크 파라미터가 다르게 학습되는 encoder와 decoder가 쌓여져 있다. 여기서 ..