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