1

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기

힘센캥거루
2025년 10월 29일(수정됨)
4
1
17

맥북에 물을 한바가지 쏟은 후, 멘붕이 와서 3~4일 정도를 허비했다.

지금 생각해보니 그냥 어차피 맥북은 나간거고, 수리 맡긴다고 생각하고 뭐라도 할걸 그랬나 싶다.

어쨌든 조금 늦었지만, 그래도 끝까지 달려봐야 한다는 생각에 3장 후기를 남긴다.

1. 어텐션 메커니즘

3장의 주 내용은 어텐션 메커니즘이다.

어텐션은 말 그대로 문장에서 어떤 부분을 주목하고 싶은지를 나타낸다.

예를들어 나는 어제 밥을 먹었다 는 문장을 이해한다고 해보자.

우리는 자연스럽게 , 어제먹었다와 같은 단어들에 집중하게 될 것이다.

이처럼 처리중인 단어를 이해하기 위해서는 어떤 단어들과의 결합이 필요하고, 어텐션 메커니즘을 통해 단어들의 조합으로 문맥을 이해하도록 하는 것이다.

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-1

2. 셀프 어텐션

셀프 어텐션은 문장 안에서 토큰들 사이의 관계를 구하는 것이다. 

이미 토큰을 아래와 같이 임배딩 벡터로 구현했다고 하자.

import torch

inputs = torch.tensor(
  [[0.43, 0.15, 0.89], # Your     (x^1)
   [0.55, 0.87, 0.66], # journey  (x^2)
   [0.57, 0.85, 0.64], # starts   (x^3)
   [0.22, 0.58, 0.33], # with     (x^4)
   [0.77, 0.25, 0.10], # one      (x^5)
   [0.05, 0.80, 0.55]] # step     (x^6)
)

여기서 원하는 토큰 하나에 대해서 다른 토큰들의 점곱(dot)을 통해 토큰들 간의 관계를 어텐션 점수로 얻는다.

이때 점곱이라는 개념이 새롭게 보이겠지만, 행렬에서의 점곱벡터에서의 내적과 같다.

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-2

이 말은 두 벡터의 방향성이 비슷할수록 큰 값을 가지고, 서로 수직일 경우는 0과 같은 값을 가진다는 것.

이를 통해 두 임배딩이 얼만큼의 유사성을 가지고 있는지 확인할 수 있다.

벡터 자체를 보는 것이 아니라 두 벡터의 유사성을 보는 이유는 임배딩을 초기화 할 때 의미없는 벡터들을 흩뿌렸기 때문이다.

따라서 벡터 자체를 측정하는것은 의미가 없다.

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-3

그리고 어텐션 가중치의 합이 1이 되도록 정규화 한 후, 입력 벡터와 어텐션 가중치를 곱하고 합해준다.

어텐션 가중치가 높을수록 문맥 벡터에 영향이 크므로, 각 임배딩들 사이에서 쿼리로 입력한 임배딩의 적절한 위치의 방향을 벡터로 얻게 된다.

이것을 문맥백터라고 한다.

이런식으로 모든 임배딩에 대해 계산하면 아래와 같은 형태의 텐서를 얻게 된다.

tensor([[0.4421, 0.5931, 0.5790],
        [0.4419, 0.6515, 0.5683],
        [0.4431, 0.6496, 0.5671],
        [0.4304, 0.6298, 0.5510],
        [0.4671, 0.5910, 0.5266],
        [0.4177, 0.6503, 0.5645]])

텐서의 구조 자체는 2차원이지만, 내부에 담고 있는 내용은 3차원 문맥 벡터이다.

이를 이용해 각 임배딩들이 가지는 관계를 방향성으로서 표현할 수 있다.

3. 훈련 가능한 셀프 어텐션

훈련가능한 셀프 어텐션에서는 각각의 키, 쿼리 값을 더 낮은 차원으로 축소시킨다.

이때 최초에 처리하는 값들은 모두 임의의 값이다.

처리 이후 역전파 과정을 통해 업데이트 하는 것.

torch.manual_seed(123)

W_query = torch.nn.Parameter(torch.rand(d_in, d_out), requires_grad=False)
W_key   = torch.nn.Parameter(torch.rand(d_in, d_out), requires_grad=False)
W_value = torch.nn.Parameter(torch.rand(d_in, d_out), requires_grad=False)

위에서 최초의 query, key, value 값을 보면 모두 rand르 하는 것을 볼 수 있다.

최초의 값은 모두 의미가 없겠지만, 이후 훈련을 통해 의미있는 값으로 변하게 된다.

이런 과정을 통해 우리는 하나의 단어에 대한 문맥벡터를 얻을 수 있다.

4. 코잘 어텐션

코잘 어텐션은 토큰에 마스크를 씌우는 방식이다.

미래를 예측함으로서 다음의 문맥을 예측할 수 있도록 만드는 방식이다.

처음에 이 내용을 접했을 때, 과적합 문제가 먼저 떠올랐지만...

chatgpt의 대답은 달랐다.

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-4

과적합 방지는 코잘 어텐션의 부수적인 것.

모델이 실제 언어 생성 방향(왼→오)대로 문맥을 학습하도록 돕는다.

이렇게 학습된 문맥 벡터는 문장의 의미를 파악며 새로운 문장을 생성하고, 추론과 유추까지 가능하게 만든다.

이를 위한 여러가지 방법들이 뒤에 나온다.

5. 질문들

책을 읽으며 어러가지 생각들이 들었다.

  • 원 핫 인코더보다 훨씬 어려운 느낌인데, 이걸 하는 이유가 뭘까?

  • 코잘 어텐션을 하는 이유가 과적합 때문인가?

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-5

챗 지피티랑 정말 오랫동안 이야기 했는데 결론은 아래와 같다.

정답을 알고 있음
--> 모델이 예측이 아니라 복사만 하게 됨
--> 손실이 거의 0이 됨 (계산은 가능함)
--> 경사(gradient)가 거의 0
--> 업데이트가 거의 없음
--> 역전파에 의미 있는 변화가 없음
--> 학습이 사실상 안 됨

예를 들면, 어두운 방에서 물건을 찾으려고 손으로 더듬으며 탐색해야 한다고 하자.

이 과정이 공간을 이해하고 물건을 찾는 능력을 길러준다.

그런데 이미 물건 위치를 알고 있다면 더듬을 필요가 없기 때문에 결국 ‘찾는 방법’을 학습하지 못한다.

언어 모델에서 미래 토큰을 보는 것도 비슷하게 정답을 알고 있다면 학습 예측 능력을 잃게 되는 것이다.

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-6

그래서 코잘 어텐션(casual attention)은 손실을 유도하는 함수이다.

코잘 어텐션은 미래를 가려 손실이 발생하게 만들고, 이 손실을 바탕으로 문맥 벡터가 업데이트된다.

이렇게 예측 오류를 줄여가는 과정 속에서 모델은 문맥을 더 깊이 이해하고, 그에 따라 추론, 유추, 평가 능력도 발달한다.

6. 후기

맥북에 물을 쏟으면서 한주가 미뤄지고, 그에 조바심이 났다.

그래서 빠르게 읽고 넘어가려고 했으나 그럴수 없었다.

처음보는 문장 하나 하나가 어렵고 새롭게 다가왔다.

밑바닥부터 만들면서 배우는 LLM 3장 독서 후기-7

왜 여기서 차원 축소한 행렬을 곱하지? 왜 여기서 뜬금없이 마스킹을하지?

이런 의문에 대해 질문을 찾아가는 과정이 상당히 길고 고루했다.

AI는 질문을 하면 거기에 대답해 주었지만, 거기에 대해 내가 새롭게 해석을 내리면 그것에 대해서는 항상 틀렸다고 말하기에 무엇이 옳은 의미인지를 정말 길게 고민했다.

이러한 고민의 과정이 나를 성장시켜 주지 않을까 하는 생각을 해본다.

4장은 무엇을 또 배울 수 있을지 기대가 된다.

관련 글

2026년 동국대학교 미래사회 교원역량 강화 포럼 오프라인 참여 후기
2026년 동국대학교 미래사회 교원역량 강화 포럼 오프라인 참여 후기
어느 선생님이 재미있어 보이는 연수를 하나 소개시켜 주셨다.동국대에서 진행하는 AI 관련 연수였다.AI인 것도 좋인데 연수가 호텔에서?이건 무조건 가야 한다 싶었다.해당일 연수가 열리자 마자 신청해서 오프라인으로 참석하게 되었다.1. 앰배서더 서울 풀만 호텔처음에는 접...
글로벌숙련기술진흥원 특수분야 교육연수 - 목공 연수 후기
글로벌숙련기술진흥원 특수분야 교육연수 - 목공 연수 후기
아는 선생님이 인천에서 하는 숙박형 목공 연수가 있다고 하셨다.그리고 그 중에서도 김장회 명장님 수업을 꼭 들어야 한다며...!그래서 다 같이 신청하게 되었다.1. 신청 방법, 그리고 위치한국산업인력공단 글로벌숙련기술진흥원 직업훈련플랫폼 STEP을 아래에 링크해 둔다....
화이트햇 해커를 꿈꾸는 이들을 위한 해킹 입문서 해킹 맛보기 독서 후기
화이트햇 해커를 꿈꾸는 이들을 위한 해킹 입문서 해킹 맛보기 독서 후기
홈서버를 운영하면서 가장 중요한 것은 보안이었다.아무리 웹 사이트 기능을 마음에 들게 구축해도, 사방에서 들어오는 해킹에 한번 당하고 나니 무용지물이었다.지난번에 해킹으로 3일 동안 털릴때는 정말 무서웠다.그래서 해킹에 대해 공부해보기로 했다.유튜브에서 해킹 맛보기라는...
교사를 위한 교육연구 및 통계분석 연수 - 21~30차시 정리, 그리고 후기 등
교사를 위한 교육연구 및 통계분석 연수 - 21~30차시 정리, 그리고 후기 등
오늘은 교사를 위한 교육연구 및 통계분석 연구의 21~30차시에서 기억나는 내용과 후기를 남겨보려고 한다.1. logit(로짓)과 로지틱스 회귀분석처음에 로지틱스 회귀분석이라길래 뭔가 대단한것인줄 알았는데, 알고보니 로짓을 따라가는 선형 회귀분석이었다.예전에 LLM을 ...
교사를 위한 교육연구 및 통계분석 연수 - 13~20차시 R 실습 모음
교사를 위한 교육연구 및 통계분석 연수 - 13~20차시 R 실습 모음
이전에는 파이썬을 할 줄 아는데 굳이 R을 배워야 하는가에 대한 의문이 있었다.이번 연수를 들으며, 연구할 때 굳이 파이썬을 쓸 필요가 없다는 것을 깨닫게 되었다.파이썬 같으면 numpy로 선형회귀하고, 그래프 그리고, P value 구하고 다 해야 하지만 R은 lm과...
교사를 위한 교육연구 및 통계분석 연수 - 10~12차시 결정계수, 중다회귀분석 등
교사를 위한 교육연구 및 통계분석 연수 - 10~12차시 결정계수, 중다회귀분석 등
매일 1차시마다 후기를 썼는데, 생활기록부도 쓰고 이것도 하고 하다보니 매일 밤잠을 줄여야 했다.이렇게 하다가는 몸이 남아나지 않겠다는 생각에 몰아서 쓰기로 했다.1. 단순회귀모형 - 결정계수단순회귀모형에서 단순히 선형회귀 곡선이나, 계수만으로는 데이터의 형태를 알 수...

댓글을 불러오는 중...