Python으로 배우는 AI 개념

Python으로 배우는 경사 하강법과 역전파

학습이란 손실을 줄이도록 가중치를 조정하는 것입니다. 기울기(gradient)는 손실이 커지는 방향을 알려 주므로, 경사 하강법은 반대 방향으로 작은 걸음을 옮깁니다. 역전파는 연쇄 법칙을 사용해 모든 가중치의 기울기를 계산합니다.

쉬운 말로 이해하는 개념

학습이란 손실을 줄이도록 가중치를 조정하는 것입니다. 기울기(gradient)는 손실이 커지는 방향을 알려 주므로, 경사 하강법은 반대 방향으로 작은 걸음을 옮깁니다. 역전파는 연쇄 법칙을 사용해 모든 가중치의 기울기를 계산합니다.

경사 하강법으로 뉴런을 학습시킵니다. 연쇄 법칙으로 각 가중치가 손실에 주는 영향을 구한 뒤 내리막으로 한 걸음 나아갑니다.

핵심 아이디어

  • 기울기는 각 가중치에 대한 손실의 경사입니다.
  • 학습률은 보폭을 정합니다. 너무 크면 지나치고, 너무 작으면 느립니다.
  • 역전파는 출력에서 첫 번째 층으로 거슬러 올라가며 연쇄 법칙을 적용합니다.
  • 1 에포크는 전체 학습 데이터를 한 번 훑는 것입니다.

언제 사용하나요?

  • 신경망과 AI 라이브러리 내부에서 무슨 일이 일어나는지 이해합니다.
  • 해당 챌린지에서 직접 구현하기 전에 아이디어를 익힙니다.
  • 머신러닝 강의, 면접, 프로젝트를 준비합니다.

직접 움직여 보기

재생을 누르면 학습이 시작됩니다. 직선이 점들에 가까워지는 동안 주황색 경로가 손실 지형을 따라 가장 낮은 점으로 내려갑니다.

예제 코드

코드 실행 →
main.py
# Train one neuron y = w * x + b to fit points on the line y = 2x + 1.
data = [(0, 1), (1, 3), (2, 5), (3, 7)]
w, b = 0.0, 0.0
learning_rate = 0.05

for epoch in range(1, 201):
    grad_w = grad_b = 0.0
    for x, y in data:
        error = (w * x + b) - y          # prediction minus target
        # Chain rule: d(error²)/dw = 2 * error * x, d(error²)/db = 2 * error
        grad_w += 2 * error * x
        grad_b += 2 * error
    # Step against the gradient to make the loss smaller.
    w -= learning_rate * grad_w / len(data)
    b -= learning_rate * grad_b / len(data)
    if epoch in (1, 10, 50, 200):
        loss = sum(((w * x + b) - y) ** 2 for x, y in data) / len(data)
        print(f"epoch {epoch:>3}: w={w:.3f} b={b:.3f} loss={loss:.4f}")

예상 출력

epoch   1: w=0.850 b=0.400 loss=7.0587
epoch  10: w=2.009 b=0.958 loss=0.0009
epoch  50: w=2.005 b=0.989 loss=0.0000
epoch 200: w=2.000 b=1.000 loss=0.0000

작동 원리

각 점의 오차는 예측값에서 목표값을 뺀 값입니다. 연쇄 법칙에 따라 제곱 오차의 기울기는 w에 대해 2·error·x, b에 대해 2·error입니다. 데이터 전체의 평균을 내고 기울기 반대 방향으로 이동하면 w와 b는 2와 1에 가까워지고 손실은 거의 0으로 떨어집니다.

값을 변경하고 Python 설치 없이 CodeUtility 온라인 Python 컴파일러에서 실행하세요.

연습 문제

입력값과 경계 조건을 바꾸고 더 큰 데이터에서도 동작을 확인하세요.

  1. 입력이나 가중치를 바꾸고 실행하기 전에 출력을 예상해 보세요.
  2. 중간 값을 출력해 계산의 각 단계를 따라가 보세요.
  3. 아래에 연결된 챌린지를 풀며 아이디어를 직접 구현해 보세요.
Python IDE에서 실행 →

챌린지로 연습하기

이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.

모든 챌린지