본문으로 건너뛰기

M11.04 · CNN·Transformer·표현학습의 역할

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 작은 CNN식 국소 연산과 ReLU를 계산하여 가중치 공유/공간 정보의 역할과 한계를 설명한다.
  • query/key/value의 scaled dot attention을 계산하고 위치/마스크·가중합의 의미를 구분한다.
  • 표현·task head·사전학습/전이의 역할을 구분하고 로봇 과제에 필요한 별도 검증을 제안한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M11.01~03의 학습·텐서·분리와 M02.01의 내적이 선수다. 기본 활동은 합성 벡터의 종이 계산이다. 선택 CPU 코드의 가중치는 손으로 정하며 실제 영상 학습이나 대형 모델 성능을 실증하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

표현을 배우는 것과 답을 내는 것

표현 representation은 입력을 과제에 유용한 수치 특징으로 바꾼 결과다. 영상의 원시 픽셀에서 가장자리/형태/장면 문맥 같은 특징을 만들고 task head가 분류 점수·상자·마스크·연속값 등을 예측할 수 있다. backbone은 공통 특징을 만드는 부분, head는 목표 출력에 맞춰 읽는 부분이라는 구분으로 사용한다. 특징의 각 성분이 자동으로 m 단위 물리 좌표나 설명 가능한 개념 하나를 뜻하는 것은 아니다.

CNN과 Transformer는 표현을 계산하는 서로 다른 구조의 예다. 어느 이름을 골랐다고 데이터의 라벨·보정·시간 정렬 문제가 해결되지는 않는다. 결합된 CNN/attention 구조도 있으므로 두 종류를 서로 배타적인 전체 제품으로 보지 않는다. 먼저 작은 연산의 수치와 어떤 정보를 사용하는지를 확인하면 큰 모델 이름을 외우는 것보다 출력 의미를 추적하기 쉽다.

국소 가중치를 여러 위치에 공유한다

CNN은 이웃 위치의 값을 같은 kernel 가중치로 결합하는 연산을 사용한다. PyTorch의 Conv 계열이 계산하는 것은 보통 kernel을 뒤집지 않는 cross-correlation이다. 수학적 convolution의 뒤집기와 혼동하지 않도록 여기서는 연산을 명시한다. 1차원 합성 입력 x=[1,2,0,1], kernel k=[1,−1], stride=1, padding=0, bias=0이라 하자. stride는 창을 옮기는 간격, padding은 경계에 덧대는 값/범위다.

CNN과 Attention의 특징 혼합: CNN → Attention → 표현의 용도 → 평가 범위.그림 원본 크기로 보기

그림 M11.04-1. 각 칸은 서로 다른 역할/근거다. 나란히 비교할 항목이며 위아래가 시간 순서를 뜻하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

두 값씩 보고 곱해 더하면 첫 위치 1×1+2×(−1)=−1, 둘째 2×1+0×(−1)=2, 셋째 0×1+1×(−1)=−1이다. 출력은[−1,2,−1]이고 ReLU(z)=max(0,z)를 적용하면[0,2,0]이다. ReLU는 음수를 0으로 보내는 비선형 함수다. 이런 비선형이 없이 선형 층만 계속 합치면 표현력의 제한이 남는다. 실제 kernel은 데이터로 학습할 수 있지만 이번 숫자는 연산을 보기 위해 정했다.

같은 두 가중치를 세 위치에 공유하므로 이 예의 학습 가중치는 2개다. 같은 네 입력에서 세 출력을 자유롭게 만드는 dense 선형층은 bias 없이 12개 가중치를 갖는다. 둘이 같은 함수를 표현한다거나 항상 CNN이 더 정확하다는 뜻은 아니다. 공유/국소성이라는 가정을 비교한 것이다. 영상에서는 높이/너비와 여러 채널로 확장하고 층을 쌓아 더 넓은 영역의 정보를 결합한다.

가중치 공유는 위치를 옮긴 패턴을 같은 방식으로 처리하는 직관을 주지만 경계·stride·pooling의 효과가 있으며 임의 회전/크기 변화에 대한 불변성을 자동 보장하지 않는다. 다운샘플링하면 가는 선이나 작은 물체 정보도 잃을 수 있다. 공식 Conv2d 설명의 입력/출력 축과 kernel/stride를 함께 읽는다.

attention은 내용에 따라 값을 섞는다

토큰 token은 영상 patch나 단어/관측의 한 조각을 벡터로 나타낸 단위다. attention에서는 query q가 찾으려는 정보, key k_i가 비교용 벡터, value v_i가 섞을 내용이라고 생각할 수 있다. q와 k_i의 성분 수 d_k는 같아 내적을 계산할 수 있고 value의 성분 수는 다른 d_v일 수 있다. i는 n개 토큰 중 번호다. 아래는 mask 없는 단일 query/한 head의 계산이며 모든 값은 무차원 합성 벡터다.

si=q⋅kidk,αi=exp⁡(si)∑j=1nexp⁡(sj),o=∑i=1nαivi.s_i=\frac{q\cdot k_i}{\sqrt{d_k}},\qquad \alpha_i=\frac{\exp(s_i)}{\sum_{j=1}^{n}\exp(s_j)},\qquad o=\sum_{i=1}^{n}\alpha_i v_i.

s는 점수, exp는 지수함수, α는 합이 1인 softmax 가중치, o는 출력이다. d_k로 나누는 것이 아니라 그 제곱근으로 나눈다. q=[1,0], k₁=[1,0], k₂=[0,1]이면 d_k=2, 점수는[1/√2,0]≈[0.707107,0]이다. exp 값은 약 2.028115와 1이므로 가중치는 약[0.669762,0.330238]이다. v₁=[2,0], v₂=[0,4]라면 출력은 약[1.339523,1.320954]다. 첫 토큰만 그대로 고르는 argmax와 달리 두 value가 함께 기여한다.

q를[0,0]으로 바꾸면 두 점수가 0, 가중치가[0.5,0.5], 출력은[1,2]다. 위치/순서 정보를 별도로 넣지 않으면 내용만 같은 토큰들의 공간/시간 배치를 구분하기 어렵다. 미래 토큰을 보면 안 되는 과제에는 causal mask 같은 접근 제한이 필요하다. attention이 있다는 이유로 과거 정보만 사용한다는 보장은 없다.

self-attention은 같은 입력 표현에서 query/key/value를 만들고, cross-attention은 다른 문맥의 key/value를 참조하는 방식으로 쓸 수 있다. 실제 Transformer는 학습된 projection·여러 head·잔차 연결·정규화·feed-forward 등 추가 구조를 가진다. 위 한 식만이 전체 Transformer인 것은 아니다. Vaswani 등 원논문의 scaled attention과 위치 정보가 이 개념의 근거다. attention 가중치가 크다는 사실을 곧바로 물리적 원인이나 정답 확률로 해석하지 않는다.

사전학습된 특징도 검증을 거친다

사전학습은 다른 자료/목표로 배운 파라미터를 출발점으로 쓰는 것이다. 특징 추출기를 고정하고 head만 학습하거나 일부/전체를 미세조정할 수 있다. 고정했다는 것은 optimizer의 학습 대상과 경사/상태의 정책을 정한다는 뜻이며 eval/no_grad와 같은 말이 아니다. 어떤 모듈이 실제로 바뀌는지, BatchNorm 같은 상태가 어떻게 처리되는지도 확인한다. PyTorch 공식 전이학습 자료는 두 접근을 구분한다.

예를 들어 장면 특징벡터를 얻었다고 그리퍼의 집기 위치가 생기지는 않는다. 물체 클래스 head는 종류를, 상자 head는 영상 영역을, 행동 head는 정한 표현의 명령 후보를 출력한다. 3차원 집기에는 깊이/보정·프레임/시간과 충돌/접근 조건 등이 추가로 필요하다. 같은 backbone이라도 head의 라벨/손실/평가 계약은 다르다.

새 조명/카메라/물체/로봇으로 옮길 때 M11.03의 그룹 분리와 입력 전처리·분포 이동 검사를 적용한다. 사전학습이 데이터 요구를 줄일 수 있어도 현재 로봇에서의 정확도/기한/안전성을 자동 보장하지 않는다. 모델/가중치 개정·전처리·학습 대상·검증 자료를 함께 기록한다. 기존 5.6 SmolVLA 구조를 읽을 때도 시각/언어 표현과 행동 출력의 역할을 나누어 본다.

선택 CPU 연산 확인

다음 완전 코드는 작성 시 Darwin/PyTorch 2.13.0 CPU에서 실제 실행했다. 다운로드나 학습 없이 수동 kernel/벡터의 연산만 확인한다. 기본 실습은 같은 계산을 종이로 수행한다.

import math
import torch

x = torch.tensor([[[1., 2., 0., 1.]]], dtype=torch.float64)
k = torch.tensor([[[1., -1.]]], dtype=torch.float64)
z = torch.nn.functional.conv1d(x, k)
scores = torch.tensor([1., 0.], dtype=torch.float64) / math.sqrt(2)
alpha = torch.softmax(scores, dim=0)
values = torch.tensor([[2., 0.], [0., 4.]], dtype=torch.float64)
print("conv", z.flatten().tolist())
print("relu", z.relu().flatten().tolist())
print("attention", [round(v, 6) for v in alpha.tolist()])
print("mixed", [round(v, 6) for v in (alpha @ values).tolist()])
conv [-1.0, 2.0, -1.0]
relu [0.0, 2.0, 0.0]
attention [0.669762, 0.330238]
mixed [1.339523, 1.320954]

관련 기존 자료 · 보충해서 읽기

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    5.2 행동 정책의 계보

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    5.6 SmolVLA 구조

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 위 kernel/벡터와 두 query 변형이다. 적용 후보는 ‘사전학습 표현만 얻은 뒤 영상 분류’와 ‘같은 표현만으로 3차원 집기 위치라고 주장’하는 두 설계다.

  1. 세 국소 출력/ReLU와 가중치 수를 구하고 공유 가중치가 모든 회전 불변성을 보장하는지 설명한다.
  2. 원래 query와 0 query의 attention 출력 차이를 계산한다. 위치/미래 접근 정책이 별도 필요한 이유도 적는다.
  3. 표현과 head를 구분해 두 설계를 평가하고, 전이 검증/집기에 추가로 필요한 자료를 제안한다.

관찰은 국소 계산·내용 가중합·과제 계약으로 나눈다. 막히면 softmax 분모를 두 exp의 합으로 먼저 적는다. 실제 모델을 학습하거나 설치할 필요는 없다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

입력[2,1,1], kernel[1,−1], stride=1/padding=0/bias=0의 두 출력과 ReLU를 구하라. 같은 kernel을 쓴다는 것이 모든 크기/회전 변화에도 같은 분류를 보장하는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

본문의 두 key/value에 query=[0,0]을 넣으면 점수·가중치·출력은 무엇인가? attention이 자동으로 시간 순서나 미래 접근 제한을 아는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

사전학습 backbone의 벡터가 나왔으므로 새 로봇의 3차원 집기를 바로 수행할 수 있다고 한다. head/단위/보정/전이 평가에서 무엇이 빠졌는가? 고정과 미세조정의 차이도 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.