Tensorflow实战学习(三十七)【实现强化学习策略网络】

学习笔记TF037:实现强化学习策略网络 强化学习(Reinforcement Learing),机器学习重要分支,解决连续决策问题。强化学习问题三概念,环境状态(Environment State)、行动(Action)、奖励(Reward),目标获得最多累计奖励。强化学习模型根据环境状态、行动和奖励,学习出最佳策略,以最终结果为目标,不能只看某个行动当下带来的利益,还要看行动未来带来的价值。AutoEncoder属于无监督学习,MLP、 阅读详情

强化学习(Reinforcement Learing),机器学习重要分支,解决连续决策问题。强化学习问题三概念,环境状态(Environment State)、行动(Action)、奖励(Reward),目标获得最多累计奖励。强化学习模型根据环境状态、行动和奖励,学习出最佳策略,以最终结果为目标,不能只看某个行动当下带来的利益,还要看行动未来带来的价值。

AutoEncoder属于无监督学习,MLP、CNN、RNN属于监督学习,强化学习目标变化、不明确,或不存绝对正确标签。

Google DeepMind结合强化学习和深度学习,提出DQN(Deep Q-Network,深度Q网络)。AlphaGo结合策略网络(Policy Network)、估值网络(Value Network,DQN)、蒙特卡洛搜索树(Monte Carlo Tree Search)。

无人驾驶是非常复杂、困难强化学习任务。无人驾驶汽车通过摄像头、雷达、激光测距仪、传感器观测环境,获取丰富环境信息,深度强化学习模型CNN、RNN处理、抽象、转化环境信息,结合强化学习算法框架预测最应执行动作(加速、减速、转换方向),实现自动驾驶。每次执行动作,到目的地路程更短,作为每次行动奖励。最终目标是安全顺利到达目的地,得到奖励最多。

强化学习两大类,Policy-Based(Policy Gradients)和Value-Based(Q-Learning)。Policy-Based直接预测环境状态下应采取Action,Value-Based预测环境状态下所有Action期望价值(Q值),选择Q值最高Action执行。Value-Based适合少量离散取值Action,Policy-Based适合Aciton种类多或连续取值Action环境。Policy Network、Value Network。

根据环境状态和采取行动预测后续环境状态,利用信息训练强化学习模型,是Model-Based RL。Model-Free RL直接对策略或Action期望价值预测,计算效率高。复杂环境,主要用Model-Free RL,供给更多样本训练,弥补没有Model预测环境状态问题。

环境中,强化学习模型载体Agent,负责执行模型行动。环境,Agent无法控制,可以观察。根据观察结果,模型给出行动,Agent执行。Reward,环境状态下执行Action获得,模型争取目标。Reward延迟获到Delayed。Action即时获得Reward,和未来获得Reward有很大关系。

策略网络,建立神经网络模型,通过观察环境状态,直接预测目前最应该执行策略(Policy),执行策略获得最大期望收益(包括现在、未来Reward)。没有绝对正确学习目标,样本feature不再和label对应。特定环境状态,不知道对应最好Action,只知道当前Action获得Reward,试验后获得未来Reward,强化学习模型通过试验样本学习环境状态下比较好的Action。样本没有绝对正确label,只有估算label。策略网络,不只用当前Reward作label,用Discounted Future Reward,所有未来奖励依次乘以衰减系数y。衰减系数,略小于但接近1,防止没有损耗积累导致Reward目标发散,代表未来奖励不确定性估计。

Policy Gradients方法训练策略网络。模型通过学习Action在Environment获得反馈,用梯度更新模型参数。训练过程,模型接触到好Action及高期价值,和差Action及低期望价值。通过样本学习,模型逐渐增加选择好Action概率,降低选择坏Action概率,完成策略学习。直接学习当前环境应该采取策略,如选择Actionc概率,或Action具体数值。策略网络是End-to-End(端对端)方法,直接产生最终策略。

Policy-Based比Value-Based,收敛性更好,通常可以保证收敛到局部最优,且不会发散。对高维、连续值Action,训练、输出结果都更高效。能学习出带有随机性的策略。

Gym辅助策略网络训练。Gym,OpenAI开源强化学习环境生成工具。OpenAI,Tesla、Space X CEO Elon Musk发起非营利人工智能研究机构。研究安全、开放人工智能技术,确保人工智能技术广泛、公平普及服务社会。Gym,提供方便强化学习任务环境,强化学习算法效率、性能比较。Gym提供大量标准化环境,用来公平横向对比强化学习模型性能。Gym用户上传模型效果、训练日志到OpenAI Gym Service接口,参与任务排名,比较模型效果,分享算法思路。

OpenAI Gym,对用户开发模型方式无限制,和其他机器学习库完全兼容(TensorFlow、Theano)。可以用Python语言、任何Python Library编写强化学习模型Agent。如创建简单经验规则,使用State-Action一一对应策略表,深度神经网络模型训练。

Gym,两个核心概念。Environment,任务、问题。Agent,策略、算法。Agent将执行Action传给Environment,Environment接受Action,结果Observation(环境状态)和Reward返回Agent。Gym提供完整Environment接口,Agent完全由用户编写。Gym包含环境,Algorithmic(算法)、Atari游戏(Arcade Learning Environment)、Board Games(棋牌类游戏 Pachi)、Box2D(二维物理引擎)、Classic Control(经典控制)、MuJoCo(高效处理引擎)、Toy Text(文本类型)任务。执行full install安装全部环境依赖程序。

Gym环境接口,Env类。env=gym.make(‘Copy-v0’)创建任务环境。env.reset()初始化环境,返回初始observation state。evn.step(action)当前状态执行一步Action,返回observation、reward、done(完成标记)、info(调试信息)。env.render()渲染一帧任务图像,Agent直接从图像像素学习信息策略。

Gym CartPole环境,《Neuronlike Adaptive Elements That Can Solve Difficult Learning Control Problem》,经典可用强化学习解决控制问题。CartPole环境有小车,一维无阻力轨道,行动。车上绑连接不太结实杆,左右摇晃。环境信息observation 是有4个值数组,包含小车位置、速度,杆角度、速度。不需要知道数值物理含义。设计策略网络,从数值学习环境信息,制定最佳策略。Action,小车施加正向力、负向力。Action Space,Action离散数值空间。CartPole Action Space,Discrete(2),只有0、1。只要模型学习到采取Action后带来的影响。Action只是编码。CartPole任务,尽可能保持杆竖直不倾倒,小车偏离中心超过2.4个单位距离,杆倾角超过15度,任务失败,自动结束。每坚持一步,reward+1。Reward恒定。模型要考虑到长远利益,不只是学习当前Reward。

env.reset()方法初始化环境,获取环境第一个Observation。根据Observation预测应该采取Action,用env.step(action),在环境中执行Action,返回Observation(CartPole 4维抽象特征)、reward(当前Action即时奖励)、done(任务是否结束标记,True,reset任务)、info(额外诊断信息)。进入Action-Observation循环,期望任务结束时尽可能高奖励。Action在CartPole离散数值空间,有限几种可能。别的任务可能是连续数值空间。环境名称后带版本号,环境发生更新或变化,不修改之前环境,创建新版本,Agent性能公平比较。调用env.monitor方法,监控、记录模型训练过程。gym.upload,训练日志上传到gym service展示,与他人算法比较。简单问题评测标准,需要多少步训练可以稳定达到理想分数。复杂问题评测标准,获得分数越高越好。

TensorFlow创建基于策略网络Agent,解决CartPole问题。先安装OpenAI Gym。pip install gym 。载入Numpy、TensorFlow、gym。gym.make(‘CartPole-v0’)创建CartPole问题环境env。

先测试CartPole环境随机Action表现,作对比baseline。env.reset()初始化环境,10次随机试验,env.render()渲染CartPole问题图像。np.random.randint(0,2)产生随机Action。env.step()执行随机Action,获取返回observation、reward、done。如done标记为True,一次试验结束,倾角超过15度或偏离中心过远,任务失败。展示试验累计奖励reward_sum,重启环境。

随机策略奖励总值在10~40,均值在20~30。任务完成目标设定200 Reward,通过尽量少次数试验完成。

策略网络用简带一个隐含层MLP。设置网络超参数,隐含节点数H设50,bactch_size设25,学习速率learning_rate 0.1,环境信息observation维度D 4,gamma Reward discount比例0.99。估算Action期望价值(估算样本学习目标),考虑Delayed Reward,Action之后获得所有Reward做discount累加,让模型学习未来可能出现的潜在Reward。discount比例小于1,防止Reward无损耗累加导致发散,可以区分当前Reward和未来Reward价值,Action直接带来的Reward不需要discount,未来Reward存在不确定性需要discount。

定义策略网络结构,网络接受observation 输入信息,输出概率值,用以选择Action,向左施加力,向右施加力。创建输入信息observation placeholder,维度D。tf.contrib.layers.xavier_initializer初始化算法创建隐含层权重W1,维度[D,H]。tf.matmul,环境信息observation乘W1,用ReLU激活函数处理得到隐含层输出layer1,不加偏置。xavier_initializer算法创建最后Sigmoid输出层权重W2,隐含层输出layer1乘W2,Sigmoid激活函数处理得到最后输出概率。

模型优化器用Adam算法。设置两层神经网络参数梯度placeholder,W1Grad、W2Grad。adam.apply_gradients定义更新模型参数操作updateGrads。计算参数梯度,积累一定样本量梯度,传入W1Grad和W2Grad,执行updateGrads更新模型参数。深度强化学习训练用batch training。不逐个样本更新参数,累计一个batch_size样本梯度再更新参数,防止单一样本随机扰动噪声对模型带来不良影响。

定义函数discount_rewards,估算每个Action对就潜在价值discount_r。CartPole问题每次获得Reward和前面Action有关,属于delayed reward。需要比较精准衡量每个Action实际带来价值,不能只看当前这步Reward,要考虑后面Delayed Reward。让Pole长时间保持在空中竖直Action,应该有较大期望价值。最终导致Pole倾例Action,有较小期望价值。越靠后Acion期望价值越小,越靠前Acion期望价值越大。倒推过程,最后Action开始计算所有Action应该对应期望价值。输入数据r ,每个Action实际获得Reward,CartPole,最后结束时Action 0,其余 1。定义每个Action除直接获得Reward外,潜在价值running_add。running_add,从后向前累计,经过discount衰减。每个Action潜在坐,后一Action潜在价值乘以衰减系数gamma,加直接获得reward,running_add*gamma+r[t]。从最后Action,向前累计计算,得到全部Action潜在价值。

定义人工设置虚拟label placeholder input_y。每个Action潜在价值placeholder advangtages。loglik,Action取值 1概率probability(策略网络输出概率),Action取值 0概率 1-probability。label取值,label=1-Action。Action 1,label 0,loglik=tf.log(probability),Action取值为1的概率对数。Action 0,label 1,loglik=tf.log(1-probability),Action取值为0的概率对数。loglik,当前Action对应概率对数。loglik与潜在坐advantages相乘,取负数作损失,优化目标。优化器优化,能获得较多advantages Action概率变大,能获得较少advantages Action概率变小,损失变小。不断训练,持续加大能获得较多advantages Action概率,学习到一个能获得更多潜在价值策略。tf.trainable_variables()获取策略网络全部可训练参数tvars,tf.gradients求解模型参数 loss梯度。

定义参数,xs环境信息observation列表,ys label列表,drs记录每个Action Reward,reward_sum累计Reward,总试验次数total_episodes10000。达到200 Reward停止训练。

创建默认Session,初始化全部参数,一开始render标志关闭。render较大延迟,一开始不太成熟模型没必要观察。初始化CartPole环境,获得初始状态。sess.run执行tvars获取所有模型参数,创建储存参数梯度缓冲器gradBuffer,gardBuffer全部初始化零。每次试验收集参数梯度存储到gradBuffer,直到完成一个batch_size试验,汇总梯度更新模型参数。

试验循环,最大循环次数total_episodes。batch 平均Reward达到100以上,Agent表现良好,调用env.render()展示试验环境。tf.reshape将observation变形策略网络输入格式,传入网络,sess.run执行probability获得网络输出概率tfprob,Action取值1的概率。(0,1)间随机抽样,随机值小于tfprob,令Action取1,否则取0,Action取值 1概率为tfprob。

输入环境信息添加到列表xs,制造虚拟label——y,取值与Action相反,y=1-Action,添加到列表ys。env.step执行一次Action,获取observation、reward、done、info,reward 累加到reward_sum,reward添加到列表drs。

done为True,一次试验结束,episode_number加1。np.vstack 将列表xs、ys、drs元素纵向堆叠,得到epx、epy、epr,将xs、ys、drs清空,下次试验用。epx、epy、epr,一次试验中获得的所有observation、label、reward列表。discount_rewards函数计算每步Action潜在价值,标准化(减去均值再除以标准差),得零均值标准差1分布。dicount_reward参与模型损失计算。

epx、epy、discounted_epr输入神经网络,newGrads求解梯度。获得梯度累加gradBuffer。

试验次数达到batch_size整倍数,gradBuffer累计足够梯度,用updateGrads将gradBuffer中梯度更新到策略网络模型参数,清空gradBuffer,计算下一batch梯度准备。一个batch梯度更新参数,每个梯度是使用一次试验全部样本(一个Action一个样本)计算,一个batch样本数 25(batch_size)次试验样本数和。展示当前试验次数episode_number,batch内每次试验平均reward。batch内每次试验平均reward大于200,策略网络完成任务终止循环。如没达目标,清空reward_sum,重新累计下一batch总reward。每次试验结束,任务环境env重置。

模型训练日志,策略网络200次试验,8个batch训练和参数更新,实现目标,batch内平均230 reward。可以尝试修改策略网络结构、隐含节点数、batch_size、学习速率参数优化训练,加快学习速度。

    import numpy as np
    import tensorflow as tf
    import gym
    env = gym.make('CartPole-v0')
    env.reset()
    random_episodes = 0
    reward_sum = 0
    while random_episodes < 10:
        env.render()
        observation, reward, done, _ = env.step(np.random.randint(0,2))
        reward_sum += reward
        if done:
            random_episodes += 1
            print("Reward for this episode was:",reward_sum)
            reward_sum = 0
            env.reset()

    # hyperparameters
    H = 50 # number of hidden layer neurons
    batch_size = 25 # every how many episodes to do a param update?
    learning_rate = 1e-1 # feel free to play with this to train faster or more stably.
    gamma = 0.99 # discount factor for reward
    D = 4 # input dimensionality        
    tf.reset_default_graph()
    #This defines the network as it goes from taking an observation of the environment to 
    #giving a probability of chosing to the action of moving left or right.
    observations = tf.placeholder(tf.float32, [None,D] , name="input_x")
    W1 = tf.get_variable("W1", shape=[D, H],
           initializer=tf.contrib.layers.xavier_initializer())
    layer1 = tf.nn.relu(tf.matmul(observations,W1))
    W2 = tf.get_variable("W2", shape=[H, 1],
               initializer=tf.contrib.layers.xavier_initializer())
    score = tf.matmul(layer1,W2)
    probability = tf.nn.sigmoid(score)
    #From here we define the parts of the network needed for learning a good policy.
    tvars = tf.trainable_variables()
    input_y = tf.placeholder(tf.float32,[None,1], name="input_y")
    advantages = tf.placeholder(tf.float32,name="reward_signal")
    # The loss function. This sends the weights in the direction of making actions 
    # that gave good advantage (reward over time) more likely, and actions that didn't less likely.
    loglik = tf.log(input_y*(input_y - probability) + (1 - input_y)*(input_y + probability))
    loss = -tf.reduce_mean(loglik * advantages) 
    newGrads = tf.gradients(loss,tvars)
    # Once we have collected a series of gradients from multiple episodes, we apply them.
    # We don't just apply gradeients after every episode in order to account for noise in the reward signal.
    adam = tf.train.AdamOptimizer(learning_rate=learning_rate) # Our optimizer
    W1Grad = tf.placeholder(tf.float32,name="batch_grad1") # Placeholders to send the final gradients through when we update.
    W2Grad = tf.placeholder(tf.float32,name="batch_grad2")
    batchGrad = [W1Grad,W2Grad]
    updateGrads = adam.apply_gradients(zip(batchGrad,tvars))
    def discount_rewards(r):
        """ take 1D float array of rewards and compute discounted reward """
        discounted_r = np.zeros_like(r)
        running_add = 0
        for t in reversed(range(r.size)):
            running_add = running_add * gamma + r[t]
            discounted_r[t] = running_add
        return discounted_r

    xs,ys,drs = [],[],[]
    #running_reward = None
    reward_sum = 0
    episode_number = 1
    total_episodes = 10000
    init = tf.global_variables_initializer()
    # Launch the graph
    with tf.Session() as sess:
        rendering = False
        sess.run(init)
        observation = env.reset() # Obtain an initial observation of the environment
        # Reset the gradient placeholder. We will collect gradients in 
        # gradBuffer until we are ready to update our policy network. 
        gradBuffer = sess.run(tvars)
        for ix,grad in enumerate(gradBuffer):
            gradBuffer[ix] = grad * 0

        while episode_number <= total_episodes:

            # Rendering the environment slows things down, 
            # so let's only look at it once our agent is doing a good job.
            if reward_sum/batch_size > 100 or rendering == True : 
                env.render()
                rendering = True

            # Make sure the observation is in a shape the network can handle.
            x = np.reshape(observation,[1,D])

            # Run the policy network and get an action to take. 
            tfprob = sess.run(probability,feed_dict={observations: x})
            action = 1 if np.random.uniform() < tfprob else 0

            xs.append(x) # observation
            y = 1 if action == 0 else 0 # a "fake label"
            ys.append(y)
            # step the environment and get new measurements
            observation, reward, done, info = env.step(action)
            reward_sum += reward
            drs.append(reward) # record reward (has to be done after we call step() to get reward for previous action)
            if done: 
                episode_number += 1
                # stack together all inputs, hidden states, action gradients, and rewards for this episode
                epx = np.vstack(xs)
                epy = np.vstack(ys)
                epr = np.vstack(drs)
                xs,ys,drs = [],[],[] # reset array memory
                # compute the discounted reward backwards through time
                discounted_epr = discount_rewards(epr)
                # size the rewards to be unit normal (helps control the gradient estimator variance)
                discounted_epr -= np.mean(discounted_epr)
                discounted_epr /= np.std(discounted_epr)

                # Get the gradient for this episode, and save it in the gradBuffer
                tGrad = sess.run(newGrads,feed_dict={observations: epx, input_y: epy, advantages: discounted_epr})
                for ix,grad in enumerate(tGrad):
                    gradBuffer[ix] += grad

                # If we have completed enough episodes, then update the policy network with our gradients.
                if episode_number % batch_size == 0: 
                    sess.run(updateGrads,feed_dict={W1Grad: gradBuffer[0],W2Grad:gradBuffer[1]})
                    for ix,grad in enumerate(gradBuffer):
                        gradBuffer[ix] = grad * 0

                    # Give a summary of how well our network is doing for each batch of episodes.
                    #running_reward = reward_sum if running_reward is None else running_reward * 0.99 + reward_sum * 0.01
                    print('Average reward for episode %d : %f.' % (episode_number,reward_sum/batch_size))

                    if reward_sum/batch_size > 200: 
                        print("Task solved in",episode_number,'episodes!')
                        break

                    reward_sum = 0

                observation = env.reset()

参考资料:
《TensorFlow实战》

Tensorflow实例:实现深度强化学习--策略网络 深度强化学习简介强化学习(reinforcement Learning)是机器学习的一个重要分支,主要用来解决连续决策的问题。强化学习可以在复杂的、不确定的环境中学习如何实现我们设定的目标。 阅读详情

相关推荐

TensorFlow强化学习实战:从DQN到PPO的完整实现

本文旨在为读者提供从理论到实践的强化学习完整指南,特别关注如何使用TensorFlow框架实现两种最具代表性的强化学习算法:DQN和PPO。强化学习的基本原理和关键概念DQN算法的理论基础和实现细节PPO算法的数学原理和实现技巧使用TensorFlow构建强化学习模型的完整流程实际应用案例和性能优化策略首先介绍强化学习的核心概念和TensorFlow的基本用法然后深入讲解DQN算法及其TensorFlow实现接着探讨更高级的PPO算法及其实现细节。

AI天才研究院 1477

Tensorflow 强化学习(Reinforcement learning)

在强化学习问题中,具有感知和决策能力的对象叫做智能体,它可以是一段算法代码,也可以是具有机械结构的软硬件机器人系统。智能体通过与外界环境进行交互从而完成某个任务,这里的环境是指能受到智能体的动作而产生影响,并给出相应反馈的外界环境的总和。对于智能体来说,它通过感知环境的状态产生决策动作;对于环境来说,它从某个初始状态s1开始,通过接受智能体的动作来动态改变自身状态,并给出相应的奖励(Reward)...

qq_40041064的博客 3254

强化学习--策略网络--TensorFlow

TensorFlow 实现策略网络 #baseline import tensorflow as tf import numpy as np import gym env = gym.make('CartPole-v0') env.reset() random_episodes = 0 reward_sum = 0 while random_episodes < 10: #env.r...

weixin_43822600的博客 551

了解强化学习,这一篇就够了!

强化学习是机器学习大家族中的一大类, 使用强化学习能够让机器学着如何在环境中拿到高分, 表现出优秀的成绩. 而这些成绩背后却是他所付出的辛苦劳动, 不断的试错, 不断地尝试, 累积经验, 学习经验. 从无到有 强化学习是一类算法, 是让计算机实现从一开始什么都不懂, 脑袋里没有一点想法, 通过不断地尝试, 从错误中学习, 最后找到规律, 学会了达到目的的方法. 这就是一个完整的强化学习过...

weixin_30535167的博客 843

浅析强化学习及使用Policy Network实现自动化控制

浅析强化学习强化学习(Reinforcement Learning)是机器学习的一个重要分支,主要用来解决连续决策的问题。强化学习可以在复杂、不确定的环境中学习如何实现我们设定的目标。强化学习的应用场景非常广,几乎包括了所有需要做一系列决策的问题,比如控制机器人的电机让它执行特定任务,给商品定价或者库存管理,玩视频或棋牌游戏等。强化学习也可以应用到有序列输出的问题中,因为它可以针对一系列变化的环境...

优快云 人工智能 3512

TensorFlow深度学习实战(31)——强化学习(Reinforcement learning,RL)

强化学习 (Reinforcement learning, RL) 与监督学习和无监督学习模型不同,强化学习智能体从零开始(即没有先验信息),通过多次试错实现学习目标,在这个过程中,唯一的输入就是来自环境的反馈。研究表明,在强化学习领域中持续的竞争可能是智能体进化的一个原因,RL 在通用人工智能 (Artificial General Intelligence,AGI) 中发挥重要作用,本节将介绍 RL 算法的基本概念与应用,并深入探讨不同的 RL 算法。

盼小辉丶的博客 3628

TensorFlow 深度强化学习应用

我们使用TensorFlow定义一个简单的深度神经网络来逼近Q值函数。该网络输入为状态state,输出为每个动作的Q值。])这里,我们的网络包含两个全连接层,每个层有24个神经元。输出层的大小等于动作空间的大小,每个输出表示对应动作的Q值。DQN代理类负责与环境交互,执行动作,存储经验,并训练神经网络。import gym# 创建Q网络return# 转换为numpy数组# 计算Q目标# 更新Q网络# 更新ε。

一碗黄焖鸡三碗米饭的博客 1370

强化学习框架:TensorFlowPyTorch等

1. 背景介绍 强化学习(Reinforcement Learning,RL)作为机器学习领域的重要分支,近年来取得了显著的进展,并在游戏、机器人控制、自然语言处理等领域展现出巨大的潜力。为了更好地支持强化学习算法的研究和应用,许多深度学习框架都提供了相应的工具和库,其中 TensorFlow 和 PyTorch 是最受欢迎的两个框架。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 363

强化学习实践笔记01篇 实现策略网络

文章目录一、环境简介1.1 Gym环境介绍1.2 导入必要的库(代码片01)二、策略网络2.1 策略网络参数定义(代码片02)2.2 策略网络结构定义(代码片03)三、损失函数3.1 获取可训练参数(代码片04)3.2 定义虚拟Label及损失函数(代码片05)四、优化器选择与参数更新4.1 选择模型优化器(代码片06)4.2 定义使用优化器的参数更新操作(代码片07)五、强化学习控制参数5.1 ...

ShiAokai 721

Tensorflow深度Q网络(DQN)强化学习实战项目

TensorFlow是由Google开发的开源机器学习库,以其高度的灵活性和可扩展性受到开发者们的青睐。它的核心功能是支持和执行深度学习算法,这在现代AI应用中至关重要。TensorFlow的设计充分考虑了分布式计算的需求,能够有效地在多种硬件平台(包括CPU、GPU和TPU)上运行复杂的神经网络模型。强化学习是机器学习领域的一个分支,它关注于如何在一个环境(environment)中,通过一系列的决策(actions)来最大化某种累积回报(cumulative reward)。

weixin_36059856的博客 928

TensorFlow实现多智能体强化学习实战指南

多智能体强化学习(Multi-agent Reinforcement Learning, MARL)领域不仅为我们带来了新的挑战,也提供了新的机遇。智能体之间的互动增加了环境的复杂性,同时也丰富了学习的可能。在这个章节中,我们将探讨在多智能体系统中,智能体如何通过合作、竞争和通信来实现共同目标,以及这些互动如何带来挑战。MAgent是专为多智能体强化学习设计的模拟环境。作为一个开源平台,MAgent可以被研究人员用来设计和测试新的多智能体算法。它的设计使得在模拟环境中模拟多智能体交互变得易于操作。

weixin_32747681的博客 851

【强化学习】TensorFlow Agents框架

TensorFlow Agents提供了深度强化学习算法的完整实现,支持多种环境并具有高度可扩展性。它包含了一组预定义的环境、策略和算法,使得开发者可以更快速地构建和测试强化学习应用。

大雨淅淅的博客 1670

Python-深入TensorFlow深度强化学习实战

TensorFlow由Google开发,它不仅提供了构建和训练深度神经网络的工具,还支持多平台的部署。TensorFlow的核心是数据流图,这个图以张量的形式表达计算过程,而张量可以看作是多维数组,可以是标量、向量、矩阵,甚至是更高维度的数组。强化学习的目的是让智能体在一个未知环境中执行任务,通过学习环境的反馈(奖励或惩罚)来调整自身行为。智能体在每个时间步采取动作,环境因此发生变化,并给予智能体反馈。智能体(Agent): 强化学习系统中的决策者。环境(Environment)

weixin_42515392的博客 1256

TensorFlow-Reinforce: 强化学习模型的TensorFlow实现

TensorFlow-Reinforce: 强化学习模型的TensorFlow实现 项目基础介绍 TensorFlow-Reinforce 是一个开源项目,它提供了一系列使用 TensorFlow 框架实现的强化学习模型。该项目旨在为教育和研究目的服务,帮助开发者更好地理解和学习深度强化学习(Deep Reinforcement Learning, DRL)。项目适用于 Python 2.7 和 ...

gitblog_00252的博客 911

基于Python与TensorFlow的复杂目标强化学习实战项目

有些任务需要特殊结构。比如SAC算法中,策略网络要输出高斯分布的均值和标准差。这时标准层就不够用了,得自己写个自定义层然后把它嵌入整体网络:这样做的好处不仅是模块化,更重要的是——你可以复用这个层,甚至打包成库分享出去。👏。

weixin_42518874的博客 1074

TensorFlow强化学习实践指南:莫烦教程

强化学习是一种机器学习方法,它与传统的监督学习和非监督学习有着本质上的不同。在强化学习中,一个智能体(Agent)通过与环境(Environment)交互学习如何在特定任务中达到最佳表现。智能体接收环境状态(State)作为输入,并输出一个动作(Action),环境根据智能体的动作反馈一个奖励(Reward)。智能体的目标是学习一种策略(Policy),使其从长远来看能够获得最大的累积奖励。在强化学习的框架中,几个核心概念是必须掌握的:状态(State)

weixin_28787801的博客 1379

TensorFlow-11-策略网络

今日资料: 《Tensorflow 实战》-策略网络 代码: https://github.com/awjuliani/DeepRL-Agents/blob/master/Policy-Network.ipynb强化学习是机器学习的一个重要分支,可以解决连续决策的问题。一个强化学习问题,主要包含三个概念,环境状态,行动,奖励, 强化学习的目标就是获得最多的累计奖励。它有很多应用,比如控制机器人

aliceyangxi1987的博客 8185

ETL数据集成案例

一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。

runqu的博客 947

强化学习实战:用TensorFlow构建DQN智能体

深入讲解如何使用TensorFlow实现深度Q网络(DQN)智能体,涵盖经验回放、目标网络、探索策略等核心机制,并结合工业级部署需求,展示从模型设计到生产落地的完整路径,突出TensorFlow在强化学习工程化中的优势。

weixin_32673065的博客 945

局域网tcp通信实验

IPv4 地址 . . . . . . . . . . . . : 192.168.92.79。IPv4 地址 . . . . . . . . . . . . : 192.168.92.59。子网掩码 . . . . . . . . . . . . : 255.255.255.0。子网掩码 . . . . . . . . . . . . : 255.255.255.0。使用这篇文章的小工具。

weixin_51883798的博客 430

CentOS7无外网环境下MySQL8.0完整离线部署指南

本文详细介绍了在CentOS7无外网环境下,如何通过MySQL8.0二进制包进行完整离线部署。指南涵盖了从环境准备、依赖安装、用户与目录创建,到数据库初始化、服务配置及远程访问设置的全过程,并提供了关键的避坑技巧,帮助企业运维人员在内网环境中高效、稳定地搭建MySQL数据库服务。

xxx12的博客 1029
上一篇: Tensorflow实战学习(三十六)【实现Bidirectional LSTM Classifier】
下一篇: Tensorflow实战学习(三十八)【实现估值网络】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值