전체 글 118

하위 단어 토큰화 알고리즘 정리 (sub-word tokenize)

하위 단어 토큰화 알고리즘 vocab에 존재하지 않는 단어를 대상으로 OOV가 발생하지 않도록 단어를 분해해서 vocab에 저장하는 알고리즘을 말한다. 단어 분해을 통해 vocab에 포함되는 단어를 찾을 수 있다. ex) pretraining → “pre”, “train”, “ing” BPE Byte pair encoding의 줄임말이며, 각각의 단어를 문자 단위로 쪼개어 두 묶음, 세묶음 또는 그 이상의 묶음으로 sequential하게 묶어보며 그 중 빈도수가 높은 묶음을 vocab에 등록하는 방식이다. 단계는 아래와 같다. 각 단어와 빈도수를 함께 추출한다. vocab의 크기(한도)를 정의한다. 각 단어를 문자 단위로 분할한다. 모든 고유 문자를 어휘 사전에 추가한다. 문자 묶음을 빈도가 높은 순으로..

BERT 모델에 대한 기본이해

구글 BERT의 정석 도서를 참고해서 정리했습니다. BERT의 기본 개념 📌 BERT는 문장의 문맥을 이해한 다음 문맥에 따라 단어 임베딩을 생성하는 문맥 기반 모델이다. BERT는 트랜스포머 모델에서 인코딩 부분만을 활용한 모델이다. 인코더 내 Self Attention 에 대한 이해가 있다면 문맥 기반 모델임이 당연하게 느껴질 것이다. BERT-base와 BERT-large Attention is all you need에서 제안한 인코딩 레이어, 멀티 헤드의 개수와 다른 구조를 가진다. BERT-base 12 인코딩 레이어, 12 멀티 헤드, 768 차원의 피드 포워드 BERT-large 24 인코딩 레이어, 16 멀티 헤드, 1024 차원의 피드 포워드 📌 여기서 말한 피드 포워드는 인코더 내 피드..

Transformer(트랜스포머)에 대한 간략 정리

📌 Attention is All You Need 기존 방식에서 인코딩 방식은 근본적으로 RNN 방식이었으며, 디코딩 방식도 RNN 방식에 Attention Value를 추가해서 장기의존성 문제를 해결하는 방향으로 진행되었다. → 트랜스포머에서는 더이상 RNN 방식을 활용하지 않으며 기존 RNN 방식도 Attention Value를 구하는 방식으로 인코딩과 디코딩 과정을 거치게 되며 그렇기 때문에 “우리가 필요한 것은 어텐션 뿐이다.” 라는 논문 제목을 갖는 것이다. 📌 기존 어텐션 매커니즘과의 차이 단어 각각이 아닌 문장을 통째로 input한다. → 이를 통해 한 문장 내에서 각 단어가 다른 단어들과의 관계를 이해할 수 있도록 유도한다.(문맥을 고려한다.) Encoder Self-attention 한 ..

Attention Mechanism에 대한 간략 정리

Attention Mechanism 📌 번역 대상에 대한 정보를 다 담은 최종 $h$를 가지고 디코딩 과정에 들어갈 때 $h_0$ 에서 $h_t$까지 각각의 단계에서 획득한 정보를 들고 와서 참고하자는 아이디어에서 시작되었다.(장기의존성 문제 해결을 위한 방안) 이때 각 단어의 번역 과정($s$)에서 연관성이 가장 높은 $h_t$를 파악해서 $s$가 추가로 참고한다는 점이 핵심이다. Dot-Product Attention 📌 가중합/가중평균 디코딩 과정에서 각 단어의 예측 시 어떤 h를 참조하는게 좋을지 구분할 수 있어야 한다. 이를 위해서 가중합/가중평균 계산이 적용된다. → 예를 들어 학창 시절 중간고사 반영비율 25% 기말고사 35%, 실기 40%처럼 특정 분야에 대한 반영 비율이 $w$에 담겨 각..

RNN과 Encoder-Decoder Structure

문장 번역 Task에서 각 나라 언어에 따른 어순의 차이, 문장 길이 차이로 인해 Vanila RNN으로 해결할 수 없는 이슈를 해결하기 위해 등장 → 학습 과정에서 먼저 번역하고자 하는 문장을 단어 단위로 RNN 모델에 input한 뒤 그 문장의 의미를 내포한 $h_T$를 뽑아낸다.(Encoding) → $h_T$를 가지고 새로운 RNN 모델에 input해서 문장의 시작을 알리는 를 거쳐 각 단어가 매번 번역된 단어($\hat{y}$)를 예측하도록 하고, 정답($y$)과 일치하는지 확인하며 학습을 진행한다. 그리고 나서 예측값을 다음 input으로 사용한다. (Decoding) 예측값을 다음 input으로 사용한다는 것에는 “첫단추를 잘 끼워라” 문제가 발생한다. 디코딩 과정에서 매 예측 및 학습을 진..

RNN과 LSTM 원리에 대한 간략 정리

RNN의 원리 RNN은 h와 x를 처리하기 위한 weight가 들어있는 모델이다. 그림 상에는 RNN이 여러 개인 것처럼 표현했지만 실제로는 RNN은 하나의 모델이며, 학습 과정을 보여주기 위해 여러 개로 표현했을 뿐이다. $h_0$은 나중에 결과물 $h_T$가 될 특정 값을 의미한다. $x_1$…$x_T$는 각 단어 하나하나를 의미하며 각 $x$는 임베딩된 벡터이다. → $h$와 함께 매 단어 $x_1$…$x_T$가 RNN이라는 모델에 Sequencial하게 input되어 $h$가 지속적으로 각 단어의 정보를 내포하도록 업데이트하는 과정이다. 📌 반죽 과정 $h_{T-1}$에 W(weight)를 내적한 결과 + $x_t$에 W(weight)를 내적한 결과 + bias 한 최종 값에 Activation ..

함수에서 *args 와 **kwargs를 알아보자

*args와 **kwargs의 용도에 대해서 알아봅시다. (반드시 args, kwargs라는 명칭을 사용하지 않아도 됩니다. *apple로 써도 됩니다.) *args *args는 몇 개의 입력값을 받을지 정해지지 않았을 경우에 대해 사용합니다. *args가 튜플 형태로 전달되는 것을 확인할 수 있습니다. *args는 항상 입력 파라미터의 마지막 단에 위치해야 합니다.(**kwargs보다는 앞에) class Team: """팀 노드 생성""" def __init__(self, *args): self.member = args # 다음 노드에 대한 레퍼런스 team1 = Team("강아지", "토끼", "고양이") team2 = Team("사슴", "호랑이") team3 = Team("개미", "코끼리", "..

딥러닝 기초 용어에 대한 간단 정리

학습(learning)의 3 요소(components)와 딥러닝 알고리즘(Deep Learning Algorithm)의 주요 특징에 대해 설명하시오. - Task, Task Experience, Performance Measure - 딥러닝 알고리즘은 어떠한 Task의 정답을 모사하는 값을 출력해주는 함수 또는 분포를 찾는 것으로 그 분포를 구성하는 파라미터 즉 세타 값을 찾는 알고리즘을 말한다. - 여기서 파라미터는 함수의 weight와 bias가 될 수 있고, 확률 분포의 측면에서 봤을 때는 예측값과 실제값이 될 수 있다. 위 식에 기반하여 딥러닝 알고리즘의 작동방식에 대해 설명하시오. $f_\theta$는 initialize한 세타값 또는 학습 중인 세타값을 지닌 함수를 의미한다. 이 함수에 $\m..

Word Embedding에 대한 간략 정리

Word Embedding 원핫 벡터화를 통해 발생하는 sparse vector를 Dense하게 바꿔주는 과정을 말한다. ex) 오토인코더와 비슷하게 생겼다. - 차원을 압축, 해제하면서 특징 추출을 자동으로 학습하게 한다.(Latent Space) TF-IDF - TF: 단어의 문서 내 출현 횟수 - IDF: 단어가 출현한 문서의 갯수의 역수(inverse) TF / DF -> The와 같은 단어는 하나의 문서 내에서도 자주 등장했을 테지만 전체 문서를 기준으로 봤을 때도 대다수의 문서에 포함되었을 것이다. 이러한 단어에 패널티를 가하는 방식이다. Context Windowing 가정: 의미가 비슷한 단어는 쓰임새도 비슷할 것이다. 그래서 같이 등장할 확률이 높을 것이다. - 지정한 단어의 앞 뒤 n개..