agent = architecture + program
학교 건물을 세운다고 가정하면 건물의 모양은 agent, 설계 방식은 architecture,
table-driven-agnet
경우 별로 table을 만들어 놓고 agent가 percepts를 받아들어 table에 정의된 방법대로 행동하도록 만듬 하지만 모든 경우에 대해서 이를 대처할 수는 없다. 디자이너가 모든 경우의 수를 파악하지 못하거나 받아들인 정보가 너무 많은것과 같은 문제점이 있을 수 있다.
그럼에도 불구하고 위의 프로그램 방식은 잘 작동하는 편이다. 오히려 과제는 "어떻게 하면 작은 크기의 프로그램 내부에서도 어떻게 합리적으로 작동할지" 이다. 그래서 아래와 같은 5가지의 agent programs를 만들어 사용한다.
agent programs는 same skeleton을 가진다.
과거에 있었던 정보는 무시하고 현재의 정보만을 가지고 작동하는 프로그램이다. 그래서 이 프로그램을 condition-action rule
이라고 부르기도 한다. (* 다른 말로는 situation-action rules, productions, or if-then rules)
하지만 단점으로는 제한적인 지능을 가진다는 점이다.
"how the world works"에 대한 지식이 필요하다.
1. 어떻게 세상이 진보하였는지에 대한 정보
2. agnet의 행동이 세상에 어떤 영향력을 끼치었는지에 대한 정보
percept 자체에 따라 어떤 state인지 파악하기 힘든 상황이 올 수도 있고(매우 특수한 상황) = 즉 현재 세상은 어떠한지에 대해서는 알지 못한다.
Model-based agents의 문제를 해결하기 위해서 Goal-based agnets가 탄생하였다. Goal-based agnets는 원하는 목표가 미리 설정되어 있고 해당 목표를 최대값으로 이루기 위해서 어떤한 행동을 취해야 할지에 주안점이 맞추어져 있다.
Goal-based agnets의 대표적인 것이 Search(탐색) and Planning(계획) 문제이다.
이때 AI에서 대표적인 것이 Informed (Heuristic) Search Strategies : 자기스스로 문제에 대해 문제점을 발견하고 해결책을 찾아내는 방법. 휴리스틱을 얼마나 잘 구현하였는가로 성공률의 차이가 크게 차이가 난다.
하지만 목표만을 가진 agents로는 매 상황에서 최선의 선택을 할 수가 없다. 그래서 Goal-based agents에다가 Utility 를 추가하여서 제작하였다. 바로 utility(유용성)을 최대화 할 수 있는 방향으로 설계하는 것이다.
앞의 기본적인 네개의 structure이 있고 그 네개는 아래 그림의 Problem generator 안에 들어가 있음
환경의 percept가 들어오면 하나의 percept 만으로 평가하는 것은 쉽지 않음. 모든 상태에 똑같지 않기 때문에 과거와 현재의 정보를 종합적으로 평가하여서 실재 문제와 연결(Learning)시키겠다.