2022. 3. 14. 22:00ㆍMajor`/인공지능
Agent (Rational Agent)
1. 자신이 놓인 환경에 대해서 "센서"를 통해서 환경에 대한 상태를 "추정" (Sensor Value 획득)
- 환경이 현재 어떤 상태인가
- 그 환경 속에서 나는 어떤 상태인가
2. Effectors를 통해서 해당 환경속에서 에이전트는 행동을 수행한다
- 어떤 행동을 수행할 것인지에 대해서 "4가지 에이전트" 유형이 존재한다
- Simple-Reflex
- Model-Based Reflex
- Goal-Based
- Utility-Based
>> 에어전트는 1, 2를 환경 내에서 계속 반복한다
자율적인 존재 : "Atonomous Entity"
- 에이전트는 행동을 "자신이 스스로 결정"해야 한다
- 자신이 놓여진 환경에서 자신이 수행할 수 있는 행동은 무엇이 있고 그 중에 최적의 행동은 무엇인가
물음표가 "에이전트가 행동을 결정하는 방식"이다
만약 본인이 스스로 행동을 결정하지 않고 타인에 의해서 행동이 결정(리모컨으로 결정?)되는 에이전트라면 그것은 에이전트가 아니다
에이전트는 반드시 자신이 놓여진 환경내에서 "스스로 행동을 결정"해야 한다
Agent Function
인공지능을 설계할때는 "그 인공지능이 어떤 기능을 할 수 있나"를 먼저 명세
"Mapping 'perceive sequence' to Actions"
P* → A
지금 인식한 정보뿐만 아니라 과거 ~> 현재까지 인식한 정보들(Percept Sequence)을 바탕으로 수행할 행동을 Mapping한다
- 물론 그 환경에서 에이전트가 수행할 수 있는 행동은 하나가 아니라 여러가지이다
- 이 때 과거~현재까지 인식한 모든 정보들을 바탕으로 여러가지 행동들 중에서 하나의 행동을 결정해서 수행한다
- 이것이 "Agent Function"의 기능이다
이렇게 Mapping되는 과정은 프로그램에 의해서 결정된다
Example) Vacuum-Cleaner World(Environment)
Vecuum-Cleaner World에는 총 2가지 환경이 존재한다 :: 깨끗한? 더러운?
- 환경에 따라 Agent는 다른 행동을 수행한다
- 당연히 깨끗하면 그냥 지나가고 더러우면 청소를 할것이다
▶ Percepts
위치(A, B) & 해당 위치의 상태(clean, dirty)
- [A, dirty]
- [A, clean]
- [B, dirty]
- [B, clean]
>> 현실적인 AI에서 "인식 단계" 자체만으로 굉장히 힘든 과정이다
▶ Actions
환경에 따라 수행할 수 있는 행동들 (Left, Right, Suck, No-Op)
- LeftMove
- RightMove
- Suck
- No Operation
Percept Sequence | Action |
[A, clean] | Right |
[A, dirty] | Suck |
[B, clean] | Left |
[B, dirty] | Suck |
[A, clean], [A, clean] | Right |
[A, clean], [A, dirty] | Suck |
[A, dirty], [B, clean] | Left |
.... | ..... |
function reflex-vacuum-agent([location, status]) returns an action
if status = dirty then return Suck
else if location = A then return Right
else if location = B then return Left
Rational Agent
- 현재까지 누적된 인식 정보들을 바탕으로, 성능을 최대화할 수 있을 것으로 예측되는 행동들을 선택할 줄 아는 Agent
- 에이전트가 보유한 "성능 척도 값"에 의해서 가장 높은 행동을 수행
≒ Intelligent Agent (지능형 에이전트)
PEAS
- Rational Agent를 디자인할 때, 반드시 작업 환경(Task Environment)을 명세해줘야 한다
Task Environment : 이 Agent가 어떤 환경에서 무슨 작업을 하느냐
▶ Performance Measure - Sensor를 통해서 인식한 정보들을 Actuators로 수행을 할 때 이 Agent가 어느정도로 성능을 보여줄 수 있는가?
- 당연히 Sensor를 통해서 얼마나 많은 상태들을 추정할 수 있고 Agent내부에서 행동을 결정할 때 얼마나 최적의 행동을 결정할 수 있는지, 그리고 Actuator를 통해서 결정된 행동을 정확하게 수행할 수 있는지에 따라서 각 에이전트에게 이 성능척도를 대입했을 때 값이 서로 다를 수 있다
▶ Environment - 작업 환경
▶ Actuators - 행동수행의 주체
▶ Sensors - 센서
- Sensor에 의해서 에이전트의 능력이 달라질 수 있다
Agent / PEAS | Performance Measure (Agent 외적 명세) |
Environment (Agent 외적 명세) |
Actuators (Agent 내적 명세) |
Sensors (Agent 내적 명세) |
택시 드라이버 | - safe - fast - legal - comfortable ..... |
- roads - traffic - police - pedestrians - customers - weather ....... |
- accelerator - brake - signal - horn - display ...... |
- cameras - radar - GPS - engine sensors - touchscreen ..... |
의학 진단 시스템 | - Healthy patients - reduced costs ..... |
- patient - hospital - staff ..... |
- tests - diagnoses - treatments ...... |
- touchscreen - voice entry of symptoms and findings ...... |
대화형 영어 튜터 | - Student's score on test ...... |
- set of students - testing agency ..... |
- display of exercises - feedbacks - speech ..... |
- keyboard - voice .... |
자율 주행 자동차 | - safe - fast - legal - comfortable ..... |
- roads - traffic - police - pedestrians - customers - weather ....... |
- accelerator - brake - signal - horn - display ...... |
- cameras - radar - GPS - engine sensors - touchscreen ..... |
환경 특성
1) 완전 관측 vs 부분 관측 → Fully Observable vs Partially Observable
완전 관측
매순간 환경 전체를 인식할 수 있다
- 바둑 agent : 바둑 Agent는 바둑판 전체를 환경으로 인식하고 수행한다
부분 관측 → 대부분의 현실
매순간 일부분의 환경만 인식할 수 있다
- 자율 주행 Agent : 세상 모든 환경을 당연히 한번에 인식할 수 없다
2) 결정 vs 비결정 → Deterministic vs Stochastic
결정
행동에 대한 환경의 변화가 항상 대응된다
- 동일한 환경에 대해서 동일한 행동을 수행하면 환경의 변화는 항상 동일하다
▶ 행동에 대한 환경의 변화를 예측 할 수 있다
- 바둑 Agent
- 매 순간 바둑판에 돌을 놓는 것은 그 돌을 놓음으로써 주변의 돌이 지혼자 움직이는 것이 아니기 때문에 매순간 바둑판에 돌을 놓는 행위는 그에 따른 환경의 변화가 항상 동일하다고 볼 수 있다
비결정 (확률적) → 대부분의 현실
행동에 대한 환경의 변화가 다를 수 있다 (어떤 조건에 의해서)
- 동일한 환경에 대해서 동일한 행동을 수행해도 환경의 변화가 다를 수 있다
▶ 행동에 대한 환경의 변화를 예측할 수 없다
- 로봇 Agent
- 로봇이 어떤 책상에서 컵을 든다고 하면 로봇은 그 컵을 들어 올릴 것이다
- 하지만 이때 로봇이 컵을 든 행동에 대한 결과는 2가지로 나타날 수 있을 것이다
- 컵을 잘 들었다
- 컵을 들다가 놓쳤다
- 1)의 경우에는 환경의 변화가 "책상에서 컵을 들어올렸다"이다
- 2)의 경우에는 환경의 변화가 "책상에서 컵을 들어올리다가 떨어뜨렸다"
- 이처럼 동일한 행동을 수행해도 그에 대한 환경의 변화가 다르게 나타날 수 있다
3) 정적 vs 동적 → Static vs Dynamic
정적
Action을 하지 않으면 환경은 변하지 않는다
- 바둑 Agent : "바둑판에" 바둑알을 놓지 않으면 "바둑판"이라는 환경은 절대 변하지 않는다
동적 → 대부분의 현실
Action을 하지 않음에도 불구하고 환경에 변화가 있다
- 자율주행 Agent : 주행을 하지 않음에도 주변 환경은 계속해서 변화한다 (멀티 Agent : 보행자, 다른 차들, ...)
>> 하지만 어떠한 Action을 하게 되면 환경은 반드시 변하게 된다
4) 이산적 vs 연속적 → Discrete vs Continuous
이산적
수치나 벡터의 변화로 나타낼 수 있는 경우
- 환경의 경우의 수가 유한한 경우
- 격자판 내에서 이동(공간 이산화) : (2,4) → (3,5) 이동처럼 변화를 명확하게 표현할 수 있다
연속적 → 대부분의 현실
연속적인 실수값으로 이루어져서 변화가 무한대로 나타나는 경우
- 환경의 경우의 수가 무한한 경우
- 드론 공중 비행, 로봇 팔 제어 : 실세계에서 드론이 공중 비행하는 것은 수치화가 아니라 그냥 시공간적으로 연속적으로 변화하는 것이다
5) 단편적 vs 순차적 → Episodic vs Sequential
단편적
현재 결정한 행동이 나중의 결정에 영향을 미치지 않는다
- 각 순간이 독립적
- 양궁 Agent : 과거에 3점을 맞췄으면 심리적으로는 영향을 미치겠지만 이러한 요소를 제외하고 오직 결정만 보게되면 각각의 활쏘기는 서로 연관이 되어있지 않다
순차적 → 대부분의 현실
현재 결정한 행동이 나중의 결정에 영향을 미친다
- 각 순간들이 연관적
- 퍼블 맞추기, 큐브 : 내가 지금 내린 결정이 당연히 나중에 영향을 미치게 되고, 현재 결정이 올바르지 않는다면 미래에 결국 Backtracking을 하게 된다
- N-Queen도 대표적인 순차적 환경이다
6) 싱글 에이전트 vs 멀티 에이전트
싱글 에이전트
해당 환경에서 "나"(Agent) 하나만 존재
- 따라서 "나"만 환경을 변화시킬 수 있다
- 8-퍼즐 풀기, 조리 로봇 Agent, ...
멀티 에이전트 → 대부분의 현실
해당 환경에서 "나"(Agent)말고 다른 Agent도 존재
- "나(Agent)" 뿐만 아니라 "다른 Agent"들도 환경을 변화시킬 수 있다
※ 다른 Agent와 "나(Agent)"와의 관계
▶ 경쟁
- 에이전트끼리 경쟁
- 바둑, 체스, ... (제로섬 게임)
▶ 협동
- 에이전트끼리 협력
- 단체 미로 찾기?
▶ 경쟁 + 협동
- 에이전트끼리 경쟁 + 협력
- 팀으로 이루어진 게임 : 축구, 농구, ...
Example)
8-puzzle | Go 바둑 | 윷놀이 | Cooking Robot | Taxi Driving | |
Observable? | Yes | Yes | Yes | No | No |
Deterministic? | Yes | Yes | No | No | No |
Static? | Yes | Yes | Yes | Semi | No |
Discrete? | Yes | Yes | Yes | No | No |
Episodic? | No | No | No | No | No |
Single-Agent? | Yes | No | No | Yes | No |
에이전트 유형
- 현재 환경 상태에 맞도록 가장 적합한 행동을 결정하는 행동 결정 방식에 따라서 유형이 나누어진다
- 여기 존재하는 유형들은 "Learning"이라는 개념이 없다
- 모든 유형의 에이전트들은 "Learning Agent"로 변경이 가능하다
>> 에이전트 설계 고려사항 : 유연성 / 효율성(시간, 자원 ↓) / ....
- 유연성 : 사람이 미리 예측하지 못하는 상황에 대한 에어전트의 대처 능력
- 효율성 : 동적으로 변하는 환경에 대해서 에이전트가 얼마나 빠르게 행동을 결정하는가
1) 단순 반응형 에이전트 (Simple Reflex Agent)
Reflex "O">> 에이전트가 외부 환경에 대한 변화를 "센서"로 인식하게 되면 즉각적으로 행동을 결정
1. "sensor"를 통해서 현재 상태를 추정
- 환경을 정확하게 인식하는 센서는 존재하지 않기 때문에 환경을 센서로 "추정/추측(Estimate)" 한다
- 센서 데이터는 binary data로 닿고/안닿고를 파악하고 이 값은 100% 신뢰하기 어렵다
- 따라서, 센서를 감지하는 것은 "어떤 상태인지"와는 다른 개념이다
- 이 때문에 상태를 '추정한다' 라고 설명한다
2. 인식한 환경에 대해서 가장 적합한 행동을 결정하고 Effectors를 통해서 수행
→ 이 때, "Condition-Action Rules"를 통해서 가장 적합한 행동을 결정한다
- "If Condition then Action"
- "Condition-Action Rules"는 현재 환경의 상태가 내부적으로 정의된 조건에 들어맞는다면 해당 조건에 대한 행동을 수행한다
장점
▶ 속도가 굉장히 빠르다
- 조건 반사적으로 어떤 조건이 들어오면 "Condition-Action Rules"를 통해서 행동을 결정하기 때문에 속도가 빠르다
- 외부에서 보면 Agent가 스스로 결정하는 것 처럼 보이지만, 실제로 내부를 들여다보면 Agent가 스스로 결정하는 것이 아니라 "Condition-Action Rules"에 의해 이미 조건에 대한 행동이 결정되어 있고 Agent는 그 결정을 따르는 것이다
단점
▶ Agent 스스로의 자아 의식이 존재하지 않는다
- 계획도 없고, 목표도 없고 오로지 "Condition-Action Rules"에 의해 행동한다
▶ 동일 상황에 대해서 항상 동일한 행동을 수행한다
- "Condition-Action Rules"에 의해 동일한 상황(조건)에 대해서 이미 정해놓은 action이 있기 때문
- 이것은 장점이 될 수도 있고 단점이 될 수도 있다
▶ 설계자/개발자가 올바른 "Condition-Action Rules"을 미리 Agent에게 제공해줘야 한다
- 만약 Condition-Action Rules에 대해서 정의된 Percept가 들어오지 않는다면(예상 X) Agent는 상태 추정자체를 하지 못하기 때문에 행동 또한 결정하지 못한다
▶ 실행 중 상황 변화에 대처할 유연성이 떨어진다
▶ 과거 경험과 미래 예측에 대한 고려가 부족하다
2) 모델-기반 반응형 에이전트 (Model-Based Reflex Agent)
Reflex "O" >> 에이전트가 외부 환경에 대한 변화를 "센서"로 인식하게 되면 즉각적으로 행동을 결정
- 하지만 Simple Reflex와는 다르게 "추가적인 정보"도 함께 고려해서 센서를 통해서 환경 상태를 추정한다
1. "sensor"를 통해서 현재 상태를 추정
Simple Reflex와는 다르게 그냥 인식된 정보를 그대로 사용하는 것이 아니라 추가적인 지식(Model)을 조합해서 최종적으로 현재 상태를 추정한다
Models
1) State
현재 인식할때의 시간을 T라고 한다면
(T-1)때 Agent가 추정/추측한 상태를 여기서 State라고 한다
- 바로 직전에 추정한 상태
2) How the world evolves (World Model)
환경에 어떻게 바뀌어가고 있느냐에 대한 지식
3) What my actions do (Action Model)
현재 상태에서 자신이 수행할 수 있는 행동들이 무엇이 있느냐에 대해서 스스로 인식하고 있는 지식
- 각 행동에 대한 Precondition과 Effect를 알고 있고 있기 때문에 해당 행동에 대한 결과를 예측할 수 있다
- Simple Reflex는 수행 가능한 행동들에 대해서 자각하지 못하고 단순히 Condition-Action Rules에 대해서 행동 결정
- Model-Based Reflex에서는 수행 가능한 행동들에 대해서 자각하고 그에 따라서 여러 Model들을 통합해서 현재 상태를 추정한다
>> 부족한 Sensor 측정치에 대해서 3가지 Model을 통해서 현재 상태를 더 정확하게 추정할 수 있다
2. 인식한 환경에 대해서 가장 적합한 행동을 결정하고 Effectors를 통해서 수행
→ 이 때, "Condition-Action Rules"를 통해서 가장 적합한 행동을 결정한다
- "If Condition then Action"
- "Condition-Action Rules"는 현재 환경의 상태가 내부적으로 정의된 조건에 들어맞는다면 해당 조건에 대한 행동을 수행한다
장점
▶ Simple Reflex보다 더 정확하게 상태를 추정할 수 있고 Condition-Action Rules에 의해서 행동을 빠르게 결정할 수 있다
단점
▶ 실행 중 상황 변화에 대처할 유연성이 떨어진다
>> Simple Reflex & Model-Base Reflex는 설계자에 의해 이미 "Conditon-Action Rules"가 결정되어 있다
3) 목표 기반 에이전트 (Goal-Based Agent)
Reflex "X" >> "센서"에 의해서 즉각적인 행동 결정이 아니라 "센서"로 인식한 환경 상태에 대해서 내가 수행할 수 있는 행동들에 대한 결과를 예측하고 그 결과 중에서 Goal에 더 가까운 행동을 결정한다
1. "sensor"를 통해서 현재 상태를 추정
Simple Reflex와는 다르게 그냥 인식된 정보를 그대로 사용하는 것이 아니라 추가적인 지식(Model)을 조합해서 최종적으로 현재 상태를 추정한다
Models
1) State
현재 인식할때의 시간을 T라고 한다면
(T-1)때 Agent가 추정/추측한 상태를 여기서 State라고 한다
- 바로 직전에 추정한 상태
2) How the world evolves (World Model)
환경에 어떻게 바뀌어가고 있느냐에 대한 지식
3) What my actions do (Action Model)
현재 상태에서 자신이 수행할 수 있는 행동들이 무엇이 있느냐에 대해서 스스로 인식하고 있는 지식
- 각 행동에 대한 Precondition과 Effect를 알고 있고 있기 때문에 해당 행동에 대한 결과를 예측할 수 있다
- Simple Reflex는 수행 가능한 행동들에 대해서 자각하지 못하고 단순히 Condition-Action Rules에 대해서 행동 결정
- Model-Based Reflex에서는 수행 가능한 행동들에 대해서 자각하고 그에 따라서 여러 Model들을 통합해서 현재 상태를 추정한다
>> 부족한 Sensor 측정치에 대해서 3가지 Model을 통해서 현재 상태를 더 정확하게 추정할 수 있다
2. 현재 상태에서 수행 가능한 행동들에 대한 결과를 예측한다
World Model & Action Model을 통해서 각 행동의 결과 예측
- 어떤 행동을 최종적으로 결정할 것인가에 대해서 평가
3. 2)에서 예측한 결과에 대해서 어느 행동이 Goal에 더 근접한지 판단하고 Goal에 더 근접한 행동을 결정한다
- Agent가 실행되기 전에 Agent한테 미리 목표를 제공한다
- 따라서 Agent는 항상 목표에 도달하기 위해서 행동을 결정
장점
▶ 목표 지향적인 행위가 가능하다
▶ 높은 자율성 & 유연석
단점
▶ 복잡한 행동 결정 과정
▶ 느린 반응 & 낮은 효율성
※ Reflex & Goal-Based
2가지 Reflex Agent의 경우에는 Agent는 최종 목표를 알지 못하고 그 순간에 Condition-Action Rules에 의해서 조건반사적으로 행동을 결정한다
Goal-Based의 경우에 Agent가 미리 최종 목표를 인식하고 있고 매 순간 해당 목표에 도달하기 위해서 행동을 결정한다
※ Model-Based Reflex & Goal-Based
Model-Based Reflex에서 World Model/Action Model은 단순히 현재 상태를 추정하기 위해서 추가적으로 사용한다
Goal-Based에서 World Model/Action Model은 현재 상태를 추정할 때도 사용하고 그 상태에서 수행가능한 행동들 중에서 어떤 행동을 결정할지에 대해서 평가할 때도 사용한다
4) 유틸리티-기반 에이전트 (Utility-Based Agent)
Reflex "X" >> Goal-Based처럼 목표만을 쫓는게 아니고 "센서"로 인식한 환경 상태에 대해서 내가 수행하는 행동들이 얼마나 이득이 있는지 계산하고 이득을 최대한으로 얻을 수 있는 행동을 최종적으로 결정한다
1. "sensor"를 통해서 현재 상태를 추정
Simple Reflex와는 다르게 그냥 인식된 정보를 그대로 사용하는 것이 아니라 추가적인 지식(Model)을 조합해서 최종적으로 현재 상태를 추정한다
Models
1) State
현재 인식할때의 시간을 T라고 한다면
(T-1)때 Agent가 추정/추측한 상태를 여기서 State라고 한다
- 바로 직전에 추정한 상태
2) How the world evolves (World Model)
환경에 어떻게 바뀌어가고 있느냐에 대한 지식
3) What my actions do (Action Model)
현재 상태에서 자신이 수행할 수 있는 행동들이 무엇이 있느냐에 대해서 스스로 인식하고 있는 지식
- 각 행동에 대한 Precondition과 Effect를 알고 있고 있기 때문에 해당 행동에 대한 결과를 예측할 수 있다
- Simple Reflex는 수행 가능한 행동들에 대해서 자각하지 못하고 단순히 Condition-Action Rules에 대해서 행동 결정
- Model-Based Reflex에서는 수행 가능한 행동들에 대해서 자각하고 그에 따라서 여러 Model들을 통합해서 현재 상태를 추정한다
>> 부족한 Sensor 측정치에 대해서 3가지 Model을 통해서 현재 상태를 더 정확하게 추정할 수 있다
2. 현재 상태에서 수행 가능한 행동들에 대한 결과를 예측한다
World Model & Action Model을 통해서 각 행동의 결과 예측
- 어떤 행동을 최종적으로 결정할 것인가에 대해서 평가
3. Utility값을 통해서 2)에서 예측한 결과들에 대한 가치/손익/행동을 계산한다
4. 3)에서 계산한 가치/손익/행동 중 가장 value가 좋은 행동을 최종적으로 결정한다
※ Goal vs Utility
Goal은 넓게 보면 2가지로 나눌 수 있다 >> 목표 달성 / 목표 미달성
Utility는 달성 / 미달성의 개념이 아니라 상대적으로 무엇이 더 좋냐의 개념이다
- Utility Function을 통해서 예측된 결과에 대한 Utility Value를 평가한다
※ Utility-Based Agent 특징
▶ 높은 유틸리티 값을 얻을 수 있는 행동을 선택
▶ 합리적인 의사결정(Rational Decisions)을 요구
▶ 양질의 행위(High-Quality Behavior)을 요구