Big Ben
Big Ben's Log
Big Ben
전체 방문자
오늘
어제
  • 전체 글 (80)
    • 파이썬 (23)
      • 파이썬 기초 (5)
      • 클래스 (6)
      • 자료구조 (4)
      • Tensorflow (3)
      • PyTorch (2)
      • konlpy (1)
      • anaconda (1)
    • 머신러닝 (3)
      • 선형회귀 (1)
      • Tree 기반 (1)
    • 딥러닝 (6)
      • NLP (2)
      • VISION (2)
      • TABULAR (0)
      • 딥러닝 서버 구축 (2)
    • 그래프 이론 (1)
      • 그래프마이닝 (1)
      • GNN (0)
    • 강화학습 (3)
      • 강화학습 기본 (3)
    • 인공지능 (5)
    • 추천시스템 (2)
      • 추천시스템 기초 (2)
    • Competitions (1)
    • 빅데이터 (8)
      • 하둡 (3)
      • 스파크 (4)
      • 클라우드 (1)
    • SQL (7)
      • MariaDB (2)
    • 논문 리뷰 (2)
    • 대학원 (0)
      • 데이터 사이언스 (0)
      • 경제학 (0)
    • 선형대수학 (7)
      • 선형대수 ICE BREAKING (1)
      • 벡터 (5)
      • 고윳값 (1)
    • 개인프로젝트 (0)
      • 포트폴리오 대시보드 + AI기반 주식 자동매매 (0)
    • 재테크 (1)
    • 자동차 (0)
    • 알고리즘 (11)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • pytorch
  • 하둡
  • 파이썬
  • 빅데이터
  • 프로그래밍
  • PYTHON
  • mysql
  • 선형대수
  • class
  • 객체지향
  • 선형대수학
  • 파이썬기초
  • 딥러닝
  • 인공지능
  • 객체
  • 머신러닝
  • 자료구조
  • Baekjoon
  • 프로그래머스
  • 데이터베이스
  • AI
  • 알고리즘
  • MariaDB
  • 데이터
  • 코테
  • 백준
  • sql
  • 코딩테스트
  • TensorFlow
  • 데이터사이언스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Big Ben
딥러닝/NLP

[Attention Mechansim] 바다나우 어텐션

[Attention Mechansim] 바다나우 어텐션
딥러닝/NLP

[Attention Mechansim] 바다나우 어텐션

2022. 12. 19. 21:09
반응형

NLP 심화과정 & 딥러닝에서 Transformer와 BERT 레벨의 알고리즘을 공부할 때 필요한 개념인 어텐션 메커니즘, 그중에서도 범용적으로 많이 사용되는 바다나우 어텐션에 대해 알아보자.

 

이 메커니즘에 대해 알기 위해서는 seq2seq 개념이 선행되어야 이해하기 쉬울 것이다. 

 

단순 닷 프로덕트 어텐션 보다는 조금 더 복잡하지만, 자주 활용하고 한번 테스트 코드라도 작성해 본다면 이해하기가 크게 어렵진 않은 개념이다.

 

바다나우 어텐션 함수는 

 

Attention(Q, K, V) = Attention Value 로 정의가 되는데,

 

t: 어텐션 메커니즘이 수행되는 디코더 셀의 현재 시점을 의미

Q (Query): t-1시점의 디코더 셀에서의 은닉 상태

K (Keys): 모든 시점의 인코더 셀의 은닉 상태들

V (Values): 모든 시점의 인코더 셀의 은닉 상태들

 

를 뜻합니다.

 

다른 어텐션 메커니즘과 다르게 여기서는 어텐션 함수의 Query가 디코더 셀의 t 시점의 은닉 상태가 아니라 t-1 시점의 은닉 상태임을 주목해야한다.

 

기본적으로 바다나우 어텐션이 가미된 seq2seq encoder와 decoder를 까보면... 아래와 같은 구조임을 알 수 있다.

 

바다나우 어텐션 값을 구하기 위해서는 해야할 일은 다음과 같다.

 

1. Attention Score 구하기

2. Attention Distribution (=attention weights) 구하기 

3. Attention Values (Context Vector) 구하기        <<<<< 여기까지가 바다나우 어텐션 값을 구하는 프로세스

( 그 이후 어텐션 값을 활용하여 )

4. 임베딩 된 단어 벡터와 Attention value를 결합하여 s_t를 구할 수 있다

5. 구해진 s_t는 예측값을 구하는데 활용된다.

 

먼저 첫번째...

 

1. Attention Score 구하기

그림으로 보자면

 

2. Attention Distribution (=attention weights) 구하기 

이렇게 attention score를 구했다면, softmax를 이용하여 초록색 벡터인 attention score의 확률분포를 구할 수 있다.

이를 attention distribution 이라고 하는데, 이때 attention distribution의 각각 벡터의 값은 하나의 가중치가 되어 context vector를 구할 때 활용하게 된다.

 

3. Attention Values (Context Vector) 구하기

이젠 준비된 정보들을 하나로 취합하고, 어텐션의 최종 결과값을 얻기 위해서 각 인코더의 은닉 상태와 어텐션 가중치값들을 곱하고 최종적으로 모두 더해야한다 --> 이렇게 되면 가중합을 구하게 되는데, 이 벡터는 인코더의 문맥을 포함하고 있어 context vector라고 불리는 것이 특징이다.

 

 

4. 임베딩 된 단어 벡터와 Attention value를 결합하여 s_t를 구할 수 있다 & 5. 구해진 s_t는 예측값을 구하는데 활용된다.

 

아래와 같이 어텐션 메커니즘을 활용할 수 있게 되는데, context vector와 임베딩된 단어 벡터가 결합하여 최종 decoder LSTM셀을 거쳐 s_t를 구할 수 있게 된다.

 

따라서 어텐션을 활용하면서 디코더에서 출력 단어를 예측하는 매 시점마다 인코더에서의 전체 입력 문장을 다시 한 번 참고하는 장점을 얻을 수 있다.

그렇다면 벡터로 압축한 정보 손실을 어느정도 상쇄 또는 최소화할 수 있으며, RNN의 고질적인 기울기 소실 문제에 대응할 수 있는 장점이 있다.

 

[reference: Won Joon Yoo, Introduction to Deep Learning for Natural Language Processing, Wikidocs]

반응형
저작자표시

'딥러닝 > NLP' 카테고리의 다른 글

트랜스포머(Transformer) - 1 (포지셔널 인코딩)  (0) 2022.12.22
    '딥러닝/NLP' 카테고리의 다른 글
    • 트랜스포머(Transformer) - 1 (포지셔널 인코딩)
    Big Ben
    Big Ben
    Data Scientist

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.