Loading...
2024. 4. 19. 03:02

Pytorch에서 padding sequence vs. packed sequence 차이 이해하고 구현하기

https://heekangpark.github.io/ml/shorts/padded-sequence-vs-packed-sequence Padded Sequence vs. Packed Sequence | Reinventing the Wheel 문제상황 자연어와 같은 sequence 데이터들을 다루다 보면 짜증나는 요소가 하나 있는데, 바로 그 길이가 일정하지 않다는 것이다. 이미지 데이터의 경우 crop이나 resize 등으로 가로 세로 크기를 맞 heekangpark.github.io 자연어같은 sequence 데이터는 input들의 길이가 다 다른 경우가 보통이기 때문에 이것을 어떻게 처리할 지 고민할 필요가 있다. 이미지는 crop이나 resize로 이미지 크기를 전부 맞추고 진행하면, batch로 ..

2023. 7. 27. 00:38

RNN을 개선한 LSTM(Long short term memory)

1. introduction Vanilla RNN을 개선하였다. 그래서 gradient vanishing/exploding을 개선하여 좋은 성능을 보임 the problem of long term dependency를 해결하고자 time-step이 먼 경우에도 필요한 정보를 처리할 수 있도록 단기로 기억되는 hidden state 정보를 길게 가져오자. Vanilla RNN은 현재 input의 정보와 이전 시점의 hidden 정보를 조합하여 새로운 hidden 정보를 만든다. $$h_{t} = f_{w}(x_{t} + h_{t-1})$$ 반면 LSTM은 전 시점에서 다른 역할을 하는 2가지 정보와 input 정보를 이용함 $$f(C_{t}, h_{t}) = LSTM(X_{t}, C_{t-1}, h_{t-..

2023. 7. 12. 02:28

RNN의 특별한 학습방법 Backpropagation through time 이해해보기

1. Backpropagation through time RNN의 backpropagation 알고리즘 모든 token을 계산하면서 ground truth와 비교하면서 loss를 최소화하는 방향으로 backpropagation을 통해 gradient를 계산 그런데 수백, 수천만 길이의 sequence면 한정된 GPU에서 계산이 불가 2. Truncated backpropagation through time 그러니까 일부 time을 잘라가지고 만든 여러개의 truncation을 만든다. 그래서 제한된 sequence를 가지는 truncation에서 backpropagation을 진행하고 다음 truncation에서도 진행하고 과정을 반복한다 자른 구간에서는 이제 GPU가 허용하는 한에서 backpropag..

2023. 7. 11. 02:41

RNN의 여러가지 유형(one to one, one to many, many to one, many to many) 되돌아보기

RNN이 하나의 input을 넣어서 하나의 output이 나온다고만 생각해서는 안된다 이미지를 넣고 문장을 생성하는 one to many 문장을 넣고 문장의 감정 label을 생성하는 many to one 혹은 여러 날의 주가를 넣고 다음날 주식의 종가를 예측한 many to one 1. one to one sequence data가 아닌 일반적인 input을 받는 neural network의 구조 다음은 키,나이,몸무게 3차원 벡터를 갖는 input을 입력하여 혈압의 범주를 예측하는 one to one neural network 2. one to many input이 하나이고 여러개의 output을 출력하는 구조 근데 주의할 점은 사실 input이 하나인 것 처럼 보이지만 하나가 아니다. 들어가지 않는..

2023. 7. 11. 02:30

Vanilla RNN에서 hidden vector로 예측값을 만드는 과정

hidden vector의 차원은 hyperparameter이다. 여기서는 2차원이라고 가정해보자. 3차원의 입력벡터 $X_{t}$가 들어가고 2차원의 hidden state vector인 $h_{t-1}$이 RNN의 입력으로 들어간다고 해보자. 처음에는 $X_{t}$와 $h_{t-1}$이 concatenation되어 hidden layer에 fully connected 된다. 당연하지만 $h_{t-1}$이 2차원이기때문에 $h_{t}$를 뽑아내는 layer의 차원도 2차원이다. hidden layer의 선형변환 W와 입력벡터의 곱 WX에 nonlinear activation인 tanh(WX)로 $h_{t}$가 뽑힌다. Vanilla RNN이 실제로 tanh()를 activate function으로 썼다..

2023. 5. 8. 03:08

NLP에서 language model의 역사 훑어보기

1. language model 앞의 주어진 문맥을 활용해 다음에 나타날 단어를 예측하는 모델 사람의 언어를 이해하는 것은 쉬운 일은 아니지만 통계적 관점, 딥러닝적 관점에서 문맥이 주어질 때 다음 단어를 잘 예측했다면 언어의 패턴을 잘 학습한 것이다. 2. 확률적 관점 언어 모델은 문장에 대한 확률을 부여하는 task 조건부확률을 이용하여 생성확률을 부여 ’오늘은 햇살이 좋다’라는 문장에 대한 확률은 ‘오늘은’이 먼저 나올 확률에 ‘오늘은’이 주어질때 ‘햇살이’가 나타날 확률에 ‘오늘은 햇살이’ 주어질 때 ‘좋다’가 나타날 확률을 곱한 것 3. RNN을 활용한 예측 x는 input이고 y는 현재 시점의 예측값, h는 각 시점에서 모델이 기억하는 잠재적인 정보 U,V,W는 RNN의 parameter 이전..