23.01.06 - 자연어 처리(3)

류소리·2023년 1월 9일
0

자연어처리

목록 보기
3/3

Transformer p72

  • 2017년 구글이 제안한 시퀀스-투-시퀀스 모델이가.

  • 자연어 처리함.

  • 기존의 RNN구조를 사용하지않고 attention만으로 인코더 디코더를 형성하여 기계번역을 시행한다.

  • 장점 : 많은 양의 데이터를 병렬적으로 처리가능하다.


Transformer의 attention

  • attention : 시퀀스 입력에 수행하는 기계학습 방법의 일종이다.
  • 중요한 요소에 더 집중해 성능을 끌어 올리는 기법이다.

self attention의 효과

  • self attention : 자신에게 수행하는 어텐션 기법.
  • self attention 대상은 입력 시퀀스 전체이다.
  • 시퀀스 길이가 길어지더라도 정보를 잊거나 왜곡할 염려가 없다.

계산예시 p81

  • Query = Key = Value 서로 영향을 주고 받으면서 의미르 계산한다.

  • 인코더의 셀프 어텐션 : Query = Key = Value

  • 디코더의 마스크드 셀프 어텐션 : Query = Key = Value

  • 디코더의 인코더-디코더 어텐션 : Query : 디코더 벡터 / Key = Value : 인코더 벡터

self attention의 Q, K, V 벡터 얻기

  • d_model / num_heads의 차원을 가지는 서로다른 3개의 가중치를 이용하여 Q, K, V를 얻어냄
  • 다음으로 attention value를 얻어내는데 이 과정은 본래 attention에서의 과정과 다르지않음. Q, K의 유사도를 통해 가중치를 구하고 이를 V에 적용 후 합하기
  • attention value 행렬의 크기는(seq_len, dv) = (문장길이, d_model / num_heads)
  • attention value는 총 8개로 설정, 이 attention value들을 multi head attention이라함
  • multi head attention 행렬의 크기는(seq_len, d_model)
  • 위의 것이 바로 multi head attention의 출력값인데 행렬의 크기가 계속 유지되고 있음을 알 수 있다. 인코더가 여러개라 형태 유지 해야함.
  • 출력값은 Position-wise FFNN이라는 일반적인 뉴럴넷에 입력으로 사용된다.

attention과 self attention의 주요 차이 p81

  1. 어텐션은 소스 시퀀스 전체 단어들과 타깃 시퀀스 단어 하나 사이를 연결하는데 쓰입니다.
    반면에 셀프 어텐션은 입력 시퀀스 전체 단어들 사이를 연결한다.

  2. 어텐션은 RNN의 구조 위에서 작동하지만, 셀프 어텐션은 RNN이 없이 작동한다.

  3. 타겟언어 1개의 어텐션 1개 수행, 셀프 어텐션은 인코딩,디코딩 블록의 개수만큼 반복 수행한다.


시퀀스-투-시퀀스 p72

: 특정 속성을 지닌 시퀀스를 다른 속성의 시퀀스로 변환하는 작업이다.

한글 단어 문장에서 (소스언어) -> 영어 단어 문장으로 (타깃언어)

인코더와 디코더 p73

  • 인코더 : 소스 시퀀스의 정보를 압축해 디코더로 보내는 역확을 한다.
  • 인코딩 : 인코더가 소스 시퀀스를 압축하는 과정을
  • 디코더 : 인코더가 보내 준 소스 시퀀스 정보를 받아서 타깃 시퀀스 생성.
  • 디코딩 : 디코더가 타깃 시퀀스를 생성하는 과정을
profile
새싹 빅테이터 개발자

0개의 댓글