본문 바로가기

[인공지능] 3주차: Task environment, Agent type

신호 처리와 기호 처리는 어떻게 구분하는가?

 

 

Rationality

자율적으로 행동하되 이 행동의 방향이 어디로 가야 하는가?: Rationality 또는 Intelligence

 

 

Task environment

설계 시 가장 먼저할 일: 내가 만들 Agent의 Task environment의 명세(specify)

= 이 Agent는 어떤 작업을 하고, 그 작업을 위한 환경은 어떤 것인가?

 

PEAS

Performance Measure

Environment

Actuators (행동을 위해 사용하는 신체 부위 = Effector)

Sensor

 

자율주행 자동차의 Sensor와 Actuator는 장비 간의 성능 격차가 존재한다.

성능 평가 기준은 무엇인가?

 

Performance Measure에 따라 지능을 판단한다

-> "얼마나 승객이 편안한가"가 기준이라면?

뭘 만들어야 하고, 뭘 평가할 것이고, ... 이런 부분이 엄밀해야 한다.

 

 

Environment Properties

Fully observable vs. Partially observable

관측 범위가 넓은가? 그 모든 세부사항을 관측할 수 있는가?

현실세계의 대부분은 Partially observable: 인간이 세균을 눈으로 관측할 수 있는가?

 

 

Deterministic vs. Stochastic

바둑은 돌을 어디에 둘 지 결정하는 것이지만

컵을 드는 행위는 결정의 여지가 없다.

 

 

Static vs. Dynamic

Static: 행동하면 바뀌고 하지 않으면 바뀐다. -> 행동과 행동 사이에 변화가 없다.

Dynamic: 행동하지 않아도 바뀐다.  -> 행동과 행동 사이에 변화가 있다.

 

바둑은 내가 돌을 두거나(나의 행동) 상대가 돌을 두거나(상대의 행동) 둘 중에 한 행동이 없으면 바둑판에 변화가 없다.

도로 위의 자율주행은 내 행동이 없더라도 변화무쌍한 도로의 상황이 존재한다.

-> Agent(나든 남이든) 이외에 다른 요인에 의해(정확히 특정할 수 없는 요인에 의해) 환경이 바뀌는 것

 

 

 

Discrete vs. Continuous

현실 세계의 대부분은 Continuous

드론이 좌표 상에서 틱틱틱 움직이는 건 우리 생각하는 정상적인 모습이 아니다 -> 연속적

 

환경의 경우의 수가 유한한가?(체스판) / 주변 환경들이 연속적인가?(자율차의 주변 환경 인식)

 

 

Episodic vs. Sequential

다음에 할 행동이 현재 상태에 종속적이고, 미래 상태에 영향을 주는가?

Ex) 큐브는 현재 모양에 따라 다음에 할 행동이 정해진다.

 

 

Single agent  vs. Multi agent

다른 Agent가 나와 협력관계인가, 그렇지 않은가?

 

Table 옮기기: 다른 Agent의 조건을 고려해야 내 행동을 결정할 수 있다

Ex) 다른 Agent가 오른쪽을 들면 나는 왼쪽을 들고, ...

 

십자말풀이(에이전트로 인지되는것이 1개, 푸는 사람) / 체스(에이전트로 인지되는것이 복수, 플레이어 2명)

 

Ex) Cooking robot

- Fully observable? Sensing하는 부분에 한계가 있다 -> No(Partially observable)

- Deterministic? 정해진 레시피대로 요리한다 -> No(Stochastic)

- Episodic? 현재 상태가 레시피 중 어느 부분인지에 따라 다음 행동이 결정된다 -> No(Sequential)

- Static? Agent가 행동하지 않으면 요리는 진행된 상태 그대로 No(Semi?)

- Discrete? 요리가 이산적..? -> No(Continuous)

- Single-agent? 혼자 요리함 -> Yes

 

 

Agent type

모든 환경을 고려한 다음 Agent type을 고려한다.

수 만가지가 있지만 의사 결정 구조(행동의 결정 방식)에 따라 다음의 네 가지가 대표적이다.

 

Simple Reflex Agent

환경이 있고, 그 환경을 Sensing한 후, 그에 맞게 Effector가 행동해 환경을 변화시킨다.

그리고 그 변화된 환경을 Sensing한 후, ...

 

<상태 추정>

① 센서로 감지: 현재 environment state를 알아낸다

② 상태 추정: 어떤 환경에 있는가?

센서 데이터는 Binary로 닿았다/안닿았다 수준이고 사실 이 값고 100% 신뢰하기는 어렵다.

센서로 감지하는 것(Low-level sensor data)과 어떤 상태인지 아는 것은 거리가 있다.

-> 현재 상태를 '추정'한다. (하기는 하지만 막연함)

---------------------------------------------------------------------------------------------------

<행동 결정>

③ 행동 결정

Condition-Action rules: '이 조건을 충족하면 이 행동을 하라'는 규칙

이거도 거의 Binary pattern

들어올 수 있는 sensor data와 그에 따른 행동을 미리 정의해둠

Ex) 배터리가 있다/없다: 없다 -> 충전소로 간다

 

행동 결정: Sensor data(Binary data)와 Condition-Action rules(Binary pattern)이 얼마나 match되는가?

Match되는 rule이 없으면 가만히 있음

-> 성능은 rule에 질에 의해 결정 : Rule에 종속적

과거 상태가 기록되어 있지 않으므로 현재 지각에 의존해 행동을 선택한다.

00

 

선을 기준으로 위는 상태 추정, 아래는 행동 결정(4가지 Agent type 공통)

 

 

Model-based Reflex Agent

Model로 상태를 추정하고 Condition-action rule에 의해 행동을 결정한다.

여기서 model은 '지식'을 의미

 

<내부 상태>
State: 현재 상태 저장(직전 상태 기록: 현재가 지나고 다음 Sensing이 되면 과거 상태가 됨)

World model(=Environment model):환경에 대한 지식

-> 어떤 행동으로 인해 환경이 어떻게 변했는가)

Action model: 행동에 대한 지식

-> 내가 할 수 있는 행동에 무엇이 있고 조건은 무엇인가, 그 행동이 환경에 미치는 영향은 무엇인가

Ex) '걷는다'는 행동은 '장애물이 없다'는 조건이 있어야 할 수 있음

 

단, Sensing data에 +α(=state, world model, action model)를 해서 상태를 추정

State는 다음 상태에서는 과거 상태가 됨

-> State는 감지된 상태와 다른 별도의 내부상태  정보

 

센서를 통한 추정에 현재 상태, 주변 환경의 변화, 행동 모델을 통해 종합적으로 상태 추정이 이루어진다.

이렇게 추정된 상태는 다시 'State'에 저장한다.

 

환경을 sensing하면 그 상태를 'State'에 저장해 두고,

과거의 상태(이전의 State 값)와 Environment model, Action model에 의해 상태를 추정하고

Condition-action rule에 의해 행동을 결정한다.

행동을 바꾸려면 지식(model)을 바꾸거나 Condition-action rule을 바꾸면 됨

 

 

Goal-Based Agent

좀 느림

Model-based reflex agent와 같지만 행동의 결과를 예측하고,

Condition-action rule이 아닌 Goal에 의해 행동을 결정한다는 점이 다르다.

 

"결론적으로 달성해야 하는 목표(goal)이 무엇인가?"

 

Ex) 로봇이 내 손에 콜라를 주려면?

$Goal$: 나에게 콜라를 준다

로봇이 냉장고로 이동

냉장고에서 콜라를 꺼냄

냉장고 문을 닫음

나에게 콜라캔을 줌

- 이 Sequence를 수행해야 내 손에 콜라가 들어옴(이 사이에 많은 환경 변화가 일어남)

Goal을 달성하기까지의 행동은 로봇이 스스로 결정, 인간은 목표만 부여한다

-> 주어진 목표를 달성하기 위한 Sequence는 상태 추정에 사용한 지식(Model들)을 이용해 계획을 세움

 

 

상태 추정이 끝나도 그 상태에 match할 rule(Condition-action rule)이 없다.

-> 내 행동의 결과를 예측해서 목표 달성에 가까워 지는쪽으로 결정한다.

 

'이 행동을 하려면 이 조건이 충족되어야 한다'는 지식(Precondition)으로 주어졌으므로

이 Precondition에 따라 수행가능한 행동('행동 후보')을 설정함

 

$A$라는 행동을 한다면? $B$라는 행동을 한다면? 가정을 세움 (여기서 $A$, $B$는 Precondition에 의해 설정된 행동 후보)

-> 어떤 행동에 대한 결과는 이미 지식(Action model)로 주어졌기 때문에 가능

 

어떤 행동의 결과가 goal에 가까운가?

-> 바로 달성이 되는 게 물론 최선이나 그런 경우는 잘 없음

-> goal 달성에 가까워지게 하는 행동을 결정한다.

-> 현재 상태가 goal에 맞는 상태가 되도록 환경을 변화시키는 행동을 한다.

 

유연하게 결정 -> 자율성도 높다

대신 시간이 오래 걸리고 복잡해짐

아직까지 대부분은 기호 처리 방식임

 

 

Utility-Based Agent

목표 기반과 구조가 흡사함

 

Utility: 가치, 손익, 행복, 효용?  / 일종의 평가 기준

Goal처럼 달성/미달성이 아니라 효용의 크기를 계산하는 것

상태 $s_1$을 주면 효용이 얼마고 상태 $s_2$를 주면 효용이 얼마인지 측정

'Goal에 얼마나 가까운가?'가 아닌 '효용이 얼마나 높은가?'가 기준

 

Model을 상태 추정에만 쓰는 게 아니라 현재 수행가능한 행동을 판별할 때도 씀

그리고 마찬가지로 행동을 한다면? 이라는 가정을 하고 그에 대한 결과를 예측

까지는 목표 기반이랑 같음

 

그 다음 목표와 가까워지는 데에 도움이 되는 행동을 선택하는 게 아니라,

앞에서 예측한 결과에 대해 각각의 결과 상태의 효용을 계산해 효용이 가장 큰 행동을 선택함

 

3줄 요약)

상태 추정 및 수행가능한 행동 판별

수행가능한 행동을 했을 때의 결과 예측

예측한 결과에 대한 Utility 계산 후 Utility가 가장 큰 행동 선택(Utility 평가 기준이 있다)