#deep-learning
- Dropout 이해하기Dropout을 공부하면서 헷갈렸던 내용들을 정리해보았다. 일반화 성능을 높이는 핵심적인 요소인 마스킹과, 그리고 그 마스킹에 걸리지 않은 살아남은 값들을 키우는 스케일업. 이 구분을 중심으로 글을 작성했다. Dropout이란? Dropout 레이어에 들어온 텐서의 각 원소를 독립...
- 문자열 단위 Language ModelRNN으로 문자 하나씩을 예측하는 문자열 단위 Language Model을 hello 예제로 따라가며, 입력을 One-Hot으로 주는 이유와 학습/추론의 차이를 정리한다. hello 예제 Vocabulary를 [h, e, l, o] 로 두고, 학습 문자열 hello 를 학습한다고...
- ResNet에서 LSTM까지LSTM이 RNN의 기울기 문제를 어떻게 우회하는지를, ResNet의 skip connection에서 Highway network를 거쳐 LSTM에 이르는 흐름으로 따라간다. 마지막에는 nn.LSTM 으로 양방향 RNN을 쓰는 법까지 정리한다. ResNet의 skip connect...
- BPTT와 TBPTTRNN을 시간 축으로 펼쳐 역전파하는 BPTT와, 긴 시퀀스를 잘라 부분적으로 역전파하는 TBPTT를 정리한다. BPTT(Backpropagation Through Time) RNN은 시퀀스를 따라 forward를 진행하면서 각 타임스텝마다 출력과 Loss를 만든다. Loss는 f...
- ReLU의 존재 의미ReLU가 기울기 문제를 해결한다고 뭉뚱그려 말하기 쉽지만, ReLU가 다루는 것은 vanishing이지 exploding이 아니다. 이 구분을 정리해봤다. ReLU가 해결하는 건 vanishing이다 역전파에서 gradient는 각 층의 activation 미분을 계속 곱하면서...
- Self-Attention 이해하기attention이 무엇을 계산하는지, Q와 K와 V가 각각 어떤 역할인지, 그리고 한 단어를 어떻게 contextualize하는지 간단히 정리해봤다. attention은 value의 가중 평균 attention 함수는 세 가지를 입력으로 받는다. Attention ( Q , K...
- Teacher Forcing과 Auto-regressive 생성seq2seq decoder가 출력을 하나씩 만들어내는 방식과, 학습 때와 추론 때 입력을 다르게 주는 이유를 정리한다. Auto-regressive 생성 decoder는 한 시점에 한 토큰씩 출력을 만든다. 각 단계의 hidden state는 입력 시퀀스 전체에 대한 정보(con...
- RNN과 기울기 소실, 폭발RNN이 시계열을 어떻게 처리하고, 왜 기울기 소실과 폭발에 시달리는지 정리한다. RNN과 recurrence RNN은 시계열 데이터를 처리하기 위한 모델이다. 시점 t의 hidden state는 이전 시점의 hidden state와 현재 입력으로 정해진다. h t = f W...
- Backpropagation과 Chain Rule역전파가 어떻게 gradient를 계산하는지, local gradient와 chain rule을 중심으로 정리해봤고, 역전파 계산에 자주 나오는 연산 게이트들이 gradient를 어떻게 흘려보내는지까지 정리해봤다. local gradient와 chain rule 어떤 연산 노드 f...