Lecture05_LocalSearch_Optimization

ZEDY·2024년 3월 27일

인공지능

목록 보기
4/4

인공지능 강의를 수강하며 정리한 것입니다.


Local Search and Optimization

고전적인 탐색 방법 이상의 개념을 다룹니다.
고전적인 탐색 방법 : 문제 공간을 전부 탐색하여 해결책을 찾는데 초점을 두었습니다. 이런 전통적인 방식은 환경이 관측 가능 observable하고 결정론적 deterministic이며, 해결책이 일련의 행동들의 순서 sequence of actions 로 표현될 수 있는 문제들에 적합합니다.

Assumption이 relaxed 된다면?

하지만, 이런 가정들이 완화될 때 무엇이 발생하는지에 대해 고민해봅시다. 환경이 관측 불가능하거나, 불확실하거나, 해결책이 순차적인 행동의 시퀀스로 표현되지 않을 수도 있습니다. 이러한 경우에는 고전적인 탐색 방법이 적절하지 않을 수 있습니다.

이런 경우에 사용되는 것이 'Local Search'라는 개념입니다. Local Search는 현재의 해결책에서 출발하여 주변 이웃 해결책을 탐색하고, 이웃 해결책 중에서 더 나은 해결책을 계속해서 찾아나가는 방법입니다. 이것은 전체 문제 공간을 완전히 탐색하지 않고, 주변 이웃들을 통해 최적의 해결책을 찾는 데 초점을 둡니다.

이러한 지역 탐색 알고리즘은 대규모 문제 공간에 대해 사용하기 용이하며, 특히 문제가 너무 커서 전체 탐색이 불가능할 때 유용합니다. 그러나 지역 탐색 알고리즘은 지역 최적해(local optimum)에 빠질 위험이 있으며, 이를 극복하기 위해 다양한 기법들이 존재합니다.

예를 들어, 'Simulated Annealing'이라는 알고리즘은 지역 최적해에 빠지지 않도록 무작위성을 활용하여 전역 최적해(global optimum)를 찾을 가능성을 높입니다. 또한, 'Genetic Algorithms'는 생물학적 진화의 개념을 모방하여 문제 공간을 탐색하고 최적의 해결책을 찾을 수 있는 효과적인 방법 중 하나입니다.

이러한 방법들은 고전적인 탐색 방법의 한계를 극복하고, 실제 문제에 더 효과적으로 대응할 수 있도록 도와줍니다.

Local Search

로컬 탐색은 많은 최적화 문제에서 경로는 중요하지 않은 경우가 많습니다. 이 경우 목표는 Goal 해결책이며, 상태 공간은 "complete configurations 완전한 구성"의 집합으로 설정됩니다. 최적의 구성은 이 중 하나입니다.

Idea

로컬 탐색의 아이디어는 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)는 모든 그래프 노드를 포함하는 순환이 해결책입니다. 순환의 총 길이를 최소화하는 것이 목표입니다.

로컬 탐색 알고리즘은 후보 해결책에서 시작하여 반복적으로 이웃 해결책으로 이동합니다.

Advantages

로컬 탐색의 장점은
1. 매우 적은 메모리를 사용한다는 것입니다(상수).
2. 종종 크거나 무한한 상태 공간에서 합리적인 해결책을 찾습니다.
3. 순수한 최적화 문제를 해결하는 데 유용합니다. 최상의 상태는 최소 목적 함수입니다.

State-space landscape

로컬 탐색에서 상태 공간 또는 "state-space"은 문제의 가능한 해결책을 나타내는 공간입니다. 이 공간은 일종의 지형이며, 이를 "state-space landscape" 또는 상태 공간 지형이라고 합니다.

이 지형은 각각의 상태가 고유한 위치를 차지하며, 각 상태의 높이는 해당 상태의 "값"을 나타냅니다. 여기서 값은 주어진 문제에 따라 다를 수 있습니다. 예를 들어, 최소화하려는 비용 함수의 값을 나타낼 수 있습니다.

로컬 탐색 알고리즘은 이러한 상태 공간 지형을 탐색하며 현재 위치에서 시작하여 주변 이웃 상태로 이동합니다. 이웃 상태로 이동함에 따라 현재 위치의 높이(해당 상태의 값)를 개선하려고 시도합니다. 이 과정을 반복하여 최적의 상태(또는 근사치)를 찾습니다.

상태 공간 지형은 종종 매우 복잡하며, 로컬 탐색 알고리즘이 지역 최적해에 머무르는 위험을 내포할 수 있습니다. 따라서 이러한 알고리즘을 사용할 때에는 지형을 잘 이해하고, 지역 최적해에 갇히지 않도록 주의해야 합니다.

state-space landscape(상태 공간 지형)에서 사용되는 일반적인 용어들은 다음과 같습니다:

  1. Shoulder (어깨)

    • 상태 공간 지형에서 경사가 급격하게 변하는 부분을 가리킵니다.
    • 어깨 지점에서는 최적해를 향한 이동이 둔화될 수 있습니다.
    • 이러한 지점은 로컬 최적해에 갇히는 위험이 있습니다.
  2. Global Maximum (전역 최댓값)

    • 상태 공간에서 가장 높은 값을 가지는 해결책을 의미합니다.
    • 문제의 최적해가 될 수 있습니다.
  3. Current State (현재 상태)

    • 로컬 탐색 알고리즘이 현재 위치하고 있는 상태를 나타냅니다.
    • 로컬 탐색 알고리즘이 이웃 상태로 이동하면 현재 상태가 변경됩니다.
  4. Local Maximum (지역 최댓값)

    • 현재 위치한 지역에서의 최고값을 가리킵니다.
    • 이 지점은 주변의 다른 상태보다 높은 값을 가지지만, 전체 상태 공간에서의 최고값은 아닙니다.
  5. Flat Local Maximum (평탄한 지역 최댓값)

    • 주변 상태 중에서 최고값인 상태이지만, 주변 이웃과의 차이가 크지 않아 경사가 거의 없는 지역을 의미합니다.
    • 이러한 지점에서는 이웃 상태로 이동해도 값이 크게 변하지 않습니다.

이러한 용어들은 로컬 탐색 알고리즘을 이해하고 상태 공간을 분석할 때 유용하게 사용됩니다.

Local Search = Iterative Improvement Algorithms

로컬 탐색은 반복적 개선 알고리즘(iterative improvement algorithm)으로도 알려져 있습니다. 이 알고리즘은 주어진 문제의 상태 공간을 "complete configurations 완전한 구성"의 집합으로 간주합니다.

탐색 알고리즘의 목표는 최적의 구성을 찾는 것이거나, 제약 조건을 만족하는 구성을 찾는 것입니다. 이러한 목표를 달성하기 위해 로컬 탐색 알고리즘은 단일 "current 현재" 상태를 유지하고 이를 improve 개선하려고 시도합니다.

알고리즘이 현재 상태를 개선하는 과정은 주로 이웃 상태로의 이동을 통해 이루어집니다. 현재 상태에서 시작하여 이웃 상태로 이동하고, 이웃 상태가 더 나은 해결책이 될 때까지 이 과정을 반복합니다.

이러한 반복적 개선 과정은 로컬 탐색 알고리즘이 최적 또는 만족스러운 해결책을 찾을 때까지 진행됩니다. 이러한 알고리즘은 주어진 문제에 따라 최적화된 해결책을 찾거나, 제약 조건을 충족하는 해결책을 찾는 데 유용합니다.

Hill-climbing (or Gradiengt Ascent)

Hill-climbing 또는 Gradient Ascent은 지속적으로 값이 증가하는 방향으로 이동하는 알고리즘입니다. 이 알고리즘은 주변 상태 중에서 현재 상태보다 값이 더 높은 상태로 이동하려고 노력합니다.

그러나 Hill-climbing은 종종 "Greedy local search 탐욕스러운 지역 탐색"이라고도 불립니다. 이는 어떤 상태에서 다음으로 어디로 이동해야 하는지 고려하지 않고 단순히 좋은 이웃 상태를 선택하는 것을 의미합니다. 이는 가끔 지역 최적해에 빠지게 될 수 있는 위험을 내포합니다.

이러한 특성으로 인해 Hill-climbing은 종종 "암네시아와 함께 안개 속에서 에베레스트 산을 등반하는 것"으로 비유됩니다. 이 비유는 알고리즘이 현재 위치에서 가장 좋은 이웃 상태만을 고려하고, 전체 상태 공간을 고려하지 않는다는 점을 강조합니다. 따라서 알고리즘이 지역 최적해에 갇히는 위험이 있으며, 전체 최적해를 찾지 못할 수 있습니다.

Problem

로컬 탐색 알고리즘인 Hill-climbing은 몇 가지 문제를 겪을 수 있습니다.

  1. 초기 상태에 따라 결과가 달라짐 : Depending on inital state

    • Hill-climbing은 초기 상태에 따라 최종적으로 찾는 해결책이 달라질 수 있습니다. 즉, 초기 상태가 좋지 않으면 전역 최적해가 아닌 지역 최적해에 갇힐 가능성이 있습니다.
  2. 지역 최댓값에 갇힘 : stuck on local maxima

    • Hill-climbing은 현재 위치에서 값이 더 큰 이웃 상태로만 이동하므로 지역 최댓값에 갇히는 위험이 있습니다. 이는 전역 최댓값을 찾지 못하게 만들 수 있습니다.
  3. 단계 크기 선택 문제 : problem with choosing step size

    • 어떤 상태로 이동해야 하는지 결정하는 단계 크기를 선택하는 것은 중요한 문제입니다. 너무 작은 단계 크기는 지역 최댓값에 빠지는 위험을 증가시키고, 너무 큰 단계 크기는 최적해를 놓칠 수 있습니다.
  4. 수렴 속도가 느림 : slow convergence

    • Hill-climbing은 단순하고 직관적인 알고리즘으로 수렴 속도가 다른 최적화 알고리즘에 비해 상대적으로 느릴 수 있습니다. 특히 복잡한 문제나 고차원 공간에서는 더욱 그러합니다.

이러한 문제들은 Hill-climbing이 특정 종류의 문제에 적합하지 않을 수 있다는 것을 보여줍니다. 이러한 한계를 극복하기 위해 다른 로컬 탐색 알고리즘이나 휴리스틱 기법을 고려할 수 있습니다.

n-Queens 문제는 n x n 크기의 체스판에 n개의 퀸을 배치하는 문제로, 배치된 퀸들이 서로 공격할 수 없도록 하는 것이 목표입니다. 여기서 퀸은 같은 행, 열 또는 대각선 상에 있을 때 서로 공격할 수 있습니다.

이 문제를 해결하기 위해 로컬 탐색 알고리즘을 사용할 수 있습니다. 상태는 n x n 크기의 체스판에 배치된 퀸들의 위치입니다. 각 상태의 가치는 공격하는 퀸 쌍의 수로 평가됩니다.

로컬 탐색 알고리즘을 사용하여 n-Queens 문제를 해결할 수 있습니다. 예를 들어, Hill-climbing 알고리즘을 사용하여 현재 상태에서 이웃 상태로 이동하며 가장 가치가 높은 상태를 찾을 수 있습니다. 또한, Simulated Annealing이나 Genetic Algorithms와 같은 다른 메타휴리스틱 알고리즘도 적용할 수 있습니다.

이러한 로컬 탐색 기법을 사용하면 n-Queens 문제를 효과적으로 해결할 수 있으며, 가능한 해결책을 탐색하는 과정에서 최적의 배치를 찾을 수 있습니다.

n-Queens

n-Queens 문제를 해결하기 위해 Hill-climbing 알고리즘을 사용하는 과정은 다음과 같습니다.

  1. 무작위 초기 상태 선택:

    • 먼저 n x n 크기의 체스판에 n개의 퀸을 무작위로 배치하여 초기 상태를 생성합니다.
  2. 이웃 상태 탐색:

    • 현재 상태에서 가능한 모든 이웃 상태를 조사합니다. 이웃 상태는 현재 상태에서 하나의 퀸의 위치를 변경하는 것입니다.
    • 각 이웃 상태에 대해 공격하는 퀸 쌍의 수를 계산하여 이웃 상태의 가치를 평가합니다.
  3. 최적 이웃 상태 선택:

    • 가능한 모든 이웃 상태를 조사한 후, 공격하는 퀸 쌍의 수가 가장 적은 이웃 상태를 선택합니다.
    • 이웃 상태 중에 가장 적은 공격하는 퀸 쌍의 수를 가진 상태를 찾습니다.
  4. 최적 이웃 상태로 이동:

    • 선택한 최적 이웃 상태로 이동합니다. 즉, 현재 상태를 선택한 최적 이웃 상태로 업데이트합니다.
  5. 반복:

    • 위 단계를 반복하여 최적의 상태를 찾을 때까지 진행합니다. 만약 더 이상 개선할 수 있는 이웃 상태가 없다면 알고리즘을 종료합니다.
  6. 랜덤 점프:

    • 만약 높은 가치를 가진 이웃 상태가 없는 경우, 즉 더 이상 개선할 수 없는 지역 최적해나 플래토가에 빠졌을 때, 랜덤 점프를 수행합니다.
    • 랜덤 점프는 지역 최적해나 플래토에서 벗어나 전체 상태 공간을 더 잘 탐색할 수 있도록 도와줍니다.

이러한 과정을 통해 Hill-climbing 알고리즘은 n-Queens 문제에서 최적의 퀸 배치를 찾을 수 있습니다. 무작위 초기 상태 선택과 랜덤 점프는 지역 최적해나 플래토에서 벗어나는 데 도움이 될 수 있습니다.

다만, Hill-climbing 알고리즘이 지역 최적해에 빠질 위험이 있으며, 이를 극복하기 위해 여러 번의 실행 또는 다른 탐색 전략과 함께 사용될 수 있습니다. 또한, n-Queens 문제와 같이 해결이 어려운 문제의 경우에는 Hill-climbing 알고리즘이 전체 최적해를 찾지 못할 수 있습니다. 따라서 이러한 문제에 대해 휴리스틱 기법이나 메타휴리스틱 알고리즘을 사용하는 것이 더 효과적일 수 있습니다.

Hill-cllimbing (or Gradient Ascent)

Hill-climbing 알고리즘은 다양한 문제에 직면할 수 있지만, 다양한 변형 기법을 통해 이러한 문제들을 해결할 수 있습니다. 이를테면:

  1. Depending on initial state 초기 상태에 따라 다른 결과가 나오는 문제:

    • Random-start hill climbing: 여러 개의 무작위 초기 상태에서 각각의 Hill-climbing 알고리즘을 실행하여 다양한 결과를 얻을 수 있습니다. 이를 통해 초기 상태에 따른 의존성을 줄일 수 있습니다.
  2. Stuck on local maxima 지역 최댓값에 갇히는 문제:

    • Stochastic hill climbing: 일정 확률로 현재 상태보다 나은 상태로 이동하는 것을 허용하여 지역 최댓값에 갇히는 위험을 줄입니다.
  3. Problem with choosing step size 단계 크기 선택 문제:

    • Stochastic hill climbing: 이동할 때마다 단계 크기를 무작위로 선택하여 다양한 크기의 이동을 허용합니다. 이는 단계 크기를 선택하는 문제를 완화할 수 있습니다.
  4. Slow convergence 수렴 속도가 느린 문제:

    • First-choice hill climbing: 모든 후계 상태의 가치를 계산하는 대신 첫 번째로 나타나는 더 나은 후계 상태를 선택합니다. 이렇게 하면 후계 상태의 가치를 모두 계산할 필요가 없으므로 계산 비용을 줄일 수 있습니다.

따라서 이러한 변형 기법을 사용하여 Hill-climbing 알고리즘이 초기 상태에 의존적이지 않고 지역 최댓값에 갇히지 않으며, 적절한 단계 크기를 선택하고 빠른 수렴 속도를 갖도록 만들 수 있습니다.

Simulated Annealing

시뮬레이티드 어닐링(Simulated Annealing)은 local maxima 로컬 최댓값에 갇히는 것을 피하기 위해 사용되는 휴리스틱 최적화 알고리즘 중 하나입니다. 이 알고리즘은 몇 가지 "bad 나쁜" 움직임을 허용하되, 그 gradually decreasing their size and frequency 크기와 빈도를 서서히 줄여가면서 전역 최적해를 찾도록 돕습니다.

시뮬레이티드 어닐링은 높은 온도(높은 T)에서 시작하여 온도를 점차적으로 낮추는 과정을 거칩니다. 온도가 낮아질수록 나쁜 움직임을 허용하는 확률을 줄이고, 최적해를 찾을 확률을 높입니다. 이 과정에서 온도가 Boltzmann 분포에 수렴하게 됩니다.

수렴하는 온도에서 상태가 존재하는 확률은 Boltzmann 분포에 따라 결정됩니다. 이 분포는 상태의 에너지와 온도에 의존하며, 에너지가 낮은 상태일수록 높은 확률로 선택됩니다.

높은 온도에서는 파라미터 공간을 탐색하고, 낮은 온도에서는 탐색을 제한하여 지역 최댓값에 갇히지 않고 전역 최적해를 찾을 수 있습니다. 온도가 충분히 천천히 감소한다면 항상 최상의 상태에 도달할 수 있습니다.

결론적으로, 시뮬레이티드 어닐링은 높은 온도에서는 탐색을 확장하고, 낮은 온도에서는 정확성을 향상시키는 방식으로 문제 공간을 탐색하여 전역 최적해를 찾습니다.

로컬 빔 탐색(Local Beam Search)은 Hill-climbing과 유사하지만, 단일 상태 대신에 여러 개의 상태를 유지하며 탐색하는 알고리즘입니다. 특히, 로컬 빔 탐색은 Keep 𝑘 states k 개의 상태를 유지합니다.

로컬 빔 탐색은 다음과 같은 특징을 가집니다:

  1. k 개의 상태를 유지:
    • 로컬 빔 탐색은 k 개의 상태를 유지하고, 각 상태의 이웃 상태 중에서 가장 좋은 상태들을 선택하여 계속해서 탐색합니다.

Different from k random start hill-climbing
2. 정보 공유:

  • 로컬 빔 탐색은 병렬 탐색 스레드 간에 정보를 공유합니다. 이를 통해 각 탐색 스레드가 다른 스레드가 발견한 정보를 활용하여 효율적으로 탐색할 수 있습니다.
  1. 탐색 진행:
    • 알고리즘은 유용하지 않은 탐색을 빠르게 포기하고, 가장 진전이 있는 곳으로 자원을 이동시킵니다. 이를 통해 더 나은 상태로 더 빠르게 수렴할 수 있습니다.

problem

로컬 빔 탐색은 몇 가지 문제를 가지고 있을 수 있습니다:

  • 다양성 부족: 모든 k 개의 상태가 종종 동일한 지역 최댓값에 갇힐 수 있으므로 다양성 부족 문제가 발생할 수 있습니다.
  • 계산 비용: k 개의 상태를 유지하는 것은 추가적인 계산 비용을 초래할 수 있습니다. 이는 단일 상태를 유지하는 Hill-climbing과 비교하여 더 많은 계산 리소스가 필요하게 됩니다.

이러한 문제를 해결하기 위해 확률론적 빔 탐색(Stochastic Beam Search)과 같은 변형 기법이 제안되기도 합니다. 이러한 기법은 선택할 후계 상태를 무작위로 선택하되, 그 가치에 따라 선택 확률을 조절하여 전역 최적해를 더 효과적으로 찾을 수 있도록 돕습니다.

Genetic Algorithm

유전 알고리즘(Genetic Algorithm)은 확률론적 빔 탐색의 변형 중 하나로, 후계 상태를 단일 상태를 수정하는 대신 combining two parent states 두 개의 부모 상태를 결합하여 생성합니다.

유전 알고리즘은 다음과 같은 단계로 진행됩니다:

  1. 초기 상태 생성:

    • 먼저 k 개의 무작위로 생성된 상태(인구)로 시작합니다. 각 상태는 유한한 알파벳 문자열로 표시됩니다. 예를 들어, 8-퀸 문제에서는 8개의 퀸의 위치를 나타내는 8 자리 숫자로 표시될 수 있습니다.
  2. 다음 세대의 상태 생성:

    • 상태는 목적 함수(적합도 함수)에 의해 평가됩니다. 8-퀸 문제에서는 비공격 퀸 쌍의 수를 측정할 수 있으며, 이는 C(8, 2) = 28입니다.
    • 상태를 다음 세대로 복제할 확률은 적합도 점수에 비례합니다. 높은 적합도 점수를 가진 상태일수록 다음 세대에 더 많이 복제됩니다.
    • 교차점(crossover point)은 무작위로 선택됩니다. 이를 통해 두 부모 상태가 결합되어 후손 상태가 생성됩니다.
    • 작은 독립적 확률로 돌연변이가 발생할 수 있습니다. 이를 통해 새로운 다양성이 유지됩니다.

Genetic Algorithm 유전 알고리즘은 Stochastic local beam search 확률론적 로컬 빔 탐색과 같은 다른 기술과 결합하여 to find global optima 전역 최적값을 찾는 데 사용될 수 있습니다. 후손 상태를 생성하는 데 두 부모 상태를 결합하는 방식은 다양성을 유지하고 탐색 공간을 탐색하는 데 도움이 됩니다.

Continuous State Spaces

연속 상태 공간에서의 문제를 다룰 때, 목적 함수가 각 도시에서 가장 가까운 공항까지의 제곱 거리의 합으로 정의된 경우가 있습니다.

연속 상태 공간에서는 연속 변수를 다루어야 하므로, 이 문제를 해결하기 위해서는 연속 변수의 값을 조정하여 목적 함수를 최소화하는 최적의 해를 찾아야 합니다.

이를 위해 연속 상태 공간을 이산화(discretization)하여 해결할 수 있습니다. 이산화는 연속 공간을 이산 공간으로 변환하여 해를 찾는 것입니다. 이산화 방법 중 하나는 현재 위치에서의 기울기(gradient)를 이용하여 목적 함수를 감소시키는 방향으로 이동하는 것입니다.

특히, 목적 함수를 감소시키기 위해 현재 위치에서의 기울기를 사용하여 상태를 업데이트할 수 있습니다. 이를 위해 다음과 같은 업데이트 규칙을 사용할 수 있습니다:

𝑥 ← 𝑥 + 𝛼𝛻𝑓(𝑥)

여기서:

  • 𝑥 는 현재 상태를 나타내는 연속 변수입니다.
  • 𝛼는 학습률(learning rate)이며, 각 단계에서의 업데이트의 크기를 결정합니다.
  • 𝛻𝑓(𝑥)는 목적 함수 𝑓(𝑥)의 기울기(gradient)입니다. 기울기는 현재 위치에서 목적 함수의 변화율을 나타냅니다.

이 방법을 사용하면 목적 함수를 최소화하는 방향으로 계속해서 상태를 업데이트할 수 있습니다. 이러한 연속 상태 공간에서의 접근 방식은 경사 하강법(Gradient Descent)과 관련이 있으며, 연속 상태 공간에서 최적의 해를 찾는 데 효과적입니다.

profile
IT기획/운영

0개의 댓글