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

신고하기

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

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

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

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

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

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

      임시저장함

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

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

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

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

      회원정보 연결

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

      fromDK 24.10.30
      2,806 8 2
      DEVOTEE 요약
      Transformer와 딥러닝을 이해하기 위해 내적의 의미는 핵심적이며, 두 벡터가 얼마나 유사한지를 보여주는 연산이다. 내적은 그래픽스 처리에서도 사용되며, 특히 3D 오브젝트의 이동, 회전, 확대, 축소 시 GPU에서는 새로운 베이시스 벡터로 변환을 통해 내적을 수행하여 결과를 얻는다. 회전 행렬을 통해 이전 벡터와 새로운 베이시스 벡터의 내적으로 각 성분의 유사도를 계산함으로써 3D 오브젝트의 변환이 가능하다.

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


      지난 시간에는 내적의 의미를 알아보았다.

      항상 강조하지만, 내적의 의미를 알아야 Transformer와 DL(Deep Learning)모델을 이해할 수 있다.

      내적의 의미는 두 벡터가 얼마나 유사한지, 영향을 주는지, 닮았는지를 나타내는 연산이다.

      이것만 기억하고 이번에는 그래픽스 처리에서 이용되는 내적연산에 대해 알아 보자.

      그래픽스 처리에 내적이 이용되는 것을 설명을 하는 이유는 아래아 같다.

      • 2,3차원 벡터 연산은 현실과 유사하기 때문에 이해하기가 쉽다. (2,3차원이 이해되어야 고차원의 연산이 이해가 됨)

      • 3D 오브젝트는 점, 선, 면(Vertices, Edges, Faces, Polygon, Surfaces)으로 구성되어 있으며, 벡터로 표시하기 용이함

      • DL연산에 GPU를 이용하는 이유를 이해하게 됨

      우리는 현재 X, Y, Z 축인 3차원 공간에 살고 있다. (현실에서는 시간축 포함하여 4차원인가?)

      우선 2차원 공간으로 예시를 들어 설명 해 보겠다. 2차원(X, Y) 공간에 어떤 점을 표시 해보면 아래와 같다.

      자, 아래 점의 좌표를 말해보자. 한번 스스로 아래 점의 좌표를 생각해보자?

      image.png

      (1, 2)일까? (1,1)일까? (0,0)일까?

      사실 기준점과 기준 축(Basis Vector)가 없기 때문에 좌표를 말 할 수 없다.

      그럼 기준점과 기준 축을 만들어 볼까?

      image.png

      ①번 이외에 나머지는 인성에 문제 있냐고? 사실 3D 오브젝트가 이동, 회전, 확대, 축소 등이 수행될때 GPU에서는 위의 그림과 같이 Basis Vector를 변환하여 수행이 된다.

      이 때 내적이 이용된다.


      대부분 우리가 생각하는 ①번 그림의 경우 Basis Vector가 (1, 0), (0, 1)을 이용한다. X축과 Y축이며, 90도를 이루고 있다.

      각 Basis Vector는 90도를 이루어서 서로 영향을 주지 않는 방향을 가르킨다. (앞에서 이야기한 내적은 두 벡터의 유사함 닮은 꼴, 유사함을 측정하는 연산)

      회전 (Rotation)

      (루트 3/2, 1/2) 좌표에 점이 있는 경우, (삼각함수 특수각인 30도이다) 우선 반시계방향으로 -30도 회전해 보자.

      어떻게 구현해야 할까?

      image.png

      사실 위의 (루트 3/2, 1/2)은 Basis Vector가 X, Y 축 (1, 0), (0, 1) 기준으로 나타낸 점이며 이를 벡터로 나타내고, 길이는 1이다.

      삼각함수 특수각인 30도의 삼각형이기 때문에 회전하면 (1,0)이 된다는 것을 우리는 답을 이미 알고 있다.

      image.png

      회전을 수행하려면 우선 C 값에 회전을 할 cos(θ) 를 곱하여 회전된 x 축의 값을 계산하고, C 값에 회전을 할 sin(θ) 를 곱하여

      회전된 y 축 값을 계산하면 된다. ( C * cos(θ), C * sin(θ) ) 아래 삼각함수의 식을 보면 이해가 된다.

      image.png

      그런데 잠깐 생각해보면 회전이란? Basis Vector(X, Y축)를 회전하면 (즉, 보는 관점을 회전하면) 회전이 된다.


      한번 Basis Vector를 30도 회전한 빨간색의 새로운 Basis Vector에서 해당 지점을 확인 해보자.

      (참고로, 오브젝트가 반시계방향으로 회전은 +θ, Basis Vector를 반시계방향으로 회전하면 -θ 이다)

      image.png

      위의 그림과 같이 Basis Vector를 변환(회전)하여 기존의 점을 보면 (1, 0) 이 된다. 점(오브젝트)가 회전하거나,

      아니면 바라보는 관점(기준점, Basis Vector)가 이동하거나 동일한 결과를 가진다.


      어떻게 보면 당연한 이야기로 들리지만, Basis Vector를 변환을 하려면 어떻게 해야 할까?

      바로 내적을 이용해서 새로운 Basis Vector를 이용해서 내적을 수행하면

      현재 지점을 나타내는 벡터와 새로운 Basis Vector의 각 성분별 유사도, 영향도, 닮은 꼴을 뽑아내서 Basis Vector를 변환할 수 있다.


      한번 회전 행렬을 확인해보자

      image.png

      Cosine과 Sine으로 이루어져 있다. 단순히 위의 행렬을 이용하면 회전이 된다고만 설명을 하고 있다. 사실 위의 메트릭스를 벡터로 분해해 보면, 아래와 같다.

      image.png

      회전에 의한 새로운 Basis Vector를 계산하는 수식이다.

      이전 지점의 벡터와 새로운 Basis Vector를 내적을 수행하면 해당 새로운 Basis Vector X, Y 부분의 각 유사도, 성분, 영향을 주는 값을 계산 할 수 있다.


      위의 30도 회전 경우에 예를 들어 내적 계산해보면 아래와 같다

      image.png

      위의 -30도 Basis Vector로 기존의 벡터와 내적을 수해하면 아래와 같이 (1, 0)이 된다.

      Basis Vector의 X 축과 동일한 방향 동일 크기이지 때문에 X축의 유사도는 1이 되고, Y축은 90도 각도이기 때문에 0이 된다.

      image.png

      이는 새로운 Basis Vector로 내적을 수행하여 각 X, Y 성분에 대한 유사도, 닮은 꼴, 영향도를 계산한 값이다.


      이와 같이 회전에 대한 각 성분을 계산할 수 있으나, Matrix를 이용하여 내적으로 계산하는 것이 차원이 더 올라가거나, GPU처럼 병렬 처리하는것이 유리한 방법이다.

      만약, 새로운 Basis Vector 의 크기가 1이 아니고, 각 성분이 서로 직각이 아닌 경우는 어떻게 될까? 이 경우 변환(Transformation) 으로 확대 되거나 일부는 찌그러지거나 늘어나게 된다.

      이러한 방법을 사용하여 3D 오브젝트를 회전, 이동 하거나 Viewport를 변경, 이동 등에 사용 할 수 있다. 또한 3D 객체의 표면테 텍스쳐를 입힐때도 이용가능하다.


      아직 새로운 Basis Vector의 내적으로 변환이 되는것이 이해가 잘 안된다면 다음시간에 변환(Transformation)에 대해서 이야기 하면서 다시 이해해 보도록 하자.

      숙제!!

      위의 점을 시계방향으로 60도 회전해보자! 이때의 좌표는?

      image.png

      참고 - PCA

      PCA (Principal Component Analysis) 주성분 분석에도 내적의 의미를 알면 조금이나마 이해에 도움이 된다.

      PCA 관련해서는 아래 영상을 참고 해보며, "Projection" 이야기가 나올때 내적의 의미를 잘 생각 해보자

      Principal Component Analysis 주성분 분석 (PCA), 스텝 바이 스텝

      댓글 0

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

      fromDK 님의 최신 블로그

      더보기