hillclimbing 5

[Local Search Algorithms] Gradient Descent

1. Gradient Descentgradient descent는 기울기를 이용하여 min을 찾는 알고리즘이다.  현재 state에서의 기울기를 계산하여 현재 위치에서 그 기울기만큼 뺀 것을 다음 state로 update하는 알고리즘이다. 만약 기울기가 음수이면, state가 양수방향으로 update되면서 local min에 다가갈 수 있고, 기울기가 양수면 state가 음수방향으로 update되면서 local min에 다가갈 수 있다.이때 알파는 learning rate다. learning rate가 크면 min으로 가는 step이 크지만, 수렴하는 것이 아닌 발산할 수 있다. learning rate가 작으면 수렴할 가능성이 크지만, 시간이 오래걸리는 단점이 있다.    1) 현재 위치를 random..

[Local Search Algorithms - Hill climbing Algorithms] Stochastic

1. StochasticSteepest Ascent는 너무 Greedy한 알고리즘이다. 즉 너무 현재상태에서만 좋은 값을 구하려고 한다. 그래서 초기값에 따라 너무 의존적으로 local에 빠지기 쉽다.  Stochastic은 neighbors를 구할 때 확률적인 요소를 추가하여 항상 best한 이웃을 구하는 것이 아닌, 조금 안 좋은 이웃을 선택할 수 있다.  그렇게 구한 neighrbor의 value와 current value를 비교하여 더 좋으면 update한다. 어떻게 확률적으로 이동하는지는 아래에서 살펴보자.  1) 현재 위치를 random으로 초기화2) 현재 위치의 value 계산while:    3) 현재 위치를 기준으로 모든 neighbors를 구함.    4) neighbors 중 stoc..

[Local Search Algorithms - Hill climbing Algorithms] First Choice

1. First Choicesteepest ascent와 다르게 neighbor을 하나만 결정하여  min을 찾는 알고리즘이다. 이웃을 구할 때 random하게 이웃을 하나 결정한 후 current value보다 좋으면 update하고 안 좋으면 이동하지 않는 알고리즘이다. 1) 현재 위치를 random으로 초기화2) 현재 위치의 value 계산while:    3) 현재 위치를 기준으로 랜덤하게 neighbor(successor)를 구함.    4) successor의 value를 구함.    5) best value와 current value 비교def firstChoice(p): current = randomInit(p) valueC = evaluate(current, p) i..

[Local Search Algorithms - Hill climbing Algorithms] Steepest Ascent

1. Steepest Ascent현재 위치에서 주변의 모든 neighbors를 보고 그중 가장 좋은(best) value인 state로 이동하면서 min을 찾는 알고리즘이다.  domain이 x1일 때를 예를 들어보자. 현재 state에서 neighbors를 구해보면 x'1과 x''1이다. 이 중 best value는 x'1이므로 current state를 x'1으로 update한다. 이 과정을 더 이상 더 좋은 이웃이 없을 때까지 반복한다.1) 현재 위치를 random으로 초기화2) 현재 위치의 value 계산while:    3) 현재 위치를 기준으로 모든 neighbors를 구함.    4) neighbors 중 best value를 구함.    5) best value와 current value ..

[Local Search Algorithms] - 개요

1. Local Search Algorithms인공지능을 공부하다 보면 항상 min을 찾으라고 한다.  local Serach Algorithms는 말 그대로 local min을 찾는 알고리즘이다. 2. Problem Local Search Algorithms를 풀기 위해 2개의 문제를 준비했다.1) Numeric연속함수의 Minimum을 구하는 것이 목표이다.  - Ackley위의 예시 사진은 변수가 2개이지만 준비된 Ackley는 변수가 5개인 함수이다.각 변수마다 범위가 (-30, 30)이다. 20 + math.e - 20 * math.exp(-(1/5) * math.sqrt((1/5) * (x1 ** 2 + x2 ** 2 + x3 ** 2 + x4 ** 2 + x5 ** 2))) - math.ex..

반응형