머신러닝의 탐색과 최적화에 대한 내용입니다.
🔍 탐색(Search)
문제의 해(Solution)
가 될 수 있는 것들의 집합을 공간으로 간주하며,
문제에 대한 최적의 해를 찾기 위해 공간을 체계적으로 찾아보는 것
💡 해(Solution)
일련의 동작으로 구성되거나 하나의 상태로 구성된다.
상태(State)
특정 시점에 문제의 세계가 처해 있는 모습이다.
세계(World)
문제에 포함된 대상들과 이들의 상황을 포괄적으로 지칭
상태 공간(State space)
문제 해결 과정에서 초기 상태로부터 도달할 수 있는 모든 상태들의 집합을 의미.
문제의 해가 될 가능성이 있는 모든 상태들의 집합이다.
상태 공간 그래프(State space Graph)
상태공간에서 각 행동에 따른 상태의 변화를 나타낸 그래프이다.
상태
행동
다음은 탐색의 종류들이다.
💡 어떤 문제에 대한 해를 찾기 위해 모든 가능한 상태나 선택지를 탐색하는 방법.
✅ 특징
백 트래킹 (Back-Tracking)
❌ 단점
따라서 간단한 문제에는 유용하게 사용이 되지만, 복잡한 문제에 대해서는 옳지 않은 방법이기에 다른 탐색 방법을 고려해야함.
💡 초기 노드에서 시작하여 인접한 모든 자식 노드를 탐색하는 방법.
✅ 특징
Queue
) 자료구조를 사용해 구현된다.❌ 단점
복잡한 문제에 대해서 실행 기간과 메모리 사용량이 너무 크기 때문에 사용이 제한되며,
최단 경로나 최단 거리를 구해야 할 때 유용한 알고리즘이다.
💡 IDDFS ( Iterative Deepening Depth-First Search )
- 깊이 우선 탐색의 장점을 살리면서 단점을 보완한 탐색 알고리즘이다.
동작 방식
✅ 특징
💡 시작 노드와 목표 노드에서 동시에 탐색을 시작하며 두 노드가 만나는 시점에 탐색을 종료한다.
✅ 특징
맹목적 탐색 방법들을 비교해보면 이와 같다.
깊이 우선 탐색(DFS)
✅ 메모리 공간 사용 효율적
❌ 최단 경로 해 탐색 보장 불가.
너비 우선 탐색(BFS)
❌ 메모리 공간 사용 비효율적
✅ 최단 경로 해 탐색 보장.
반복적 깊이심화 탐색(IDDFS)
✅ 최단 경로 해 보장.
✅ 메모리 공간 사용 효율적.
✅ 맹목적 탐색의 필요 시 우선 적용 고려 대상이다.
💡 최적의 해를 찾기 위해 가능한 경우의 수를 전부 탐색하는 것이 아닌, 문제의 도메인 지식을 이용해 최적의 해를 찾기 위한 탐색 전략을 수립하는 것이다.
탐색의 종류로 다음과 같다.
✅ 특징
💡 경로 탐색에서 현재 상태에서 목표 상태까지 가는 경로를 찾기 위해 우선순위 큐를 사용하는 탐색 알고리즘이다.
✅ 특징
💡 휴리스틱에 의한 평가값이 우수한 일정 개수의 확장 가능한 노드만을 메모리에 관리하며 최상 우선 탐색을 적용하는 알고리즘.
💡 너비 우선 탐색과 최상 우선 탐색의 장점을 모두 취하면서도 비용이 가장 적게 드는 경로를 찾는 알고리즘이다.
✅ 특징
즉, 시작점에서부터 목표점까지의 경로가 트리를 형성한다면, A* 알고리즘은 시작점에서 목표점까지의 경로 중에서 최단 경로를 찾기 위해 시작점에서 각 노드까지의 실제 비용과 목표점까지의 추정 비용을 더한 값을 기준으로 우선순위 큐에 저장해 탐색한다.
🎮 게임에서 가능한 모든 상태를 탐색해 가장 좋은 결정을 내리는 알고리즘이다.
보통 상대방이 취할 수 있는 모든 수를 미리 예측하고, 각각의 수에 대해 가능한 모든 게임 상태를 예측하며 이러한 상태들은 일반적으로 게임 트리라고 불리는 트리 구조를 형성한다.
💡 게임 트리란?
→ 상대가 있는 게임에서 자신과 상대방의 가능한 게임 상태를 나타낸 트리
대표적인 탐색 종류
Mini-Max
알고리즘턴 기반 게임에서 보통 사용된다.
작동 방식
이 과정을 미니맥스 알고리즘이라고 부른다.
✅ 특징
미니맥스 알고리즘은 게임 이론에서 중요하게 여기며, 미니맥스 알고리즘을 기반으로 한 많은 다른 알고리즘이 개발되어왔다.
💡 미니맥스 알고리즘과 같이, 게임을 플래이하며 가장 높은 수를 찾는 방법 중 하나이다.
✅ 특징
💡 탐색 공간을 무작위 표본추출을 하며, 탐색트리를 확장해 가장 좋아 보이는 것을 선택하는 휴리스틱 탐색 방법이다.
4개 단계를 반복하며 시간이 허용하는 동안 트리 확장과 시뮬레이션을 한다.
💡 주어진 제약조건을 만족하는 조합 해(Combinatorial Solution)를 찾는 문제이다.
탐색 기반의 해결방법으로는
등이 있다.
✅ 특징
✅ 특징
💡 최적화란 ?
여러 가지 혀용되는 값들 중에서 주어진 기준을 가장 잘 만족하는 것을 선택하는 것이다. 최적화의 종류로는 조합 최적화와 함수 최적화가 있다.
조합 최적화의 종류
함수 최적화의 종류
목적함수(Objective Function
)
최소 또는 최대가 되도록 만들려는 함수이다.