Lecture04_Informed Search problem

ZEDY·2024년 3월 26일

인공지능

목록 보기
2/4

Informed Search Strategies

정보 검색(Informed Search) 전략은 문제 자체의 정의를 넘어서 문제에 대한 특정 지식을 사용합니다. 이는 목표 상태에 대한 정보를 갖고 있으며, 탐색 과정에서 각 노드의 가치를 평가하여 확장할 노드를 선택합니다. 이는 비정보 검색(Uninformed Search)과 대조적입니다. 비정보 검색은 목표 상태에 대한 정보 없이 가능한 모든 방향으로 탐색을 진행합니다.

최선 우선 탐색(Best-First Search)은 정보 검색의 한 유형입니다. 이는 노드를 확장할 때 평가 함수(𝒇)를 기반으로 노드를 선택합니다. 이 평가 함수는 "비용 추정"을 제공하며, 가장 낮은 평가를 가진 노드가 먼저 확장됩니다. 즉, 가장 유망한 후보 노드를 우선적으로 탐색합니다.

특징:

  • 완전성(Completeness): 평가 함수가 잘 정의되고 목표 상태가 발견 가능한 경우 완전성을 보장할 수 있습니다.
  • 최적성(Optimality): 평가 함수가 최적의 경로를 제공하고 있다면 최적의 해를 찾을 수 있습니다.
  • 시간 및 공간 복잡도(Time and Space Complexity): 평가 함수의 복잡성에 따라 달라집니다. 일반적으로 최악의 경우, 지나치게 복잡한 평가 함수는 높은 시간 및 공간 복잡도를 초래할 수 있습니다.

정보 검색 전략은 탐색 공간을 효율적으로 활용하고 최적의 경로를 찾을 수 있도록 도와줍니다. 그러나 적절한 평가 함수를 설계하는 것이 중요하며, 잘못된 평가 함수는 비효율적인 탐색을 유발할 수 있습니다.

최선 우선 탐색(Best-First Search)은 노드를 평가 함수를 기반으로 우선적으로 확장하는 탐색 전략입니다. 이 평가 함수는 노드의 "원하는 정도"를 추정하는 데 사용됩니다. 탐색은 가장 원하는 정도가 높은, 즉 평가 함수 값이 가장 작은 미확장 노드를 선택하여 확장됩니다.

특징:

  • 평가 함수(Evaluation Function): 노드의 원하는 정도를 추정하는 함수입니다. 이 함수는 각 노드에 대해 값을 제공하며, 값이 작을수록 해당 노드가 더 원하는 정도가 높은 것으로 간주됩니다.
  • Fringe: 노드를 저장하는 자료 구조로, 일반적으로 우선순위 큐(Priority Queue)를 사용합니다. 이 큐는 평가 함수 값에 따라 노드를 정렬하여 저장합니다.
  • 확장(Expansion): 평가 함수 값이 가장 작은 미확장 노드가 선택되어 확장됩니다. 이는 해당 노드가 가장 원하는 정도가 높은 노드임을 의미합니다.

최선 우선 탐색은 탐색 과정에서 미래 상태를 가장 잘 예측할 수 있는 방법을 선택하는 것으로, 평가 함수의 설계가 매우 중요합니다. 이 함수는 주어진 문제에 맞춰야 하며, 목표에 가까운 노드를 먼저 확장함으로써 효율적인 탐색을 가능하게 합니다.

탐욕적 최선 우선 탐색(Greedy Best-First Search)은 평가 함수로 휴리스틱 함수 ℎ(𝑛)을 사용하여 노드를 확장하는 최선 우선 탐색의 한 형태입니다. 이 휴리스틱 함수는 노드 𝑛으로부터 가장 가까운 목표까지의 비용을 추정하는데 사용됩니다. 보통 이는 노드와 가장 가까운 목표까지의 거리를 추정합니다. 이러한 휴리스틱은 예를 들어 유클리드 거리나 맨하탄 거리를 사용하여 경로를 측정합니다.

특징:

  • 평가 함수(Heuristic Function): 휴리스틱 함수 ℎ(𝑛)는 각 노드에 대해 해당 노드에서 가장 가까운 목표까지의 추정 비용을 제공합니다.
  • 탐색: 탐욕적 최선 우선 탐색은 가장 가까운 목표로 보이는 노드를 먼저 확장합니다.
  • 완전성(Completeness): 일반적으로는 완전하지 않습니다. 이는 잘못된 휴리스틱으로 인해 루프에 갇힐 수 있기 때문입니다. 그러나 반복된 상태 확인(repeated-state checking)이 있는 유한한 공간에서는 완전할 수 있습니다.
  • 시간 복잡도(Time Complexity): 잘못된 휴리스틱의 경우 최악의 경우 깊이 우선 탐색과 유사한 시간 복잡도를 가질 수 있습니다.
  • 공간 복잡도(Space Complexity): 공간 복잡도는 주어진 공간과 휴리스틱 함수에 따라 다르며, 일반적으로 깊이 우선 탐색과 비슷한 수준입니다.
  • 최적해(Optimal Solution): 일반적으로 최적의 해를 보장하지 않습니다. 이는 휴리스틱이 종종 실제 최적 경로에서 벗어나기 때문입니다.

탐욕적 최선 우선 탐색은 주어진 문제에 대해 상당히 효율적이지만, 잘못된 휴리스틱 함수를 사용할 경우 최적의 해를 보장하지 않을 수 있습니다. 따라서 휴리스틱 함수를 신중하게 선택하고 문제에 적절하게 적용하는 것이 중요합니다.

A 검색(A Search)은 전체 예상 솔루션 비용을 최소화하기 위한 탐색 알고리즘입니다. 이를 달성하기 위해 이미 비용이 높은 경로를 확장하는 것을 피합니다.

특징:

  • 평가 함수(Evaluation Function): A* 검색에서 사용되는 평가 함수는 다음과 같이 정의됩니다:
    • 𝑓(𝑛) = 𝑔(𝑛) + ℎ(𝑛)
    • 𝑔(𝑛): 노드 𝑛에 도달하는 데까지의 비용
    • ℎ(𝑛): 노드 𝑛에서 목표까지의 추정 비용
    • 𝑓(𝑛): 목표에 도달하기 위한 경로를 통한 전체 예상 비용
    • 만약 𝑔(𝑛)만 사용된다면 균일 비용 탐색이 됩니다.
  • A*의 최적성(Optimality): A* 검색은 제한된 조건 하에서 최적의 해를 찾을 수 있습니다. 이는 모든 서브 옵티멀(goal)이 생성되고 대기열에 있는 상황에서 가정됩니다. 단, 이는 휴리스틱 함수가 적절하게 선택되고 이 휴리스틱이 아닐 경우 최적성을 보장할 수 없습니다.
  • 휴리스틱 함수(Heuristic Function): A* 검색은 최적의 결과를 얻기 위해 휴리스틱 함수를 사용합니다. 이 함수는 각 노드에서 목표까지의 예상 비용을 제공합니다. 이 휴리스틱은 노드에서 실제 목표까지의 비용을 낮게 추정해야 합니다.
  • 최적성 증명: A*가 서브 옵티멀(goal)을 선택하지 않는 이유는 어떤 최적 경로 상의 노드보다 해당 서브 옵티멀(goal)의 비용이 더 높기 때문입니다.

A 검색은 효율적으로 최적의 경로를 찾을 수 있습니다. 그러나 휴리스틱 함수의 선택이 중요하며, 휴리스틱이 실제 비용을 과소평가하지 않도록 주의해야 합니다. 만약 휴리스틱이 너무 낙관적이라면, A 검색은 비효율적인 경로를 선택할 수 있습니다.

여기에 몇 가지 추가 정보가 있습니다:

평가 함수 (Evaluation Function) 설명:

  • A* 알고리즘에서 평가 함수의 목적은 노드를 확장하는 순서를 결정하는 데 사용됩니다.
  • 𝑓(𝑛) = 𝑔(𝑛) + ℎ(𝑛)는 현재 노드까지의 경로 비용(𝑔(𝑛))과 남은 비용(𝑕(𝑛))의 합으로 나타낼 수 있습니다.
  • 이 평가 함수를 사용하여 A*는 더 낮은 총 비용을 갖는 노드를 우선적으로 확장하려고 합니다.

휴리스틱 함수 (Heuristic Function) 설명:

  • 휴리스틱 함수는 주어진 노드에서 목표까지의 예상 비용을 제공합니다.
  • 이 함수는 주어진 노드에서 목표까지의 실제 최소 비용을 낮게 추정할 수 있어야 합니다.
  • 예를 들어, 유클리드 거리나 맨하탄 거리 등의 거리 측정 방법을 사용하여 휴리스틱 함수를 구성할 수 있습니다.

최적성 증명 설명:

  • A*가 최적의 해를 찾을 수 있는 이유는 균일 비용 탐색과 달리 휴리스틱 함수가 사용되기 때문입니다.
  • 서브 옵티멀(goal)이 생성되었지만 아직 확장되지 않은 상태에서, 최적 경로 상의 노드보다 해당 서브 옵티멀(goal)의 비용이 더 높기 때문에 해당 서브 옵티멀(goal)이 선택되지 않습니다.
  • 이것은 A*가 항상 최적의 해를 찾을 수 있도록 보장합니다.

Admissibility

"적절성(Admissibility)"은 휴리스틱 함수가 최적의 해를 찾는 것을 보장하는지 여부를 나타냅니다.

비적절성(Inadmissibility): 비적절한 휴리스틱 함수는 최적의 해를 찾지 못할 수 있습니다. 이러한 휴리스틱은 종종 최적의 경로를 놓치거나 부정확한 정보로 인해 잘못된 결정을 내릴 수 있습니다. 비적절한 휴리스틱은 최적성을 보장하지 않으며, 때로는 좋은 계획을 최적의 경로가 아닌 경로에 갇히게 할 수 있습니다.

적절성(Admissibility): 적절한 휴리스틱 함수는 최적의 해를 찾을 수 있는 것으로 입증됩니다. 이러한 휴리스틱은 종종 더 많은 계산 비용을 요구하지만, 최적의 해를 보장하기 위해 실제 비용과 일치하는 것으로 알려져 있습니다. 즉, 적절한 휴리스틱은 항상 실제 비용을 과소 평가합니다.

예시: 예를 들어, 길찾기 문제에서 적절한 휴리스틱은 두 지점 간의 최단 거리를 과소평가하지만, 올바른 경로에 갇히거나 잘못된 결정을 내리지 않고 최적의 경로를 찾을 수 있습니다.

따라서 적절한 휴리스틱은 효율적인 탐색을 지원하면서도 최적의 해를 보장합니다.

Optimality of A*

A* 검색의 최적성에 대해 좀 더 자세히 설명하겠습니다.

A* 알고리즘의 최적성: A* 검색은 다음과 같은 이유로 최적의 해를 찾을 수 있습니다.

  1. 노드 확장 순서: A*는 노드를 확장할 때, 즉시 목표에 도달할 것으로 예상되는 노드부터 먼저 확장합니다. 이는 𝑓(𝑛) 값이 즉시 목표에 도달할 것으로 예상되는 노드에서부터 증가하는 순서로 확장됨을 의미합니다.

  2. 𝑓-contours 추가: A*는 최적의 해에 이르는 경로와 그렇지 않은 경로를 분리하기 위해 "𝑓-contours"를 추가합니다. 이러한 contours는 현재까지 확장된 경로의 비용을 나타내며, 최적의 경로를 찾는 데 필요한 최소 비용을 보장합니다.

  3. 최적성 증명: A*가 모든 𝑓(𝑛) 값이 최소 경로의 비용보다 작은 노드만 확장하면, 다음 두 가지 사실로부터 최적성이 증명됩니다.

    • 모든 덜 비용이 많이 드는 경로에 대한 노드가 확장되고 나면, 최소 비용의 경로를 포함하는 𝑓-contour가 추가됩니다.
    • 따라서, 최소 비용의 경로가 포함된 𝑓-contour에 도달할 때까지 그 이전의 어떤 노드도 확장되지 않습니다.

이러한 이유로 A 검색은 최적의 해를 보장할 수 있습니다. 하지만 이러한 최적성은 적절한 휴리스틱 함수를 사용하여 얻어집니다. 휴리스틱 함수가 비적절하게 설계된 경우, A가 최적의 해를 찾지 못할 수 있습니다.

A* Search

A* 검색의 특징에 대해 자세히 설명하겠습니다.

  1. 완전성(Completeness): A* 검색은 목표 상태에 도달할 수 있는 경우에는 항상 해를 찾을 수 있습니다. 다만, 𝑓 값이 목표 상태의 𝑓 값보다 작거나 같은 무한한 수의 노드가 있는 경우에는 완전성을 보장할 수 없습니다.

  2. 시간 복잡도(Time Complexity): A* 검색의 시간 복잡도는 휴리스틱 함수의 상대 오차와 해의 길이에 지수적으로 의존합니다. 즉, 휴리스틱 함수가 해의 비용을 얼마나 잘 추정하는지에 따라 시간이 크게 변동할 수 있습니다.

  3. 공간 복잡도(Space Complexity): A*는 모든 생성된 노드를 메모리에 유지합니다. 따라서 공간 복잡도는 생성된 노드의 수에 비례합니다.

  4. 최적성(Optimality): A 검색은 최적의 해를 보장합니다. 이는 A가 더 나은 해가 있는 경로를 찾을 수 없도록 현재까지 최적의 경로를 발견하기 전에 더 비용이 많이 드는 경로를 확장하지 않기 때문입니다. 즉, A*는 목표 상태에 도달할 때까지 비용이 최적인 경로만을 확장합니다.

따라서 A* 검색은 적절한 휴리스틱 함수를 사용할 경우에는 최적의 해를 보장하며, 완전성을 가지고 있습니다. 그러나 휴리스틱 함수의 품질에 따라 검색의 시간과 공간 복잡도가 크게 달라질 수 있습니다.

Consistency

일관성(Consistency)은 휴리스틱 함수가 A* 알고리즘이 최적의 경로를 찾는 것을 보장하는 데 기여하는 속성 중 하나입니다. 다음은 일관성의 개념과 그 의미에 대한 설명입니다:

일관성의 정의: 휴리스틱 함수 ℎ(𝑛)가 현재 상태 𝑛에서 가능한 모든 행동을 했을 때 다음 상태 𝑛′까지의 비용에 대한 휴리스틱 예측이 해당 행동의 비용과 함께 고려할 때, 일관성을 갖는다고 말합니다.

수식적 설명: 휴리스틱 함수 ℎ(𝑛)가 일관성을 갖는다면, 𝑛에서 시작하여 어떤 행동을 통해 다음 상태인 𝑛′로 이동했을 때, 그 경로의 비용(𝑓(𝑛′))은 현재 상태의 경로 비용(𝑓(𝑛))보다 크거나 같을 것입니다. 수식적으로는 다음과 같이 나타낼 수 있습니다:
[ \begin{align} \text{If } \quad h(n) &\leq c(n, a, n') + h(n') \ \text{Then } \quad f(n') &= g(n') + h(n') \ &= g(n) + c(n, a, n') + h(n') \ &\geq g(n) + h(n) \ &= f(n) \end{align} ]

의미: 일관성이라는 개념은 A 알고리즘이 최적의 해를 찾는 데 중요한 역할을 합니다. 휴리스틱 함수가 일관성을 갖는다면, A 알고리즘이 확장하는 경로의 비용이 계속 증가하므로, 최적의 해를 찾을 수 있습니다.

따라서 휴리스틱 함수가 일관성을 가질 때, A 알고리즘은 최적의 해를 찾을 수 있으며, 이는 A 알고리즘이 경로를 확장함에 따라 비용이 계속 증가함을 보장합니다.

Admissible Heuristics

적절한 휴리스틱 함수(Admissible Heuristics)는 A* 알고리즘이 최적의 해를 찾을 수 있도록 보장하는 휴리스틱 함수입니다. 주어진 문제에 대한 휴리스틱 함수가 적절하려면 다음 조건을 만족해야 합니다:

  1. 최적성(Optimality): 휴리스틱 함수는 항상 실제 최적 해의 비용을 과소 평가해야 합니다. 이는 휴리스틱 함수의 값이 실제 해의 비용보다 작거나 같아야 함을 의미합니다.

  2. 일관성(Consistency): 휴리스틱 함수는 일관성을 유지해야 합니다. 이는 각 상태에서 가능한 모든 행동의 비용과 함께 다음 상태의 휴리스틱 값이 해당 행동의 비용을 고려할 때 그 상태의 휴리스틱 값보다 작거나 같아야 함을 의미합니다.

주어진 8-puzzle 문제에 대해 두 가지 적절한 휴리스틱 함수 예시가 있습니다:

  1. ℎ1(𝑛) - 타일의 위치가 올바르지 않은 타일의 수: 이 휴리스틱은 현재 상태에서 목표 상태까지 이동하는 데 필요한 최소 횟수를 과소 평가합니다. 따라서 이 휴리스틱은 적절합니다.

  2. ℎ2(𝑛) - 맨하탄 거리의 합: 이 휴리스틱은 현재 위치에서 각 타일이 목표 위치로 이동하는 데 필요한 맨하탄 거리의 총합입니다. 이 휴리스틱 또한 실제 비용을 과소 평가하므로 적절합니다.

따라서 두 휴리스틱 함수 모두 적절하며, A* 알고리즘이 최적의 해를 찾을 수 있도록 보장합니다.

Dominance

지배(Dominance)는 두 개의 휴리스틱 함수가 주어진 문제에 대해 서로를 비교할 때 사용되는 개념입니다. 다음은 지배의 의미와 관련된 설명입니다:

  1. 휴리스틱 함수의 비교: 두 휴리스틱 함수 ℎ1(𝑛)과 ℎ2(𝑛)가 모든 상태 𝑛에 대해 ℎ1(𝑛) ≤ ℎ2(𝑛)를 만족하고, 두 휴리스틱 함수가 모두 적절하다면, ℎ2는 ℎ1을 지배하며 ℎ2가 더 나은 휴리스틱으로 간주됩니다.

  2. 효율성 비교: ℎ2가 ℎ1을 지배한다면, A* 알고리즘을 사용하여 ℎ2를 이용한 경우 ℎ1을 이용한 경우보다 더 적은 수의 노드를 확장할 것으로 예상됩니다. 이는 ℎ2가 더 정확하게 실제 최적 비용을 추정하기 때문입니다.

  3. 확장된 노드 비교: ℎ2가 ℎ1을 지배한다면, ℎ2를 사용하여 확장된 노드의 모든 하위 집합이 ℎ1을 사용하여 확장된 노드의 하위 집합보다 더 작거나 같습니다. 즉, ℎ2를 사용하여 확장된 모든 노드는 ℎ1을 사용하여 확장된 모든 노드보다 더 비용이 낮거나 동일합니다.

  4. 최적성과의 관련: ℎ2가 ℎ1을 지배한다면, ℎ2를 사용하는 A 알고리즘은 ℎ1을 사용하는 A 알고리즘보다 더 적은 수의 노드를 확장하며, 따라서 최적의 해를 더 효율적으로 찾을 수 있습니다.

따라서 휴리스틱 함수를 선택할 때 ℎ2가 ℎ1을 지배하는지 여부를 고려하는 것이 중요합니다. ℎ2가 ℎ1을 지배한다면, 더 나은 휴리스틱 함수로 간주됩니다.

Relaxed Problems

"완화된 문제(Relaxed Problems)"는 휴리스틱 함수를 유도하기 위한 중요한 개념 중 하나입니다. 정확한 해결 방법에서 완화된 문제의 비용을 이용하여 휴리스틱을 도출할 수 있습니다.

예시: 예를 들어, 8-puzzle 문제에서 각 타일이 어디로든 이동할 수 있는 완화된 버전을 고려할 수 있습니다. 이런 식으로 완화된 버전에서 최단 해결 방법을 찾을 수 있습니다.

완화된 문제의 최적 솔루션 비용: 완화된 문제의 최적 솔루션 비용은 실제 문제의 최적 솔루션 비용보다 크지 않습니다. 즉, 실제 문제의 해결 방법을 찾는 것보다 완화된 문제의 해결 방법을 찾는 것이 더 쉬울 수 있습니다. 이를 통해 휴리스틱 함수를 유도할 수 있습니다.

따라서 완화된 문제를 사용하여 휴리스틱을 유도하면 실제 문제에 대한 좋은 휴리스틱을 얻을 수 있습니다. 이는 A* 알고리즘이 최적의 해를 효율적으로 찾는 데 도움이 됩니다.

Learning Heuristics from Experience

경험으로부터 휴리스틱을 학습하는 것은 A* 알고리즘이 최적의 해를 찾는 데에 유용한 방법 중 하나입니다. 이를 통해 각 상태의 휴리스틱 값을 추정할 수 있습니다. 이러한 학습 과정은 다음과 같이 진행됩니다:

1. 휴리스틱 함수 정의: 휴리스틱 함수 ℎ(𝑛)는 노드 𝑛의 상태에서 목표 상태까지 이동하는 데 필요한 예상 비용을 추정합니다.

2. 기능 생성: 상태의 관찰을 특징으로 변환하여 입력 기능을 생성합니다. 이것은 각 상태를 설명하는 관찰 데이터로부터 파생됩니다.

3. 모델 구성: 기능과 목표 값(실제 비용 또는 비용의 추정치)을 사용하여 머신 러닝 모델을 구성합니다. 선형 회귀, 의사 결정 트리, 신경망과 같은 다양한 모델을 사용할 수 있습니다.

4. 훈련: 훈련 데이터를 사용하여 모델을 학습시킵니다. 학습 데이터는 각 상태에서 실제 비용이나 비용의 추정치를 포함합니다.

5. 평가: 학습된 모델을 평가하여 예측 정확도를 확인합니다. 이 평가는 테스트 데이터를 사용하여 수행됩니다.

6. 배포: 최종 모델을 사용하여 A* 알고리즘 또는 기타 검색 알고리즘과 통합하여 사용합니다.

이러한 방법을 통해 경험으로부터 휴리스틱을 학습할 수 있으며, 이는 검색 알고리즘이 최적의 해를 효과적으로 찾는 데에 도움이 됩니다. Reinforcement learning과 같은 기계 학습 방법은 더 복잡한 문제에 적용될 수 있으며, 휴리스틱 함수를 더 정교하게 조정할 수 있습니다.

profile
IT기획/운영

0개의 댓글