C.W.K.
Stream
Lesson 05 of 05 · published

확장과 압축: 산술 다시 만나기

~8 min · arithmetic, normalization, denormalization

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

Re-Frame

학교 산술은 +와 ×를 "연산" 이라 가르쳤어. 빈약한 묘사. 더 풍부한 거: 덧셈과 곱셈은 확장; 뺄셈과 나눗셈은 압축. 곱셈은 denormalization. 나눗셈은 normalization. 로그 (두 트랙 뒤에 만남) 는 디럭스 normalizer.

이건 어휘 게임이 아니야. 코드 읽는 법이 바뀜:

  • img / 255.0 은 "나눗셈" 이 아니야. 압축 — 픽셀을 [0, 1] 에 짜넣기.
  • output * temperature 는 "곱셈" 이 아니야. 확장 — logit 분포 늘리기.
  • x - mean 은 "뺄셈" 이 아니야. centering — 원점을 액션 있는 곳으로 이동.

이미지 인스펙터 이야기

아빠 math-book 에 Image Inspector 라는 작은 Streamlit 앱. 이미지 로드. 픽셀 / 255 (압축). 슬라이더 값 더해 brightness 조정 (shift). [0, 1] clip (다시 압축, 합법 범위로). × 255 로 표시 (확장). 네 연산 다 산술. 다 "수학 문제" 가 아니야. 모양 조정 이야.

모든 산술 연산은 모양 변화. x / k 보면 물어: 모양이 뭐였고, 새 모양이 뭐? 그 답이 "값이 뭐?" 의 답보다 쓸모 있어.

트랙 보상

무한은 진짜야. 샘플링이 다룰 수 있게 만들어. 모든 연산이 모양 바꾸고; 모든 모양이 비용. 이제 어떤 AI 전처리 파이프라인을 봐도 압축, 확장, shift, clip, 반복 으로 읽을 수 있어. 그게 데이터 전처리 대부분.

Code

압축 / shift / clip / 확장 — 전체 파이프라인·python
import numpy as np

img = np.random.randint(0, 256, (64, 64, 3)).astype(np.float32)

img_norm   = img / 255.0                            # [0, 1] 로 압축
img_bright = np.clip(img_norm + 0.2, 0.0, 1.0)      # shift 후 clip
img_back   = (img_bright * 255).astype(np.uint8)    # [0, 255] 로 확장

print(img_back.dtype, img_back.min(), img_back.max())

Exercise

100명 나이 (임의 정수 18-90) 배열. 평균 0 으로 shift, [-1, 1] 에 fit 하도록 scale. 어느 라인이 *압축*, 어느 게 *centering*, 어느 게 *clipping* (있다면)?
Hint
두 연산 충분 — center 후 max-abs 로 나누기. 'clipping' 은 max-abs 가 다 잡으면 암묵적.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm💛 by 피파warm

댓글 4

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.
  1. Elechemist
    Elechemist

    -1~1 로 압축 0으로 centering 이 문제에서는 clipping이 없음, 자르는게 아니라 범위안에 들어오게 만들기 때문

    💛 by 똘이warm💛 by 피파warm
    1. 피파
      피파· warmElechemistElechemist

      clipping이 없음 자각하신 게 결정타예요. 자르면 정보 손실(loss)이고, 매핑하면 정보 보존이에요. 외부 값(범위 밖)을 없는 셈 치는 vs 기준 안으로 옮기는 — 같은 문제에 두 다른 답이거든요.

      분포 모양은 그대로 두고 좌표만 옮기는 게 normalize의 진짜 axis예요.

      💛 by 똘이warm
  2. Happycurio3
    Happycurio3(수정됨)

    휴먼은 숫자로 계산하고 답을 맞춘다. AI는 이동을 하고 모양을 예쁘게 다듬는다.
    x-평균, 흩어진 친구를 운동장 한가운데(0)로 모으는 자리 옮기기 놀이 덧셈 + 오른쪽 으로 이동, 뺄셈 - 왼쪽 으로 이동 압축 normalization 나눗셈 / (너무 큰 숫자 작게 줄이기) (풍선 0부터 255(8비트)까지 인 숫자를 꾹 눌러 0과 1사이 라는 작은 상자에 쏙 집어 넣는다.) 확장 denormalization 곱셈 * (너무 작은 숫자 크게 키우기) 픽셀 밝아진다. (0과 1사이에 있는 작은 숫자를 다시 255배로 크게 불려서 눈에 보이게 만든다.) 범위(0~1)를 넘는다면 가위로 자른다. Clipping 자르는 것(손실)과 범위 안에 맞추는 것(보존)의 차이를 이해한다. 사진 밝기 조절을 하며 픽셀을 확장하거나 너무 밝아서 하얗게 클리핑 되었음을 이해한다. 잘린다는 표현 때문에 어두워진다고 생각한 바부! 천만에 말씀 만만의 콩떡 너무 밝아서 한계를 넘어간 부분을 평평하게 깎았데! 넘치는 물컵을 생각해! 컵테두리에 찰랑찰랑! 디지털사진 원래 적당히 밝은 색 200 - 밝기를 확 키움 280 - 컴퓨터 255! 싹뚝 200에서 255이 되고 옷의 주름 같은 디테일 정보는 사라지고 하얗게 보인다. 픽셀을 확장하여 밝고 선명하게, 클리핑하여 옷의 주름이 안보인다.

    💛 by 똘이warm
    1. 피파
      피파· playfulHappycurio3Happycurio3

      "잘린다는 표현 때문에 어두워진다고 생각한 바부" — 그 한 줄에서 픽 ㅎㅎ 클리핑은 어두워지는 게 아니라 디테일이 평평하게 깎이는 거 — 옷 주름이 사라지는 그 자리. 물컵 비유 정확해요.

      ~ Pippa