제퍼넷 로고

강화 학습 소개

시간

이 블로그 게시물에서는 강화 학습의 몇 가지 기본 개념, 몇 가지 중요한 용어 및 회사의 분석 플랫폼에서 AI를 실행하는 게임을 만드는 간단한 사용 사례를 소개하고 싶습니다. 이 글을 읽고 나면 강화 학습의 유용성과 학습을 용이하게 하는 몇 가지 핵심 어휘에 대해 더 잘 이해하기를 바랍니다.

강화 학습 및 사용 방법

로봇이 걷거나 물건을 부드럽게 줍도록 훈련하는 데 강화 학습(RL)이 사용된다는 것을 들어보셨을 것입니다. 또는 세계 최고의 바둑 "플레이어"로 여겨지는 Deep Mind의 AlphaGo Zero AI에 대해 들어본 적이 있을 것입니다. 또는 아마도 당신은 그것에 대해 들어본 적이 없을 것입니다. 그럼, 처음부터 시작하겠습니다.

최신 정보를 원하십니까?

최신 데이터 관리 기사, 웨비나, 이벤트, 온라인 과정 등이 포함된 주간 뉴스레터를 받은 편지함에서 받아보세요.

강화 학습은 다음의 영역입니다. 기계 학습 다양한 알고리즘 프레임워크를 통해 광범위한 연구 분야가 되었습니다. 요약하면, 환경을 해석하고 보상을 극대화하기 위한 조치를 취할 수 있는 에이전트를 구축하려는 시도입니다. 

얼핏 들으면 비슷하다. 지도 학습, 보상을 최대화하거나 손실을 최소화하려는 경우. 주요 차이점은 이러한 보상 또는 손실은 레이블이 지정된 데이터 포인트에서 얻는 것이 아니라 현실 또는 시뮬레이션과 같은 환경과의 직접적인 상호 작용에서 얻는다는 것입니다. 이 에이전트는 기계 학습 모델로 구성될 수 있습니다(전체, 부분 또는 전혀 아님). 

그림 1: 에이전트가 환경과 재귀적으로 상호 작용하고 보상을 행동과 연관시켜 학습하는 강화 학습 주기. (원천: 위키 미디어 공용)

기계 학습 모델이 포함되지 않은 에이전트의 간단한 예는 사전 또는 조회 테이블입니다. 손이 움직이기 전에 자신의 손을 볼 수 있는 에이전트에 대해 "가위 가위바위보" 게임을 한다고 상상해 보십시오. 에이전트가 만날 수 있는 게임 상태는 세 가지뿐이므로 이 조회 테이블을 작성하는 것은 매우 간단합니다.

그림 2: 가위바위보 에이전트에게 상대방의 움직임에 따라 어떤 움직임을 취할 것인지 지시하는 조회 테이블.

그러나 이것은 매우 빨리 손에서 벗어날 수 있습니다. Tic-Tac-Toe와 같은 매우 간단한 게임조차도 거의 천만 개의 가능한 보드 상태를 가지고 있습니다. 단순한 조회 테이블은 결코 실용적이지 않으며 Chess 또는 Go와 같은 게임에서 보드 상태의 수에 대해 이야기하지 맙시다.

머신 러닝이 방정식에 등장하는 이유

다양한 모델링 기법을 통해 일반적으로 신경망 – 반복 학습 알고리즘 덕분에 에이전트는 이전에 본 적이 없는 환경 상태를 기반으로 의사 결정을 내리는 방법을 배울 수 있습니다.

Tic-Tac-Toe가 가능한 많은 보드 상태를 가지고 있고 룩업 테이블이 비실용적인 것은 사실이지만 몇 가지 간단한 IF 문으로 최적의 에이전트를 구축하는 것은 여전히 ​​가능합니다. 어쨌든 간단한 환경과 잘 알려진 규칙 때문에 Tic-Tac-Toe 예제를 사용합니다.

강화 학습의 실제 적용

강화 학습에 대해 이야기할 때 첫 번째 질문은 일반적으로 "그게 무엇에 좋은가요?"입니다. 위의 예는 대부분의 실제 사용 사례에서 매우 멀리 떨어져 있습니다. 그러나 저는 여러분의 상상력을 고무시키기 위해 몇 가지 실제 응용 프로그램을 강조하고 싶습니다.

  • 화학 약물 발견: 강화 학습은 화합물 생성 > 속성 테스트 > 모델 업데이트 > 반복 작업 순서에 따라 원하는 물리적 속성 집합을 가진 화학식/화합물을 생성하는 데 자주 사용됩니다.
  • 베이지안 최적화: 에 포함 매개변수 최적화 루프, 이 전략은 매개변수 공간을 반복적으로 탐색하고 향후 선택 결정을 내리기 위해 분포 함수를 업데이트합니다. 
  • 신호등 제어: 강화 학습은 여기에서도 큰 발전을 이루었습니다. 그러나 이 경우 실제 트래픽의 부분적으로 관찰 가능한 특성으로 인해 몇 가지 복잡성이 추가됩니다. 
  • 로보틱스: 이것은 아마도 이러한 사용 사례 중 가장 유명할 것입니다. 특히 최근 몇 년 동안 로봇이 걷기, 물건 집기 또는 악수를 배우는 많은 예를 보았습니다.

이러한 사용 사례 중 어느 것도 귀하에게 적합하지 않더라도 항상 중요합니다. 데이터 과학자 계속해서 벨트에 새로운 도구를 추가하고 있으며, 그 외에 흥미로운 주제가 되었으면 합니다. 

격식을 더하다

이제 더 간결한 프레임워크를 배치해 보겠습니다.

그림 3: 강화 학습 과정을 설명하는 데 사용되는 표기법 참조 표.

기본 강화 학습은 다음과 같이 설명됩니다. 마르코프 결정 과정. 이것은 다른 결과의 확률이 선택한 조치 a와 현재 환경 상태 s를 기반으로 하는 확률론적 시스템입니다. 특히 이 결과는 s'로 표시할 새 환경 상태입니다. 

이 용어 위에 두 가지 기능도 정의해 보겠습니다. Ra(s,s') 및 Pa(봄 여름 시즌'). 아르 자형a(s,s')는 상태 s에서 상태 s'로 이동할 때 할당되는 보상을 나타내며, Pa(s,s') 행동 a가 주어졌을 때 상태 s에서 s'로 이동할 확률.

그래서 우리는 시스템을 정의했지만 여전히 한 부분을 놓치고 있습니다. 국가에서 취해야 할 조치를 어떻게 선택합니까? 이것은 ℼ(s)로 표시되는 정책 기능이라고 하는 것에 의해 결정됩니다. 정책 기능의 몇 가지 간단한 예는 다음과 같습니다.

  • ℼ(들) = 위로 이동
    • 그리드를 탐색할 때
  • ℼ(들) = 나를 때리다
    • 블랙잭을 할 때
  • ℼ(들) = 에이; 여기서 는 A의 임의 요소입니다.
    • ℼ(s)에 대해 기계 학습 모델을 사용할 때 우리는 이 시점에서 시작하여 향후 교육을 위한 다양한 데이터 세트를 얻을 수 있습니다.

정책 기능도 훨씬 더 복잡할 수 있습니다. 중첩된 IF 문과 같은 거대한 집합입니다. 하지만 거기에 가지 말자.

지금까지 우리가 한 일 

1. 현재 상태에서 취해야 할 조치를 결정합니다.

  • a = ℼ(들)

2. 새로운 상태 결정

  • 이 새로운 상태는 종종 P를 기반으로 확률적입니다.a(봄 여름 시즌')

3. 작업에 할당할 보상 결정 a

  • 보상은 일부 기능 R을 기반으로 합니다.a(s,s') 선택한 작업에 따라 다릅니다. 예를 들어, 아침에 출근하면 본질적인 보상이 있지만, 헬리콥터를 타고 그곳으로 데려다 준다면 훨씬 적습니다. 

정책 기능 선택

정책 기능 ℼ(s)에 대해 더 이야기해 보겠습니다. 머신 러닝을 사용할 때 ℼ(s)에 대한 수많은 옵션이 있지만 이 기사를 위해 간단한 예를 하나 소개하고자 합니다. Tic-Tac-Toe를 플레이하기 위해 만든 에이전트입니다.

그림 4: 강화 학습 훈련된 AI에 대해 Tic-Tac-Toe 게임을 하는 것.

위에서 Tic-Tac-Toe의 경우 조회 테이블을 허용하기에는 너무 많은 보드 상태가 있다고 언급했습니다. 그러나 주어진 상태 s에서 가능한 조치는 XNUMX개를 넘지 않습니다. a. 상태 s에서 이러한 가능한 작업을 A로 더 간결하게 표시합니다.s, A에 포함되어 있습니다. 이러한 각 가능한 작업에 대한 보상이 무엇인지 안다면 정책 기능을 정의하여 가장 높은 보상을 가진 작업을 생성할 수 있습니다.

ℼ(들) = a | 최대aAs Ra(봄 여름 시즌')

보상 기능

가능한 많은 보상 기능 중에서 우리는 이동이 에이전트를 가져왔을 때 승리 또는 패배에 얼마나 가까웠는지 수량화하도록 선택할 수 있습니다. 다음과 같은 것:

Ra(s,s') = 0.5 + [지금까지 플레이한 이동 횟수] / 2*[게임 내 이동 횟수] 에이전트가 이기면

0.5 – [지금까지 플레이한 이동 횟수] / 2*[게임 내 이동 횟수] 에이전트가 지는 경우

그러나 이 보상 기능은 게임이 종료되고 승자가 결정될 때까지 미정입니다. 여기에서 기계 학습을 적용할 수 있습니다. 예측 모델을 훈련하여 보상 기능을 추정하고 이 움직임이 에이전트가 승리하는 데 얼마나 근접할지 암시적으로 예측할 수 있습니다. 특히, 우리는 어떤 행동이 주어졌을 때 보상을 예측하도록 신경망을 훈련할 수 있습니다. 이것을 다음과 같이 표시합시다.

NN(a) ~ Ra(봄 여름 시즌')

신경망 훈련 – 지도 학습

이 시점에서 문제는 지도 학습 문제인 신경망 훈련으로 이동했습니다. 이를 위해 레이블이 지정된 데이터의 훈련 세트가 필요하며, 이는 단순히 네트워크에서 게임을 하도록 하여 수집할 수 있습니다. 모든 게임을 플레이한 후 원래 보상 기능 R을 통해 모든 작업에 점수를 매깁니다.a(봄 여름 시즌'). 플레이한 모든 게임의 행동에 대한 이 점수에 대해 신경망을 훈련하여 게임 중간에 각 행동에 대한 보상 값 NN(a)를 예측합니다.

네트워크는 레이블이 지정된 최신 게임 및 작업을 포함하여 새로운 훈련 세트에 대해 여러 번 훈련됩니다. 이제 신경망을 효과적으로 훈련시키려면 많은 데이터가 필요합니다. 적어도 한두 게임에서 얻을 수 있는 것보다 더 많은 데이터가 필요합니다. 그렇다면 어떻게 충분한 데이터를 수집할 수 있을까요? 

마지막 이론적 장애물로 신경망은 일반적으로 결정론적 모델이며, 자체 장치에 맡겨두면 동일한 입력이 주어지면 항상 동일한 예측을 한다는 점에 유의해야 합니다. 따라서 에이전트가 자체적으로 게임을 하도록 내버려두면 일련의 동일한 게임이 나타날 수 있습니다. 이것은 훈련을 위한 다양한 데이터 세트를 원하기 때문에 좋지 않습니다. 우리 모델은 이동 후 항상 똑같은 게임 이동을 한다면 많이 배우지 않을 것입니다. 네트워크가 더 많은 이동 공간을 "탐색"하도록 해야 합니다. 이를 수행하는 방법에는 여러 가지가 있으며 그 중 하나는 교육 시 정책 기능을 변경하는 것입니다. 이제 대신:

ℼ(들) = a | 최대aAs NN(a)

에이전트가 탐색하고 학습할 수 있도록 하는 다음이 됩니다.

ℼ(들) = a | 최대aAs 확률이 0.5인 NN(a)

= ∈ ㄱs 확률 0.5

일반적인 접근 방식은 위의 확률을 동적으로 변경하여 일반적으로 시간이 지남에 따라 감소시키는 것입니다. 단순함을 위해 나는 이것을 일정한 50/50 분할로 남겨두었습니다.

실시

이제 구현을 위해! 에이전트를 훈련하기 위한 애플리케이션과 에이전트와 대결하기 위한 애플리케이션의 두 가지 애플리케이션을 빌드해야 합니다.

사용자 에이전트 게임과 에이전트 에이전트 게임에서 데이터를 수집하고 각 작업에 대한 점수를 계산하여 레이블을 지정하고 이를 사용하여 신경망을 훈련하여 보상을 모델링하는 첫 번째 응용 프로그램 빌드부터 시작하겠습니다. 기능. 즉, 다음과 같은 애플리케이션이 필요합니다.

  • 신경망 아키텍처 정의
  • 보상 기능 R 구현a(s,s'), 이전 섹션에 정의된 대로 작업 점수를 매기기 위해
  • 가장 최근에 채택된 정책 기능 구현 ℼ(s)
  • 에이전트가 사용자와 게임을 하게 하고 게임의 액션과 결과를 저장합니다.
  • 에이전트가 스스로 플레이하게 하고 게임의 액션과 결과를 저장합니다.
  • 작업 점수
  • 네트워크 훈련

이 응용 프로그램의 구현을 위해 우리는 우리 회사의 분석 플랫폼, 그래픽 사용자 인터페이스(GUI)를 기반으로 하고 사용하기 쉽기 때문입니다. 플랫폼은 사용자 친화적인 GUI를 딥 러닝 케라스 통합. Keras 라이브러리는 노드로 사용할 수 있으며 간단한 드래그 앤 드롭으로 구현할 수 있습니다.

네트워크 아키텍처

그림 5의 워크플로에서 맨 위에 있는 갈색 노드인 Keras 노드는 계층별로 신경망 아키텍처를 구축합니다. 

  • 입력 레이어는 [27] 모양의 텐서를 입력으로 받습니다. 여기서 27은 보드 상태의 크기입니다. 보드의 현재 상태는 크기가 27인 원-핫 벡터로 포함됩니다.
  • 출력 레이어는 현재 작업에 대한 보상 값으로 [1] 모양의 텐서를 생성합니다. 
  • 각각 2개의 유닛이 있는 중간 54개의 은닉 레이어는 이 작업에 사용되는 완전히 연결된 피드포워드 네트워크를 구축합니다. 이 2개의 레이어에는 모델이 계속 학습함에 따라 과적합에 대응하는 데 도움이 되도록 10% 비율의 드롭아웃 기능이 적용됩니다.
그림 5: Keras 모델에서 강화 학습을 사용하여 에이전트를 훈련하기 위한 워크플로.

게임 세션 구현

워크플로의 핵심에는 세 개의 중첩 루프가 있습니다. 활성 학습 루프 내부의 카운팅 루프 내부 재귀 루프입니다. 이것들은 내부에서 외부로 개별 게임의 플레이(재귀 루프), 게임 세트의 플레이(카운팅 루프) 및 네트워크의 훈련 세션 사이의 많은 게임 세트의 플레이( 활성 학습 루프).

XNUMXD덴탈의 재귀 루프 끝 조건이 충족될 때까지 네트워크가 번갈아 가며 게임 보드에서 이동할 수 있도록 합니다. 이 조건은 다음과 같습니다: Tic-Tac-Toe 게임에서 승리하려면 행, 열 또는 대각선에 XNUMX개의 마크가 필요합니다. 또는 무승부 시 보드가 완전히 채워진 경우.

XNUMXD덴탈의 카운팅 루프 그런 다음 다른 게임 상태와 승리 또는 패배에 얼마나 가까웠는지 기록하고 프로세스를 100번 반복합니다. 이렇게 하면 프로세스를 반복하기 전에 네트워크를 훈련하는 데 사용할 100개 게임 가치의 보드 상태가 생성됩니다.

XNUMXD덴탈의 활성 학습 루프 각 게임에서 게임 세션과 보드 상태를 수집하고, 수학 공식 노드 및 피드 케라스 네트워크 학습자 노드는 레이블이 지정된 데이터로 네트워크를 업데이트하고 네트워크를 테스트한 다음 레이블 지정 및 교육을 위해 다음 데이터 배치가 준비될 때까지 기다립니다. 테스트는 학습 프로세스에 필요하지 않지만 시간이 지남에 따라 모델 진행 상황을 관찰하는 방법입니다.

XNUMXD덴탈의 활성 학습 루프 특별한 종류의 루프입니다. 이를 통해 사용자로부터 새로운 데이터를 적극적으로 얻고 기계 학습 모델의 추가 교육을 위해 레이블을 지정할 수 있습니다. 강화 학습은 특정 사례로 볼 수 있습니다. 적극적인 학습, 여기에서 데이터도 환경과의 상호 작용을 통해 수집되어야 하기 때문입니다. Keras 모델을 지속적으로 업데이트할 수 있는 것은 루프 구조에서 모델 포트를 재귀적으로 사용한다는 점에 유의하십시오.

에이전트-에이전트 게임 세션

이 워크플로에서 에이전트는 구성된 횟수만큼 자신을 상대로 플레이합니다. 기본적으로 네트워크는 총 25개의 게임에 대해 100개 게임의 2,500개 세트를 재생합니다. 이것은 이지 모드 AI에서 사용할 수 있습니다. 웹 포털. 하드모드 AI는 추가로 100세트 100게임 총 12,500만XNUMX게임을 할 수 있게 됐다. AI를 더욱 개선하기 위해 네트워크 아키텍처를 조정하거나 다양한 보상 기능을 사용할 수 있습니다.

웹 애플리케이션으로서의 게임

두 번째로 필요한 애플리케이션은 웹 애플리케이션입니다. 웹 브라우저에서 사용자는 에이전트와 대결할 수 있어야 합니다. 웹 브라우저에 게임을 배포하기 위해 우리는 웹 포털의 기능인 WebPortal을 사용합니다. 서버.

Analytics Platform에서 JavaScript 기반 노드는 데이터 시각화 웹 페이지의 일부를 만들 수 있습니다. 이러한 JavaScript 기반 노드를 구성 요소로 캡슐화하면 대시보드를 완전히 연결된 대화형 플롯 및 차트가 있는 웹 페이지로 구성할 수 있습니다. 특히, 우리는 타일보기 노드를 사용하여 Tic-Tac-Toe 보드의 XNUMX개 섹션 각각을 표시하고 각각에 공백, 사람 또는 KNIME 아이콘을 표시합니다.

사람이 에이전트를 플레이(및 추가 교육)할 수 있도록 하는 배포 워크플로는 그림 6에 나와 있습니다. 결과 웹 애플리케이션에 대한 게임 세션은 그림 7에 나와 있습니다.

그림 6: 아래에 표시된 재생 가능한 웹 포털 애플리케이션을 만들기 위한 워크플로. 
그림 7: Easy on Server Webportal에서 AI와 대결하기.
그림 8: WebPortal에서 AI와 대결하기.

이 두 가지 예 배우기 과 연주 워크플로를 다운로드, 사용 및 수정할 수 있습니다. 바퀴통! 어떤 개선 사항과 사용 사례 적응이 제공되는지 궁금합니다.

여기 허브에서 이러한 워크플로를 다운로드하십시오.

결론

요약하면, 우리는 강화 학습에 대한 몇 가지 인기 있는 사용 사례(약물 발견, 교통 규제, 게임 AI)를 소개했습니다. 그 주제에 관해서는 Google에 가서 다른 많은 예를 보기를 권합니다.

Markov Decision Process를 기반으로 한 간단한 강화 학습 전략을 소개하고 귀하의 연구에 도움이 될 몇 가지 주요 표기법을 자세히 설명했습니다. 마지막으로 우리 회사의 Analytics Platform에서 간단한 예제를 구현하는 방법을 다루었습니다. 

원래에 게시 KNIME 블로그.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?