AI 뉴스

AI by Hand — 손으로 익히는 AI 수학·알고리듬·아키텍처

노동1호 2026. 8. 16. 00:03

AI를 이해한다는 것은 단순히 라이브러리 호출을 암기하는 일 이상의 무엇이다. 모델이 왜 그런 결론을 내렸는지, 손으로 미분을 풀어보고 가중치 업데이트 흐름을 따라가 본 적 있는 사람과 그렇지 않은 사람 사이에는 실전에서 드러나는 차이가 분명하다. AI by Hand 시리즈는 이런 취지로 시작된 핸즈온 가이드인데, 복잡한 수식과 도식을 한 단계씩 따라가며 AI의 핵심 구성 요소를 직접 그려보고 만들어보게 한다.

AI by Hand 핸즈온 학습 자료

왜 손으로 익혀야 하는가

현대 AI 프레임워크는 추상화가 매우 높다. model.fit() 한 줄로 학습이 끝나지만, 실제로 일어나는 일은 다음의 연결이다 — 손실 함수가 예측 오차를 어떻게 수치화하는지, 역전파가 체인룰로 그래디언트를 어디까지 흘려보내는지, 옵티마이저가 그 값을 가지고 가중치를 얼마나 옮기는지. 이 흐름을 머릿속에 그릴 수 있어야 프레임워크가 주는 출력이 직관적으로 와닿는다.

또한 AI 연구 논문들은 대부분 이 흐름을 알고 있다고 가정하고 작성된다. 활성화 함수가 왜 ReLU에서 GELU로 옮겨갔는지, 정규화가 배치에서 레이어로 어떻게 진화했는지, 어텐션이 컨볼루션을 어디서 보완하는지를 손으로 짜본 사람만이 그 차이를 빠르게 흡수할 수 있다.

다루는 핵심 토픽

  • 수학 기초 — 선형대수(벡터·행렬·고유값), 미적분(편미분·그래디언트), 확률(베이즈·MLE)의 핵심만 다시 보는 모듈
  • 알고리듬 — 경사하강법 계열(SGD·Momentum·Adam), 역전파 구현, 정규화(Dropout·BN·LN) 변형
  • 아키텍처 — MLP에서 CNN·RNN을 거쳐 Transformer로 이어지는 흐름과 각 구조의 트레이드오프
  • 학습 루프 — 데이터 split, 평가 지표, 디버깅(과대/과소적합), 학습률 스케줄

손으로 구현해 보는 작은 예제

아래는 2-layer 신경망에서 역전파 한 스텝을 손으로 추적하는 예시다. 손실이 예측-라벨의 제곱 오차라 할 때 마지막 층 그래디언트가 어떻게 두 층 앞으로 흘러가는지 보여준다.

import numpy as np

# 순전파
x = np.array([0.5, 1.2])          # 입력
W1 = np.random.randn(2, 4) * 0.1  # 1층 가중치
h = np.maximum(0, x @ W1)         # ReLU 활성화
W2 = np.random.randn(4, 1) * 0.1  # 2층 가중치
y_pred = h @ W2
y_true = np.array([1.0])

# 손실과 그래디언트
loss = (y_pred - y_true) ** 2
dL_dypred = 2 * (y_pred - y_true)
dL_dW2 = np.outer(h, dL_dypred)
dL_dh = dL_dypred @ W2.T
dL_dW1 = np.outer(x, dL_dh * (h > 0))

# 한 스텝 업데이트
lr = 0.01
W2 -= lr * dL_dW2
W1 -= lr * dL_dW1

AI by Hand 코드 구현 예시

실전에서 어떻게 활용하는가

이 시리즈를 따라가다 보면 두 가지 보너스가 따라온다. 첫째, 새로운 모델이 나왔을 때 논문을 빠르게 소화할 수 있다 — 어차피 핵심은 손으로 한 번 짜본 것이므로 새로운 구조의 추가 모듈만 읽으면 된다. 둘째, 디버깅이 빨라진다. 출력이 이상할 때 어디서 막혔는지 흐름을 따라가다 보면 옵티마이저 설정·데이터 전처리·활성화 함수 위치를 빠르게 좁혀낼 수 있다.

시작하기 위한 추천 순서

  1. 선형대수와 미적분 기초 1주 — 벡터·행렬 연산과 편미분을 손으로 풀어보기
  2. NumPy로 MLP 구현 1주 — 역전파 한 스텝까지 손으로 추적
  3. CNN/RNN 차이 1주 — 컨볼루션 필터와 시퀀스 모델의 직관 비교
  4. Transformer 셀프 어텐션 1주 — 쿼리·키·값의 의미와 멀티헤드 분할

요약

AI by Hand는 빠르게 변하는 프레임워크 세계에서 변하지 않는 핵심을 손으로 익히게 해준다. 라이브러리 호출이 능숙해지는 것보다 모델이 왜 그렇게 동작하는지를 몸으로 익히는 것이 장기적인 학습 효과를 만든다. 작은 NumPy 예제부터 시작해 한 단계씩 쌓아가면, 어느새 새 논문이 더 이상 외계어가 아니라 손으로 풀어볼 수 있는 흐름으로 다가온다.


📰 원본 출처 · https://news.hada.io/topic?id=32530 (#N=32530)

이 글은 GeekNews(긱뉴스)에 게제된 글을 기반으로 작성되었습니다. 원본의 라이선스와 저작권은 원작자에게 있습니다.