인공지능 강의를 수강하며 정리한 것입니다.
고전적인 탐색 방법 이상의 개념을 다룹니다.
고전적인 탐색 방법 : 문제 공간을 전부 탐색하여 해결책을 찾는데 초점을 두었습니다. 이런 전통적인 방식은 환경이 관측 가능 observable하고 결정론적 deterministic이며, 해결책이 일련의 행동들의 순서 sequence of actions 로 표현될 수 있는 문제들에 적합합니다.
하지만, 이런 가정들이 완화될 때 무엇이 발생하는지에 대해 고민해봅시다. 환경이 관측 불가능하거나, 불확실하거나, 해결책이 순차적인 행동의 시퀀스로 표현되지 않을 수도 있습니다. 이러한 경우에는 고전적인 탐색 방법이 적절하지 않을 수 있습니다.
이런 경우에 사용되는 것이 'Local Search'라는 개념입니다. Local Search는 현재의 해결책에서 출발하여 주변 이웃 해결책을 탐색하고, 이웃 해결책 중에서 더 나은 해결책을 계속해서 찾아나가는 방법입니다. 이것은 전체 문제 공간을 완전히 탐색하지 않고, 주변 이웃들을 통해 최적의 해결책을 찾는 데 초점을 둡니다.
이러한 지역 탐색 알고리즘은 대규모 문제 공간에 대해 사용하기 용이하며, 특히 문제가 너무 커서 전체 탐색이 불가능할 때 유용합니다. 그러나 지역 탐색 알고리즘은 지역 최적해(local optimum)에 빠질 위험이 있으며, 이를 극복하기 위해 다양한 기법들이 존재합니다.
예를 들어, 'Simulated Annealing'이라는 알고리즘은 지역 최적해에 빠지지 않도록 무작위성을 활용하여 전역 최적해(global optimum)를 찾을 가능성을 높입니다. 또한, 'Genetic Algorithms'는 생물학적 진화의 개념을 모방하여 문제 공간을 탐색하고 최적의 해결책을 찾을 수 있는 효과적인 방법 중 하나입니다.
이러한 방법들은 고전적인 탐색 방법의 한계를 극복하고, 실제 문제에 더 효과적으로 대응할 수 있도록 도와줍니다.
로컬 탐색은 많은 최적화 문제에서 경로는 중요하지 않은 경우가 많습니다. 이 경우 목표는 Goal 해결책이며, 상태 공간은 "complete configurations 완전한 구성"의 집합으로 설정됩니다. 최적의 구성은 이 중 하나입니다.
로컬 탐색의 아이디어는 single current 단일 "현재" 상태를 유지하고 object funtion 목적 함수에 따라 이를 개선하는 것입니다. 예를 들어, 비용 함수를 줄이는 것이 있습니다. 또는 성능을 향상시키는 것도 있습니다.
로컬 탐색 알고리즘은 목표까지의 When the path to the goal does not matter 경로가 중요하지 않을 때 사용됩니다. Move only to neighbors from a current node 현재 노드에서 이웃 노드로만 이동합니다. 다양한 후보 해결책 중에서 기준을 최대화하는 해결책을 찾습니다(비용을 최소화하는 것 등).
Move from solution to solution
로컬 탐색 알고리즘은 후보 해결책의 공간에서 해결책 간에 반복적으로 이동하여 최적으로 판단되는 해결책을 찾거나 시간 제한이 초과될 때까지 이동합니다.
여행하는 외판원 문제(TSP)는 모든 그래프 노드를 포함하는 순환이 해결책입니다. 순환의 총 길이를 최소화하는 것이 목표입니다.
로컬 탐색 알고리즘은 후보 해결책에서 시작하여 반복적으로 이웃 해결책으로 이동합니다.
로컬 탐색의 장점은
1. 매우 적은 메모리를 사용한다는 것입니다(상수).
2. 종종 크거나 무한한 상태 공간에서 합리적인 해결책을 찾습니다.
3. 순수한 최적화 문제를 해결하는 데 유용합니다. 최상의 상태는 최소 목적 함수입니다.
로컬 탐색에서 상태 공간 또는 "state-space"은 문제의 가능한 해결책을 나타내는 공간입니다. 이 공간은 일종의 지형이며, 이를 "state-space landscape" 또는 상태 공간 지형이라고 합니다.
이 지형은 각각의 상태가 고유한 위치를 차지하며, 각 상태의 높이는 해당 상태의 "값"을 나타냅니다. 여기서 값은 주어진 문제에 따라 다를 수 있습니다. 예를 들어, 최소화하려는 비용 함수의 값을 나타낼 수 있습니다.
로컬 탐색 알고리즘은 이러한 상태 공간 지형을 탐색하며 현재 위치에서 시작하여 주변 이웃 상태로 이동합니다. 이웃 상태로 이동함에 따라 현재 위치의 높이(해당 상태의 값)를 개선하려고 시도합니다. 이 과정을 반복하여 최적의 상태(또는 근사치)를 찾습니다.
상태 공간 지형은 종종 매우 복잡하며, 로컬 탐색 알고리즘이 지역 최적해에 머무르는 위험을 내포할 수 있습니다. 따라서 이러한 알고리즘을 사용할 때에는 지형을 잘 이해하고, 지역 최적해에 갇히지 않도록 주의해야 합니다.
state-space landscape(상태 공간 지형)에서 사용되는 일반적인 용어들은 다음과 같습니다:
Shoulder (어깨)
Global Maximum (전역 최댓값)
Current State (현재 상태)
Local Maximum (지역 최댓값)
Flat Local Maximum (평탄한 지역 최댓값)
이러한 용어들은 로컬 탐색 알고리즘을 이해하고 상태 공간을 분석할 때 유용하게 사용됩니다.
로컬 탐색은 반복적 개선 알고리즘(iterative improvement algorithm)으로도 알려져 있습니다. 이 알고리즘은 주어진 문제의 상태 공간을 "complete configurations 완전한 구성"의 집합으로 간주합니다.
탐색 알고리즘의 목표는 최적의 구성을 찾는 것이거나, 제약 조건을 만족하는 구성을 찾는 것입니다. 이러한 목표를 달성하기 위해 로컬 탐색 알고리즘은 단일 "current 현재" 상태를 유지하고 이를 improve 개선하려고 시도합니다.
알고리즘이 현재 상태를 개선하는 과정은 주로 이웃 상태로의 이동을 통해 이루어집니다. 현재 상태에서 시작하여 이웃 상태로 이동하고, 이웃 상태가 더 나은 해결책이 될 때까지 이 과정을 반복합니다.
이러한 반복적 개선 과정은 로컬 탐색 알고리즘이 최적 또는 만족스러운 해결책을 찾을 때까지 진행됩니다. 이러한 알고리즘은 주어진 문제에 따라 최적화된 해결책을 찾거나, 제약 조건을 충족하는 해결책을 찾는 데 유용합니다.
Hill-climbing 또는 Gradient Ascent은 지속적으로 값이 증가하는 방향으로 이동하는 알고리즘입니다. 이 알고리즘은 주변 상태 중에서 현재 상태보다 값이 더 높은 상태로 이동하려고 노력합니다.
그러나 Hill-climbing은 종종 "Greedy local search 탐욕스러운 지역 탐색"이라고도 불립니다. 이는 어떤 상태에서 다음으로 어디로 이동해야 하는지 고려하지 않고 단순히 좋은 이웃 상태를 선택하는 것을 의미합니다. 이는 가끔 지역 최적해에 빠지게 될 수 있는 위험을 내포합니다.
이러한 특성으로 인해 Hill-climbing은 종종 "암네시아와 함께 안개 속에서 에베레스트 산을 등반하는 것"으로 비유됩니다. 이 비유는 알고리즘이 현재 위치에서 가장 좋은 이웃 상태만을 고려하고, 전체 상태 공간을 고려하지 않는다는 점을 강조합니다. 따라서 알고리즘이 지역 최적해에 갇히는 위험이 있으며, 전체 최적해를 찾지 못할 수 있습니다.
로컬 탐색 알고리즘인 Hill-climbing은 몇 가지 문제를 겪을 수 있습니다.
초기 상태에 따라 결과가 달라짐 : Depending on inital state
지역 최댓값에 갇힘 : stuck on local maxima
단계 크기 선택 문제 : problem with choosing step size
수렴 속도가 느림 : slow convergence
이러한 문제들은 Hill-climbing이 특정 종류의 문제에 적합하지 않을 수 있다는 것을 보여줍니다. 이러한 한계를 극복하기 위해 다른 로컬 탐색 알고리즘이나 휴리스틱 기법을 고려할 수 있습니다.
n-Queens 문제는 n x n 크기의 체스판에 n개의 퀸을 배치하는 문제로, 배치된 퀸들이 서로 공격할 수 없도록 하는 것이 목표입니다. 여기서 퀸은 같은 행, 열 또는 대각선 상에 있을 때 서로 공격할 수 있습니다.
이 문제를 해결하기 위해 로컬 탐색 알고리즘을 사용할 수 있습니다. 상태는 n x n 크기의 체스판에 배치된 퀸들의 위치입니다. 각 상태의 가치는 공격하는 퀸 쌍의 수로 평가됩니다.
로컬 탐색 알고리즘을 사용하여 n-Queens 문제를 해결할 수 있습니다. 예를 들어, Hill-climbing 알고리즘을 사용하여 현재 상태에서 이웃 상태로 이동하며 가장 가치가 높은 상태를 찾을 수 있습니다. 또한, Simulated Annealing이나 Genetic Algorithms와 같은 다른 메타휴리스틱 알고리즘도 적용할 수 있습니다.
이러한 로컬 탐색 기법을 사용하면 n-Queens 문제를 효과적으로 해결할 수 있으며, 가능한 해결책을 탐색하는 과정에서 최적의 배치를 찾을 수 있습니다.
n-Queens 문제를 해결하기 위해 Hill-climbing 알고리즘을 사용하는 과정은 다음과 같습니다.
무작위 초기 상태 선택:
이웃 상태 탐색:
최적 이웃 상태 선택:
최적 이웃 상태로 이동:
반복:
랜덤 점프:
이러한 과정을 통해 Hill-climbing 알고리즘은 n-Queens 문제에서 최적의 퀸 배치를 찾을 수 있습니다. 무작위 초기 상태 선택과 랜덤 점프는 지역 최적해나 플래토에서 벗어나는 데 도움이 될 수 있습니다.
다만, Hill-climbing 알고리즘이 지역 최적해에 빠질 위험이 있으며, 이를 극복하기 위해 여러 번의 실행 또는 다른 탐색 전략과 함께 사용될 수 있습니다. 또한, n-Queens 문제와 같이 해결이 어려운 문제의 경우에는 Hill-climbing 알고리즘이 전체 최적해를 찾지 못할 수 있습니다. 따라서 이러한 문제에 대해 휴리스틱 기법이나 메타휴리스틱 알고리즘을 사용하는 것이 더 효과적일 수 있습니다.
Hill-climbing 알고리즘은 다양한 문제에 직면할 수 있지만, 다양한 변형 기법을 통해 이러한 문제들을 해결할 수 있습니다. 이를테면:
Depending on initial state 초기 상태에 따라 다른 결과가 나오는 문제:
Stuck on local maxima 지역 최댓값에 갇히는 문제:
Problem with choosing step size 단계 크기 선택 문제:
Slow convergence 수렴 속도가 느린 문제:
따라서 이러한 변형 기법을 사용하여 Hill-climbing 알고리즘이 초기 상태에 의존적이지 않고 지역 최댓값에 갇히지 않으며, 적절한 단계 크기를 선택하고 빠른 수렴 속도를 갖도록 만들 수 있습니다.
시뮬레이티드 어닐링(Simulated Annealing)은 local maxima 로컬 최댓값에 갇히는 것을 피하기 위해 사용되는 휴리스틱 최적화 알고리즘 중 하나입니다. 이 알고리즘은 몇 가지 "bad 나쁜" 움직임을 허용하되, 그 gradually decreasing their size and frequency 크기와 빈도를 서서히 줄여가면서 전역 최적해를 찾도록 돕습니다.
시뮬레이티드 어닐링은 높은 온도(높은 T)에서 시작하여 온도를 점차적으로 낮추는 과정을 거칩니다. 온도가 낮아질수록 나쁜 움직임을 허용하는 확률을 줄이고, 최적해를 찾을 확률을 높입니다. 이 과정에서 온도가 Boltzmann 분포에 수렴하게 됩니다.
수렴하는 온도에서 상태가 존재하는 확률은 Boltzmann 분포에 따라 결정됩니다. 이 분포는 상태의 에너지와 온도에 의존하며, 에너지가 낮은 상태일수록 높은 확률로 선택됩니다.
높은 온도에서는 파라미터 공간을 탐색하고, 낮은 온도에서는 탐색을 제한하여 지역 최댓값에 갇히지 않고 전역 최적해를 찾을 수 있습니다. 온도가 충분히 천천히 감소한다면 항상 최상의 상태에 도달할 수 있습니다.
결론적으로, 시뮬레이티드 어닐링은 높은 온도에서는 탐색을 확장하고, 낮은 온도에서는 정확성을 향상시키는 방식으로 문제 공간을 탐색하여 전역 최적해를 찾습니다.
로컬 빔 탐색(Local Beam Search)은 Hill-climbing과 유사하지만, 단일 상태 대신에 여러 개의 상태를 유지하며 탐색하는 알고리즘입니다. 특히, 로컬 빔 탐색은 Keep 𝑘 states k 개의 상태를 유지합니다.
로컬 빔 탐색은 다음과 같은 특징을 가집니다:
Different from k random start hill-climbing
2. 정보 공유:
로컬 빔 탐색은 몇 가지 문제를 가지고 있을 수 있습니다:
이러한 문제를 해결하기 위해 확률론적 빔 탐색(Stochastic Beam Search)과 같은 변형 기법이 제안되기도 합니다. 이러한 기법은 선택할 후계 상태를 무작위로 선택하되, 그 가치에 따라 선택 확률을 조절하여 전역 최적해를 더 효과적으로 찾을 수 있도록 돕습니다.
유전 알고리즘(Genetic Algorithm)은 확률론적 빔 탐색의 변형 중 하나로, 후계 상태를 단일 상태를 수정하는 대신 combining two parent states 두 개의 부모 상태를 결합하여 생성합니다.
유전 알고리즘은 다음과 같은 단계로 진행됩니다:
초기 상태 생성:
다음 세대의 상태 생성:
Genetic Algorithm 유전 알고리즘은 Stochastic local beam search 확률론적 로컬 빔 탐색과 같은 다른 기술과 결합하여 to find global optima 전역 최적값을 찾는 데 사용될 수 있습니다. 후손 상태를 생성하는 데 두 부모 상태를 결합하는 방식은 다양성을 유지하고 탐색 공간을 탐색하는 데 도움이 됩니다.
연속 상태 공간에서의 문제를 다룰 때, 목적 함수가 각 도시에서 가장 가까운 공항까지의 제곱 거리의 합으로 정의된 경우가 있습니다.
연속 상태 공간에서는 연속 변수를 다루어야 하므로, 이 문제를 해결하기 위해서는 연속 변수의 값을 조정하여 목적 함수를 최소화하는 최적의 해를 찾아야 합니다.
이를 위해 연속 상태 공간을 이산화(discretization)하여 해결할 수 있습니다. 이산화는 연속 공간을 이산 공간으로 변환하여 해를 찾는 것입니다. 이산화 방법 중 하나는 현재 위치에서의 기울기(gradient)를 이용하여 목적 함수를 감소시키는 방향으로 이동하는 것입니다.
특히, 목적 함수를 감소시키기 위해 현재 위치에서의 기울기를 사용하여 상태를 업데이트할 수 있습니다. 이를 위해 다음과 같은 업데이트 규칙을 사용할 수 있습니다:
𝑥 ← 𝑥 + 𝛼𝛻𝑓(𝑥)
여기서:
이 방법을 사용하면 목적 함수를 최소화하는 방향으로 계속해서 상태를 업데이트할 수 있습니다. 이러한 연속 상태 공간에서의 접근 방식은 경사 하강법(Gradient Descent)과 관련이 있으며, 연속 상태 공간에서 최적의 해를 찾는 데 효과적입니다.