앎을 경계하기

Machine Learning/Reinforcement Learning

Shallow Minded - Specification gaming: the flip side of AI ingenuity

양갱맨 2020. 9. 4. 16:22

제목 : Specification gaming: the flip side of AI ingenuity

날짜 : 2020년 4월 21일

URL : deepmind.com/blog/article/Specification-gaming-the-flip-side-of-AI-ingenuity

 

Specification gaming: the flip side of AI ingenuity

Specification gaming is a behaviour that satisfies the literal specification of an objective without achieving the intended outcome. We have all had experiences with specification gaming, even if not by this name. Readers may have heard the myth of King Mi

deepmind.com


Specification gaming은 의도한 결과를 달성하지 않고 목표의 말 그대로 specification을 충족하는 행동이다.
꼭 specification gaming이라는 이름이 아니더라도 모두 이것에 대해 경험한 적이 있다.

왕이 어떠한 것에 손을 대면 모두 황금으로 변하는 마이다스 왕 신화에 대해 들어봤을 것이다.
실제에서 숙제를 잘 한 것에 대한 보상을 받을 때 학생이 다른 학생의 답을 베낄수 있기 때문에 과제의 specification의 허점을 알 수 있다.

→ specification gaming은 특정 방법을 통해 보상을 얻어내지 않고 새로운 방법으로 같거나 더 나은 보상을 얻어내는 것을 말한다.


이 문제는 인공에이전트 디자인에서도 발생한다.

예를 들어 강화학습 에이전트는 사람이 예상하는 task를 수행하지 않고 많은 보상을 받는 숏컷을 발견할 수 있다. 이러한 행동은 흔하게 발생하며 약 60개의 예제를 수집하였다.

이 포스트에서는 specification gaming의가능한 원인들을 리뷰하고 예제를 공유한다. 그리고 이 문제를 극복하기 위한 원칙적인 접근 방식에 대한 추가적인 연구를 주장한다.

 


레고 쌓기 예제를 보자.

파란 블럭 위에 빨간 블럭을 올리는 과제를 수행해야한다.

보상은 에이전트가 블럭을 만지고 있지 않을 때의 블럭 바닥의 높이에 대해서 주어진다.

에이전트는 빨간색 블럭을 집어서 파란색 블럭 위에 올리는 비교적 어려운 동작 대신 빨간 블럭을 뒤집어서 바닥면의 높이를 올렸다.

이 동작은 디자이너가 실제로 원하는 즉, 파란 블럭 위에 쌓는 것을 하지 않고 명시된 목표인 빨간색 블록 바닥면 높이기를 달성했다.


우리는 두 개의 다른 관점으로 specification gaming을 고려할 수 있다.

RL 알고리즘 개발이라는 범위에서 목표는 주어진 목표를 달성하는 법을 배우는 에이전트를 구축하는 것이다.

예를 들어, Atari games 에서 RL 알고리즘 벤치마킹을 할 때, 목표는 어려운 태스크들을 풀 수 있는지에 대해 평가 하는 것이다.

에이전트가 허점을 이용하여 문제를 풀수 있는지에 대한 여부는 이 맥락에서 중요하지 않다.

이러한 관점에서 specification gaming은 good sign이다. 에이전트가 지정된 목표를 달성하기 위해 참신한 행동법을 찾았을 때 이러한 행동들은 우리가 시키는 대로 정확하게 할 수 있는 방법을 찾기 위한 알고리즘의 독창성과 힘을 입증한다.


그러나 실제로 레고 블럭들을 쌓는 것을 에이전트에게 시켰을 때 이 독창성이 문제가 될 수 있다.

세상에 의도된 결과를 달성하는 aligned agents를 구축하는 광범위한 범위 내에서 specification gaming은 문제가 된다. 의도된 결과를 무시하고 specification의 허점을 이용하는 agent를 포함하기 때문이다. → 즉, 똑같은 행동을 하길 원하고 설계한 aligned agents에서 허점을 이용해 다른 행동방식으로 보상을 받는 agent가 포함되어 있으면 specification gaming이 bad sign이라는 것

이러한 행동들은 RL 알고리즘의 결함이 아니라 의도된 태스크의 잘못된 지정에 의해 발생된다.

알고리즘 설계 외에 reward design은 aligned agents 구축에서 또 다른 필수 요소이다.

→ 보상 체계를 잘 디자인 해야 에이전트가 허점을 이용하지 못하고 원하는 의도대로 행동하여 보상을 얻는 방법을 학습한다.


태스크의 specifications를 디자인 하는 것, reward functions 정하고 환경 정의하고 하는 것들은 디자인하는 사람의 의도를 정확하게 반영하기 어려운 경향이 있다.

작은 오류에도 불구하고 아주 좋은 RL 알고리즘은 비록 더 안좋은 알고리즘이 이 솔루션을 찾을 수 없고 따라서 의도한 결과에 가까운 솔루션을 내지 못하더라도 어찌됐건 태스크에 대해 의도된 솔루션과 꽤 다른 복잡한 솔루션을 찾을 수 있을 것이다.

즉, 이 말의 의미는 RL 알고리즘을 개선함에 따라 원하는 결과를 얻기 위해서 의도를 정확하게 명시하는 것이 더 중요해질 수 있다는 것이다. → 좋은 RL 알고리즘일수록 정확한 의도 명시가 더 중요해질 수 있다.

그러므로 정확하게 태스크를 명시하는 연구자의 능력참신한 솔루션을 찾는 에이전트의 능력을 따라가는 것이 필수적이다.


에이전트 개발 과정의 많은 측면을 포괄하기 위한 넓은 의미로 task specification이라는 용어를 사용한다.

RL 설정에서 task specification reward 설계 뿐만 아니라 트레이닝 환경과 보조적 보상 선택도 포함된다.

task specifiaction의 정확성은 에이전트의 독창성이 의도된 결과와 일치하는지에 대한 여부를 결정할 수 있다.

만약 specification이 맞다면 에이전드의 창의력은 바람직한 참신한 솔루션을 생산할 것이다. 이것은 알파고가 이세돌과의 두 번째 경기에서 바둑 전문가들을 놀라게 한 Move 37을 플레이할 수 있었던 이유이다.

만약 specification이 잘못된 경우에는 레고 예제에서 블럭을 뒤집었던 것 처럼 바람직하지 못한 행동을 생산할 것이다.

이러한 솔루션들의 유형들은 스펙트럼에 놓여있고 이를 구분할 객관적인 방법이 없다.


지금부터 specification gaming의 가능한 원인들을 살펴볼 것이다.

reward function misspecification의 원인 중 하나는 잘못된 reward shaping이다.

Reward shaping은 최종적인 결과에 대해서만 보상하는 것 대신에, 에이전트에게 태스크를 푸는 과정에서 몇 보상을 줌으로써 일부 목표들을 쉽게 배울 수 있도록 한다.

그러나 보상을 형성하는 것은 potential-based가 아니면 optimal policy를 바꿀 수 있다.

Coast Runners game에서 보트를 컨트롤하는 에이전트를 생각해보자. 의도된 목표는 가능한 빠르게 보트 레이스를 끝내는 것이다. 에이전트는 레이스 트랙을 따라서 녹색 블록을 치는 것에 대해 보상 형성을 받았다. 이러한 reward shaping으로 인해 optimal policy가 레이스 트랙을 따라 가는게 아니라 레이스 트랙 위에 놓여진 동일한 녹색 블록을 반복해서 치는 것으로 변경되었다.


원하는 최종 결과를 정확하게 포착하는 보상을 정하는 것은 그 자체로도 어려울 수 있다.

레고 쌓기 태스크를 다시 생각해보자. 단순히 빨간색 블럭을 뒤집어서 목표를 달성했던 것을 생각해보면 보상에 대해 "빨간 블럭의 바닥면이 높아진다."로만 설정하는 것은 충분하지 않다.

바람직한 결과에 대한 더 포괄적인 specification에는 "빨간색 블럭의 윗면이 밑면 위에 있어야하고, 빨간색 블럭 밑면은 파란색 블럭 윗면에 정렬되어야 한다."가 포함된다.

결과를 정할 때 이러한 기준들 중 하나를 놓치기 쉽기 때문에 specification을 너무 광범위하게 만들고 퇴화된 솔루션으로 쉽게 만족시킬 수 있다. → 보상 기준을 구체적으로 정하는게 어려울 수 있다.


가능한 모든 코너케이스를 커버하려는 것 대신에, 인간의 피드백으로부터 reward function을 배울 수 있었다.

결과를 명시적으로 정하는 것보다 결과를 달성했는지 여부를 평가하는 것이 대개 더 쉽다.

그러나 이러한 접근은 만약 보상 모델이 디자이너의 레퍼런트를 반영하는 진짜 보상 함수를 학습하지 못한다면 specification gaming 문제를 맞닥뜨릴 수 있다.

부정확성의 하나의 가능한 원인은 보상 모델을 학습하기 위해 사용된 사람의 피드백이 될 수 있다.

예를 들어, grasping task를 수행하는 에이전트는 카메라와 물체 사이에 머물면서 인간 평가자를 속이는 것을 학습했다. → 실제로 잡는게 아니라 카메라에서 봤을 때 잡은 것처럼 보이도록 속인다는 것

학습한 보상 모델은 충분치 못한 일반화와 같은 다른 이유로 잘못 정해질 수 있다.

보상 모델의 부정확성을 이용하려는 에이전트의 시도를 수정하기 위해 추가 피드백을 사용할 수 있다.


specification gaming의 또 다른 예로 simulator bugs를 이용하는 에이전트를 말할 수 있다.

예를 들어, 걷는 법을 배워야 할 시뮬레이션 로봇은 두 다리를 함께 묶어서 땅에 미끄러지는 방법을 알아냈다.

첫 번째로 이러한 종류의 예시들은 재미있어 보이지만 덜 흥미롭고 시뮬레이터 버그가 없는 현실 세상에서 적용되는 에이전트와는 무관하다. 그러나 근본적인 문제는 버그가 아니라 에이전트에 의해 이용당하는 추상화의 실패이다.

위 예제에서 시뮬레이터 물리학에 대한 잘못된 가정 때문에 로봇의 작업이 잘못 지정되었다.

유사하게, 실제 세상에서 트래픽 라우팅 인프라에 충분히 영리하게 학습한 에이전트가 발견할 수 있는 소프트웨어 버그 또는 보안 취약성이 없을거라고 잘못 가정하여 실제 트래픽 최적화 작업이 misspecification 될 수 있다는 것이다.

이러한 가정은 굳이 명시적으로 할 필요가 없다. 디자이너에게 발생하지 않은 세부 사항이기 때문이다.

태스크가 너무 복잡해져서 모든 세부 사항을 고려하지 못하게 되면, 연구자들은 규격 설계 중에 부정확한 가정을 도입할 가능성이 더 높아진다.

이것은 의문을 제기한다: 그러한 잘못된 가정들에 대해 수정하는 에이전트 아키텍처들을 설계하는 것이 가능한가?

→ task specification을 위해 발생하지 않은 사항들을 전부 가정하고자 하는 것이 복잡한 태스크에서도 일어나야 하는 상황을 가정해보자. 이때 모든 사항들을 가정할 수 없을 것이고 가정 중 부정확한 것들도 도입이 될 수 있다. 이런 잘못된 가정을 수정할 수 있는 아키텍처 설계가 가능할까?


task specification에서 일반적으로 사용되는 한 가지 가정은 "task specification이 에이전트의 행동에 의해 영향을 받을 수 없다." 라는 것이다.

이것은 샌드 박스 시뮬레이터의 에이전트에는 해당되지만 실제 세계에서의 에이전트에게는 해당되지 않는다.

모든 task specification에는 컴퓨터에 저장된 reward function 또는 사람의 머리에 저장된 설정과 같은 물리적 표현이있다.

실제 세상에서의 에이전트는 목표의 이러한 표현들을 잠재적으로 조작하여 보상을 변조시키는 문제를 일으킬 수 있다.

가상의 트래픽 최적화 시스템의 경우, 사용자의 선호도를 만족시키는 것과 사용자가 만족하기 쉬운 선호도를 갖도록 영향을 주는 것을 명확하게 구분하지 않는다. 전자는 목적을 충족시키는 것이고 후자는 목적의 표현을 조작한다. 두 가지 모두 AI 시스템에 대한 높은 reward를 초래한다.

또 다른 극단적 예로, 매우 발전한 AI 시스템은 컴퓨터가 작동하는 컴퓨터를 하이재킹하여 보상 신호를 높은 값으로 수동 설정할 수 있다.


요약

specification gaming을 극복하기 위해 최소 3가지 어려움이 있다.

1. 주어진 태스크에 대한 인간의 개념을 어떻게 reward function으로 충실하게 포착할 것인가

2. 도메인에 의한 암시적 가정들 또는 잘못된 가정을 gaming하는 것 대신 수정하는 설계 에이전트에서 실수하는 것을 어떻게 피할 것인가 → 잘못된 가정을 수정하는 에이전트가 실수하는 것을 어떻게 피할 것인지?

3. 보상 변조를 어떻게 피할 것인가

reward modeling에서 agent incentive design에 이르기까지 많은 접근법들이 제안되어 왔다. 그러나 specification gaming은 해결되기 어렵다.

specification gaming behaviours 리스트는 문제의 규모와 에이전트가 객관적으로 specification gaming을 할 수 있는 방법의 수를 보여준다.

이러한 문제들은 AI 시스템이 의도된 결과를 배제시키고 태스크를 수행하는 능력이 향상됨에 따라 미래에 더 어려워질 것이다.

더 진보된 에이전트를 구축할 때, 특별하게 specification 문제들을 극복하고 설계자가 의도한 결과를 강력하게 추구하도록 하는 것을 목표로하여 설계하는 것이 필요할 것이다.


나의 생각

실제로 Unity3d ml-agent 패키지를 사용하여 강화학습 환경을 만들어 본 적이 있다.

굉장히 간단한 예제였는데, 캐릭터가 떨어져 죽을 수 있는 평평한 땅에서 에너미를 피해 코인을 먹으면 되는 환경이었다.

이때 적용했던 알고리즘은 Unity에서 기본적으로 제공하는 PPO였다.

결과는 캐릭터가 자꾸 떨어져 죽는 선택을 하는 상황이 발생했다.

원인은 reward function 정의였다.

캐릭터에게 발생할 수 있는 상황을 내 주관에서 최대한 고려하였다.

1. 땅에 떨어지면 안된다.

2. 에너미를 피해야한다.

3. 코인을 먹어야한다.

4. 제한 시간 내에 많은 코인을 먹어야한다.

이에 따라서 세부적으로 모든 사항을 다 통제하는 reward shaping을 해버리니 캐릭터 입장에서 "차라리 죽자"를 선택하는 웃픈 상황이 생겨버렸다.

이후로 설계자가 원하는 의도대로 움직이는 에이전트 만들기가 강화학습이 어려운 주 원인이라고 생각했다.

딥마인드에서는 이러한 설계를 수정해주는 모델의 실수할 가능성까지 생각했다.

설계 수정 에이전트의 실수를 생각하기 이전에 설계 수정을 해줄 수 있는 에이전트를 설계하는 것은 얼마나 어려울까

설계 수정을 해줄 수 있는 에이전트에게 주어지는 reward function의 형태가 바람직한지.. 뫼비우스의 띠랄까

어쨌든 이러한 문제를 단어로 표현하기 어려웠는데 이번에 specification gaming이라는 단어를 알게 되었다.

주어진 목표를 달성하기 위해 룰을 따르지 않고 꼼수를 사용해(물론 에이전트는 이게 꼼수인지도 모르지만ㅋㅋㅋ) 쉽게 보상을 얻는 에이전트를 보고 사람이나 에이전트나 똑같구나 싶었다. 그리고 어떤 상황에 놓이냐에 따라 이것이 창의적이라고 판단될 수 있고 금지 행동이 될 수 있다는 것도 똑같았다.

항상 똑같은 행동양식으로 결과를 내야하는 공장의 경우, 정해진 룰을 벗어난 행위로 보상을 얻는건 부당하다.

그러나 면접처럼 하나의 질문에 이미 정해져 있는 답이라도 비슷한 의미지만 남들과 다른 표현을 하는 사람이 창의적이라고 평가받는다.

결국 본문에서 두 관점으로 specification gaming을 본 내용처럼 어떤 상황에서 벌어지는 specification gaming인지가 중요한 것 같다.