ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AI Informed search, Greedy Best-first Search, A* Serach
    인공지능 2020. 10. 17. 17:37
    728x90

    Informed search

    지금까지의 Uninformed search 와는 달리 문제 정의 이외의 정보를 활용하여 더 효율적인 검색을 하는 방법입니다.

     

    Best-first search

    트리 내 노드에서 evaluation function f(n)에 의해 cost가 가장 적은 노드를 판별하여 해당 노드를 먼저 탐색합니다.

     

    f(n) 은 heuristic function h(n)을 포함하고 있습니다.

    h(n)은 n에서부터 goal state 까지의 최소 비용을 예측하는 함수입니다.

    가령 예를 들어 Romania 문제에서 도시간의 비용이 지도에 주어졌지만 h(n)으로는 도시 n에서부터 goal 도시까지의 직선거리를 사용할 수 있을 것입니다. 지금부터 이를 hSLD라고 부르겠습니다. (SLD = Straight-Line Distance)

     

    Greedy Best-First Search

    f(n) = h(n) 으로 오직 heuristic 한 추정치만을 사용하여 검색을 진행하는 방법입니다.

    이는 비슷한 문제를 풀어본 경험을 필요로 합니다.

     

    평가

    • Completeness

      • Graph version : Yes

      • Tree version : No ( DFS )

    • Optimal : No

      • 결과의 최적은 아니지만 탐색 비용의 최적은 만족함 : 최적의 답이 아니더라도 답을 찾는 데에 있어서 최소한의 비용으로 찾아냄

    • Time complexity : O(b ^ m)

    • Space complexity : O(b ^ m)

     

    A* Search

    Best-first search 알고리즘 중 가장 유명한 알고리즘입니다.

    f(n) = g(n) + h(n) 으로 g(n)은 start state 에서부터 n 까지의 실제 cost 를 말하며, h(n)은 n에서부터 goal state 까지의 최소 코스트의 추정치를 말합니다.

    A* 탐색은 UNIFORM-COST-SEARCH 와 동일하게 구현하지만 priority queue에 들어가는 가중치가 g(n)이 아닌 f(n) = g(n) + h(n) 이라는 것만 다릅니다.

     

    A* search의 complete, optimal 조건

    • Admissibility

      • h(n) 은 goal state 까지의 비용을 절대 과대평가 하지 않는다.

      • 즉 추정치는 실제 측정값보다 더 크게 추정해서는 안된다.

    • Consistency

      • h(n) <= c(n, a, n`) + h(n`) 을 만족한다.

        • c(n, a, n`) = n →  n` 으로 가는데에 action a를 통해 갔을 때 필요한 비용

      • 즉 추정치는 실제 측정값보다 더 크게 추정해서는 안되며 goal에 다가갈수록 그 추정치는 작아진다.

    • Consistency → admissible (O)

    • Admissible → Consistency (X)

    • Consistency 가 Admissible 보다 더 강력한 조건임

    Heuristic 한 h(n)은 문제에 specific 하기 때문에 다른 문제에 활용이 어렵습니다.

     

    h(n) 이 consistent 하다면 A* search 는 optimal 하다.

    A* search에서 frontier의 노드가 pop 되는 순간 해당 노드의 path cost는 최적입니다. 그리고 이를 반복하여 goal state node가 expand 되는 순간 해당 노드의 path cost는 최적이기에 A* search는 최적의 답을 찾습니다. 따라서 어떤 node 가 frontier에서 pop 될 때 해당 노드의 cost가 최적이라는 것을 증명하겠습니다.

     

    딸림정리 : h(n)이 consistent 하다면 f(n)은 절대 작아지지 않습니다.

    딸림정리 증명

    consistent 의 정의 : h(n) <= c(n, a, n`) + h(n`)

    f(n`) = g(n`) + h(n`) = g(n) + c(n, a, n`) + h(n`) >= g(n) + h(n) = f(n)

    따라서 f(n) <= f(n`) <= f(n``) <= … 

     

    증명

    모순에 의한 증명으로 증명하겠습니다. A* search에서 모든 노드는 unexplored -> frontier -> expored 순으로 들어가게 됩니다. A* search에서 노드 n이 frontier에서 expand 되는 순간에 n으로 가는 더 최적의 path인 n`이 있다고 가정합니다. 그렇다면 f(n) >= f(n`) 이라는 것이며 이는 딸림정리에 의해 n보다 먼저 선택되었어야 합니다. 따라서 이는 모순이며 n 은 최적의 path cost 를 가진 노드입니다.

     

    Contours by f(n) in a State Space ( state 공간의 등고선)

    f(n)의 등고선이 의미하는 바는 다음과 같습니다. A* Search 가 수행될 때 작은 등고선부터 차례로 탐색해나가는데 해당 등고선 내부의 노드를 모두 탐색한 뒤에 다음 등고선으로 넘어가기 때문에 등고선이 뾰족하고 좁으면 더 적은 노드를 탐색한다는 것입니다.

     

    Uniform-cost search 는 h(n) 이 0이므로 등고선이 동심원을 그리게 됩니다.

    왜냐하면 heuristic 한 h(n) 이 있기에 goal state와 start state 간의 path cost 차이가 적게 나게 되지만 h(n) 이 0이라면 실제값인 g(n)만으로 등고선이 그려지기 때문에 start state에 가까울수록 0에 가깝고, goal state에 가까워질수록 값이 커지게 되기 때문입니다.

     

    h(n) 이 정확한 추정일 수록 등고선은 goal state 쪽으로 늘어나며 optimal path 쪽으로 더 뾰족하고 날카롭게 변하게 됩니다.

    C* = optimal cost

    A* 탐색은 모든 노드를 f(n) < C* 가 되도록 expand 합니다.

    A* 탐색은 C*보다 작거나 같은 f(n)의 노드 수가 유한하다면 Complete 합니다.

    Optimal 알고리즘 중에서는 A* 알고리즘이 가장 빠릅니다. f(n) < C* 인 노드를 모두 탐색하기 때문에 Optimal 합니다. f(n) < C* 이여도 탐색하지 않는다면 빠르기는 더 빠르겠지만 Optimal 을 보장할 수는 없습니다.

     

    Computational Complexities of A* Search

    h* = 실제 cost

     

    Absolute error A = h* - h

    Relative error e = (h* - h) / h*

     

    Time complexity = O(b ^ A), O(b ^ ed)

    Effective branching factor : b ^ e    실제적인 branching factor 로 시간복잡도를 계산 할 때 더 유의미한 결과를 낸다하여 붙여진 이름입니다.

     

    Space complexity = O(b ^ m) 으로, 시간복잡도에 비하면 매우 나쁜 수준입니다.

     

    '인공지능' 카테고리의 다른 글

    AI heuristic sub problem, Learning  (0) 2020.10.17
    Heuristic 과 Relaxed problem  (0) 2020.10.17
    Iterative deepening DFS, Bidirectional Search  (0) 2020.10.17
    AI DFS, Depth-Limited-Search  (0) 2020.10.17
    Uninformed search, BFS, UCS  (0) 2020.10.16

    댓글

Designed by Tistory.