Tensorflow 에이전트를 사용한 강화 학습 [2022]
게시 됨: 2021-01-01강화 학습은 상대적으로 최근에 DeepMind의 AlphaGo 방식이 세계 챔피언 바둑을 이기는 성공으로 가치 있는 인기를 얻었습니다. AlphaGo 방법은 부분적으로 심층 신경망에 대한 강화 학습을 통해 교육되었습니다.
이러한 학습 스타일은 고전적인 지도 및 비지도 패러다임과 머신 러닝의 뚜렷한 특징입니다. 강화 학습에서 네트워크는 심층 신경망을 사용하여 환경 데이터(상태라고 함)에 응답하고 보상을 최적화하기 위해 에이전트의 행동에 영향을 줍니다.
이 기술은 네트워크가 Atari 또는 기타 비디오 게임과 같은 스포츠를 하는 방법이나 게임의 한 형태로 다시 작성할 수 있는 다른 도전을 배우는 데 도움이 됩니다. 강화 학습의 일반적인 모델인 이 자습서에서는 Q 학습의 광범위한 원칙을 소개하고 TensorFlow에 딥 Q 학습을 통합하는 방법을 보여줍니다.
목차
강화 학습 소개
위에서 언급했듯이 강화 학습은 몇 가지 기본 엔터티 또는 원칙으로 구성됩니다. 조건과 보상을 생성하는 환경과 주어진 환경에서 행동을 수행하는 개체입니다. 아래 다이어그램에서 다음과 같은 상호 작용을 볼 수 있습니다.
이러한 설정에서 에이전트의 임무는 상태와 받는 인센티브 정보를 분석하고 보상에서 받는 입력을 최대화하는 행동을 선택하는 것입니다. 에이전트는 세상과의 반복적인 접촉, 즉 게임의 반복적인 플레이를 통해 학습합니다.
성공하려면 에이전트가 다음을 수행해야 합니다.

1. 상태, 행동 및 결과적인 인센티브 간의 연결을 배우십시오.
2. (1)에서 선택하는 것이 가장 좋은 이동 결정
구현 (1)에는 (2) 및 (2)를 알리는 데 사용할 수 있는 특정 원칙 집합을 정의해야 하며 이를 운영 전략이라고 합니다. Deep Q를 사용하여 (1)과 (2)를 적용하는 가장 일반적인 방법 중 하나는 Deep Q 네트워크와 엡실론 탐욕 정책입니다.
배우기: 초보자를 위한 가장 인기 있는 5가지 TensorFlow 프로젝트
Q 학습
Q 학습은 에이전트가 취할 수 있는 조치를 알려주는 데이터를 제공하는 가치 기반 방법입니다. 한 상태에서 여러 게임 플레이에 대해 조치를 취하는 이점을 요약하는 표를 만드는 것은 원래 행동의 기반이 되는 원칙을 생성하는 직관적인 개념입니다. 이것은 가장 유익한 움직임을 추적합니다. 우선, 3개의 상태와 2개의 잠재적인 작업이 있는 각 상태의 간단한 게임을 고려해 보겠습니다. 테이블은 이 게임에 대한 보상을 나타낼 수 있습니다.
액션 1 | 액션 2 | |
상태 1 | 0 | 10 |
상태 2 | 10 | 0 |
상태 3 | 0 | 10 |
위의 표에서 볼 수 있듯이 이 간단한 게임의 경우 에이전트가 상태 1이고 조치 2를 취할 때 조치 1을 취하면 보상 10을 받지만 보상은 0입니다. 상태 2에서는 조건이 역전되어 상태 3은 결국 상태 1과 유사합니다. 에이전트가 임의로 이 게임을 탐색하고 세 가지 상태 중 하나에서 가장 많은 보상을 얻은 행동을 집계하면(예: 이 지식을 배열에 저장), 따라서 위의 표의 실제 형식을 효과적으로 알 수 있습니다.
다시 말해서, 에이전트가 실제로 가장 높은 보상을 제공했던 과거에 학습한 행동을 선택했다면(위의 표의 일부 형식을 효과적으로 학습) 게임을 효과적으로 플레이하는 방법을 배웠을 것입니다. 단순히 합산하여 테이블을 작성하는 것이 적절할 때 Q 학습 및 신경망과 같은 멋진 아이디어가 필요한 이유는 무엇입니까?
지연 보상
글쎄, 첫 번째 명백한 대답은 위의 게임이 단순히 3개의 상태와 상태당 2개의 막으로 매우 간단하다는 것입니다. 진정한 게임은 훨씬 더 복잡합니다. 위의 경우 지연 보상의 원칙은 부재하는 다른 중요한 개념입니다. 에이전트는 가장 현실적인 게임을 적절하게 플레이하기 위한 조치를 취하는 방법을 배워야 하며, 이는 반드시 보상으로 이어지지는 않지만 나중에 상당한 보상을 받을 수 있습니다.
액션 1 | 액션 2 | |
상태 1 | 0 | 5 |
상태 2 | 0 | 5 |
상태 3 | 0 | 5 |
상태 4 | 20 | 0 |
위에서 언급한 게임의 모든 상태에서 액션 2가 수행되면 에이전트는 상태 1로 다시 이동합니다. 즉, 처음으로 돌아갑니다. 상태 1에서 3에서는 그렇게 함으로써 5 크레딧을 받기도 합니다. 따라서 조치 1이 모든 상태 1-3에서 취해지면 에이전트는 다음 상태로 이동하지만 상태 4에 들어갈 때까지 보상을 받지 않으며, 이 시점에서 보상 20을 받습니다.
즉, 에이전트가 Action 2를 수행하여 즉각적인 보상 5를 얻지 않고 대신 Action 1을 선택하여 상태를 계속 진행하여 20의 보상을 얻을 수 있다면 에이전트가 더 좋습니다. 에이전트는 다음을 수행할 수 있기를 원합니다. 지연된 보상 값이 너무 높을 때 보상이 지연되는 행위를 선택합니다.
더 읽어보기: Tensorflow 이미지 분류
Q 학습 규칙
이것은 우리가 Q 학습 규칙을 명확히 하도록 격려합니다. 심층 Q 학습에서 신경망은 현재 상태 s를 벡터로 취하고 해당 상태에서 각 잠재적 행동 a에 대해 Q 값을 반환해야 합니다. 즉, 두 가지 모두에 대해 Q(s, a)를 반환해야 합니다. 와 에이. 이 Q(s, a)는 다음 규칙을 통해 교육에서 수정해야 합니다.

Q(s,a) = Q(s,a) + alp[r+γmax Q(s',a ') – Q(s,a)] + alp[r+ γmax Q(s',a')
이 법칙은 업그레이드를 위해 약간의 압축을 풀어야 합니다. 둘째, Q(s, a)의 새로운 값은 위 방정식의 오른쪽에 몇 가지 추가 비트를 삽입하여 기존 값을 변경해야 한다는 것을 알 수 있습니다. 왼쪽에서 오른쪽으로 전환합니다. 잠시 동안 알파를 잊어 버리십시오. 대괄호 안의 첫 번째 단어는 r이며, 이는 주에서 조치를 취하여 얻은 상을 나타냅니다.
이것은 즉각적인 보상입니다. 지연된 만족은 아직 포함되지 않습니다. 다음 단어는 지연 인센티브 추정입니다. 우선, 지연 보상 효과를 할인하는 γ 값이 있습니다. 이는 항상 0과 1 사이입니다. 잠시 후에 자세히 설명합니다. 다음 항 maxa'Q(s, 'a')는 다음 조건에서 사용할 수 있는 최대 Q 값입니다.
에이전트가 상태에서 시작하여 작업 a를 수행하고 상태에서 종료한 다음 코드가 상태에서 Q의 최대값, 즉 max a 'Q(s',a')를 지정합니다. 그렇다면 Max가 'Q(s',a') 의미인 이유는 무엇입니까? 그것이 효력을 발휘하고 상태 s에서 핸들러에게 가는 가능한 전체 보상을 나타내는 것으로 알려져 있습니다.
그러나 γ는 가능한 인센티브를 영원히 기다리는 것이 에이전트에게 바람직하지 않다는 점을 고려하여 이 값을 할인합니다. Q(s',a)' 값은 국가 Q(s',a)에 대한 할인된 동기를 유지하기 때문에 그 이후 경제에 대해 가장 높은 할인 인센티브를 암시적으로 유지합니다. 즉, Q(s',a)'입니다. ' 등등.
이는 에이전트가 즉각적인 보상 r뿐만 아니라 잠재적인 미래 할인 인센티브를 기반으로 조치를 선택할 것이기 때문입니다.
딥 Q 학습
딥 Q 학습은 훈련 단계 전반에 걸쳐 Q 학습 업데이트 법칙을 따릅니다. 즉, 상태 s를 입력으로 사용하는 신경망이 생성된 다음 상태 s의 각 동작에 대해 적절한 Q(s, a) 값을 생성하도록 네트워크가 훈련됩니다. 그런 다음 에이전트의 작업은 가장 큰 Q(s, a) 값을 가진 작업을 수행하여 선택됩니다(신경망의 출력에서 argmax를 가져옴). 이것은 아래 다이어그램의 첫 번째 단계에서 볼 수 있습니다.
행동 선택 및 훈련 단계 – Deep Q learning

이 전송이 이루어지고 작업이 선택되면 에이전트가 작업을 수행합니다. 그런 다음 에이전트는 해당 상태에서 조치를 취하는 데 대해 어떤 인센티브가 제공되는지에 대한 피드백을 얻습니다. Q 학습 가이드라인에 따라 지금 우리가 하고자 하는 다음 단계는 네트워크를 훈련시키는 것입니다. 두 번째 부분에서 이는 위의 다이어그램에서 볼 수 있습니다.
상태 벡터 s는 네트워크 훈련을 위한 x 입력 배열이고 y 출력 훈련 샘플은 동작의 선택 프로세스 동안 수집된 Q(s, a) 벡터입니다. 그러나, 위 그림에서 볼 수 있듯이, 액션 a에 해당하는 Q(s,a) 값 중 하나는 r+γQ(s',a')의 목표를 갖도록 설정됩니다. 이러한 방식으로 네트워크를 훈련시켜 에이전트에게 장기적 이익을 위해 선택하는 것이 가장 좋은 행동을 알려줌으로써 네트워크의 Q(s, a) 출력 벡터는 시간이 지남에 따라 더 강해질 것입니다.
강화 학습의 장점:
- 강화 학습은 기존 접근 방식으로 극복할 수 없는 매우 어려운 문제를 해결하는 데 사용할 수 있습니다.
- 이 전략은 달성하기 매우 어려운 장기적인 결과를 생성하기 위해 선택됩니다.
- 이 학습 패턴은 인간의 학습과 다소 유사합니다. 따라서 완성에 가깝습니다.
- 모델은 테스트 단계에서 발생한 실수를 수정합니다.
- 모델에서 오류를 수정하면 동일한 오류가 발생할 확률이 약간 낮아집니다.
- 해결해야 할 특정 문제에 대한 최상의 패러다임을 만들 것입니다.
강화 학습의 단점
- 체계로서의 강화 학습은 여러 측면에서 올바르지 않지만 유용하게 만드는 것은 바로 이 품질입니다.
- 강화 학습이 너무 많으면 상태가 압도되어 결과가 줄어들 수 있습니다.
- 강화 학습은 근본적인 문제를 해결하는 데 사용되는 것보다 바람직하지 않습니다.
- 강화 학습에는 많은 지능과 많은 계산이 필요합니다. 데이터 굶주림입니다. 그래서인지 비디오 게임에 너무 잘 어울려서 게임을 반복해서 플레이할 수 있고, 많은 디테일을 얻을 수 있을 것 같다.
- 강화 학습은 우주가 마코비안이라고 가정하지만 그렇지 않습니다. Markovian 모델은 각 발생 확률이 이전 이벤트에서 달성된 조건에만 의존하는 일련의 가능한 이벤트를 설명합니다.
다음은?
머신 러닝을 마스터하고 에이전트가 틱택토를 하도록 훈련하는 방법, 챗봇을 훈련시키는 방법 등을 배우고 싶다면 upGrad의 기계 학습 및 인공 지능 PG 디플로마 과정을 확인하십시오.
텐서플로우란?
기계 학습에서 널리 사용되는 프로그래밍 언어인 Python에는 방대한 함수 라이브러리가 있습니다. TensorFlow는 빠르고 효율적인 수치 계산을 지원하는 Google에서 출시한 Python 라이브러리 중 하나입니다. 딥 러닝 모델을 개발하는 데 광범위하게 사용되는 Google에서 만들고 유지 관리하는 오픈 소스 라이브러리입니다. TensorFlow는 프로세스를 단순화하기 위해 다른 래퍼 라이브러리와 함께 사용됩니다. 딥 러닝에서도 사용되는 다른 수치 라이브러리와 달리 TensorFlow는 애플리케이션 및 프로덕션 환경 기능의 연구 및 개발을 위해 개발되었습니다. 단일 CPU, 모바일 장치 및 분산 컴퓨터 시스템이 있는 시스템에서 실행할 수 있습니다.
기계 학습에서 TensorFlow와 같은 다른 라이브러리는 무엇입니까?
초기에는 기계 학습 엔지니어가 다양한 기계 학습 알고리즘에 대한 모든 코드를 수동으로 작성했습니다. 이제 유사한 알고리즘, 통계 및 수학적 모델에 대해 매번 동일한 코드 라인을 작성하는 것은 시간 소모적일 뿐만 아니라 비효율적이고 지루합니다. 해결 방법으로 함수를 재사용하고 시간을 절약하기 위해 Python 라이브러리가 도입되었습니다. Python의 라이브러리 컬렉션은 방대하고 다양합니다. Python에서 가장 일반적으로 사용되는 라이브러리는 TensorFlow와 별도로 Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras 및 Scikit-learn입니다. Python 라이브러리는 C/C++ 라이브러리와도 쉽게 호환됩니다.
TensorFlow를 사용하면 어떤 이점이 있습니까?
TensorFlow의 많은 장점으로 인해 딥 러닝 및 머신 러닝에서 계산 모델을 개발하는 데 매우 인기 있는 옵션입니다. 첫째, 그래픽 프레젠테이션으로 향상된 데이터 시각화 형식을 지원하는 오픈 소스 플랫폼입니다. 프로그래머는 노드를 디버그하는 데에도 쉽게 사용할 수 있으므로 시간을 절약하고 신경망 코드의 전체 길이를 검사할 필요가 없습니다. TensorFlow는 모든 종류의 작업을 지원하며 개발자는 이 플랫폼에서 모든 유형의 모델 또는 시스템을 구축할 수 있습니다. Ruby, C++ 및 Swift와 같은 다른 프로그래밍 언어와 쉽게 호환됩니다.