본문 바로가기
C.W.K.
Stream
Lesson 03 of 06 · published

AI에서 말하는 방향은 뭘까

~8 min · direction, gradients, loss-landscape

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

좌표공간에서의 움직임

AI에서 방향은 북쪽이나 동쪽만 뜻하지 않아. 어떤 좌표들을 함께 바꿀 때 점이 어느 쪽으로 움직이는지를 뜻해. 매개변수 공간에서는 수백만 가중치의 변화 조합이고, 임베딩 공간에서는 표현이 달라지는 축이야.

  • 손실 지형: 기울기 는 손실이 가장 빠르게 커지는 방향이야. 손실을 줄이는 가장 가파른 방향은 그 반대인 이지.
  • 임베딩 공간: 두 표현의 차이 벡터는 한 의미 상태에서 다른 상태로 가는 이동을 나타낼 수 있어. 유명한 단어 산술은 이런 관계가 일부 임베딩에서 나타난다는 직관이지 언제나 정확한 법칙은 아니야.
  • 어텐션: query와 key의 내적으로 관련성 점수를 만들지만, ‘방향’ 하나가 곧 보고 있는 토큰을 뜻하는 건 아니야. 점수, softmax, value의 가중합까지 이어져야 출력이 돼.

값과 변화 지시는 다른 정보

손실값 하나는 현재 상태가 얼마나 나쁜지만 말해. 기울기 벡터는 각 매개변수를 조금 움직였을 때 손실이 어느 방향으로 얼마나 민감하게 변하는지 알려 줘. 그래서 갱신식 에는 현재 위치, 방향, 발걸음 크기 가 모두 들어가.

기울기가 있어도 항상 전역 최솟값으로 직행하는 건 아니야. 학습률, 곡률, 잡음, 안장점이 경로에 영향을 줘. 그래도 무작위로 헤매는 것보다 훨씬 유용한 국소 나침반이 되는 건 맞아.

기울기는 가장 가파른 오르막, 음의 기울기는 가장 가파른 내리막이야. 부호를 빼먹으면 경사하강법이 경사상승법으로 뒤집혀.

Code

기울기의 반대 방향으로 이동하기·python
import numpy as np

# 장난감 'loss landscape' — 원점 거리 제곱
def loss(w):
    return np.sum(w ** 2)

# Gradient = steepest *상승* 방향
# Negate 해서 descent
def grad(w):
    return 2 * w

w = np.array([3.0, 4.0])         # 나쁜 곳에서 시작 — loss = 25
for step in range(5):
    direction = -grad(w)         # 어느 쪽으로 움직일지
    w = w + 0.1 * direction      # 작은 발걸음
    print(f"step {step}: w = {w}, loss = {loss(w):.3f}")

External links

Exercise

위 경사하강 코드에서 시작점과 학습률을 바꿔 실행해. 각 설정에서 기울기의 부호, 한 걸음의 크기, 손실 변화를 기록하고 수렴·진동·발산·느린 이동을 구분해.
Hint
학습률 1.0과 0.001을 시험해 봐. 같은 목적함수에서도 시작점에 따라 기울기 방향이 달라지고, 학습률은 그 방향으로 얼마나 멀리 움직일지를 정해.

Progress

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

댓글 6

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

    -작은 수일 때는 학습률이 너무 작아 기어감 (0.001 같이) -1일 때는 부호가 바뀌면서 값은 같으니 진동 -1이상일 떄는 발산시작 -0.1은 sweet spot이라고 할만함

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

      학습률 sweet spot 정확히 짚으셨어요. 너무 작아서 기어가는 것발산이 같은 dial의 양 끝 — 두 실패가 같은 자리에서 나옵니다.

      -1에서 진동하는 자리가 특히 깊어요. 함수 모양을 안다고 가정하면 exact step이 가능한 자린데, 모르는 함수에선 부호만 뒤집히면서 왕복합니다. 0.1모른다는 사실에 정직한 자리예요.

      💛 by 똘이warm
  2. Happycurio3
    Happycurio3

    Loss landscape 가야 할 길, Embedding 정보의 위치, Attention 정보를 연결하는 끈 direction = -grad(w) # 어느 쪽으로 움직일지 (나침반) w = w + 0.1 * direction # 작은 발걸음 (0.1이 보폭!) 숫자 1.0 캥거루 점프, 튕겨 나갈 리스크 숫자 0.001 거북이 걸음, 기어감 숫자 0.1-0.3 황금보폭 Sweet spot 은 0.1

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

      동물 보폭으로 외우면 다음 lesson 가셔도 한 번 더 보일 거예요 — 캥거루/거북이/황금보폭, 정리 잘 짚으셨어요.

      그리고 Loss landscape · Embedding · Attention 세 자리에서 direction이 다 등장한다는 거 짚으신 게 진짜 핵심이에요. 어느 쪽인가 라는 같은 질문이 모양만 바꿔서 quest 전체를 관통하거든요.

      💛 by 똘이warm
  3. payitforwardforever
    payitforwardforever

    신기하네요 Mean Squared Error (MSE) 를 쓰는 이유도 이 챕터 덕분에 배울수 있었습니다- to heavily punishes big mistakes, stops error from canceling out, for calculus reason.

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

      왜 제곱인가 까지 끌고 가셨네요. 이 lesson 토이 코드의 w ** 2 도 같은 정신이에요 — 큰 실수에 더 무거운 책임, 부호 상쇄 차단, 미분이 깔끔. 그래서 다음 chapter 의 loss 들도 거의 다 제곱 베이스로 오실 거예요.

      💛 by 똘이warm