Python으로 배우는 AI 개념

Python으로 배우는 순전파와 손실 함수

신경망은 뉴런의 층으로 이루어져 있습니다. 순전파에서는 입력이 각 층을 지나 예측을 만들고, 손실 함수는 그 예측이 정답에서 얼마나 떨어져 있는지 점수를 매깁니다.

쉬운 말로 이해하는 개념

신경망은 뉴런의 층으로 이루어져 있습니다. 순전파에서는 입력이 각 층을 지나 예측을 만들고, 손실 함수는 그 예측이 정답에서 얼마나 떨어져 있는지 점수를 매깁니다.

작은 신경망에 입력을 층별로 통과시킨 뒤 제곱 오차와 교차 엔트로피로 오차를 측정합니다.

핵심 아이디어

  • 완전 연결(dense) 층은 모든 입력을 층의 모든 뉴런에 연결합니다.
  • 한 층의 출력은 다음 층의 입력이 됩니다.
  • 손실은 하나의 숫자이며, 낮을수록 예측이 좋다는 뜻입니다.
  • 숫자에는 제곱 오차를, 확률과 클래스에는 교차 엔트로피를 사용합니다.

언제 사용하나요?

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

직접 움직여 보기

입력과 목표값을 바꿔 보세요. 값이 은닉층을 지나는 과정과 두 손실이 예측에 어떻게 반응하는지 확인할 수 있습니다.

예제 코드

코드 실행 →
main.py
import math

def dense(inputs, weights, biases, activation):
    # Each row of weights belongs to one neuron in the layer.
    return [activation(sum(x * w for x, w in zip(inputs, row)) + b) for row, b in zip(weights, biases)]

relu = lambda z: max(0.0, z)
sigmoid = lambda z: 1 / (1 + math.exp(-z))

x = [1.0, 2.0]
hidden = dense(x, [[0.5, -0.2], [0.3, 0.8]], [0.0, -0.5], relu)
output = dense(hidden, [[1.0, -1.0]], [0.2], sigmoid)
print("hidden layer:", [round(h, 3) for h in hidden])
print("prediction:", round(output[0], 3))

# A loss function measures how wrong the prediction is.
target = 1.0
mse = (output[0] - target) ** 2
bce = -(target * math.log(output[0]) + (1 - target) * math.log(1 - output[0]))
print("squared error:", round(mse, 3))
print("cross-entropy:", round(bce, 3))

예상 출력

hidden layer: [0.1, 1.4]
prediction: 0.25
squared error: 0.563
cross-entropy: 1.387

작동 원리

dense()는 한 층을 계산하며, 가중치의 각 행이 하나의 뉴런입니다. 은닉층은 ReLU를, 출력층은 확률을 내기 위해 sigmoid를 씁니다. 제곱 오차와 교차 엔트로피는 모두 예측값 0.25와 목표값 1.0의 차이를 측정하며, 학습은 이를 줄이려고 합니다.

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

연습 문제

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

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

챌린지로 연습하기

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

모든 챌린지