SlideShare a Scribd company logo
1 of 15
Download to read offline
Shinwoo Park
pshkhh@naver.com
1. 그리디 접근법
2. 랜덤 접근법
3. 앱실론-그리디 접근법
4. 랜덤 노이즈 접근법
5. 볼츠만 접근법
6. 베이지언 접근법
에이전트가 환경 내에서 가능한 모든 상태를 최적으로 처리하도록 학습하려면
에이전트는 환경에 최대한 많이 노출되어야 한다.
하지만 전통적인 지도학습의 설정에서와는 달리,
강화학습 문제에서 에이전트는 자신의 액션을 통해서만 환경에 접근할 수 있다.
에이전트는 좋은 정책을 학습하기 위해 제대로 된 경험을 필요로 하지만,
이러한 경험을 얻기 위해서는 좋은 정책이 필요하다.
이러한 문제 때문에 강화학습에는 완전한 하위 분야가 하나 생겨나게 되었다.
바로 탐험(exploration)과 최대이용(exploitation) 트레이드오프의
의미 있는 균형을 맞추기 위한 기법을 개발하려는 시도이다.
모든 강화학습 알고리즘은 시간의 경과에 따라 보상을 최대화하고자 한다.
단순히 어떤 주어진 시간에 최적의 액션을 취하는 방법은
단순히 가장 큰 보상을 가져올 것으로 기대되는 액션을 취하는 것이다.
이것을 그리디 접근법(탐욕 알고리즘)이라고 한다.
현재 순간에 에이전트가 최선이라고 추정하는 액션을 취하는 것은
최대이용이 한 예이기도 하다.
에이전트는 액션을 취할 환경의 보상 구조에 대해
현재의 지식을 최대이용하는 셈이다.
이 접근법에서는 탐험의 가능성이 없거나 거의 없다고 간주된다.
그리디 접근법의 문제점은 거의 항상 차선의 해결책에 도달하게 된다는 것이다.
텐서플로 기준 구현법은 다음과 같다.
Q_values = sess.run(Q_out, feed_dict={inputs:[state]})
action = np.argmax(Q_values)
랜덤 접근법은 그리디한 선택과 정반대의 접근법으로,
말 그대로 언제나 단순하게 랜덤한 액션을 취하는 방법이다.
단점은 이 접근법은 오직 랜덤한 정책이 최적인 환경에서만 이상적일 수 있다.
텐서플로 기준 구현법은 다음과 같다.
# 오픈AI 짐 환경을 사용하는 경우
action = env.action_space.sample()
# 그 밖의 경우
action = np.random.randint(0,total_actions)
그리디 접근법과 랜덤 접근법을 조합한 것이 앱실론-그리디 접근법이다.
이 접근법에서 에이전트는 대부분의 경우에
스스로 최적의 액션이라고 믿는 액션을 선택하게 되지만,
때로는 랜덤하게 액션을 선택한다.
이상적이라고 추정할 수 없는 액션을 취하는 셈이지만,
이것이 때로는 에이전트에게 새로운 정보를 제공해줄 수도 있다.
앱실론은 원칙에 입각한 액션보다는 랜덤한 액션을 취하는
확률을 뜻하는 매개변수이다.
학습 과정을 시작할 때 앱실론 값은 에이전트가 환경에 대해
아는 것이 거의 없는 상태이므로
탐험을 촉진하기 위하여 보통 큰 확률로 초기화된다.
이 값은 이후에 작은 상수로 작아지게 되는데
이는 에이전트가 환경에 대해 필요로 하는 대부분의 내용을
학습했다고 간주하기 때문이다.
하지만 이 접근법은 단지 액션이 가장 큰 보상을 가져오는가 아닌가만 고려하
기 때문에 최적의 접근법이라고는 할 수 없다.
텐서플로 기준 구현법은 다음과 같다.
if np.random.rand(1) < e:
action = env.action_space.sample()
else:
Q_dist = sess.run(Q_out, feed_dict={inputs:[state]})
action = np.argmax(Q_dist)
기존 Q 값을 어느 정도 살리면서 탐험을 위해
랜덤한 노이즈 값을 더하는 기법이다.
학습이 진행됨에 따라 더해주는 노이즈 값도 점점 작아지게끔 해준다.
텐서플로 기준 구현법은 다음과 같다.
Q_dist = sess.run(Q_out, feed_dict={inputs:[state]})
action = np.argmax(Q_dist + np.random.randn(1, env.action_space.n/(i+1))
우리는 탐험을 진행할 때 신경망에 의해 산출되는 Q 값 내에 존재하는
모든 정보를 이상적으로 최대이용하기를 원한다.
볼츠만 탐험이 이를 수행한다.
항상 최적의 액션을 취하거나 또는 항상 랜덤한 액션을 취하는 대신,
볼츠만 접근 방식은 가중 확률을 통해 액션을 선택한다.
이를 위해 신경망에 소프트맥스를 사용해 각각의 액션에 대한 추정값을 구한다.
정답이 보장되는 것은 아니지만 대부분의 경우 에이전트가
최적이라고 추정하는 액션이 선택된다.
앱실론-그리디 접근법에 비해 가장 큰 장점은
다른 액션을 취할 경우의 값에 대한 정보까지 고려하게 된다는 점이다.
에이전트에게 4가지 액션이 가능한 경우 앱실론-그리디 방법에서는
최적이 아니라고 추정되는 나머지 3개의 액션들은 모두 동일하게 간주되지만,
볼츠만 탐험에서 이들은 상대적인 가중치를 부여받게 된다.
시간의 경과에 따라 감소하는 온도 매개변수 τ를 사용한다.
온도 매개변수는 소프트맥스 분포의 확산을 조절함으로써,
학습 시작시에는 모든 액션을 동일하게 간주하되
학습 종료 시점에는 액션들이 드문드문(sparse) 분포되도록 한다.
수식은 다음과 같다.
볼츠만 탐험의 단점은 다음과 같다.
볼츠만 탐험에 내재하는 가정은 신경망 출력값에 대한 소프트맥스가
각각의 액션에 대해 에이전트의 확신에 대한 척도를 제공한다는 것이다.
하지만 에이전트가 추정하는 것은 에이전트가 얼마나
그 액션이 최적이라고 생각하는지의 척도이지,
실제로 그 액션이 최적인지에 대한 확신은 아니다.
이 척도는 유용한 대리 척도가 될 수는 있지만
정확히 최선의 도움을 주는 탐험은 아닌 것이다.
우리가 진정 이해를 원하는 것은 다른 액션에 대해
에이전트가 품고 있는 불확실성이다.
텐서플로 기준 구현법은 다음과 같다.
# 볼츠만 확률을 계산하기 위해 신경망에 추가되는 부분
Temp = tf.placeholder(shape=None,dtype=tf.float32)
Q_dist = slim.softmax(Q_out/Temp)
# 액션 선택 시 사용할 코드
t = 0.5
Q_probs = sess.run(Q_dist, feed_dict={input:[state],Temp:t})
action_value = np.random.choice(Q_probs[0],p=Q_probs[0])
action = np.argmax(Q_probs[0] == action_value)
만약 에이전트가 자신의 액션에 대한 불확실성을 최대이용할 수 있다면 어떨까?
베이지언 신경망이라는 신경망 모델이 바로 이런 능력을 제공한다.
결정론적으로 행동하는 전통적인 신경망과는 다르게
베이지언 신경망은 확률적으로 행동한다.
다시 말해 베이지언 신경망은 고정된 일련의 한 가중치를 가지는 대신
가능한 가중치에 대한 확률분포를 가진다.
가중치의 확률분포는 액션의 확률분포로 이어진다.
분포의 분산은 각 액션에 대한 에이전트의 불확실성의 추정값이라고 볼 수 있다.
하지만 현실적으로 모든 가중치에 대한 분포를 유지하는 것은 비실용적이다.
따라서 확률적 신경망을 시뮬레이션하기 위해 드롭아웃을 활용한다.
드롭아웃을 이용해 신경망에서 반복적으로 샘플링함으로써
각 액션에 대한 불확실성의 척도를 얻을 수 있게 된다.
드롭아웃으로 신경망에서 하나의 샘플을 취하는 것은
베이지언 신경망에서 샘플링하는것과 유사한 일이다.
하지만 진정한 의미로 불확실성의 추정값을 얻기 위해서는
여러 샘플이 필요하기 때문에 연산의 복잡성이 증가된다.
텐서플로 기준 구현법은 다음과 같다.
# 신경망에 추가할 부분
keep_per = tf.placeholder(shape=None, dtype=tf.float32)
hidden = slim.dropout(hidden,keep_per)
# 액션 선택 시 사용할 코드
keep = 0.5
Q_values = sess.run(Q_out, feed_dict={inputs:[state],keep_per:keep})
# 샘플링한 Q 값으로 선호하는 액션 선택 전략을 넣는다.
action = ...
Rl from scratch part7

More Related Content

Similar to Rl from scratch part7

Reinforcement learning basic
Reinforcement learning basicReinforcement learning basic
Reinforcement learning basicJicheol Woo
 
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)Curt Park
 
Reinforcement learning
Reinforcement learningReinforcement learning
Reinforcement learningTae Young Lee
 
Soft Actor-Critic Algorithms and Applications 한국어 리뷰
Soft Actor-Critic Algorithms and Applications 한국어 리뷰Soft Actor-Critic Algorithms and Applications 한국어 리뷰
Soft Actor-Critic Algorithms and Applications 한국어 리뷰태영 정
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical MethodologyKyeongUkJang
 
Deep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsDeep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsseungwoo kim
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝Haesun Park
 
파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강Woong won Lee
 
Function approximation as supervised learning
Function approximation as supervised learningFunction approximation as supervised learning
Function approximation as supervised learningSunggon Song
 
2018 06-11-active-question-answering
2018 06-11-active-question-answering2018 06-11-active-question-answering
2018 06-11-active-question-answeringWoong won Lee
 
한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서Euijin Jeong
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usageTae Young Lee
 
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트혜승 이
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2HoChul Shin
 
[Paper] auto ml part 1
[Paper] auto ml part 1[Paper] auto ml part 1
[Paper] auto ml part 1Susang Kim
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3Haesun Park
 
강화학습 & Unity ML Agents
강화학습 & Unity ML Agents강화학습 & Unity ML Agents
강화학습 & Unity ML AgentsHyunjong Lee
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 

Similar to Rl from scratch part7 (20)

Reinforcement learning basic
Reinforcement learning basicReinforcement learning basic
Reinforcement learning basic
 
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
 
Reinforcement learning
Reinforcement learningReinforcement learning
Reinforcement learning
 
Soft Actor-Critic Algorithms and Applications 한국어 리뷰
Soft Actor-Critic Algorithms and Applications 한국어 리뷰Soft Actor-Critic Algorithms and Applications 한국어 리뷰
Soft Actor-Critic Algorithms and Applications 한국어 리뷰
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
Deep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsDeep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendations
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
 
파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강
 
Function approximation as supervised learning
Function approximation as supervised learningFunction approximation as supervised learning
Function approximation as supervised learning
 
2018 06-11-active-question-answering
2018 06-11-active-question-answering2018 06-11-active-question-answering
2018 06-11-active-question-answering
 
한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
Rl
RlRl
Rl
 
MachineLearning
MachineLearningMachineLearning
MachineLearning
 
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2
 
[Paper] auto ml part 1
[Paper] auto ml part 1[Paper] auto ml part 1
[Paper] auto ml part 1
 
2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3
 
강화학습 & Unity ML Agents
강화학습 & Unity ML Agents강화학습 & Unity ML Agents
강화학습 & Unity ML Agents
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 

Rl from scratch part7

  • 2. 1. 그리디 접근법 2. 랜덤 접근법 3. 앱실론-그리디 접근법 4. 랜덤 노이즈 접근법 5. 볼츠만 접근법 6. 베이지언 접근법
  • 3. 에이전트가 환경 내에서 가능한 모든 상태를 최적으로 처리하도록 학습하려면 에이전트는 환경에 최대한 많이 노출되어야 한다. 하지만 전통적인 지도학습의 설정에서와는 달리, 강화학습 문제에서 에이전트는 자신의 액션을 통해서만 환경에 접근할 수 있다. 에이전트는 좋은 정책을 학습하기 위해 제대로 된 경험을 필요로 하지만, 이러한 경험을 얻기 위해서는 좋은 정책이 필요하다. 이러한 문제 때문에 강화학습에는 완전한 하위 분야가 하나 생겨나게 되었다. 바로 탐험(exploration)과 최대이용(exploitation) 트레이드오프의 의미 있는 균형을 맞추기 위한 기법을 개발하려는 시도이다.
  • 4. 모든 강화학습 알고리즘은 시간의 경과에 따라 보상을 최대화하고자 한다. 단순히 어떤 주어진 시간에 최적의 액션을 취하는 방법은 단순히 가장 큰 보상을 가져올 것으로 기대되는 액션을 취하는 것이다. 이것을 그리디 접근법(탐욕 알고리즘)이라고 한다. 현재 순간에 에이전트가 최선이라고 추정하는 액션을 취하는 것은 최대이용이 한 예이기도 하다. 에이전트는 액션을 취할 환경의 보상 구조에 대해 현재의 지식을 최대이용하는 셈이다. 이 접근법에서는 탐험의 가능성이 없거나 거의 없다고 간주된다. 그리디 접근법의 문제점은 거의 항상 차선의 해결책에 도달하게 된다는 것이다. 텐서플로 기준 구현법은 다음과 같다. Q_values = sess.run(Q_out, feed_dict={inputs:[state]}) action = np.argmax(Q_values)
  • 5. 랜덤 접근법은 그리디한 선택과 정반대의 접근법으로, 말 그대로 언제나 단순하게 랜덤한 액션을 취하는 방법이다. 단점은 이 접근법은 오직 랜덤한 정책이 최적인 환경에서만 이상적일 수 있다. 텐서플로 기준 구현법은 다음과 같다. # 오픈AI 짐 환경을 사용하는 경우 action = env.action_space.sample() # 그 밖의 경우 action = np.random.randint(0,total_actions)
  • 6. 그리디 접근법과 랜덤 접근법을 조합한 것이 앱실론-그리디 접근법이다. 이 접근법에서 에이전트는 대부분의 경우에 스스로 최적의 액션이라고 믿는 액션을 선택하게 되지만, 때로는 랜덤하게 액션을 선택한다. 이상적이라고 추정할 수 없는 액션을 취하는 셈이지만, 이것이 때로는 에이전트에게 새로운 정보를 제공해줄 수도 있다. 앱실론은 원칙에 입각한 액션보다는 랜덤한 액션을 취하는 확률을 뜻하는 매개변수이다. 학습 과정을 시작할 때 앱실론 값은 에이전트가 환경에 대해 아는 것이 거의 없는 상태이므로 탐험을 촉진하기 위하여 보통 큰 확률로 초기화된다. 이 값은 이후에 작은 상수로 작아지게 되는데 이는 에이전트가 환경에 대해 필요로 하는 대부분의 내용을 학습했다고 간주하기 때문이다. 하지만 이 접근법은 단지 액션이 가장 큰 보상을 가져오는가 아닌가만 고려하 기 때문에 최적의 접근법이라고는 할 수 없다.
  • 7. 텐서플로 기준 구현법은 다음과 같다. if np.random.rand(1) < e: action = env.action_space.sample() else: Q_dist = sess.run(Q_out, feed_dict={inputs:[state]}) action = np.argmax(Q_dist)
  • 8. 기존 Q 값을 어느 정도 살리면서 탐험을 위해 랜덤한 노이즈 값을 더하는 기법이다. 학습이 진행됨에 따라 더해주는 노이즈 값도 점점 작아지게끔 해준다. 텐서플로 기준 구현법은 다음과 같다. Q_dist = sess.run(Q_out, feed_dict={inputs:[state]}) action = np.argmax(Q_dist + np.random.randn(1, env.action_space.n/(i+1))
  • 9. 우리는 탐험을 진행할 때 신경망에 의해 산출되는 Q 값 내에 존재하는 모든 정보를 이상적으로 최대이용하기를 원한다. 볼츠만 탐험이 이를 수행한다. 항상 최적의 액션을 취하거나 또는 항상 랜덤한 액션을 취하는 대신, 볼츠만 접근 방식은 가중 확률을 통해 액션을 선택한다. 이를 위해 신경망에 소프트맥스를 사용해 각각의 액션에 대한 추정값을 구한다. 정답이 보장되는 것은 아니지만 대부분의 경우 에이전트가 최적이라고 추정하는 액션이 선택된다. 앱실론-그리디 접근법에 비해 가장 큰 장점은 다른 액션을 취할 경우의 값에 대한 정보까지 고려하게 된다는 점이다. 에이전트에게 4가지 액션이 가능한 경우 앱실론-그리디 방법에서는 최적이 아니라고 추정되는 나머지 3개의 액션들은 모두 동일하게 간주되지만, 볼츠만 탐험에서 이들은 상대적인 가중치를 부여받게 된다.
  • 10. 시간의 경과에 따라 감소하는 온도 매개변수 τ를 사용한다. 온도 매개변수는 소프트맥스 분포의 확산을 조절함으로써, 학습 시작시에는 모든 액션을 동일하게 간주하되 학습 종료 시점에는 액션들이 드문드문(sparse) 분포되도록 한다. 수식은 다음과 같다.
  • 11. 볼츠만 탐험의 단점은 다음과 같다. 볼츠만 탐험에 내재하는 가정은 신경망 출력값에 대한 소프트맥스가 각각의 액션에 대해 에이전트의 확신에 대한 척도를 제공한다는 것이다. 하지만 에이전트가 추정하는 것은 에이전트가 얼마나 그 액션이 최적이라고 생각하는지의 척도이지, 실제로 그 액션이 최적인지에 대한 확신은 아니다. 이 척도는 유용한 대리 척도가 될 수는 있지만 정확히 최선의 도움을 주는 탐험은 아닌 것이다. 우리가 진정 이해를 원하는 것은 다른 액션에 대해 에이전트가 품고 있는 불확실성이다.
  • 12. 텐서플로 기준 구현법은 다음과 같다. # 볼츠만 확률을 계산하기 위해 신경망에 추가되는 부분 Temp = tf.placeholder(shape=None,dtype=tf.float32) Q_dist = slim.softmax(Q_out/Temp) # 액션 선택 시 사용할 코드 t = 0.5 Q_probs = sess.run(Q_dist, feed_dict={input:[state],Temp:t}) action_value = np.random.choice(Q_probs[0],p=Q_probs[0]) action = np.argmax(Q_probs[0] == action_value)
  • 13. 만약 에이전트가 자신의 액션에 대한 불확실성을 최대이용할 수 있다면 어떨까? 베이지언 신경망이라는 신경망 모델이 바로 이런 능력을 제공한다. 결정론적으로 행동하는 전통적인 신경망과는 다르게 베이지언 신경망은 확률적으로 행동한다. 다시 말해 베이지언 신경망은 고정된 일련의 한 가중치를 가지는 대신 가능한 가중치에 대한 확률분포를 가진다. 가중치의 확률분포는 액션의 확률분포로 이어진다. 분포의 분산은 각 액션에 대한 에이전트의 불확실성의 추정값이라고 볼 수 있다. 하지만 현실적으로 모든 가중치에 대한 분포를 유지하는 것은 비실용적이다. 따라서 확률적 신경망을 시뮬레이션하기 위해 드롭아웃을 활용한다. 드롭아웃을 이용해 신경망에서 반복적으로 샘플링함으로써 각 액션에 대한 불확실성의 척도를 얻을 수 있게 된다. 드롭아웃으로 신경망에서 하나의 샘플을 취하는 것은 베이지언 신경망에서 샘플링하는것과 유사한 일이다. 하지만 진정한 의미로 불확실성의 추정값을 얻기 위해서는 여러 샘플이 필요하기 때문에 연산의 복잡성이 증가된다.
  • 14. 텐서플로 기준 구현법은 다음과 같다. # 신경망에 추가할 부분 keep_per = tf.placeholder(shape=None, dtype=tf.float32) hidden = slim.dropout(hidden,keep_per) # 액션 선택 시 사용할 코드 keep = 0.5 Q_values = sess.run(Q_out, feed_dict={inputs:[state],keep_per:keep}) # 샘플링한 Q 값으로 선호하는 액션 선택 전략을 넣는다. action = ...