-
[밑시딥2] 어텐션A.I/Study 2023. 7. 30. 03:35
어텐션의 구조 seq2seq의 문제점 Encoder의 출력은 '고정 길이의 벡터'인데, 이는 어떤 길이의 시퀀스가 들어와도 항상 같은 길이로 변환함을 의미한다. 아무리 긴 문장이여도 항상 같은 길이의 벡터에 집어 넣다보니 필요한 정보를 다 담지 못하는 문제가 발생한다. Encoder 개선 이번 단계에서 개선할 핵심 사항은 출력의 길이를 입력 문장의 길이에 따라 바꿔주는 것이다. 구체적으로는 각 시각별 LSTM 계층의 모든 은닉 상태 벡터를 모두 이용하는 것이다. 이렇게 쌓은 은닉 상태 벡터를 모두 이용하면 입력된 단어와 같은 수의 벡터를 얻을 수 있다. 또한 그 각각의 은닉 상태 벡터는 각각 그 시각 직전에 입력된 단어에 대한 정보가 가장 많이 포함되어있다는 사실도 기억해야한다. Decoder 개선 En..
-
[밑시딥2] RNN을 사용한 문장 생성A.I/Study 2023. 7. 25. 18:40
언어 모델을 사용한 문장 생성 RNN을 사용한 문장 생성의 순서 언어 모델은 지금까지 주어진 단어들에서 다음에 출현하는 단어의 확률 분포를 출력한다. 이를 기초로 새로운 단어를 생성하는 방법은 아래의 두 방법을 생각할 수 있다. 확률이 가장 높은 단어를 선택하는 방법: 결정적인 방법, 결과가 항상 일정 확률적으로 선택하는 방법: 단어 확률에 맞게 선택하며, 확률에 따라 선택 가능성이 달라지지만 항상 같은 결과가 나오지 않는다. 여기서 결정적이란 알고리즘의 결과가 항상 일정함을 의미한다. 언어모델을 통해 확률 분포를 생성하면, 이를 기반으로 단어를 선택하고, 이를 반복한다. 이 작업을 원하는 만큼 수행하거나 와 같은 종결 기호가 나타날 때까지 반복하면 된다. 여기서 주목할 점은 이를 통해 생성한 모델은 훈..
-
[Math for Deeplearning] More ProbabilityA.I/Study 2023. 7. 21. 05:25
글을 시작하기 앞서, 이 글은 Math for Deeplearning (Ronald T. Kneusel)을 읽고 정리한 글임을 밝힙니다. Probability Distributions Probability Distributions는 필요에 따라 값를 생성하는 함수로 여겨지곤 한다. 값은 랜덤하게 생성되며 (어떤 값이 나올지 모르기 때문에 랜덤이라고함), 어떤 값의 likelihood는 일반적인 형태를 따른다. 딥러닝에서는 모델 학습 전에 가중치를 초기화하기위해 probability distributions를 사용한다. 이때 주로 normal distribution이나 uniform distribution을 사용한다. Discrete Probability Distributions Discrete distr..
-
[밑시딥2] 게이트가 추가된 RNNA.I/Study 2023. 7. 14. 04:12
RNN의 문제점 기본적인 RNN은 장기 의존 관계를 학습하기 어렵다. BPTT에서 기울기 소실 혹은 폭발이 일어나기 때문이다. RNN 복습 RNN 레이어는 순환 경로를 가지고 있고, 이를 펼치면 옆으로 길게 뻗은 신경망이 된다. 시계열 데이터인 x_i를 입력하면 h_t를 출력하며, 이 h_t는 은닉 상태라고 한다. 이 은닉상태를 통해 과거 정보를 저장한다. 기울기 소실 또는 기울기 폭발 문장이 길어지먄 길어질수록 이후에 앞의 단어에 대한 기울기가 점점 옅어진다. 이렇게 된다면, 가중치 파라미터가 전혀 갱신되지 않게 된다. 이와 반대로 커지는 경우도 발생하는데, 이를 기울기 폭발이라고 한다. 기울기 소실과 기울기 폭발의 원인 tanh 미분시 x와 멀어질수록 0에 가까워진다. 역전파에서 tanh노드를 지날 ..
-
[밑시딥2] 순환 신경망 (RNN)A.I/Study 2023. 7. 13. 02:47
확률과 언어 모델 word2vec을 확률 관점으로 CBOW 모델은 맥락 w_t-1와 w_t+1로 부터 타깃 w_t를 추측하는 일을 수행한다. w_t-1과 w_t+1이 주어졌을 때, w_t가 될 확률은 아래와 같다. $$ P(w_t|w_{t-1}, w_{t+1}) $$ 이것은 윈도우 크기가 1일 때의 CBOW 모델이다. 맥락을 좌우 대칭이 아니라 왼쪽 윈도우로만 한정시킬 경우 $$ P(w_t|w_{t-2}, w_{t-1}) $$ CBOW 모델의 손실함수 (교차 엔트로피 오차에 의해 유도된 결과) $$ L = -\log P(w_t|w_{t-2}, w_{t-1}) $$ 이 손실함수의 값을 최소화하는 가중치 매개변수를 찾는 것이 학습의 목적 CBOW를 맥락으로부터 타깃을 정확하게 추측하기위해 학습을 진행하면, ..
-
[Math for Deeplearning] Linear AlgebraA.I/Study 2023. 7. 8. 17:27
글을 시작하기 앞서, 이 글은 Math for Deeplearning (Ronald T. Kneusel)을 읽고 정리한 글임을 밝힙니다. Scalar, Vector, Matrix, 그리고 Tensor Scalars Scalar는 우리가 일반적으로 사용하는 숫자다. (예: 7, 42, 𝝅 등) 일반적으로 scalar variables는 Bold 처리되지 않은 소문자로 표시된다. $$ x = 1 $$ Vectors Vector는 숫자로 구성된 1차원 array이다. 수학적으로, vector는 가로와 세로 방향을 가진다. 가로 방향일 경우 row vector라고 불리며, 다음과 같이 표현된다. $$ \textbf{x} = [x_0, x_1, x_2 ] $$ 세로 방향의 경우 column vector라고 불린다..
-
[밑시딥2] word2vec 속도 개선A.I/Study 2023. 7. 2. 02:49
word2vec 개선 기존 CBOW 모델에서의 계산 병목 발생 지점 입력층의 원핫표현과 가중치 행렬 W_in의 곱 계산 -> Embedding 레이어로 해결 은닉층과 가중치 행렬 W_out의 곱 및 Softmax 계층의 계산 -> 네거티브 샘플링으로 해결 Embedding 계층 가중치 매개변수로부터 '단어 ID에 해당하는 행(벡터)'을 추출하는 계층 class Embedding: def __init__(self, W): self.params = [W] self.grads = [np.zeros_like(W)] self.idx = None def forward(self, idx): W, = params self.idx = idx out = W[idx] return out def backward(self, d..
-
[Math for Deeplearning] ProbabilityA.I/Study 2023. 7. 1. 19:16
글을 시작하기 앞서, 이 글은 Math for Deeplearning (Ronald T. Kneusel)을 읽고 정리한 글임을 밝힙니다. 기본 컨셉 Probability은 어떤일이 일어날 가능성을 측정하는 0과 1사이의 숫자이다. 만약, 무언가 일어날 가능성이 없다면, Probability는 0이다. [0, 1]은 각 양끝 값을 포함하는 범위를 의미한다. Sample space는 discrete set (이산적인 집합) 또는 Event의 모든 결과들을 표현하는 연속적인 범위이다. Event는 발생하는 무언가, 즉 사건이며, 각 Event들은 Sample space에서 Sample이라고 불린다. 예를 들어 동전 던지기의 결과를 확률로 표현할 때, 앞면을 H, 뒷면을 T로 나타내자. 그럼 Sample spa..