← 문제 목록/경사하강법 (1D)

경사하강법 (1D)

최적화 · medium

preview

경사하강법 (Gradient Descent, 1D)

함수 f(x)f(x) 의 최솟값을 구하는 가장 일반적인 방법. 기울기 반대 방향으로 조금씩 이동:

xt+1=xtηf(xt)x_{t+1} = x_t - \eta \cdot f'(x_t)

여기서 η\eta (learning rate)는 한 걸음 크기. 너무 크면 튀고, 너무 작으면 더디게 수렴합니다.

이 문제는 간단한 파라볼라 f(x)=(x3)2f(x) = (x - 3)^2 의 최솟값을 찾습니다. 미분: f(x)=2(x3)f'(x) = 2(x - 3).

과제

함수 descend(lr, n_steps) -> (history, x_final) 을 완성하세요.

  • 시작점 x = 0.0.
  • n_steps 회 반복하며 각 반복의 x 값을 history 리스트에 기록 (시작값 포함).
  • 반환: (history_list, x_final_float).
  • for 루프 OK (이 문제는 반복이 본질).

테스트 케이스

#이름lrn_steps기대 결과
1합리적 lr0.230x_final ≈ 3.0
2작은 lr0.05100x_final ≈ 3.0
3기록 길이0.110len(history) == 11 (시작값 + 10회)
4큰 lr는 발산 가능1.120abs(x_final) > 10
Loading...

코드를 작성하고 Run 을 눌러보세요.