이 영역을 누르면 첫 페이지로 이동
가을달 블로그의 첫 페이지로 이동

가을달

페이지 맨 위로 올라가기

가을달

본 블로그는 개인 블로그로 글쓴이의 소속/직장의 의견을 대변하는 것이 아닌 개인적인 생각을 공유하는 공간 입니다.

[GPT 시리즈 ②] Transformer, 그거 완전 망한 영화 아니냐?

  • 2022.08.28 11:15
  • 프로젝트 매니지먼트
728x90

이거 아닙니다.

Transformer는 자연어 처리 분야에서 혁신적인 발전을 가져온 모델 중 하나로, 기존의 RNN 계열 모델들의 문제점인 긴 문장 처리와 연산 속도 등의 한계를 극복하고자 2017년 Vaswani 등의 논문 "Attention is all you need"에서 제안되었습니다. 사실 이후에 BERT의 발표로 Transformer 기반 언어모델의 시대가 도래했지만 이건 왜 성능이 좋은지를 이해해야 합니다.

 

Transformer는 기존의 RNN 계열 모델들과 달리, 입력 시퀀스와 출력 시퀀스를 동시에 처리하는 encoder-decoder 구조를 사용합니다. 여기서 시퀀스란 단어(word) 같은 무언가(something)의 나열을 의미 합니다. 보통이걸 기계번역(흔한 번역기를 생각하면 됩니다.)를 예시로 많이 드는데 이런겁니다.

 

I am a boy → 나는, 소년, 이다

 

단순하게 말하면, (i), (am) (a) (boy)는 4개이고, (나는) (소년) (이다)는 다른 시퀀스 길이를 가지는데 시퀀스-투-시퀀스(seq2seq) 테스크는 이렇게 주어진 길이가 달라도 해당 테스크를 수행하는 데 문제가 없어야 합니다. 기계번역을 예시로 들었듯 이런 방식은 이전부터 이어져 왔습니다.

 

Transformer는 seq2seq 테스크에 특화된 모델로, 기계 번역 뿐만 아니라 임의의 시퀀스를 해당 시퀀스와 다른 속성을 가진 시퀀스로 변환하는 작업에도 사용될 수 있습니다. 예를 들어, 제주 앞바다의 한 달치 기온 데이터를 사용하여 앞으로 1주일간 하루 단위로 태풍이 발생할지를 예측하는 과제(기상 상황에 대한 시퀀스 → 태풍 발생 여부의 시퀀스) 역시 Transformer로 수행할 수 있습니다. 그리고, 이를 가능케 하는 핵심적인 구조가 바로 Attention 메커니즘입니다.

 

 

Transformer의 Encoder는 입력 문장을 받아서, 각 단어의 특성을 추출하고 문맥 정보를 학습합니다. 이를 위해, 입력 문장의 모든 단어들을 Embedding Layer를 거쳐 순차적으로 입력하고, 이후에는 Multi-Head Attention과 Feed-Forward Network를 거쳐 출력됩니다.

 

Multi-Head Attention은 입력 문장의 단어들 간의 상호작용을 고려하여, 각 단어의 중요도를 산출합니다. 이때, Query, Key, Value 세 개의 벡터를 이용해 각각 다른 가중치를 부여하여 계산합니다. 이를 여러 개의 Head로 나누어 병렬 연산을 수행합니다.

 

Feed-Forward Network는 Multi-Head Attention을 거친 결과물을 바탕으로, 각 단어의 특성을 추출합니다. 즉, Multi-Head Attention에서 계산된 단어 간의 관계를 바탕으로, 단어별로 다른 특성을 추출하고 이를 다음 레이어로 전달합니다.

 

Decoder는 Encoder에서 추출한 정보와 함께, 이전 단계에서 생성한 결과를 이용하여 번역된 문장을 출력합니다. 이때도 Multi-Head Attention을 사용하며, 하나의 셀에서 Decoder 입력 시퀀스의 이전 위치에 있는 단어들의 정보를 함께 고려합니다. 그리고, 이전 단계에서 생성된 결과물과 Encoder에서 추출한 정보를 이용하여, 다음 단어를 예측하게 됩니다.

 

결론적으로, Transformer는 입력 문장을 처리하는 Encoder와 출력 문장을 생성하는 Decoder로 구성되어 있으며, Attention 메커니즘을 이용하여 문장 내 각 단어들의 상호작용을 고려합니다. 이를 통해, 기존의 RNN(Recurrent Neural Network) 계열 모델보다 더욱 효과적인 문장 처리와 번역 성능을 보여줍니다.

 

RNN계열 모델은 순차적인 데이터, 즉 시퀀스 데이터를 처리하는 모델입니다. 이 모델은 이전에 처리한 입력 데이터의 상태를 다음 입력 데이터에 반영하면서, 입력 시퀀스의 특성을 파악하고 결과를 출력합니다.

 

RNN은 기본적으로 시간적인 연속성을 고려하여 데이터를 처리하는 모델로, 입력 시퀀스를 끝까지 처리하면서 hidden state라는 내부 상태값을 갱신합니다. 이때 hidden state는 이전에 처리한 입력 데이터의 상태를 보존하는 역할을 합니다.

 

하지만 RNN 모델은 시퀀스가 길어질수록 학습 불안정성이 발생하고, 입력 데이터와 출력 결과 간의 장기 의존성(long-term dependency)을 처리하는 데 한계가 있습니다. 이러한 문제점을 극복하기 위해 LSTM(Long Short-Term Memory)과 GRU(Gated Recurrent Unit)와 같은 변형 모델들이 등장하였습니다.

 

LSTM 모델은 hidden state와 함께 Cell state를 사용하며, 각 단계마다 Cell state를 조절하여 입력 데이터의 흐름을 보다 잘 파악할 수 있습니다. 또한, GRU 모델은 LSTM 모델과 마찬가지로 입력 데이터의 흐름을 조절할 수 있지만, 조절 게이트의 수를 줄임으로써 더 간결한 구조를 가집니다.

 

RNN 계열 모델은 자연어 처리 분야에서 많이 사용되며, 기계 번역, 챗봇, 문서 요약 등의 분야에서 활용됩니다. 하지만 RNN 모델은 입력 데이터와 출력 결과 간의 장기 의존성을 처리하는 데 한계가 있었습니다. 이때, Transformer와 같은 모델이 등장함에 따라 기존의  시퀀스 데이터 방식에 폭발적인 생산성 향상이 일어났다는 것을 의미 합니다.

 

그럼 우리가 조금만 기억을 더듬어서 딥러닝에서 등장한 다양한 개념들에 대해서 이야기하는 것을 다음 편으로 삼아보겠습니다. 

728x90
저작자표시 비영리 동일조건 (새창열림)

'프로젝트 매니지먼트' 카테고리의 다른 글

코호트 분석만 알아도 제품 초기 성장에 도움이 된다.  (0) 2023.01.14
스크럼에 대한 거의 모든 것  (0) 2022.08.28
기가 막히는 피리부는 사내가 되는 방법  (0) 2022.08.27
[데이터 분석 시리즈] ① 패턴과 추세를 알고 싶을 때 쓰면 좋은, 시계열 분석  (0) 2022.08.17
MVP만 만들면 되는거죠? 쉽네요.  (0) 2022.08.16

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 코호트 분석만 알아도 제품 초기 성장에 도움이 된다.

    코호트 분석만 알아도 제품 초기 성장에 도움이 된다.

    2023.01.14
  • 스크럼에 대한 거의 모든 것

    스크럼에 대한 거의 모든 것

    2022.08.28
  • 기가 막히는 피리부는 사내가 되는 방법

    기가 막히는 피리부는 사내가 되는 방법

    2022.08.27
  • [데이터 분석 시리즈] ① 패턴과 추세를 알고 싶을 때 쓰면 좋은, 시계열 분석

    [데이터 분석 시리즈] ① 패턴과 추세를 알고 싶을 때 쓰면 좋은, 시계열 분석

    2022.08.17
다른 글 더 둘러보기

정보

가을달 블로그의 첫 페이지로 이동

가을달

  • 가을달의 첫 페이지로 이동
250x250

검색

메뉴

  • 🏠 홈
  • 💁‍♂️ 글쓴이
  • 👍 페이스북
  • ❤ 인스타그램

카테고리

  • 분류 전체보기 (91)
    • 프로젝트 매니지먼트 (31)
    • 커리어와 진로 (7)
    • 일상에서 영감찾기 (23)
    • 읽고 보고 들은 것 (17)
    • 사고 먹고 마시고 삼킨 것 (2)
    • 지극히 사적인 이야기 (9)

최근 글

인기 글

댓글

정보

이해봄의 가을달

가을달

이해봄

공지사항

  • 공지 - 가을달 블로그 탄생 이유

블로그 구독하기

  • 구독하기
  • 네이버 이웃 맺기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • 자기소개
Powered by Tistory / Kakao. © 이해봄. Designed by Fraccino.

티스토리툴바