안녕하세요, 저는 R & D Center, Scsk Co., Ltd.의 Saito
두 번째 할부에서, 우리는 라인 트레이서를 주제로 사용하여 자신의 환경에서 깊은 강화 학습을 수행하는 방법을 소개했습니다.
감독 학습과 같은 교육 데이터를 준비 할 필요는 없지만 학습을위한 환경을 설계해야한다는 것을 이해한다고 생각합니다.
라인 트레이서에서 한 에이전트가 환경에서 자유롭게 움직였습니다.
그러나 해결하려는 문제에 따라 환경에서 여러 에이전트를 정의해야 할 수도 있습니다.
예를 들어, Go 또는 Shogi 경기에 대해 배우는 경우 상대가 없으면 연구를 진행할 수 없습니다.
또한 줄 아래로 줄을 배울 때 여러 에이전트가 필요합니다. 로프를 돌리는 사람들과 밧줄을 날리는 사람들.
이번에는 "3 번째 발가락"의 주제에 따라 상대가있을 때 깊은 강화 학습에 대해 생각할 것입니다.
3- 트리 란?
아시다시피,이 에피소드의 주제 인 3-Toe는 3 회 연속 라운드와 십자가가 3x3 사각형에 번갈아 가며 세 번의 라운드 또는 십자가가 수직, 수평 또는 대기구로 배치됩니다.
또한, 이번에는 오작동이나 슬릿을 이미 채워진 사각형에 넣으려고한다면 그 시점에서 잃게됩니다.
예상 상대
먼저 상대를 구현하는 방법에 대해 생각해 봅시다.
반드시 상대방이 강화 학습 대리인이어야한다는 것을 의미하지는 않습니다.
우리는 "무작위 행동을 취하는 사람들", "AI는 규칙 기반 또는 감독 학습과 같은 다른 방법을 사용하여 만들어졌다"및 "강화 학습 에이전트"의 세 가지 유형을 가정 할 수 있습니다.
각각의 장점과 단점은 표에 요약되어 있습니다.
무작위 행동 | AI 다른 방법을 사용하여 생성 | 강화 학습 에이전트 | |
---|---|---|---|
혜택 |
|
|
|
단점 |
|
|
|
*1. 사회적 딜레마의 문제 :
이것은 사회 전체의 최적 행동과 개인의 최적 행동 사이에 불일치가있는 문제입니다.
이 문제는 여러 에이전트가 존재할 때 발생하지만 개인 간의 협력 또는 배신으로 인해 각 개인의 보상이 변동될 때 발생합니다.
여기서 우리는 유명한 "죄수의 딜레마"를 소개 할 것입니다.
Co-Crime의 용의자 인 Prisoners A, B는 별도의 방에서 경찰에 의문을 제기하고 무료 슬롯 게임.
・ 모두 계속 침묵을 유지하면 증거가 충분하지 않아 1 년이됩니다
・ 한 사람 만 고백하는 경우 고백하는 사람은 10 년 동안 침묵하는 사람은 유쾌한 거래에서 제로 해를 선고 받게됩니다
・ 둘 다 고백하면 5 년 형을 선고받을 것입니다
죄수 B 침묵 | 죄수 B 자백 | |
---|---|---|
죄수 A, 사일런트 | (1, 1) | (10, 0) |
죄수 고백 | (0, 10) | (5, 5) |
현재 포로 A와 B는 그들이 함께 침묵을 유지하는 가장 좋은 방법으로 결정될 수 무료 슬롯 게임.
그러나 개인의 최적 행동을 고려하십시오.
죄수 B가 침묵으로 유지되면 죄수는 고백하면 더 행복해질 것입니다.
포로가 고백한다면, 죄수는 고백한다면 죄수 A가 더 행복 할 것입니다.
다시 말해, 어떤 죄수가 선택하든, 죄수 A는 고백하는 것이 더 낫다고 결정합니다.
이것은 죄수 B와 동일하므로 개인의 최적 행동에 대해 생각하는 것만으로는 둘 다 고백하는 것입니다.
이 불일치는 사회적 딜레마라고하며 강화 학습에서도 발생할 수 있으며 최적의 행동이 학습되는 것을 방지하는 한 가지 요소입니다.
3 트리에 불과한 경우 규칙을 구현하여 강력한 상대를 쉽게 만들 수 무료 슬롯 게임.
또한 예상치 못한 조치를 취하지 않는 단점에 대한 응답에 따라 적당히 임의의 방식으로 구현하여 조치를 취할 수 있습니다.
그러나 대부분의 경우 상대를 구현하기가 어렵 기 때문에 깊은 강화 학습이라는 방법을 선택해야합니다.
이번에는 우리는 상대방으로 강화 학습 대리인을 연주 할 것입니다.
3- 트리가 있으면 상대와 협력이 없으므로 사회적 딜레마의 단점은 발생하지 않을 것입니다.
또한 상대방이 당신처럼 배우는 한 문제가 없으므로 상대방을 만들어서 자신을 훈련시키는 대리인이 하나만있을 수 무료 슬롯 게임.
깊은 강화 학습으로 3- 타워 구현
평소와 같이 "에이전트", "환경"및 "세 가지 상호 작용"을 정의하십시오.
에이전트
그것은 깊은 강화 학습이므로 신경망을 구현할 것입니다.
이번에는 중간 계층 구조와 알고리즘은 카트 폴과 동일합니다.
환경
3x3 보드 준비.
디스크를 준비하겠다고 말하지만 이미지를 준비하는 것이 아니라 3x3 배열 만 준비하는 것이 아닙니다.
이번에는 PC에서 3- 트리를 실행한다고 가정하므로 충분합니다.
실생활에서 작동하는 3 개의 타워 에이전트를 만들 때 PC 세계와 실제 세계 사이의 격차를 메울 필요가 있습니다.
디스크의 이미지를 디스크의 이미지를 환경으로 사용하여 학습을 수행하거나 디스크의 이미지에 3x3 배열을 연결해야합니다.
3 개의 상호 작용
● 액션
보드의 정사각형에 돌을 놓습니다.
정사각형이 이미 채워져 있더라도 이제 선택할 수 무료 슬롯 게임.
이 경우 파울로 인해 파울 손실이 발생하므로 매장 된 광장에 배치해서는 안된다는 규칙도 연구됩니다.
● 조건
각 정사각형은 세 가지 방법으로 설정되어 무료 슬롯 게임 : 비어 있고 멀티 및 크로스 및 전체 보드가 상태에 무료 슬롯 게임.
보드는 3x3 배열로 표현되며 각 정사각형이 비어있는 경우 (0, 0), Mal, (1, 0), 크로스가있는 경우 (0, 1).
● 보상
- 무료 슬롯 게임에서이기는 것은 당신에게 1 점을줍니다
- 무료 슬롯 게임을 잃으면 ̠ -1 포인트를 받게됩니다.
- 무료 슬롯 게임의 드로우는 0.5 점을 제공합니다
- 무료 슬롯 게임이 끝나지 않은 경우 -0.001 포인트를 제공하십시오
보상 디자인은 깊은 강화 학습을위한 매우 중요한 단계입니다.
이번에 무료 슬롯 게임이 끝나지 않으면 부정적인 보상을 줄 것입니다.
나는 아이디어가 파울을 잃지 않는 것에 대한 긍정적 인 보상을 제공하는 것이라고 생각합니다.
그러나 에이전트에서 한 에피소드에서 더 많은 보상을 받으려고하기 때문에 (3- 트리의 한 게임)
승자와 패자를 결정하지 않는 것에 대한 긍정적 인 보상을 제공하면 의도적으로 경기를 연장 할 수 무료 슬롯 게임.
또한 값 -0.001은 무료 슬롯 게임 승리 및 손실에 대한 영향을 줄이는 것입니다.
무료 슬롯 게임이 끝나지 않고 -1의 보상을 받으면 무료 슬롯 게임보다 일찍 패배하는 것이 무료 슬롯 게임이 더 오래 지속되는 것보다 더 나은 전체 보상이 될 것이기 때문에 예상대로 배우지 않을 것입니다.
또한 1의 보상을 주면 일찍 승리하기보다는 경기를 연장하고 추첨을하면 전반적인 보상이 더 나을 것이므로 예상대로 배우지 않을 것입니다.
이 보상을 설정할 때는 두 가지 점을 고려해야합니다. 게임이 끝나기 전에 발생하는 시간 수와 게임이 끝날 때 보상의 양이 무료 슬롯 게임.
이 경우, "가장 짧은 승리를 얻기위한 총 보상 드로잉에 대한 총 보상 가장 짧은 패배를 잃은 총 보상"을 준수해야합니다.
승자가 결정되지 않으면 보상이 최대 -0.75 인 경우이 관계를 계산하지 않습니다.
따라서 -0.001이든 -0.5이든 완성 된 에이전트의 강도에는 큰 차이가 없습니다.
이 범위 내에서 어떤 보상이 가장 좋은지 확인하고 확인할 수 무료 슬롯 게임.
그러나 보드의 크기가 변경되면 -0.1 이라도이 관계가 무너질 수 무료 슬롯 게임.
"학습 수행"에 설명 된 바와 같이, 보드의 크기는 자유롭게 변경되므로 보상 값은 -0.001로 설정되어 충분히 작습니다.
이러한 방식으로 보상이 어떻게 제공되는지 에이전트의 학습 전략이 바뀔 것입니다.
보상을 줄 방법은 없으므로 시행 착오가 필요합니다.
ChainErrl과 함께 구현
이번에는 자신의 환경을위한 파이썬 파일입니다ENV_N_MOKU.PY
, 훈련을위한 파이썬 파일로ChainerRl_n_moku.py
, 훈련 된 에이전트와 경쟁하기위한 파일로n_moku_gui.py
준비되었습니다.
여기를 추출하십시오.
● 자신의 환경을위한 Python 파일
ENV_N_MOKU.PY
에 적용됩니다.
이 파일은 환경뿐만 아니라 세 가지 상호 작용을 정의합니다.
이 소스 코드가MIT 라이센스에 따라 허용되어야합니다.
라인 트레이서와 마찬가지로 STEP () 및 reSET () 함수가 필요합니다.
두 번째 할부에서 언급했듯이 두 기능의 주요 처리 내용은 다음과 같습니다.
- step () 함수 :
에이전트로부터받은 조치에 따라 환경을 변경하고 보상, 상태 또는 재판을 완료할지 여부를 반환 - reset () 함수 :
환경을 초기화하고 상태를 반환
중간 계산은 해결되는 문제에 따라 다르므로 이번에는 핵심 사항 만 설명합니다.
1. 단계 () 기능
한 단계에서, 당신과 당신의 상대는 돌을 순서대로 배치합니다.
상대는self.opponent_agent
로 표시됩니다.
이 변수에서 자신을 정의하면 자체 매칭이 발생하며 학습 된 에이전트를 정의하면 해당 에이전트를 이길 수 있습니다.
자체 경기라고하지만 특수 알고리즘을 사용하지 않더라도 상대방이 자신의 차례에 가장 적합하다고 생각하는 일을하게합니다.
에이전트가 환경을 변화시키는 유일한 요소가 아니기 때문에 에이전트가 배우기가 어려울 수 있지만 구현으로서 단순히 순서대로 처리 할 수 있습니다.
DEF 단계 (자기, 행동) :
2. Reset () function
모든 제곱을 비우십시오.
이 시점에서 첫 번째 공격과 두 번째 공격이 결정될 것이며, 두 번째 공격의 경우 상대방이 돌을 배치했을 때 초기 상태가 초기 상태로 반환됩니다.
def 리셋 (Self, Option_First = none) :
● 학습을위한 파이썬 파일
ChainerRl_n_moku.py
에 적용됩니다.
이 소스 코드가MIT 라이센스에 따라 허용되어야한다.
학습 알고리즘 등에는 변경되지 않았지만 쓰기 방법은 변경되었습니다.
지금까지 진술은 에피소드와 단계를 회전시키는 데만 사용되었지만 ChainErrl에서는 생략하여 쓸 수 무료 슬롯 게임.
학습 방법이 동일하게 유지되므로 학습 방법을 참조하십시오.
DEF 트레인 (ENV, AGENT, SAVE_DIR, 단계) :
● 훈련 된 에이전트와 경쟁 할 파일
n_moku_gui.py
에 적용됩니다.
이 파일은 인간이 훈련 된 에이전트와 경쟁 할 수있는 화면을 그리는 데 사용됩니다.
이 소스 코드는 깊은 강화 학습에 영향을 미치지 않으므로 설명이 생략됩니다.
이 소스 코드가MIT 라이센스에 따라 허용되어야한다.
학습
이제 코드가 준비되었으므로 실제로 배우도록합시다.
학습은 세 개의 파일이있는 디렉토리에서 다음 명령을 실행하여 시작합니다.
Python ChainerRl_n_moku.py
학습 후nmokuagent
라는 폴더에 저장됩니다.
다음, 다음 명령을 실행하여 학습 된 에이전트와 3 트리에서 플레이 할 수 있습니다.
Python ChainerRl_n_moku.py --test_interactive
전투 화면이 열리므로 돌을 교대로 배열하십시오.
그가 올바르게 배우고있는 것처럼 보이며, 그는 나와 같은 힘을 가지고 무료 슬롯 게임.
또한 이번에는 3x3 보드에서 3- 트리 스타일을 구현했지만 보드의 크기와 정렬 할 돌 수를 변경할 수 무료 슬롯 게임.
다음과 같이 학습을 수행하면 5x5 보드에서 4 번째 주문을 배울 수 있습니다.
훈련 된 모델은4mokuagent
Python ChainerRl_n_moku.py -Board_Size 5 - -n_moku 4 ---save_dir 4mokuagent
이렇게하면 서로 대항 할 때 보드의 크기와 다음과 같이 배열 될 돌 수를 지정하십시오.
Python ChainerRl_n_moku.py ---test_interactive -board_size 5 - -n_moku 4 ---save_dir 4mokuagent
그러나 가능한 조건의 수는 상당히 증가하므로 동일한 조건에서 학습하는 것은 작동하지 않습니다.
제대로 배우려면 시험 수를 늘리는 것과 같은 노력을 기울이는 다양한 방법.
요약
딥 보강 학습은 세 세션에 걸쳐 다양한 경우에 구현되었습니다.
기계 학습으로 달성 할 수있는 것들의 범위가 확장되었다는 것을 이해했으면합니다.
중요한 것은 감독 학습을 대체하는 기술이 아니라 각각의 문제가 해결 될 수 있다는 것입니다.
깊은 강화 학습은 미리 교육 데이터를 준비하는 번거 로움을 제거하지만, 이것이 구현하기 쉽다는 의미는 아닙니다.
대신 환경을 정의하려는 또 다른 노력과 세 가지 상호 작용이 포함됩니다.
이들 정의하려면 깊은 강화 학습 이외의 지식도 필요합니다.
환경 정의에는 종종 수학과 물리에 대한 지식이 필요하며 세 가지 상호 작용을 정의 할 때 해결하려는 문제에 대한 올바른 이해가 필요합니다.
이것을 이해하십시오. 깊은 강화 학습을 사용해야하는지 또는 감독 된 학습을 사용해야하는지 결정하십시오.
또한 이번에는 DoubledQn이라는 알고리즘을 사용하며 대부분의 다양한 매개 변수는 기본값입니다.
그럼에도 불구하고, 나는 다양한 사례를 제대로 배울 수있었습니다.
그러나 복잡한 문제를 해결하려면 알고리즘 선택 및 매개 변수 조정이 필요합니다.
ChainErrl은 다양한 알고리즘을 제공하며 기본 매개 변수를 쉽게 변경할 수 무료 슬롯 게임.
먼저, 구현 된 것들을 더 나은 것을 만들기 위해 어떤 변화가 이루어져야하는지에 대한 시행 착오로 이해를 향상시키고 개선하십시오.
시간이 있다면 4 번째 발가락을 제대로 연구 할 수있는 에이전트를 만들어보십시오.
읽어 주셔서 감사합니다.
- back
- 1
*Chainer (R)는 일본 및 기타 국가에서 Wederred Networks Inc.의 상표 또는 등록 상표입니다.
그렇지 않으면,이 컨텐츠 내에서 사용되는 제품 및 서비스의 이름은 각 회사 또는 조직의 상표 또는 등록 상표입니다.