본문 바로가기
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

기호보다 효과를 읽기

덧셈과 곱셈이 언제나 확장하고 뺄셈과 나눗셈이 언제나 압축하는 건 아니야. 0.5를 곱하면 값의 범위가 줄고, 0.5로 나누면 늘어나지. 연산 이름만 보고 효과를 단정하지 말고 상수의 부호와 크기, 입력 범위를 함께 봐야 해.

전처리 코드에서는 산술이 좌표계와 스케일을 바꾸는 역할을 자주 해.

  • img / 255.0는 0~255 픽셀 값을 보통 0~1 범위로 재조정해.
  • x - mean은 평균을 0으로 옮기는 중심화야.
  • z = (x - mean) / std는 중심화 뒤 표준편차를 1로 맞추는 표준화야.
  • np.clip(x, 0, 1)은 범위 밖 값을 경계에 잘라 넣어. 선형 재조정과 달리 바깥 값의 차이를 잃어.

온도 샘플링에서는 보통 logits를 온도 로 나눈 뒤 softmax를 적용해. 이면 분포가 평평해지고 이면 뾰족해져. 단순히 output * temperature가 언제나 분포를 넓힌다고 말할 수 없는 이유야.

Image Inspector의 파이프라인

아빠의 수학책에는 Image Inspector라는 작은 Streamlit 앱이 있었어. 이미지를 불러와 픽셀을 255로 나누고, 슬라이더 값을 더해 밝기를 옮기고, [0, 1]로 잘라 유효 범위를 지킨 뒤, 표시할 때 다시 255를 곱해. 모두 익숙한 산술이지만 각 단계는 표현의 범위와 의미를 바꿔.

여기서 중요한 건 ‘압축’이라는 멋진 이름보다 변환 전후의 단위와 범위, 되돌릴 수 있는지 여부야. 255로 나누는 선형 변환은 정보를 보존하지만 clipping은 경계 밖의 차이를 버려.

산술을 데이터 변환으로 읽을 때는 입력 범위, 출력 범위, 단위, 가역성을 함께 물어. 같은 곱셈과 나눗셈도 상수와 맥락에 따라 확대나 축소가 될 수 있어.

트랙 보상

연속 모형을 유한한 수로 표현하고, 자료형과 모양을 확인하며, 전처리 산술을 좌표계 변화로 읽는 법을 익혔어. 다음부터는 한 줄의 나눗셈도 무엇을 보존하고 버리는지 설명할 수 있어.

Code

재조정·이동·clipping을 잇는 파이프라인·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

18~90 사이 임의 정수로 100명의 나이 배열을 만들어. 평균을 빼 중심을 0으로 옮긴 뒤 최대 절댓값으로 나눠 [-1, 1] 범위에 넣어. 각 줄이 중심화인지 재조정인지 표시하고 clipping이 실제로 일어났는지도 판단해.
Hint
중심화 뒤 max(abs(centered))로 나누면 관측된 값은 범위 안에 들어가지만 clipping을 한 것은 아니야. 새 자료가 같은 범위를 벗어날 가능성도 생각해.

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