Vanishing Gradient :
은닉층이 많은 다층 퍼셉트론 신경망에서 은닉층을 많이 거칠수록 오차가 크게 줄어 학습이 되지 않고, 기울기가 거의 0으로 소멸
└네트워크의 학습이 느려지고, 학습이 완료되지 않은 상태에서 정지.
└이를 해결하기 위해 사라져 가는 성질을 갖지 않는 비선형함수를 활성화 함수로(ex. ReLu 함수)를 선택
Long-Term Dependency (장기 의존성) :
sequence data에서 관련된 요소들이 멀리 떨어져 있는 경우 sequence에 장기 의존성이 존재한다고 함.
└RNN에 input되는 sequence의 길이가 길면 sequence 앞부분 요소의 영향력이 time step이 진행될수록 점점 약해져서 일정 시간이 지나면 소멸하게 됨.
(+오차 역전파 과정에서 전달되는 gradient 크기가 작아져 vanishing gradient 현상 발생
+반대로 역전파 과정에서 gradient가 기하급수적으로 커지는 exploding gradient도 가능)
└이러한 장기 의존성과 불안정한 gradient 문제의 해결 방법으로 LSTM과 GRU 존재)
LSTM(Long Short-Term memory) : 하나의 은닉 상태를 갖는 RNN과 달리 2개의 state를 가진다. 단기상태 h(t), 장기상태 c(t)
└입력 게이트, 망각 게이트, 출력 게이트라고 하는 3개의 게이트 구조 추가.
└장기상태 c(t-1)이 삭제 게이트를 지나 일부 기억을 잃고, 이후 입력 게이트로부터 선별된 현재 시점에 대한 정보를 추가하여 c(t)가 만들어짐. 즉 중요한 입력을 인식하고 장기 상태에 저장. 적절한 기간동안 이를 보존하고, 필요 시 이를 추출하기 위해 학습한다.
RNN 계열의 모델 : 셀의 출력값이 이전 상태의 값에 따라 변하기 때문에 종속적이다. 즉 병렬처리가 불가능하여 속도가 느림. 또한 고정된 크기의 벡터에 모든 입력 정보를 압축하기 때문에 정보의 손실이 발생 가능.
RNN + Attention 계열의 모델 : 기존의 RNN처럼 하나의 context vector를 사용하여 전체를 출력하지 않고 각 출력마다 encoder의 결과 값을 한번 더 참고. 따라서 해당 시점에서 예측해야 할 단어와 연관이 있는 입력 단어 부분을 조금 더 집중해서 볼 수 있음. RNN의 느린 속도란 단점은 그대로.
Transformer : RNN의 병렬 처리 불가능이라는 문제를 이겨내고 순차 계산을 행렬곱을 사용하여 한 번에 처리할 수 있게 됨. 이 한 번의 연산으로 모든 주요 정보 임베딩 가능. 행렬 사용시 입력 데이터 순서가 섞이는 것을 방지하고자 position encoding 사용.
└Residual connection : 출력된 값이 다음 층에 들어가기 전 추가 정보를 입력함
└작은 잔차만을 학습하기 때문에 residual connection(잔차 연결)
└self attention : query, key, value의 출처가 같은 것
└encoder-decoder attention : query는 decoder에서, key, value는 encoder에서 추출하여 self-attention을 가함
└self-attention만 q k v 가 같은 source에서, source-target attention은 q는 target, k, v는 source에서.
'혼자서' 카테고리의 다른 글
DALL2-pytorch (구현 실패) (0) | 2022.07.21 |
---|---|
Open AI Glide: Text-to image Generation Explained with code 따라해보기 (0) | 2022.07.20 |
20220712 (0) | 2022.07.19 |
20220711 (0) | 2022.07.19 |
20220708 (0) | 2022.07.19 |