데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      고등학생도 이해하는 Transformer (Deep Learning) #4

      fromDK 24.11.07
      1,786 10 0
      DEVOTEE 요약
      본 블로그에서는 Transformer 모델과 관련한 4차원 벡터의 내적 계산을 설명하고 있다. 각 Basis Vector와 주어진 입력 벡터의 내적을 통해 유사도와 영향도를 측정할 수 있으며 이를 통해 신호의 주파수 특성을 이해할 수 있다고 한다. 마지막으로, Discrete Cosine Transform (DCT) Basis Vector를 활용하여 입력 신호의 주파수 변환을 시도해 보는 연습을 제안하고 있다.
      DEVOTEE 추천 블로그

      고등학생도 이해하는 Transformer (Deep Learning) #1

      고등학생도 이해하는 Transformer (Deep Learning) #2

      고등학생도 이해하는 Transformer (Deep Learning) #3


      자, 이번 시간에는 4차원 이상의 벡터의 내적에 대해 이해 하고 넘어가도록 합시다.

      되도록 수학연산은 안하도록 하겠습니다 ^^


      아래 4차원 Basis Vector를 머릿속으로 그려 봅시다.

      첫번째 Basis Vector는 [ 0.5000, 0.5000, 0.5000, 0.5000 ] 이거 두번째 벡터는 [ 0.6533, 0.2706, -0.2706, -0.6533 ] 세번째.... 네번째 벡터로 구성되어 있습니다.

      이러한 벡터의 모음을 행렬(Matrix) 라고 하지요

      basis_vectors = [ 
       [ 0.5000,   0.5000,   0.5000,   0.5000 ],   
       [ 0.6533,   0.2706,  -0.2706,  -0.6533 ],
       [ 0.5000,  -0.5000,  -0.5000,   0.5000 ], 
       [ 0.2706,  -0.6533,   0.6533,  -0.2706 ]
      ]

      4차원 공간을 만들 수없고, 4차원 공간을 만들어 4개의 Vector를 배치하는 것은 상상하기 힘듭니다.

      게다가 복잡한 소숫점 숫자만 나오니 어떻게 그림처럼 머릿속에 드려야 할 지 막막합니다.


      자, 그럼 그냥 단순히 그림으로 변환해 보겠습니다.

      4차원 공간 대신, 각 벡터를 2차원 공간에 그림으로 표시 해보겠습니다. 가로축은 각 벡터의 요소 순서이고, 세로축은 값의 크기 입니다.

      image.png

      이 4개의 벡터를 Basis Vector라고 하고, 아래의 벡터를 입력으로 각 Basis Vector와 내적을 계산해 봅시다

      input_vector = [ 
       [ 0.3750, 0.1250, -0.1250, -0.3750 ],   
      ]

      앞으로 수학공식을 이야기 하지 않는다고 하더니 벌써 계산하라네요.

      위의 입력 벡터를 내적 계산하기 전에 한번 내적의 의미를 다시 상기시켜 보시죠.

      계산은 제가 하겠습니다. 내적의 의미는 얼마나 유사한지, 영향을 주는지, 닮았는지를 나타내는 값입니다.


      자, 위의 입력 벡터를 그림으로 변환해볼까요?

      image.png

      오른쪽 아래로 향하는 직선입니다. 그럼 Basis Vector 누구와 가장 유사한가요?

      제가 보기엔 Basis Vector 2가 가장 유사해 보입니다.


      그럼 실제로 내적을 계산해보죠.

      Basis Vector

      내적 값

      Basis Vector 1

      0

      **Basis Vector 2 **

      0.557625

      Basis Vector 3

      0

      Basis Vector 4

      0.039625

      역시, 예상대로 가장 유사한 형태인 Basis Vector 2와 가장 큰 값을 가지고 있네요.

      그림만 보고 정답을 맞추셨다면 내적의 의미를 정확히 이해 하신 것 입니다!!

      참 쉽지요? ^^

      이 내적 값을 확률로 변환해 볼까요?

      우선 간단하게 아래와 같이 계산해 봅시다

      image.png

      아래와 같이 Input_vector와 Basis Vector는 93% 유사하다고 볼 수 있습니다.


      Simple 확률

      Basis Vector 1

      0

      **Basis Vector 2 **

      0.93

      Basis Vector 3

      0

      Basis Vector 4

      0.07

      실제로 Deep Learning 에서는 아래의 수식과 같이 Softmax함수를 이용하여 확률로 변환하는데, 위의 Simple 확률 수식에 지수의 Base를 Exp를 이용한 점만 차이가 있습니다.

      image.png

      Softmax function

      이러한 방법을 이용하여 어떤 부류를 분류하는 Classification 학습에서 입력 값과 각 카테고리 별 확률을 계산하여 학습하는데 이용 할 수 있습니다.


      숙제 1

      다양한 입력 벡터를 만들어 머릿속으로 어느 Basis Vector 와 가장 내적 값이 클지(유사할지) 예상해보고 내적 계산해 보세요



      숙제 2 - 4차원을 넘어서 8차원에 도전해보세요

      아래는 8차원 DCT Matrix입니다. 아무 직선이나 곡선을 아래 DCT Basis Vector와 내적 값이 가장 큰 vector를 찾아 보세요


      1

      2

      3

      4

      5

      6

      7

      8

      Basis Vector 1

      0.5

      0.5

      0.5

      0.5

      0.5

      0.5

      0.5

      0.5

      Basis Vector 2

      0.981

      0.831

      0.556

      0.195

      -0.195

      -0.556

      -0.831

      -0.981

      Basis Vector 3

      0.924

      0.383

      -0.383

      -0.924

      -0.924

      -0.383

      0.383

      0.924

      Basis Vector 4

      0.831

      -0.195

      -0.981

      -0.556

      0.556

      0.981

      0.195

      -0.831

      Basis Vector 5

      0.707

      -0.707

      -0.707

      0.707

      0.707

      -0.707

      -0.707

      0.707

      Basis Vector 6

      0.556

      -0.981

      0.195

      0.831

      -0.831

      -0.195

      0.981

      -0.556

      Basis Vector 7

      0.383

      -0.924

      0.924

      -0.383

      -0.383

      0.924

      -0.924

      0.383

      Basis Vector 8

      0.195

      -0.556

      0.831

      -0.981

      0.981

      -0.831

      0.556

      -0.195




      참고

      위의 Basis Vector는 영상이나 오디오를 주파수 영역으로 변환되는데 많이 사용되는 Discrete Cosine Transform의 Basis Vector 입니다.

      이 Basis Vector와 내적을 통해 주파수 영역으로 변환 후 영상 처리 후 다시 시간 영역으로 돌아올 수 있습니다. 영상처리 및 오디오 처리에 많이 사용 됩니다.


      위의 DCT Basis Vector는 아래 공식에 의해 만들어졌습니다.

      image.png

      각각의 그래프에서 아래 그림과 같이 원으로 표시된 지점의 값을 뽑아서 만들어 진것이 DCT Basis Vector입니다.

      image.png

      출처 : DCT - Discrete Cosine Transform


      Basis Vector의 번호가 증가할 수록 주파수가 높아지는 것을 알 수 있습니다.

      높은 주파수의 Basis Vector와 내적을 한값이 크면 입력 신호의 주파수가 많다는 것을 의미라고 낮은 주파수의 Basis Vector와 내적 값이 크면 입력 신호가 낮은 주파수가 많다는 것을 의미합니다.

      이렇게 시간 영역에서 주파수 영역으로 변환을 합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      fromDK 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기