MPL나 CNN 의 경우에는 메모리가 없어서 이전 입력에 대한 결과를 저장할 수 없기때문에 데이터를 순차적으로 처리가 불가능하고 개별적으로 처리가 가능 💦
하지만 문장은 단어로 구성 되어있고, 정해진 순서가 존재 ❗
👍 그래서 순환 신경망을 사용
이전 입력에 대한 출력 정보를 저장할 수 있어서 NLP, 순차 data, 시퀀스(NL가 시퀀스 data의 형태), 연속적인 시계역 데이터에 적합
순환 신경망의 경우에는 출력이 입력에 대해 영향을 받는 것 뿐만 아니라 이전 출력에 대한 결과에 대해서도 영향을 받음 ❗❗
RNN의 출력은 의도하는 목적에 따라서 달라질 수 있음 ❗❗
메모리 셀이 출력층 방향 또는 다음 시점인 n+1의 자신에게 보내는 값을 state라고 하는데, state는 다음 셀에 들어갈 뿐만이 아니라 출력을 위한 NLP의 입력으로도 들어가게 된다.
Stacking이란 층을 여러개 쌓는 것 !
입력에 가까운 층에서는 Low-level의 문맥적인 정보를 가지고 출력층에 가까운 층일 수록 High-level의 의미적인 정보를 가짐
이전 모델의 경우에는 예측하고자 하는 단어 뒤에 있는 정보를 양방향이 아니라 이용할 수 없기 때문에 성능의 한계가 존재 💦
하지만, Bidirectional의 경우 순차적인 입력 값에 대해 이전 데이터와의 관계 뿐만 아니라 이후 데이터와의 관계까지 저장하여 학습하기 때문에 이전의 문제를 해결 😉
하나의 입력에 두가지의 출력을 만들어 역방향으로도 data의 관계를 파악하고자 했음 !
2개의 Hidden Layer를 가지고 있는데,Forward States의 정보를 가지고 있는 Hidden Layer와 Backward States의 정보를 가지고 있는 Hidden layer가 존재하지만 서로 독립적 ❗
입력값은 이 2가지 Hidden Layer에 모두 전달되고, Output Layer도 이 2가지 Hidden Layer로 모두 값을 받아서 최종 Output을 계산