Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CNN预测股票走势基于Tensorflow(思路+程序)

CNN预测股票走势基于Tensorflow(思路+程序)

作者头像
量化投资与机器学习微信公众号
发布于 2018-01-29 09:43:32
发布于 2018-01-29 09:43:32
10.4K00
代码可运行
举报
运行总次数:0
代码可运行

前言

我们希望找出跟随价格上涨的模式。通过每日收盘价,MA,KD,RSI,yearAvgPrice 本次推文研究只是展示深入学习的一个例子。 结果估计不是很好。希望抛砖引玉,给大家带来更多的思考。策略使用的数据从雅虎财务获取。

  • 什么时候要买或者卖
  • 股票走势预测

CNN

交通标志的图像由4 5×5卷积内核过滤,创建4个特征图,这些特征图通过最大池合并采样。 下一层对这些子采样图像应用10 5×5卷积核,并再次汇集特征图。 最终层是完全连接的层,其中所有生成的特征被组合并在分类器中使用(基本上是逻辑回归)

股票市场应用

根据历史数据做出正确的决策

TensorFlow

DQN_CNN_image

这是这个策略的核心思路。我们将数据(年线,月线,收盘价)作为图像,并使用CNN来识别其模式。

  • 将图像转换为数组:
  • 交易策略:达到+10%或者-5%时卖出。

下面来介绍一下DQN

(参考:知乎 - 智能单元 - Flood Sung)

编写基本DQN类的结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class DQN():#初始化
  def __init__(self, env): #创建Q网络
  def create_Q_network(self): #创建训练方法
  def create_training_method(self): #感知存储信息
  def perceive(self,state,action,reward,next_state,done):#训练网络
  def train_Q_network(self):#输出带随机的动作
  def egreedy_action(self,state):#输出动作
  def action(self,state):

我们知道,我们的DQN一个很重要的功能就是要能存储数据,然后在训练的时候minibatch出来。所以,我们需要构造一个存储机制。这里使用deque来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.replay_buffer = deque()

初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def __init__(self, env):
    # init experience replay
    self.replay_buffer = deque()        # init some parameters
    self.time_step = 0
    self.epsilon = INITIAL_EPSILON
    self.state_dim = env.observation_space.shape[0]
    self.action_dim = env.action_space.n

    self.create_Q_network()
    self.create_training_method()    # Init session
    self.session = tf.InteractiveSession()
    self.session.run(tf.initialize_all_variables())

这里要注意一点就是egreedy的epsilon是不断变小的,也就是随机性不断变小。怎么理解呢?就是一开始需要更多的探索,所以动作偏随机,慢慢的我们需要动作能够有效,因此减少随机。

创建Q网络

我们这里创建最基本的MLP,中间层设置为20:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def create_Q_network(self):
    # network weights
    W1 = self.weight_variable([self.state_dim,20])
    b1 = self.bias_variable([20])
    W2 = self.weight_variable([20,self.action_dim])
    b2 = self.bias_variable([self.action_dim])        # input layer
    self.state_input = tf.placeholder("float",[None,self.state_dim])        # hidden layers
    h_layer = tf.nn.relu(tf.matmul(self.state_input,W1) + b1)        # Q Value layer
    self.Q_value = tf.matmul(h_layer,W2) + b2  def weight_variable(self,shape):
    initial = tf.truncated_normal(shape)        return tf.Variable(initial)  def bias_variable(self,shape):
    initial = tf.constant(0.01, shape = shape)        return tf.Variable(initial)

只有一个隐层,然后使用relu非线性单元。相信对MLP有了解的知友看上面的代码很easy!要注意的是我们state 输入的格式,因为使用minibatch,所以格式是[None,state_dim]

编写perceive函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def perceive(self,state,action,reward,next_state,done):
    one_hot_action = np.zeros(self.action_dim)
    one_hot_action[action] = 1
     self.replay_buffer.append((state,one_hot_action,reward,next_state,done))        if len(self.replay_buffer) > REPLAY_SIZE:
      self.replay_buffer.popleft()        if len(self.replay_buffer) > BATCH_SIZE:
      self.train_Q_network()

这里需要注意的一点就是动作格式的转换。我们在神经网络中使用的是one hot key的形式,而在OpenAI Gym中则使用单值。什么意思呢?比如我们输出动作是1,那么对应的one hot形式就是[0,1],如果输出动作是0,那么one hot 形式就是[1,0]。这样做的目的是为了之后更好的进行计算。

在perceive中一个最主要的事情就是存储。然后根据情况进行train。这里我们要求只要存储的数据大于Batch的大小就开始训练。

编写action输出函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def egreedy_action(self,state):
    Q_value = self.Q_value.eval(feed_dict = {
      self.state_input:[state]
      })[0]        if random.random() <= self.epsilon:             return random.randint(0,self.action_dim - 1)        else:             return np.argmax(Q_value)
    self.epsilon -= (INITIAL_EPSILON - FINAL_EPSILON)/10000def action(self,state):
    return np.argmax(self.Q_value.eval(feed_dict = {
      self.state_input:[state]
      })[0])

区别之前已经说过,一个是根据情况输出随机动作,一个是根据神经网络输出。由于神经网络输出的是每一个动作的Q值,因此我们选择最大的那个Q值对应的动作输出。

编写training method函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  def create_training_method(self):
    self.action_input = tf.placeholder("float",[None,self.action_dim]) # one hot presentation
    self.y_input = tf.placeholder("float",[None])
    Q_action = tf.reduce_sum(tf.mul(self.Q_value,self.action_input),reduction_indices = 1)
    self.cost = tf.reduce_mean(tf.square(self.y_input - Q_action))
    self.optimizer = tf.train.AdamOptimizer(0.0001).minimize(self.cost)

这里的y_input就是target Q值。我们这里采用Adam优化器,其实随便选择一个必然SGD,RMSProp都是可以的。可能比较不好理解的就是Q值的计算。这里大家记住动作输入是one hot key的形式,因此将Q_value和action_input向量相乘得到的就是这个动作对应的Q_value。然后用reduce_sum将数据维度压成一维。

编写training函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def train_Q_network(self):
    self.time_step += 1
    # Step 1: obtain random minibatch from replay memory
    minibatch = random.sample(self.replay_buffer,BATCH_SIZE)
    state_batch = [data[0] for data in minibatch]
    action_batch = [data[1] for data in minibatch]
    reward_batch = [data[2] for data in minibatch]
    next_state_batch = [data[3] for data in minibatch]    # Step 2: calculate y
    y_batch = []
    Q_value_batch = self.Q_value.eval(feed_dict={self.state_input:next_state_batch})    for i in range(0,BATCH_SIZE):
      done = minibatch[i][4]      if done:
        y_batch.append(reward_batch[i])      else :
        y_batch.append(reward_batch[i] + GAMMA * np.max(Q_value_batch[i]))

    self.optimizer.run(feed_dict={
      self.y_input:y_batch,
      self.action_input:action_batch,
      self.state_input:state_batch
      })

首先就是进行minibatch的工作,然后根据batch计算y_batch。最后就是用optimizer进行优化。

程序文件

DQN_draw_yearline.py:用于 yearline img和closeprice img,然后构建模型。

部分代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class TWStock():
    def __init__(self, stock_data,label):
        self.stock_data = stock_data
        self.stock_index = 0
        self.label=label    def render(self):
        return 

    def reset(self):
        self.stock_index = 0
        return self.stock_data[self.stock_index]        # 0: 观望, 1: 持有多单, 2: 持有空单
    def step(self, action): 
        self.stock_index += 1
        #action_reward = self.stock_data[self.stock_index][day_len-1] - self.stock_data[self.stock_index+10][day_len-1] 
        action_reward=self.label[self.stock_index]                if (action == 0):
            action_reward = 0

        if (action == 2):
            action_reward = -1 * action_reward

        stock_done = False
        if self.stock_index+10 >= len(self.stock_data)-1:
            stock_done = True
        else:
            stock_done = False
        return self.stock_data[self.stock_index], action_reward, stock_done, 0def conv2d(x, W,s):
  return tf.nn.conv2d(x, W, strides=[1, s,s,1], padding='SAME')def max_pool_2x2(x):
  return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
                        strides=[1, 2, 2, 1], padding='SAME')

DQN_yearline_reward.py:建立应该训练大约24小时的模型。 //首先运行DQN_draw_yearline.py

部分代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def main():
 env = TWStock(my_img,label_train) 
 agent = DQN(env)

 train_output=""
 rate_string=""
 for episode in xrange(EPISODE):   # initialize task
   state = env.reset()   # Train
   out="train\n"

   train_reward=0
   for step in xrange(STEP):
     action = agent.egreedy_action(state) # e-greedy action for trai

     next_state,reward,done,_ = env.step(action)
     out+=str(reward)+" "
     train_reward+=reward     # Define reward for agent
     reward_agent = -1 if done else 0.1
     agent.perceive(state,action,reward,next_state,done)
     state = next_state     if done:       break
   anal=out.split()
   p=0.0
   n=0.0
   for x in range(1,len(anal)-1):     if(float(anal[x])>0):
      p+=float(anal[x])     elif(float(anal[x])<0):
      n+=float(anal[x])

   rate=round(p/(n*(-1)+p),2)
   rate_string+=str(rate)+" "  
   fo.write(out+"\n")
   train_output+=str(train_reward)+" "
   # Test every 100 episodes
   if episode % 10 == 0:
     out="test\n"     
     env1=TWStock(my_test,label_test)
     total_reward = 0

Test model by yearline.ipynb:有一个模型exsit在saved_year_r。 代码创建一些img来测试。

部分代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for x in xrange(0,len(label_test)):
     sum_+=label_test[x]     if(x % 20==0 and x!=0):
         label_line=np.append(label_line,sum_)
         sum_=0
 label_line=np.delete(label_line,0)
 month_arr=np.delete(month_arr,0)
 buy_rate=np.delete(buy_rate,0) for x in xrange(0,len(month_arr)):        #month_arr[x]=month_arr[x]*buy_rate[x]
        label_line[x]=label_line[x]*buy_rate[x] print (buy_rate)
 plt.figure()
 plt.plot(label_line, 'ro',label='baseline',linewidth=1,color=[1,0,0])
 plt.title("monthly profit with baseline") #plt.plot(month_arr,label='predict',linewidth=5,color=[0,1,0])
 width = 0.6
 plt.bar([0,0.7,1.7,2.7,3.7,4.7,5.7,6.7,7.7,8.7,9.3],month_arr,width=width,label='predict') #plt.axis([0, 14, min_y, max_y])
 plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)

 plt.show()if __name__ == '__main__':
 main()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dimension: 1024
Successfully loaded: saved_year_r/network-dqn-652000
Evaluation Total Reward: 182.0
[0.55 0.35 0.6 0.55 0.4 0.6 0.7 0.45 0.3 0.15 0.0]

DQN_img_closePrice.py:通过closeprice img构建模型并进行评估。

部分代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 def create_training_method(self):
    self.action_input = tf.placeholder("float",[None,self.action_dim])    # one hot presentation
    self.y_input = tf.placeholder("float",[None])
    Q_action = tf.reduce_sum(tf.mul(self.Q_value,self.action_input),reduction_indices = 1)
    self.cost = tf.reduce_mean(tf.square(self.y_input - Q_action))
    self.optimizer =  tf.train.RMSPropOptimizer(0.00025,0.99,0.0,1e-6).minimize(self.cost)    #tf.scalar_summary("cost", values=self.cost)
    #tf.histogram_summary("cost", values=self.cost)

  def perceive(self,state,action,reward,next_state,done):
    one_hot_action = np.zeros(self.action_dim)
    one_hot_action[action] = 1
    self.replay_buffer.append((state,one_hot_action,reward,next_state,done))    if len(self.replay_buffer) > REPLAY_SIZE:
      self.replay_buffer.popleft()    if len(self.replay_buffer) > BATCH_SIZE:
      self.train_Q_network()

策略过程

分布式训练

  • 需要考虑传输时间
  • 比如
  • 实验5层CNN模型

分布式训练在TensorFlow

  • 定义一个工作集群{“ps”,“worker”}
  • 设置任务(这里我们做数据并行,所以每个任务是一样的)
  • 连接时将任务分配给服务器

对于MNIST分布式培训样本,参照以下代码(给出部分):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport mathimport sysimport reimport tempfileimport timeimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datafrom tensorflow.contrib import layersimport tensorflow.contrib.learn as skflow

flags = tf.app.flags
flags.DEFINE_string("data_dir", "./MNIST_data",                    "Directory for storing mnist data")
flags.DEFINE_boolean("download_only", False,                     "Only perform downloading of data; Do not proceed to "
                     "session preparation, model definition or training")#airflags.DEFINE_string("job_name", "","One of 'ps' or 'worker'")'''flags.DEFINE_string("ps_hosts", "10.81.103.124:7777","List of hostname:port for ps jobs."
            "This string should be the same on every host!!")
flags.DEFINE_string("worker_hosts", "10.81.103.124:2224,10.81.103.122:2222,10.81.103.118:2218,10.81.103.119:2219,10.81.103.120:2220,10.81.103.121:2221","List of hostname:port for worker jobs."
            "This string should be the same on every host!!")'''flags.DEFINE_string("ps_hosts", "10.81.103.122:7777","List of hostname:port for ps jobs."
            "This string should be the same on every host!!")
flags.DEFINE_string("worker_hosts", "10.81.103.122:2222,  10.81.103.122:2226","List of hostname:port for worker jobs."
            "This string should be the same on every host!!")

表现

例子1:

  • 训练:2011〜2014 15-day 图像只有每日收盘价。
  • 测试:2016/01〜2016/08
  • 交易策略:回报 =(明天的收盘价) - (今天收盘价)如果预测买入。 反之。
  • 表现不佳

例子2:

交易策略:达到+10%或者-5%时卖出。

表现

1.Indicators Feature MA can drop the loss compare with RSI and ClosePrice at training step

预测2016年5日后涨跌准确率为:58%~60%

Loss:预测和实际的差,应随着训练次数增加而下降。

2.When To Buy With 10 days MA5 as an instance.

训练数据(2330_train_15):2001〜2014 2330.tw。

实际在90天内大幅上升至15%时,标记为1。 并和4次标记为0的在一起。

测试数据(2330_test):2015/07〜2016/08 MA5。

运行CNN_Classifier.ipynb后,Result将被可视化。

部分代码

DQN_MLP_closePrice

和价格接近。 这可能会改变为其他功能,如RSI,KD,MA ....或者,使用它们。

部分代码

不用closePrice。 用其他特征。

DQN_KD_value使用KD值图片进行预测。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python DQN_kd_pic.py //this call KD_draw.py and build model.
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DQN系列(3): 优先级经验回放(Prioritized Experience Replay)论文阅读、原理及实现
通常情况下,在使用“经验”回放的算法中,通常从缓冲池中采用“均匀采样(Uniformly sampling)”,虽然这种方法在DQN算法中取得了不错的效果并登顶Nature,但其缺点仍然值得探讨,本文提出了一种 “优先级经验回放(prioritized experience reolay)” 技术去解决采样问题,并将这种方法应用在DQN中实现了state-of-the-art的水平。
深度强化学习实验室
2020/05/27
4.9K0
强化学习(八)价值函数的近似表示与Deep Q-Learning
    在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法。今天开始我们步入深度强化学习。这一篇关注于价值函数的近似表示和Deep Q-Learning算法。
刘建平Pinard
2018/10/11
1.4K0
强化学习(八)价值函数的近似表示与Deep Q-Learning
【SSL-RL】基于好奇心驱动的自监督探索机制(ICM算法)
Intrinsic Curiosity Module (ICM) 是一种用于强化学习的内在奖励机制,旨在解决传统强化学习中在稀疏奖励场景下,智能体难以学习有效策略的问题。该算法由 Deepak Pathak 等人在论文《Curiosity-driven Exploration by Self-supervised Prediction》中提出。ICM 是通过引入“好奇心”作为一种内在动机,帮助智能体在缺乏外部奖励的情况下探索环境并获取经验,从而提高强化学习的效率。
不去幼儿园
2024/12/03
1950
【SSL-RL】基于好奇心驱动的自监督探索机制(ICM算法)
强化学习反馈稀疏问题-HindSight Experience Replay原理及实现!
在强化学习中,反馈稀疏是一个比较常见同时令人头疼的问题。因为我们大部分情况下都无法得到有效的反馈,模型难以得到有效的学习。为了解决反馈稀疏的问题,一种常用的做法是为Agent增加一些内在的目标使反馈变的不再稀疏。
石晓文
2018/12/27
2K0
Win10环境下使用WSL安装OpenAI/gym +TensorFlow用强化学习DQN打砖块(Breakout Game)
我们的目标是在Windows 10系统上具体实现DeepMind论文中强化学习算法Q-learning Network(DQN)的训练过程。
大鹅
2021/06/15
1.5K0
Win10环境下使用WSL安装OpenAI/gym +TensorFlow用强化学习DQN打砖块(Breakout Game)
用一个小游戏入门深度强化学习
今天我们来用深度强化学习算法 deep Q-learning 玩 CartPole 游戏。
杨熹
2018/10/09
1.4K0
用一个小游戏入门深度强化学习
强化学习/增强学习/再励学习介绍 | 深度学习 | 干货分享 | 解读技术
Deepmind团队在17年12月5日发布的最新Alpha Zero中,非常重要的一种方法就是强化学习(reinforcement learning),又称再励学习、评价学习,是一种重要的机器学习方法,靠自身的经历进行学习。通过这种方式,RLS在行动-评价的环境中获得知识,改进行动方案以适应环境。正因为可以在小数据量的情况下靠自身的行动获得经验,所以Alpha Zero可以通过自我对弈进行学习提高。深度学习的一种分类方式:监督学习、无监督学习、半监督学习、强化学习。
用户7623498
2020/08/04
1.5K0
强化学习/增强学习/再励学习介绍 | 深度学习 | 干货分享 | 解读技术
【RL Base】强化学习核心算法:深度Q网络(DQN)算法
深度Q网络(DQN)是深度强化学习的核心算法之一,由Google DeepMind在2015年的论文《Playing Atari with Deep Reinforcement Learning》中提出。DQN通过结合深度学习和强化学习,利用神经网络近似Q值函数,在高维、连续状态空间的环境中表现出了强大的能力。
不去幼儿园
2024/12/03
3140
【RL Base】强化学习核心算法:深度Q网络(DQN)算法
7个流行的强化学习算法及代码实现
来源:Deephub Imba 本文约4500字,建议阅读5分钟 本文介绍了流行的强化学习算法的发展和改进。 目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法已被用于在游戏、机器人和决策制定等各种应用中,并且这些流行的算法还在不断发展和改进,本文我们将对其做一个简单的介绍。 1、Q-learning Q-learning:Q-learning 是一种无模型、非策略的强化学习算法。它使用 Bellman 方程估计最佳动作值函数,该方程
数据派THU
2023/04/18
6300
7个流行的强化学习算法及代码实现
MADQN:多代理合作强化学习
处理单一任务是强化学习的基础,它的目标是在不确定的环境中采取最佳行动,产生相对于任务的最大长期回报。但是在多代理强化学习中,因为存在多个代理,所以代理之间的关系可以是合作的,也可以是对抗,或者两者的混合。多代理的强化学习引入了更多的复杂性,每个代理的状态不仅包括对自身的观察,还包括对其他代理位置及其活动的观察。
deephub
2024/03/20
3480
MADQN:多代理合作强化学习
【强化学习】DQN 在运筹学中的应用
前段时间给出了 Q-Learning 在排班调度中的应用,现在给出 DQN 的实现。
阿泽 Crz
2020/11/09
9970
OpenAI Gym 中级教程——强化学习实践项目
通过这个实际项目,我们演示了如何在 OpenAI Gym 中使用深度 Q 网络(DQN)来解决经典的 CartPole 问题。我们创建了一个简单的 DQN 模型,实现了经验回放缓冲区,并进行了训练。这个项目为初学者提供了一个实践的起点,同时展示了在强化学习任务中使用 TensorFlow 和 OpenAI Gym 的基本步骤。希望这篇博客能够帮助你更好地理解和应用强化学习算法。
Echo_Wish
2024/02/03
2820
强化学习第十三篇:使用深度学习解决迷宫问题,完整步骤和代码
前面强化学习推送到第十二篇,迷宫问题已使用Q-learning解决过,今天使用另一种方法:深度Q网络,简称DQN网络解决。
double
2024/04/11
1.6K0
强化学习第十三篇:使用深度学习解决迷宫问题,完整步骤和代码
强化学习算法总结(一)——从零到DQN变体
中对应价值最大的动作的Q值进行更新,注意这里只是更新,并不会真的执行这个价值最大的动作。这里的更新策略(评估策略)与我们的行为策略(
CristianoC
2021/04/16
2.7K0
强化学习算法总结(一)——从零到DQN变体
【RL】基于迁移学习的强化学习(RL-TL)算法
基于迁移学习的强化学习(Reinforcement Learning with Transfer Learning,简称 RL-TL)是将迁移学习(Transfer Learning)的概念应用于强化学习(Reinforcement Learning,简称 RL)中的一种方法。其核心思想是在强化学习的环境中,利用已有的经验或在其他任务中学到的知识来提升学习效率和表现。这样可以减少从零开始学习的时间和样本需求,尤其在数据稀缺或任务复杂的场景中。
不去幼儿园
2024/12/03
1550
【RL】基于迁移学习的强化学习(RL-TL)算法
【强化学习】Double DQN(Double Deep Q-Network)算法
强化学习中的深度Q网络(DQN)是一种将深度学习与Q学习结合的算法,它通过神经网络逼近Q函数以解决复杂的高维状态问题。然而,DQN存在过估计问题(Overestimation Bias),即在更新Q值时,由于同时使用同一个网络选择动作和计算目标Q值,可能导致Q值的估计偏高。
不去幼儿园
2025/01/08
1.5K0
【强化学习】Double DQN(Double Deep Q-Network)算法
强化学习Double DQN方法玩雅达利Breakout游戏完整实现代码与评估pytorch
Breakout是一款经典的雅达利游戏,也就是我们所熟知的“打砖块”。玩家需要左右移动在屏幕下方的短平板子将一颗不断弹跳的小球反弹回屏幕上方,使其将一块块矩形砖块组成的六行砖块墙面打碎,并防止小球从屏幕底部掉落。在Atari 2600版本的Breakout中,玩家共有5次小球掉落机会,一旦用完就标志游戏结束,每打掉一块砖块得1分,全部打掉则游戏胜利结束。
Ranlychan
2024/01/10
1K0
强化学习(九)Deep Q-Learning进阶之Nature DQN
    在强化学习(八)价值函数的近似表示与Deep Q-Learning中,我们讲到了Deep Q-Learning(NIPS 2013)的算法和代码,在这个算法基础上,有很多Deep Q-Learning(以下简称DQN)的改进版,今天我们来讨论DQN的第一个改进版Nature DQN(NIPS 2015)。
刘建平Pinard
2018/10/11
1.2K0
【机器学习】突出强化学习中智能体通过与环境交互不断成长,其决策能力逐步进化提升,展现强化学习核心特点与动态过程。
在强化学习中,智能体是能够感知环境并采取行动的实体,而环境则是智能体所处的外部世界,智能体与环境之间通过交互来实现学习过程。例如,在一个简单的迷宫游戏中,智能体可以是一个试图找到出口的虚拟角色,而迷宫及其内部的障碍物、出口等构成了环境。
逆向-落叶
2024/12/25
2470
【机器学习】突出强化学习中智能体通过与环境交互不断成长,其决策能力逐步进化提升,展现强化学习核心特点与动态过程。
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
深度Q网络(Deep Q-Network,DQN)是结合深度学习与强化学习的一种方法,用于解决复杂的决策问题。本文将详细介绍如何使用Python实现DQN,主要包括以下几个方面:
Echo_Wish
2024/06/27
9030
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
推荐阅读
DQN系列(3): 优先级经验回放(Prioritized Experience Replay)论文阅读、原理及实现
4.9K0
强化学习(八)价值函数的近似表示与Deep Q-Learning
1.4K0
【SSL-RL】基于好奇心驱动的自监督探索机制(ICM算法)
1950
强化学习反馈稀疏问题-HindSight Experience Replay原理及实现!
2K0
Win10环境下使用WSL安装OpenAI/gym +TensorFlow用强化学习DQN打砖块(Breakout Game)
1.5K0
用一个小游戏入门深度强化学习
1.4K0
强化学习/增强学习/再励学习介绍 | 深度学习 | 干货分享 | 解读技术
1.5K0
【RL Base】强化学习核心算法:深度Q网络(DQN)算法
3140
7个流行的强化学习算法及代码实现
6300
MADQN:多代理合作强化学习
3480
【强化学习】DQN 在运筹学中的应用
9970
OpenAI Gym 中级教程——强化学习实践项目
2820
强化学习第十三篇:使用深度学习解决迷宫问题,完整步骤和代码
1.6K0
强化学习算法总结(一)——从零到DQN变体
2.7K0
【RL】基于迁移学习的强化学习(RL-TL)算法
1550
【强化学习】Double DQN(Double Deep Q-Network)算法
1.5K0
强化学习Double DQN方法玩雅达利Breakout游戏完整实现代码与评估pytorch
1K0
强化学习(九)Deep Q-Learning进阶之Nature DQN
1.2K0
【机器学习】突出强化学习中智能体通过与环境交互不断成长,其决策能力逐步进化提升,展现强化学习核心特点与动态过程。
2470
使用Python实现深度学习模型:强化学习与深度Q网络(DQN)
9030
相关推荐
DQN系列(3): 优先级经验回放(Prioritized Experience Replay)论文阅读、原理及实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验