RNN 연속적인 데이터?
자연어 처리를 할 때, 컴퓨터가 문자를 이해할 수 있도록 단어를 숫자로 변환해야 합니다.
나는 [100] 강사 [010] 입니다. [001]
이러한 방식으로 단어를 숫자로 표현한 뒤, 신경망에 입력하게 됩니다.
RNN의 개념
RNN(Recurrent Neural Network)은 순차적인 데이터를 다룰 때 효과적인 신경망입니다. 핵심 개념은 이전 정보와 현재 정보를 연결하여 학습하는 것입니다.
- RNN은 순차적으로 데이터를 처리하며, 이전 시점의 정보를 현재 시점에 반영하는 구조를 가지고 있습니다.
- "Recurrent"는 되풀이되는 특징을 의미합니다.
- 입력 데이터(X1, X2, X3)를 순차적으로 처리하며, 이를 기반으로 최종 결과(H3)를 생성할 수 있습니다.
RNN으로 얻는 효과
순차적으로 정보를 담아가면서 연결하는 방법입니다. X1, X2, X3를 보고서 합쳐서 H3를 얻는 것과 같다는 것입니다.
RNN은 각 단계에서 Fully Connected(FC) 레이어를 통과하며 정보를 전달합니다. 수식으로 표현하면 다음과 같습니다.
h1 = tanh(W_x * x + W_h * h_prev + b)
이전 상태의 hidden state(h_prev)와 현재 입력(x)을 합쳐서 새로운 hidden state를 생성합니다. 이러한 과정이 반복되면서 정보를 전달합니다.
RNN 수식
화살표를 지날 때 FC 통과한다고 생각하면 됩니다.
RNN의 학습 방식
- 출력 시점 조정 가능: RNN은 특정 시점에서 출력을 얻거나, 매 순간 출력을 얻을 수도 있습니다.
- 과거 정보를 현재 정보와 결합: RNN은 이전 정보를 담고 있는 hidden state와 현재 입력 데이터를 조합하여 예측을 수행합니다.
- 가중치 공유: W_x, W_h, W_y, b는 모든 시간 단계에서 동일하게 유지됩니다.
결과적으로, RNN은 다음에 어떤 단어(또는 알파벳)가 나와야 하는지를 예측하는 다중 분류 문제와 유사한 방식으로 동작합니다. 이러한 원리를 바탕으로 번역, 음성 인식, 시계열 분석 등 다양한 분야에서 활용됩니다.
Seq2Seq에서 Transformer 까지의 과정
딥러닝이 자연어 처리(NLP)에서 혁신을 일으킨 가장 대표적인 모델 중 하나가 바로 Seq2Seq(Sequence-to-Sequence)입니다. Seq2Seq 모델은 RNN(Recurrent Neural Network)의 발전형인 LSTM(Long Short-Term Memory)이나 GRU(Gated Recurrent Unit)를 기반으로 하며, 인코더(Encoder)와 디코더(Decoder)라는 두 개의 파트로 구성됩니다.
Seq2Seq의 구조와 한계
Seq2Seq 모델에서 인코더는 입력 시퀀스를 순차적으로 처리하며 마지막 hidden state(context vector)를 생성합니다. 이 context vector는 디코더의 초기 hidden state로 사용되어 시퀀스 간의 정보를 전달하는 역할을 합니다.
하지만 RNN 구조의 특성상, 입력된 정보가 뒤로 갈수록 마지막 hidden state에 상대적으로 더 많은 영향을 미치게 됩니다. 예를 들어, "H E L L"이라는 입력이 주어졌을 때, 최종 출력이 "O"라면, RNN은 마지막 "L"의 가중치(W)를 가장 높게 설정하여 예측하는 경향이 있습니다. 이는 번역에서도 동일하게 적용됩니다.
예를 들어, "나는 사람입니다."라는 문장을 번역할 때, "I"라는 단어를 결정하는 데 있어 가장 중요한 요소는 "입니다"일 가능성이 큽니다. 마찬가지로, "I am an instructor"라는 문장에서 "instructor"를 올바르게 예측하려면 가장 가까운 입력 단어인 "a"가 중요한 역할을 합니다. 즉, RNN은 순차적으로 정보를 처리하기 때문에 마지막 입력이 상대적으로 더 큰 영향을 미친다는 구조적 특징을 가집니다.
이러한 특성은 RNN의 주요 한계로 작용합니다. 어떤 정보를 더 중요하게 보고, 덜 중요하게 볼지를 효과적으로 학습하는 것이 어렵다는 점입니다. 이를 개선하기 위해 등장한 것이 LSTM과 GRU인데, 이들은 장기 의존성(Long-term dependency) 문제를 어느 정도 해결했지만, 여전히 순차적 처리 방식에서 오는 병목현상을 피할 수 없었습니다.
Transformer의 등장
이러한 문제를 근본적으로 해결한 것이 바로 Transformer입니다. Transformer는 RNN과 달리, 입력 시퀀스를 한 번에 병렬적으로 처리하며, Self-Attention 메커니즘을 활용하여 각 단어가 다른 단어들과 어떤 관계를 맺고 있는지를 학습합니다. 이를 통해 번역 성능이 획기적으로 향상되었고, 이후 자연어 처리 분야에서 Transformer는 사실상 표준 모델이 되었습니다.
Transformer의 확장: Vision Transformer(ViT)
Transformer의 아이디어는 자연어 처리뿐만 아니라 컴퓨터 비전에도 적용되었습니다. Vision Transformer(ViT)는 이미지를 작은 패치(Patch) 단위로 나누고, 이를 마치 단어처럼 처리하여 Self-Attention을 통해 패치 간의 관계를 학습합니다. 즉, 문장을 독해하듯이 이미지의 의미를 파악하는 방식으로, 딥러닝 모델이 더욱 강력한 성능을 낼 수 있도록 합니다.
Seq2Seq 모델에서 시작된 딥러닝 기반 번역 모델은 RNN의 한계를 극복하기 위해 LSTM과 GRU를 거쳐 Transformer로 발전해왔습니다. Transformer는 단순한 번역 모델을 넘어, 자연어 처리뿐만 아니라 컴퓨터 비전까지 다양한 분야에서 혁신적인 변화를 일으키고 있습니다.
'IT 프로그래밍 > AI' 카테고리의 다른 글
파이토치의 구성요소 (0) | 2025.03.19 |
---|---|
딥러닝 연구의 초점 (0) | 2025.03.18 |
CNN motivation (0) | 2025.03.15 |
[컴퓨터 네트워크] UDP (1) | 2024.12.03 |
Gradient descent, neural networks learn (0) | 2024.11.28 |