과거의 정보를 현재값에 반영하는 신경망
목적 : 순차적인 데이터를 다루는 것
방법 : 경사하강법, 오차역전파
단점 : 순차적으로 진행하므로 병렬화가 불가능, 층이 많을수록 기울기 폭발, 소실문제 발생
오래된 정보까지도 반영할 수 있는 신경망
목적 : RNN의 기울기 소실문제를 해결
방법 : cell-state를 통해서 과거값과 현재값의 비율을 조정하여 출력정보를 만든다.
단점 : 모델의 복잡도가 많이 올라간다.
LSTM을 간소화한 모델 (LSTM 보급형느낌)
목적 : 낮은 성능에서도 LSTM을 구현하기 위함 (근데 요즘 하드웨어 성능이 좋아서 안쓴다고함)
방법 : cell-state를 없애고 output gate도 없앤다.
단점 : 데이터가 많을때는 LSTM보다 성능이 떨어진다고하네요. (매개변수가 적어서 그런걸까요? 이건 스터디 때 얘기해보는거로)
앞의 3개의 모델은 단어에 대한 값들을 하나의 벡터로 나타냄. 따라서, 길이가 길어지면 정보를 담기가 힘듬. 이를 해결하기 위한 개념
어텐션을 고려해서 만든 모델 (단어의 위치정보가 고려될 것이다.)
목적 : 앞서 말한 RNN, LSTM, GRU의 문제를 해결 (너무 길어지면 정보담기 힘든것)
과정
인코더부분
1) 포지셔닝 인코딩 - 임베딩된 벡터값에 을 해서 위치값 반영 (난 여기쯤 있어요~)
2) 셀프어텐션 - 입력된 단어사이의 연관성을 계산 (한단어에서 각 단어마다 연관성이 나오겠죠)
+) 멀티헤드어텐션 - 어텐션 여러개 진행한다음 앙상블 처리하는것 (결정트리처럼)
3) 그리고나서 순전파 진행
디코더부분
1) 포지셔닝 인코딩 - 출력값에 이용할 단어들도 연관성을 계산해야겠죠
2) 마스크드 셀프어텐션 - 글적을때 한단어씩 적어나가야하니깐 뒤의 부분은 지워야죠 (답 베껴쓰면 무슨소용)
3) 인코더,디코더 어텐션 - 인코더와 디코더사이의 관계를 고려
(디코더 : 나 이 쿼리에 맞는 거 뽑고 싶어, 인코더 : 그래 여기 키,밸류에서 골라봐)