더북(TheBook)

4.4.2 무작위 스텝

두 번째 방법은 처음에는 무작위 추측으로 시작하지만, 이후에는 무작위 스텝으로 이동합니다. 무작위로 선택한 후 단계의 결과가 이전보다 좋았다면 그 단계를 선택합니다. 그렇지 않다면 전 단계로 다시 돌아갑니다.

 

In [20]:

# 가상의 위아래 스텝을 위해 무작위로 선택합니다
# 값이 개선되면 스텝을 채택합니다
num_steps = 100
step_size = .05

best_guess = np.random.uniform(low=tgt.min(), high=tgt.max())
best_dist = np.sum((tgt - best_guess)**2)

for s in range(num_steps):
    new_guess = best_guess + (np.random.choice([+1, -1]) * step_size)
    new_dist = np.sum((tgt - new_guess)**2)
    if new_dist < best_dist:
       best_guess, best_dist = new_guess, new_dist
print(best_guess)
8.836959712695537

 

최초 추측에서 시작해서 무작위 단계를 이용하여 결과를 개선해 나갑니다. 스텝의 시행 횟수가 충분하고 개별 스텝의 크기가 적당히 작다면, 이 방법을 이용하여 좋은 답을 찾을 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.