티스토리 뷰

728x90
반응형

목차

     

    이전 게시글에서도 순환 신경망(RNN)과 그 발전에 대해 다룬 적이 있다.

     

    순환 신경망(Recurrent Neural Network, RNN)

     

    순환 신경망(Recurrent Neural Network, RNN)

    목차 딥러닝의 역사와 발전: 머신러닝에서 딥러닝까지의 여정 인공 신경망의 기본 구조와 중요성 활성화 함수(Activation Functions) 이해하기 손실 함수(Loss Functions)의 역할과 중요성 딥러닝에서의

    gnidinger.tistory.com

    순환 신경망의 발전(The Evolution of RNN)

     

    순환 신경망의 발전(The Evolution of RNN)

    목차 딥러닝의 역사와 발전: 머신러닝에서 딥러닝까지의 여정 인공 신경망의 기본 구조와 중요성 활성화 함수(Activation Functions) 이해하기 손실 함수(Loss Functions)의 역할과 중요성 딥러닝에서의

    gnidinger.tistory.com

    하지만 개념이 다소 흩어져 있고, 설명이 불친절해서 잘 와닿지 않는 감이 있다.

     

    해서 이번 글에서는 각 모델에 대한 상세한(쉬운) 설명과 장단점, 비교를 해보려고 한다.

     

    내가 초심자니까 나에게 어울리는 수준으로.. 시작!

     

    Vanilla RNN (Recurrent Neural Network)

     

    기본 개념

     

    Vanilla RNN은 순환 신경망(Recurrent Neural Network)의 가장 기본적인 형태이다. 

     

    이 모델은 시퀀스 데이터를 처리하며, 현재 입력과 이전 은닉 상태(hidden state)를 사용해 새로운 은닉 상태를 계산한다.

     

    이를 통해 입력 데이터가 시간 축에서 어떻게 변하는지를 학습한다.

     

    수식은 아래와 같다.

     

    Vanilla RNN은 입력 시퀀스를 처리하며, 시간에 따라 정보가 "순환"된다.

     

    메커니즘

     

    1. 은닉 상태 업데이트:
      이전 시점의 은닉 상태($h_{t−1}$)와 현재 입력($x_t$)을 결합해 새로운 은닉 상태($h_t$)를 계산한다.
    2. 출력 계산:
      현재 은닉 상태($h_t$)를 통해 출력값($y_t$))을 생성한다.
    3. 시간 순환:
      모델은 입력 시퀀스를 시간 순서대로 처리하며, 각 시점의 은닉 상태를 다음 시점으로 전달한다.

     

    한 마디로 말하면, Vanilla RNN은 기억력이 조금 나쁜 사람처럼 작동한다. 

     

    이전에 들은 이야기를 현재 듣고 있는 이야기에 조금씩 섞어가며 이해하는 방식이다.

     

    예를 들어, 어제 읽었던 책의 내용을 약간 기억하고 오늘 읽는 내용을 연결해서 새로운 생각을 만들어 내는 사람을 떠올려 보자.

     

    하지만, 이 사람은 시간이 오래 지나면 어제 읽은 내용은 점점 희미해지고 오늘의 내용에만 집중하게 된다.

     

    이를 통해 메커니즘을 풀어보면 다음과 같이 되겠다.

     

    1. 은닉 상태 업데이트 (과거를 현재와 연결)
      Vanilla RNN은 어제 읽었던 책의 중요한 단서를 간직하고, 오늘 읽은 내용을 더해 새로운 생각을 만든다.
      이 생각이 은닉 상태 ($h_t$)이다.

      • 예: "어제는 고양이에 대해 읽었고, 오늘은 강아지에 대해 읽고 있으니 '반려동물'이라는 주제를 생각해 낼 수 있다."
    2. 출력 계산 (현재 시점의 이해)
      현재 읽고 있는 내용에서 무언가를 말해야 한다면, 지금 생각하고 있는 내용을 바탕으로 말한다. 
      이는 RNN의 출력 ($y_t$)에 해당한다.

      • 예: "고양이와 강아지는 모두 반려동물입니다."
    3. 시간 순환 (기억을 이어가기)
      새로운 입력이 들어오면, 이전 생각을 조금씩 희미하게 하고, 새로운 정보를 더해 다음 생각을 이어간다.

      • 예: "내일은 물고기에 대해 읽는다면, 고양이와 강아지의 정보는 일부만 남아 있을 것이다."

    요약하자면, Vanilla RNN은 이전 기억(은닉 상태)과 현재 정보(입력)를 합쳐 새로운 이해(출력)를 만든다.

     

    하지만 시간이 지나면 오래된 기억은 흐려지기 때문에, 긴 이야기를 이해하기에는 한계가 있다.

     

    장점

     

    • 구조의 단순성: 이해하고 구현하기 쉽다.
    • 시간 시퀀스 데이터 처리: 입력 데이터가 순차적인 경우에 적합하다.

     

    단점

     

    1. 기울기 소실 문제(Vanishing Gradient):

      • 긴 시퀀스를 학습할 때, 역전파 과정에서 그래디언트가 점점 작아져 학습이 어렵다.
      • 중요한 과거 정보가 현재 시점에 도달하지 못한다.
    2. 장기 종속성 문제(Long-Term Dependency):

      • 긴 문맥을 기억하지 못하며, 가까운 시점의 정보에만 의존한다.

     

    LSTM (Long Short-Term Memory)

     

    기본 개념

     

    LSTM은 Vanilla RNN의 단점(특히 기울기 소실 문제)을 해결하기 위해 설계된 모델이다.

     

    LSTM은 정보의 "선택적" 기억을 가능하게 하는 셀 상태(cell state)와 게이트(gates)를 도입하여,

     

    중요한 정보를 오랜 기간 동안 유지하거나 필요에 따라 버릴 수 있다.

     

    즉, 정보를 "선택적"으로 기억하고 전달한다.

     

    메커니즘

     

    LSTM은 3가지 게이트를 사용해 정보를 제어한다:

     

    • Forget Gate
      과거 정보를 얼마나 버릴지 결정한다(이전 셀 상태에서 어떤 정보를 버릴지 결정한다).

    • Input Gate
      새로운 정보를 얼마나 저장할지(얼마나 셀 상태에 추가할지) 결정한다.

    • Output Gate
      현재 시점의 출력을 결정한다(은닉 상태를 통해 출력할 정보를 결정한다).

    셀 상태 $C_t$는 중요한 정보를 유지하는 역할을 하며, 이전 시점의 $C_{t−1}$에서

     

    Forget Gate와 Input Gate를 통해 필요한 정보만 업데이트된다.

     

    역시 한 마디로 하자면, LSTM은 기억 상자에 메모를 정리하는 비서다.

     

    이를 통해 위 메커니즘을 다시 살펴보자면:

     

    1. Forget Gate (지우는 단계)

      • Forget Gate는 "이 메모를 버릴까 말까?"를 결정하는 비서의 판단력이다. 필요 없다고 생각하면 그 메모를 삭제한다.
      • 수학적으로는 불필요한 정보(메모)를 0으로, 필요한 정보를 1로 표시해 삭제할지 유지할지를 결정한다.
    2. Input Gate (저장하는 단계)

      • Input Gate는 "새로운 메모를 추가할까 말까?"를 결정한다. 중요한 정보만 기억 상자에 추가하도록 돕는다.
      • 중요한 정보는 $tanh$ 함수를 통해 요약된 형태로 저장되고, 필요한 만큼 추가된다.
    3. Output Gate (꺼내는 단계)

      • 비서는 기억 상자를 열어 지금 상황에 필요한 메모를 꺼내준다. 예를 들어, "오늘의 할 일" 메모를 보여주는 것이다.
      • 이 과정에서 현재 상태($h_t$)를 출력으로 만든다.
    4. 셀 상태 ($C_t$)는 비서의 커다란 기억 상자다. Forget Gate와 Input Gate를 통해 상자 속 메모를 버리거나 추가하면서 내용을 업데이트한다.

    요약하자면, LSTM은 Forget Gate로 과거를 정리하고, Input Gate로 중요한 현재를 기록하며,

     

    Output Gate로 상황에 맞는 정보를 꺼내 활용하는 체계적인 비서와 같다.

     

    상자($C_t$)가 커다랗게 유지되면서도 필요한 정보만 남기기 때문에, 과거와 현재의 균형을 유지하며 긴 문맥을 기억할 수 있다.

     

    장점

     

    1. 장기 종속성 문제 해결:

      • 셀 상태를 통해 중요한 정보를 오랜 기간 동안 유지할 수 있다.
    2. 기울기 소실 문제 완화:

      • 정보가 여러 게이트를 거치며, 역전파 과정에서도 그래디언트를 효과적으로 유지한다.

    단점

     

    1. 복잡한 구조:

      • Vanilla RNN에 비해 계산량이 많아 학습 속도가 느리다.
    2. 더 많은 학습 파라미터:

      • 여러 게이트를 사용하기 때문에, 메모리와 연산 자원이 더 많이 필요하다.

     

    GRU (Gated Recurrent Unit)

     

    기본 개념

     

    GRU는 LSTM의 간소화된 버전으로, 셀 상태를 제거하고 은닉 상태만 사용한다.

     

    게이트의 개수를 줄여 계산량을 줄이고 학습 속도를 높인다.

     

    메커니즘

     

    GRU는 LSTM의 간소화된 버전으로, 셀 상태를 제거하고 2개의 게이트만 사용한다:

     

    • Update Gate
      이전 (은닉) 상태를 얼마나 유지할지 결정한다.

    • Reset Gate
      이전 은닉 상태에서 정보를 얼마나 버릴지 결정한다.

    최종 은닉 상태는 업데이트 게이트를 통해 계산된다:

     

     

    또다시 한 마디로 말하자면, GRU는 LSTM에 비해 효율적인 비서다.

     

    • Update Gate (업데이트 게이트: 정보 유지 여부 결정)

      • 이 비서는 "이전 회의 노트를 계속 가져갈 필요가 있을까?"를 스스로 묻는다.
      • 중요하다고 판단한 정보는 그대로 유지하고, 덜 중요하거나 새로운 정보로 대체할 필요가 있는 부분은 갱신한다.
    • Reset Gate (리셋 게이트: 과거 정보 사용량 조절)

      • 비서는 "지난 회의 내용을 얼마나 활용할까?"를 고민한다.
      • 이번 회의에 꼭 필요한 정보만 남기고 나머지는 참고하지 않기로 한다.
      • 덕분에 현재 상황에 적합한 정보를 빠르게 활용한다.
    • 최종 은닉 상태 (새로운 메모 생성)

      • 비서는 Update Gate와 Reset Gate의 결정을 합쳐 "새로운 메모를 작성할 때,
        과거와 현재의 정보를 어떻게, 얼마나 조합할지"를 판단한다.
      • 예를 들어, 새로운 프로젝트 계획을 짤 때 기존 데이터를 참고하되, 불필요한 부분은 과감히 제외한다.

    요약하자면, GRU는 간단한 구조와 효율적인 판단력을 가진 비서로, 

     

    상황에 맞게 과거와 현재 정보를 최적으로 조합해 항상 알맞은 답을 내놓는다.

     

    LSTM처럼 세세한 관리(셀 상태)는 하지 않지만, 빠르고 깔끔하게 중요한 일만 처리하는 "실용주의자"라 할 수 있다.

     

    장점

     

    1. 단순화된 구조:

      • LSTM보다 계산량이 적고, 학습이 빠르다.
    2. 성능 유사:

      • 많은 경우, LSTM과 비슷한 성능을 낸다.

     

    단점

     

    1. 복잡한 데이터 처리 부족:

      • LSTM보다 단순화된 구조로 인해, 매우 복잡한 데이터에서는 성능이 떨어질 수 있다.

     

    Bidirectional LSTM

     

    기본 개념

     

    Bidirectional LSTM은 시퀀스를 양방향으로 처리하여, 과거 정보뿐만 아니라 미래 정보도 활용한다.

     

    단순히 LSTM을 두 개로 나누어 각각 순방향(forward)과 역방향(backward)으로 학습한다고 보면 된다.

     

    메커니즘

     

    Bidirectional LSTM은 순방향(forward)과 역방향(backward)의 두 개의 LSTM을 결합하여, 시퀀스를 양방향으로 처리한다.

     

    • 순방향 LSTM
      입력 시퀀스를 처음부터 끝까지 처리하여 은닉 상태를 생성한다.

    $$\overrightarrow{h_t}$$

     

    • 역방향 LSTM
      입력 시퀀스를 끝에서부터 처음까지 처리하여 은닉 상태를 생성한다.

    $$\overleftarrow{h_t}$$

     

    최종 출력(은닉 상태)은 두 방향의 출력값을 결합하여 생성된다:

    $$h_t=[\overrightarrow{h_t};\overleftarrow{h_t}]$$

     

    한 마디로 하면, Bidirectional LSTM은 책을 양방향에서 읽는 독자와 같다.

     

    • 순방향 LSTM (과거에서 현재로 읽기)

      • 책을 처음부터 끝까지 읽으면서 과거의 단어들이 현재 단어에 어떤 영향을 주는지 이해한다.
      • 독자는 책을 맨 처음 페이지부터 읽기 시작한다. "문맥상 이 단어는 앞에서 나온 내용 때문에 이런 의미겠구나"라고 해석한다.
      • 예를 들어, "나는 어제 사과를..."이라는 문장에서 "사과"의 의미를 앞의 내용("어제")에서 추론한다.
    • 역방향 LSTM (미래에서 현재로 읽기)

      • 책을 끝에서부터 처음까지 읽으면서 미래의 단어들이 현재 단어에 어떤 의미를 더할 수 있는지 분석한다.
      • 다른 독자는 책을 끝에서부터 거꾸로 읽기 시작한다. "미래의 단어가 현재 단어를 어떻게 설명할 수 있을까?"를 생각하며 읽는다.
      • 예를 들어, "사과를 먹었다"라는 문장에서 "사과"가 음식이라는 것을 뒷부분("먹었다")에서 추론한다.
    • 최종 은닉 상태 (양방향 문맥 결합)

      • 두 독자가 서로 의견을 나누며 "앞에서 읽은 정보와 뒤에서 읽은 정보를 합쳐보니, 이 단어는 이런 의미구나!"라고 결론을 내린다.
      • 예를 들어, "나는 어제 사과를 먹었다"라는 문장을 통해 "사과"가 어제 먹은 과일이라는 문맥을 완벽히 이해한다.

     

    요약하면, Bidirectional LSTM은 양방향으로 문맥을 읽고 종합적으로 해석하는 능력을 가진 독자로,

     

    현재 단어의 의미를 과거와 미래의 맥락에서 동시에 파악하는 통찰력 있는 문맥 해석 전문가라고 할 수 있겠다.

     

    장점

     

    • 문맥 정보 활용:

      • 양방향 정보를 사용하므로, 앞뒤 문맥을 모두 고려할 수 있다.
    • 더 높은 정확도: 특히 자연어 처리(NLP) 작업에서 유리하다.
    • 긴 시퀀스 처리 가능:

      • 시퀀스의 시작과 끝에 있는 정보를 모두 반영한다.

     

    단점

     

    • 더 많은 연산:

      • 두 개의 LSTM이 동시에 동작하므로, 계산량이 두 배로 증가한다.
    • 실시간 데이터 처리 제한:

      • 미래 데이터를 필요로 하므로, 실시간 데이터에는 사용이 어렵다.

     

    Transformer

     

    기본 개념

     

    Transformer는 시퀀스 데이터를 병렬로 처리할 수 있도록 설계된 모델이다. 

     

    기존 RNN 기반 모델들이 순차적으로 데이터를 처리해야 했던 제한을 극복하며, 

     

    특히 긴 시퀀스를 학습하고 효율적으로 병렬 연산을 수행한다.

    Transformer는 두 가지 주요 구성 요소로 이루어진다:

    1. 인코더(Encoder)
      입력 시퀀스를 처리하여 정보를 압축한다.
    2. 디코더(Decoder)
      인코더에서 얻은 정보를 사용해 출력 시퀀스를 생성한다.

     

    메커니즘

     

    Transformer의 핵심은 Self-Attention 메커니즘이다. 

     

    각 단어가 시퀀스 내의 다른 단어와 어떻게 관련되어 있는지를 학습하며, 이 과정에서 문맥 정보를 캡처한다.

    Self-Attention의 동작은 다음과 같다:

     

    1. Query, Key, Value 계산
      입력 벡터에서 Query($Q$), Key($K$), Value($V$)를 생성한다.
    2. Attention Score 계산
      Query와 Key의 내적을 계산하고, 소프트맥스를 적용하여 가중치를 얻는다.
    3. 출력 생성
      Value와 Attention Score를 결합하여 문맥 정보를 반영한 출력 벡터를 생성한다.

     

    마지막으로 한 마디로 정리하자면, Self-Attention은 대화 중 모든 사람의 의견을 듣고 정리하는 회의 진행자다.

     

    • Query는 질문, Key는 답변, Value는 중요한 정보를 나타낸다.
    • Self-Attention은 모든 발언을 비교하며 "이 질문에는 누구의 답변이 가장 관련이 깊은가?"를 판단하고, 중요한 내용을 정리한다.
    • 이렇게 각 발언의 중요도를 계산해 최종적으로 대화의 핵심을 추출한다.

    좀 더 상세하게 풀어보면 다음과 같다.

     

    • Query, Key, Value 계산

      • 회의에서 Query는 질문을 던지는 사람이다. 예를 들어, "이번 프로젝트에서 중요한 목표는 무엇인가?"라는 질문을 한다.
      • Key는 각 참가자의 답변이다. 누군가는 "고객 만족", 다른 사람은 "비용 절감"을 답한다.
      • Value는 Key에 담긴 실제 정보이다. 예를 들어, "고객 만족을 위해 설문조사 결과를 참고하자" 같은 구체적인 제안이다.
    • Attention Score 계산 (중요도 판단)

      • 진행자는 Query와 Key를 비교해 "이 질문에는 누구의 답변이 가장 연관성이 높을까?"를 판단한다.
      • 예를 들어, "비용 절감"보다는 "고객 만족"이 더 관련이 있다고 생각한다면, "고객 만족" 답변에 더 높은 점수를 준다.
      • 이 과정을 수학적으로는 Query와 Key의 내적을 계산하고, 소프트맥스를 적용해 중요도를 결정하는 과정으로 볼 수 있다.
    • 출력 생성 (핵심 정리)

      • 진행자는 모든 답변의 중요도를 고려해 가장 중요한 정보를 중심으로 핵심을 정리한다.
      • 예를 들어, "고객 만족을 최우선으로 고려하고, 설문조사 데이터를 활용하자"라는 결론을 낸다.
    • 포지셔널 인코딩(Positional Encoding)

      • Self-Attention은 참가자들의 발언 내용만 비교하므로, 누가 언제 발언했는지(순서)를 모를 수도 있다.
      • 포지셔널 인코딩은 이를 해결하기 위해 참가자들에게 이름표와 발언 순서를 추가하는 것과 같다.
      • 예를 들어, "1번 참가자: 고객 만족", "2번 참가자: 비용 절감"처럼 각 발언의 순서를 명확히 표시한다.

    요약하면, Self-Attention은 회의 진행자처럼 각 발언을 비교하고 관련성을 평가하여 대화의 핵심을 도출하는 메커니즘이다. 

     

    포지셔널 인코딩은 발언 순서를 보완하여 대화의 흐름을 더 잘 이해할 수 있도록 돕는다고 할 수 있다.

     

    구조

     

    Transformer는 여러 층의 인코더와 디코더로 구성된다.

    1. 인코더

      • 입력에 Self-Attention과 피드포워드 네트워크를 적용한다.
      • 각 층은 다른 단어 간의 관계를 학습하며, 결과를 다음 층에 전달한다.
    2. 디코더

      • 이전 출력과 인코더 출력을 결합해 Self-Attention을 수행한다.
      • 결과를 기반으로 다음 단어를 생성한다.
    3. 포지셔널 인코딩(Positional Encoding)
      Transformer는 순서를 고려하지 않기 때문에, 단어의 순서를 학습할 수 있도록 포지셔널 인코딩을 추가한다.

     

    장점

     

    1. 병렬 처리:

      • 모든 입력 데이터를 동시에 처리할 수 있어 학습 속도가 빠르다.
    2. 긴 시퀀스 처리:

      • Self-Attention 메커니즘으로 긴 문맥 관계를 효율적으로 학습한다.
    3. 모듈화 된 구조:

      • 인코더와 디코더를 독립적으로 확장하거나 조합할 수 있다.
    4. 스케일링 가능:

      • 더 많은 데이터를 학습하거나, 더 큰 모델로 확장할 때 효과적이다.

     

    단점

     

    1. 높은 연산 비용:

      • Self-Attention의 계산 복잡도는 $O(n^2)$으로, 입력 시퀀스가 길어질수록 비용이 증가한다.
    2. 메모리 사용량:

      • 긴 시퀀스를 처리할 때 메모리 사용량이 급증한다.
    3. 작은 데이터셋에 비효율적:

      • 학습 데이터가 적을 경우, 일반적으로 RNN 기반 모델보다 성능이 낮을 수 있다.

     

    사용 사례

     

    1. 자연어 처리(NLP)

      • 번역, 요약, 문장 생성 등에서 뛰어난 성능을 보인다.
      • 대표적인 모델: BERT, GPT 시리즈, T5 등.
    2. 컴퓨터 비전

      • 비전 트랜스포머(Vision Transformer, ViT)로 이미지 분류 및 처리에 사용된다.
    3. 멀티모달 학습

      • 텍스트와 이미지를 함께 처리하는 작업에 효과적이다.

     

    요약

     

    이번 글에는 모처럼 후 요약이다. 선 요약 하고 들어가는 것이 별로 유효하지 않다는 생각이 들어서.

     

    모델 장점 단점 사용 사례
    Vanilla RNN 구조가 단순하고 구현이 쉬움 기울기 소실 문제, 장기 종속성 문제 간단한 시계열 데이터 처리
    LSTM 기울기 소실 문제 해결, 
    장기 종속성 처리 가능
    구조가 복잡하고 학습 속도가 느림 긴 시퀀스 데이터 처리
    GRU 계산량이 적고, 학습 속도가 빠름 복잡한 데이터에서 성능이 떨어질 수 있음 중간 수준의 시퀀스 처리
    Bidirectional LSTM 양방향 문맥 정보 활용 가능 계산량이 많고 실시간 처리 어려움 자연어 처리(NLP)
    Transformer 병렬 처리 가능, 긴 문맥 학습 가능 높은 연산 비용, 메모리 사용량 증가 NLP, 컴퓨터 비전, 멀티모달

     

    이렇게 해서 RNN의 발전 과정을 정리하고, 트랜스포머라는 슈퍼스타까지 아주 살짝 알아보았다.

     

    뜬금없지만 내 학습 목표는 컴퓨터 비전 분야인데, 이제 개념적으로나마 그 시작점에 온 것 같아 기분이 좋다.

     

    계속 가보자.

     

    끝!

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2025/01   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함