이 레슨과 관련된 학습 키워드
인공지능(AI) — 기계가 생각하는 법 → 자연어처리(NLP) — 기계가 언어를 이해하다 → NLP 기초 — 컴퓨터가 언어를 이해하는 법 → 임베딩
Learn RNN-based NLP including language modeling, text classification, BiRNN, sequence labeling, Seq2Seq, and Attention mechanism.
자연어는 본질적으로 순차적 데이터예요. 단어의 순서가 문장의 의미를 결정하죠.
"개가 사람을 물었다"와 "사람이 개를 물었다"를 보세요. 같은 단어지만 순서에 따라 의미가 완전히 달라요.
이런 순서 의존성을 처리하려면 시간 축을 따라 정보를 누적하는 모델이 필요해요.
{RNN→알엔엔}은 바로 이 문제를 위해 설계되었어요. 단어를 하나씩 순서대로 읽으며 {hidden state→히든 스테이트}에 정보를 축적하죠.
그림 왼쪽을 보시면 {RNN→알엔엔}의 순환 구조가 나와 있어요. 현재 입력과 이전 상태를 결합해서 새로운 상태를 만들어요.
핵심 수식은 h_t가 이전 {hidden state→히든 스테이트} h_(t-1)과 현재 입력 x_t의 함수라는 거예요.
모든 타임스텝에서 같은 가중치 행렬 W를 공유해요. 이게 {RNN→알엔엔}의 파라미터 효율성을 만들어주죠.
가중치 공유 덕분에 문장이 아무리 길어도 파라미터 수는 동일해요. 100단어든 1000단어든 같은 W를 반복 적용하는 거예요.
반면 일반 피드포워드 네트워크는 입력 길이가 고정되어야 해요. 문장 길이가 다르면 처리할 수 없죠.
그림 오른쪽의 언폴딩된 구조를 보세요. 시간축으로 펼치면 각 단어가 순서대로 처리되는 과정이 보여요.
첫 번째 단어 "나는"이 들어오면 초기 {hidden state→히든 스테이트} h_0와 결합해서 h_1이 만들어져요.
두 번째 단어 "좋아한다"가 들어올 때는 h_1과 결합하죠. 이때 h_1에는 이미 "나는"의 정보가 담겨 있어요.
이렇게 {hidden state→히든 스테이트}가 문맥의 기억 역할을 해요. 마치 사람이 글을 읽으며 앞 내용을 기억하는 것과 같죠.
다른 딥러닝 모델과 비교해 볼까요? {RNN→알엔엔}은 CNN이나 MLP와 달리 시퀀스의 순서를 명시적으로 모델링해요.
CNN은 고정 크기 필터로 지역 패턴을 잡지만, 단어 간 거리가 멀면 관계를 파악하기 어려워요.
{RNN→알엔엔}은 이론적으로 임의의 긴 의존성을 학습할 수 있어요. 물론 실제로는 {vanishing gradient→배니싱 그래디언트} 문제가 있지만요.
이 순서 정보 활용 능력 덕분에 {RNN→알엔엔}은 기계 번역, 감성 분석, 언어 모델링 등 NLP의 핵심 과제에 널리 사용되었어요.
다음 블록에서는 {RNN→알엔엔}이 실제로 언어 모델로 어떻게 작동하는지, 다음 단어 예측을 통해 살펴볼 거예요.
핵심을 정리하면, {RNN→알엔엔}이 NLP에 적합한 이유는 순서를 보존하면서 가변 길이 입력을 처리할 수 있기 때문이에요.
순환 구조의 가중치 공유가 파라미터 효율성을 보장하고, {hidden state→히든 스테이트}가 문맥 기억을 담당한다는 점을 꼭 기억하세요.
선생님: {RNN→알엔엔}이 NLP에 적합한 핵심 이유가 뭘까요?
학생: 텍스트가 순서가 있는 시퀀스 데이터이고, {RNN→알엔엔}이 순서를 따라 정보를 누적할 수 있으니까요.
선생님: 맞아요! 그러면 CNN으로도 텍스트 처리가 가능한데 왜 {RNN→알엔엔}이 더 자연스럽다고 했을까요?
학생: CNN은 고정 크기 필터라서 멀리 떨어진 단어 간 관계를 직접 잡기 어렵지만, {RNN→알엔엔}은 {hidden state→히든 스테이트}로 앞의 모든 정보를 누적하니까요.
선생님: 정확해요. 가중치 공유가 주는 장점은 뭐가 있을까요?
학생: 문장 길이와 무관하게 같은 파라미터를 사용하니까 파라미터 효율적이고, 학습 시에도 다양한 위치의 패턴을 일반화할 수 있어요.
선생님: 바로 그거예요. {RNN→알엔엔}의 가중치 공유는 마치 같은 규칙으로 모든 위치의 단어를 읽는 것과 같아요.