7 个流行的强化学习算法及代码实现!

强化学习常用算法总结 强化学习常用算法总结 本文为2020年6月参加的百度PaddlePaddle强化学习训练营总结 1. 表格型方法:Sarsa和Q-Learning算法 State-action-reward-state’-action’, 简称Sarsa,是为了建立和优化状态-动作(state-action)的价值Q表格所建立的方法。首先初始化Q表格,根据当前的状态和动作与环境进行交互后,得到奖励reward以及下一步的状态和动作后,对Q表格进行更新;并不断重复这个过程。 Q表格更新公式为: 另外,为了保证每一步的探索性 阅读详情
AI摘要

本文介绍了当前流行强化学习算法,如Q-learning、SARSA、DDPG、A2C、PPO、DQN和TRPO,阐述了它们的基本原理、Python实现示例以及各自在处理不同场景中的优势。通过实例展示了这些算法的核心概念和技术细节。

↓推荐关注↓

作者:Siddhartha Pramanik

来源:Deephub Imba

目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法已被用于在游戏、机器人和决策制定等各种应用中,并且这些流行的算法还在不断发展和改进,本文我们将对其做一个简单的介绍。

1、Q-learning

Q-learning:Q-learning 是一种无模型、非策略的强化学习算法。它使用 Bellman 方程估计最佳动作值函数,该方程迭代地更新给定状态动作对的估计值。Q-learning 以其简单性和处理大型连续状态空间的能力而闻名。

下面是一个使用 Python 实现 Q-learning 的简单示例:

import numpy as np  
  
# Define the Q-table and the learning rate  
Q = np.zeros((state_space_size, action_space_size))  
alpha = 0.1  
  
# Define the exploration rate and discount factor  
epsilon = 0.1  
gamma = 0.99  
  
for episode in range(num_episodes):  
    current_state = initial_state  
    while not done:  
        # Choose an action using an epsilon-greedy policy  
        if np.random.uniform(0, 1) < epsilon:  
            action = np.random.randint(0, action_space_size)  
        else:  
            action = np.argmax(Q[current_state])  
  
        # Take the action and observe the next state and reward  
        next_state, reward, done = take_action(current_state, action)  
  
        # Update the Q-table using the Bellman equation  
        Q[current_state, action] = Q[current_state, action] + alpha * (  
                reward + gamma * np.max(Q[next_state]) - Q[current_state, action])  
  
        current_state = next_state  

上面的示例中,state_space_size 和 action_space_size 分别是环境中的状态数和动作数。num_episodes 是要为运行算法的轮次数。initial_state 是环境的起始状态。take_action(current_state, action) 是一个函数,它将当前状态和一个动作作为输入,并返回下一个状态、奖励和一个指示轮次是否完成的布尔值。

在 while 循环中,使用 epsilon-greedy 策略根据当前状态选择一个动作。使用概率 epsilon选择一个随机动作,使用概率 1-epsilon选择对当前状态具有最高 Q 值的动作。

采取行动后,观察下一个状态和奖励,使用Bellman方程更新q。并将当前状态更新为下一个状态。这只是 Q-learning 的一个简单示例,并未考虑 Q-table 的初始化和要解决的问题的具体细节。

2、SARSA

SARSA:SARSA 是一种无模型、基于策略的强化学习算法。它也使用Bellman方程来估计动作价值函数,但它是基于下一个动作的期望值,而不是像 Q-learning 中的最优动作。SARSA 以其处理随机动力学问题的能力而闻名。

import numpy as np  
  
# Define the Q-table and the learning rate  
Q = np.zeros((state_space_size, action_space_size))  
alpha = 0.1  
  
# Define the exploration rate and discount factor  
epsilon = 0.1  
gamma = 0.99  
  
for episode in range(num_episodes):  
    current_state = initial_state  
    action = epsilon_greedy_policy(epsilon, Q, current_state)  
    while not done:  
        # Take the action and observe the next state and reward  
        next_state, reward, done = take_action(current_state, action)  
        # Choose next action using epsilon-greedy policy  
        next_action = epsilon_greedy_policy(epsilon, Q, next_state)  
        # Update the Q-table using the Bellman equation  
        Q[current_state, action] = Q[current_state, action] + alpha * (  
                reward + gamma * Q[next_state, next_action] - Q[current_state, action])  
        current_state = next_state  
        action = next_action

state_space_size和action_space_size分别是环境中的状态和操作的数量。num_episodes是您想要运行SARSA算法的轮次数。Initial_state是环境的初始状态。take_action(current_state, action)是一个将当前状态和作为操作输入的函数,并返回下一个状态、奖励和一个指示情节是否完成的布尔值。

在while循环中,使用在单独的函数epsilon_greedy_policy(epsilon, Q, current_state)中定义的epsilon-greedy策略来根据当前状态选择操作。使用概率 epsilon选择一个随机动作,使用概率 1-epsilon对当前状态具有最高 Q 值的动作。

上面与Q-learning相同,但是采取了一个行动后,在观察下一个状态和奖励时它然后使用贪心策略选择下一个行动。并使用Bellman方程更新q表。

3、DDPG

DDPG 是一种用于连续动作空间的无模型、非策略算法。它是一种actor-critic算法,其中actor网络用于选择动作,而critic网络用于评估动作。DDPG 对于机器人控制和其他连续控制任务特别有用。

import numpy as np  
from keras.models import Model, Sequential  
from keras.layers import Dense, Input  
from keras.optimizers import Adam  
  
# Define the actor and critic models  
actor = Sequential()  
actor.add(Dense(32, input_dim=state_space_size, activation='relu'))  
actor.add(Dense(32, activation='relu'))  
actor.add(Dense(action_space_size, activation='tanh'))  
actor.compile(loss='mse', optimizer=Adam(lr=0.001))  
  
critic = Sequential()  
critic.add(Dense(32, input_dim=state_space_size, activation='relu'))  
critic.add(Dense(32, activation='relu'))  
critic.add(Dense(1, activation='linear'))  
critic.compile(loss='mse', optimizer=Adam(lr=0.001))  
  
# Define the replay buffer  
replay_buffer = []  
  
# Define the exploration noise  
exploration_noise = OrnsteinUhlenbeckProcess(size=action_space_size, theta=0.15, mu=0, sigma=0.2)  
  
for episode in range(num_episodes):  
    current_state = initial_state  
    while not done:  
        # Select an action using the actor model and add exploration noise  
        action = actor.predict(current_state)[0] + exploration_noise.sample()  
        action = np.clip(action, -1, 1)  
  
        # Take the action and observe the next state and reward  
        next_state, reward, done = take_action(current_state, action)  
  
        # Add the experience to the replay buffer  
        replay_buffer.append((current_state, action, reward, next_state, done))  
  
        # Sample a batch of experiences from the replay buffer  
        batch = sample(replay_buffer, batch_size)  
  
        # Update the critic model  
        states = np.array([x[0] for x in batch])  
        actions = np.array([x[1] for x in batch])  
        rewards = np.array([x[2] for x in batch])  
        next_states = np.array([x[3] for x in batch])  
  
        target_q_values = rewards + gamma * critic.predict(next_states)  
        critic.train_on_batch(states, target_q_values)  
  
        # Update the actor model  
        action_gradients = np.array(critic.get_gradients(states, actions))  
        actor.train_on_batch(states, action_gradients)  
  
        current_state = next_state  

在本例中,state_space_size和action_space_size分别是环境中的状态和操作的数量。num_episodes是轮次数。Initial_state是环境的初始状态。Take_action (current_state, action)是一个函数,它接受当前状态和操作作为输入,并返回下一个操作。

4、A2C

A2C(Advantage Actor-Critic)是一种有策略的actor-critic算法,它使用Advantage函数来更新策略。该算法实现简单,可以处理离散和连续的动作空间。

import numpy as np  
from keras.models import Model, Sequential  
from keras.layers import Dense, Input  
from keras.optimizers import Adam  
from keras.utils import to_categorical  
  
# Define the actor and critic models  
state_input = Input(shape=(state_space_size,))  
actor = Dense(32, activation='relu')(state_input)  
actor = Dense(32, activation='relu')(actor)  
actor = Dense(action_space_size, activation='softmax')(actor)  
actor_model = Model(inputs=state_input, outputs=actor)  
actor_model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.001))  
  
state_input = Input(shape=(state_space_size,))  
critic = Dense(32, activation='relu')(state_input)  
critic = Dense(32, activation='relu')(critic)  
critic = Dense(1, activation='linear')(critic)  
critic_model = Model(inputs=state_input, outputs=critic)  
critic_model.compile(loss='mse', optimizer=Adam(lr=0.001))  
  
for episode in range(num_episodes):  
    current_state = initial_state  
    done = False  
    while not done:  
        # Select an action using the actor model and add exploration noise  
        action_probs = actor_model.predict(np.array([current_state]))[0]  
        action = np.random.choice(range(action_space_size), p=action_probs)  
  
        # Take the action and observe the next state and reward  
        next_state, reward, done = take_action(current_state, action)  
  
        # Calculate the advantage  
        target_value = critic_model.predict(np.array([next_state]))[0][0]  
        advantage = reward + gamma * target_value - critic_model.predict(np.array([current_state]))[0][0]  
  
        # Update the actor model  
        action_one_hot = to_categorical(action, action_space_size)  
        actor_model.train_on_batch(np.array([current_state]), advantage * action_one_hot)  
  
        # Update the critic model  
        critic_model.train_on_batch(np.array([current_state]), reward + gamma * target_value)  
  
        current_state = next_state  

在这个例子中,actor模型是一个神经网络,它有2个隐藏层,每个隐藏层有32个神经元,具有relu激活函数,输出层具有softmax激活函数。critic模型也是一个神经网络,它有2个隐含层,每层32个神经元,具有relu激活函数,输出层具有线性激活函数。

使用分类交叉熵损失函数训练actor模型,使用均方误差损失函数训练critic模型。动作是根据actor模型预测选择的,并添加了用于探索的噪声。

5、PPO

PPO(Proximal Policy Optimization)是一种策略算法,它使用信任域优化的方法来更新策略。它在具有高维观察和连续动作空间的环境中特别有用。PPO 以其稳定性和高样品效率而著称。

import numpy as np  
from keras.models import Model, Sequential  
from keras.layers import Dense, Input  
from keras.optimizers import Adam  
  
# Define the policy model  
state_input = Input(shape=(state_space_size,))  
policy = Dense(32, activation='relu')(state_input)  
policy = Dense(32, activation='relu')(policy)  
policy = Dense(action_space_size, activation='softmax')(policy)  
policy_model = Model(inputs=state_input, outputs=policy)  
  
# Define the value model  
value_model = Model(inputs=state_input, outputs=Dense(1, activation='linear')(policy))  
  
# Define the optimizer  
optimizer = Adam(lr=0.001)  
  
for episode in range(num_episodes):  
    current_state = initial_state  
    while not done:  
        # Select an action using the policy model  
        action_probs = policy_model.predict(np.array([current_state]))[0]  
        action = np.random.choice(range(action_space_size), p=action_probs)  
  
        # Take the action and observe the next state and reward  
        next_state, reward, done = take_action(current_state, action)  
  
        # Calculate the advantage  
        target_value = value_model.predict(np.array([next_state]))[0][0]  
        advantage = reward + gamma * target_value - value_model.predict(np.array([current_state]))[0][0]  
  
        # Calculate the old and new policy probabilities  
        old_policy_prob = action_probs[action]  
        new_policy_prob = policy_model.predict(np.array([next_state]))[0][action]  
  
        # Calculate the ratio and the surrogate loss  
        ratio = new_policy_prob / old_policy_prob  
        surrogate_loss = np.minimum(ratio * advantage, np.clip(ratio, 1 - epsilon, 1 + epsilon) * advantage)  
  
        # Update the policy and value models  
        policy_model.trainable_weights = value_model.trainable_weights  
        policy_model.compile(optimizer=optimizer, loss=-surrogate_loss)  
        policy_model.train_on_batch(np.array([current_state]), np.array([action_one_hot]))  
        value_model.train_on_batch(np.array([current_state]), reward + gamma * target_value)  
  
        current_state = next_state

6、DQN

DQN(深度 Q 网络)是一种无模型、非策略算法,它使用神经网络来逼近 Q 函数。DQN 特别适用于 Atari 游戏和其他类似问题,其中状态空间是高维的,并使用神经网络近似 Q 函数。

import numpy as np  
from keras.models import Sequential  
from keras.layers import Dense, Input  
from keras.optimizers import Adam  
from collections import deque  
  
# Define the Q-network model  
model = Sequential()  
model.add(Dense(32, input_dim=state_space_size, activation='relu'))  
model.add(Dense(32, activation='relu'))  
model.add(Dense(action_space_size, activation='linear'))  
model.compile(loss='mse', optimizer=Adam(lr=0.001))  
  
# Define the replay buffer  
replay_buffer = deque(maxlen=replay_buffer_size)  
  
for episode in range(num_episodes):  
    current_state = initial_state  
    while not done:  
        # Select an action using an epsilon-greedy policy  
        if np.random.rand() < epsilon:  
            action = np.random.randint(0, action_space_size)  
        else:  
            action = np.argmax(model.predict(np.array([current_state]))[0])  
  
        # Take the action and observe the next state and reward  
        next_state, reward, done = take_action(current_state, action)  
  
        # Add the experience to the replay buffer  
        replay_buffer.append((current_state, action, reward, next_state, done))  
  
        # Sample a batch of experiences from the replay buffer  
        batch = random.sample(replay_buffer, batch_size)  
  
        # Prepare the inputs and targets for the Q-network  
        inputs = np.array([x[0] for x in batch])  
        targets = model.predict(inputs)  
        for i, (state, action, reward, next_state, done) in enumerate(batch):  
            if done:  
                targets[i, action] = reward  
            else:  
                targets[i, action] = reward + gamma * np.max(model.predict(np.array([next_state]))[0])  
  
        # Update the Q-network  
        model.train_on_batch(inputs, targets)  
  
        current_state = next_state  

上面的代码,Q-network有2个隐藏层,每个隐藏层有32个神经元,使用relu激活函数。该网络使用均方误差损失函数和Adam优化器进行训练。

7、TRPO

TRPO (Trust Region Policy Optimization)是一种无模型的策略算法,它使用信任域优化方法来更新策略。它在具有高维观察和连续动作空间的环境中特别有用。

TRPO 是一个复杂的算法,需要多个步骤和组件来实现。TRPO不是用几行代码就能实现的简单算法。

所以我们这里使用实现了TRPO的现有库,例如OpenAI Baselines,它提供了包括TRPO在内的各种预先实现的强化学习算法,。

要在OpenAI Baselines中使用TRPO,我们需要安装:

pip install baselines  

然后可以使用baselines库中的trpo_mpi模块在你的环境中训练TRPO代理,这里有一个简单的例子:

import gym  
from baselines.common.vec_env.dummy_vec_env import DummyVecEnv  
from baselines.trpo_mpi import trpo_mpi  
  
# Initialize the environment  
env = gym.make("CartPole-v1")  
env = DummyVecEnv([lambda: env])  
  
# Define the policy network  
policy_fn = mlp_policy  
  
# Train the TRPO model  
model = trpo_mpi.learn(env, policy_fn, max_iters=1000)

我们使用Gym库初始化环境。然后定义策略网络,并调用TRPO模块中的learn()函数来训练模型。

还有许多其他库也提供了TRPO的实现,例如TensorFlow、PyTorch和RLLib。下面时一个使用TF 2.0实现的样例

import tensorflow as tf  
import gym  
  
  
# Define the policy network  
class PolicyNetwork(tf.keras.Model):  
    def __init__(self):  
        super(PolicyNetwork, self).__init__()  
        self.dense1 = tf.keras.layers.Dense(16, activation='relu')  
        self.dense2 = tf.keras.layers.Dense(16, activation='relu')  
        self.dense3 = tf.keras.layers.Dense(1, activation='sigmoid')  
  
    def call(self, inputs):  
        x = self.dense1(inputs)  
        x = self.dense2(x)  
        x = self.dense3(x)  
        return x  
  
  
# Initialize the environment  
env = gym.make("CartPole-v1")  
  
# Initialize the policy network  
policy_network = PolicyNetwork()  
  
# Define the optimizer  
optimizer = tf.optimizers.Adam()  
  
# Define the loss function  
loss_fn = tf.losses.BinaryCrossentropy()  
  
# Set the maximum number of iterations  
max_iters = 1000  
  
# Start the training loop  
for i in range(max_iters):  
    # Sample an action from the policy network  
    action = tf.squeeze(tf.random.categorical(policy_network(observation), 1))  
  
    # Take a step in the environment  
    observation, reward, done, _ = env.step(action)  
  
    with tf.GradientTape() as tape:  
        # Compute the loss  
        loss = loss_fn(reward, policy_network(observation))  
  
    # Compute the gradients  
    grads = tape.gradient(loss, policy_network.trainable_variables)  
  
    # Perform the update step  
    optimizer.apply_gradients(zip(grads, policy_network.trainable_variables))  
  
    if done:  
        # Reset the environment  
        observation = env.reset()  

在这个例子中,我们首先使用TensorFlow的Keras API定义一个策略网络。然后使用Gym库和策略网络初始化环境。然后定义用于训练策略网络的优化器和损失函数。

在训练循环中,从策略网络中采样一个动作,在环境中前进一步,然后使用TensorFlow的GradientTape计算损失和梯度。然后我们使用优化器执行更新步骤。

这是一个简单的例子,只展示了如何在TensorFlow 2.0中实现TRPO。TRPO是一个非常复杂的算法,这个例子没有涵盖所有的细节,但它是试验TRPO的一个很好的起点。

总结

以上就是我们总结的7个常用的强化学习算法,这些算法并不相互排斥,通常与其他技术(如值函数逼近、基于模型的方法和集成方法)结合使用,可以获得更好的结果。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。让你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

点击免费领取《优快云大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取

机器学习---强化学习方法 1. 强化学习方法。 阅读详情

相关推荐

简述7个流行的强化学习算法及代码实现!

take_action(current_state, action) 是一个函数,它将当前状态和一个动作作为输入,并返回下一个状态、奖励和一个指示轮次是否完成的布尔值。take_action(current_state, action)是一个将当前状态和作为操作输入的函数,并返回下一个状态、奖励和一个指示情节是否完成的布尔值。并将当前状态更新为下一个状态。以上就是我们总结的7个常用的强化学习算法,这些算法并不相互排斥,通常与其他技术(如值函数逼近、基于模型的方法和集成方法)结合使用,可以获得更好的结果。

千锋教育 1162

什么是强化学习

强化学习(reinforcement learning,RL) 讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励。如图 1.1 所示,强化学习由两部分组成:智能体和环境。在强化学习过程中,智能体与环境一直在交互。智能体在环境中获取某个状态后,它会利用该状态输出一个动作 (action),这个动作也称为决策(decision)。然后这个动作会在环境中被执行,环境会根据智能体采取的动作,输出下一个状态以及当前这个动作带来的奖励。

金戈鐡馬 2万+

强化学习-李(O):综述【Critic-->Q-Learning算法、Actor/Policy π-->Policy Gradient算法--off-->PPO算法、Actor-Critic算法】

强化学习是一种对目标导向的学习与决策问题进行理解和自动化处理的计算方法。它强调智能体通过与环境的直接互动来学习,而不需要可效仿的监督信号或对周围环境的完全建模,因而与其他的计算方法相比具有不同的范式。 强化学习使用马尔可夫决策过程的形式化框架,使用状态,动作和收益定义学习型智能体与环境的互动过程。这个框架力图简单地表示人工智能问题的若干重要特征,这些特征包含了对因果关系的认知,对不确定性的认知,以及对显式目标存在性的认知。 价值与价值函数是强化学习方法的重要特征,价值函数对于策略空间的有效搜索来说十分重

u013250861的博客 7840

强化学习(一):简介——什么是强化学习?

本文将介绍强化学习的基本含义,了解什么是强化学习、强化学习的概念与基本框架以及强化学习中常见的问题类型。 什么是强化学习? 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 以上是百度百科中对强化学习的描述,从这样一句话中我们能捕捉到几点信息: 强化学习是一种机器学习方法 强化学习关注智能体与环境之间的交互 强化学..

Woody的博客 18万+

强化学习算法:ActorCritic 原理与代码实例讲解

1.背景介绍 在机器学习的领域中,强化学习(Reinforcement Learning, RL)是一种重要的研究范式。它关注的是智能体如何在环境中采取行动以最大化某种累积奖励。在传统的强化学习方法中,智能体通常使用价值函数(value function)来评估状态或动作的价值,并依据这些评估结果来决定其策略。然而,随着深度学习和神经网络的兴起,人们开

AI天才研究院 1149

大数据工程中的多模态数据处理技术

模态”(Modality)指的是数据的表现形式文本(Text):新闻、评论、文案等;图像(Image):照片、截图、医学影像等;音频(Audio):语音、音乐、环境声音等;视频(Video):短视频、监控视频、电影等(本质是图像+音频的组合);数值/结构化数据(Numerical/Structured):用户年龄、商品价格、传感器数据等;时间序列(Time Series):股票价格、物流轨迹、心率数据等。多模态数据(Multimodal Data)是指包含两种或以上模态的数据集。

AI云原生与云计算技术学院 1273

7个流行的强化学习算法及代码实现!

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达前言目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法已被用于在游戏、机器人和决策制定等各种应用中,并且这些流行的算法还在不断发展和改进。转载自丨Deephub Imba1、Q-learningQ-learning:Q-learning 是一种无模型、非策...

小白学视觉 2521

深入理解HTTPS:从SSLHandshakeException到证书链验证的完整解析

本文深入解析了HTTPS握手过程中常见的SSLHandshakeException异常,特别是由证书链验证失败引发的CertPathValidatorException。文章从TLS握手流程、证书链验证的数学原理出发,详细剖析了Java中TrustManager的工作机制,并提供了针对证书链不完整、自签名证书等典型问题的系统化排查流程与实战解决方案。

weixin_29313423的博客 231

7个最流行的强化学习算法实战案例(附 Python 代码)

以上就是我们总结的7个常用的强化学习算法,这些算法并不相互排斥,通常与其他技术(如值函数逼近、基于模型的方法和集成方法)结合使用,可以获得更好的结果。

m0_59596937的博客 2万+

FFTW库安装与使用(3.3.5版本)

FFTW库安装与使用一、FFTW库介绍与下载二、FFTW库安装三、FFTW库测试 一、FFTW库介绍与下载   FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT,且运行速度比Eigen和opencv自带的FFT库函数快10倍以上。   下载链接:http://www.fftw.org/install/wind

Jhon_ranble的博客 2万+

服务器安全配置:二、本地安全策略设置

密码最长使⽤期限”设置为“90天”;“⽤可以还原的加密来存储密码”设置为“禁⽤”“复位账户锁定计数器”设置为15分钟,贴图这里是我自己设置的时间,15分钟也够用,具体看自己需要。”网络访问: 不允许 SAM 帐户和共享的匿名枚举“设置为“已启用””网络访问: 限制对命名管道和共享的匿名访问“设置为“已启用””网络访问: 不允许匿名枚举 SAM 帐户“设置为“已启用”“关机: 允许系统在未登录的情况下关闭”设置为“已禁用”(1)交互式登录:不显示最后的⽤户名”设置为“已启⽤”

weixin_48825672的博客 3136

7个流行的强化学习算法及代码实现

作者:Siddhartha Pramanik来源:DeepHub IMBA目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法已被用于在游戏、机器人和决策制定等各种应用中,并且这些流行的算法还在不断发展和改进,本文我们将对其做一个简单的介绍。1、Q-learningQ-learning:Q-learning 是一种无模型、非策略的强...

weixin_49393016的博客 3804

保姆级教程:用YOLOv11和CRNN从零搭建一个车牌识别系统(附完整代码)

本文提供了一份详细的YOLOv11和CRNN实战指南,教你从零搭建高精度车牌识别系统。内容包括环境配置、数据集处理、模型训练与优化,以及系统集成与性能优化技巧,附完整代码实现。特别介绍了YOLOv11在车牌检测中的创新应用和CRNN在车牌识别中的关键技术。

weixin_28358083的博客 320

7种大模型最流行的强化学习算法总结:从零基础到精通,一篇就够了!

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓优快云粉丝独家福利这份完整版的 AI 大模型学习资料已经上传优快云,朋友们如果需要可以扫描下方二维码点击下方优快云官方认证链接免费领取【保证100%免费】

2401_85373898的博客 1149

ArcGIS | 全球新冠肺炎地图数据下载和处理

ArcGIS

thinkpang的博客 2901

HC32F460 FPU实战:从零开启硬件浮点加速

本文详细介绍了如何在HC32F460开发板上启用和优化FPU(浮点运算单元),以显著提升硬件浮点运算性能。从工程配置、关键代码修改到实战优化技巧,全面解析FPU加速的实现方法,并分享常见问题的解决方案,帮助开发者避免常见陷阱,充分发挥HC32F460的硬件潜力。

weixin_42620340的博客 348

2026年7种大模型最流行的强化学习算法总结

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓优快云粉丝独家福利这份完整版的 AI 大模型学习资料已经上传优快云,朋友们如果需要可以扫描下方二维码点击下方优快云官方认证链接免费领取【保证100%免费】

Everly_的博客 1504

Android 10.0 SystemUI 屏蔽状态栏消息推送弹出的悬浮通知

在状态栏中,有一些通知类似 消息推送 弹出的 悬浮通知,弹出30秒之后会消失掉 要想屏蔽掉这些通知,首选知道这些通知是怎么产生的 通知类型 NotificationContentInflater.java 详细的介绍各种通知的类型 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java /** * The defau

安卓兼职framework和app工程师的博客 1542

2026年7种大模型最流行的强化学习算法(PPO、GRPO、DPO、GSPO、DAPO、BAPO、ARPO )总结

强化学习算法优化路径解析:从PPO到ARPO的技术演进 摘要:本文系统分析了7种主流强化学习优化算法的核心特性与应用场景。PPO作为经典算法提供稳定训练,GRPO针对大模型优化显存效率,DPO简化流程适合轻量级应用。进阶算法如GSPO专注长文本优化,DAPO提升工业训练效率,BAPO平衡历史数据利用。新兴的ARPO则专为智能体决策设计,优化关键工具调用步骤。这些算法覆盖了从基础训练到复杂决策的全场景需求,为不同规模与目标的项目提供精准技术选型依据,反映了强化学习从理论到产业应用的完整发展路径。

lizhi888999AI的博客 1791

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

基于PyTorch的强化学习策略梯度算法实现及CartPole环境应用

基于PyTorch的强化学习策略梯度算法实现及CartPole环境应用(包含详细的完整的程序和数据)_策略梯度代码怎么写资源-优快云文库。基于PyTorch的强化学习策略梯度算法实现及CartPole环境应用(包含详细的完整的程序和数据)_策略梯度代码怎么写资源-优快云文库。的应用,还深化了对强化学习的理解,为后续更复杂的算法实践做好了准备。:定义一个简单的神经网络用作策略,包含输入层、隐藏层和输出层,以及。我们将实现一个简单的策略梯度方法。:与环境交互收集数据,并根据收集到的奖励更新策略网络。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 784

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

7大强化学习算法详解:从Q-learning到TRPO,小白到程序员都适用的入门指南!

文章详细介绍了7种流行强化学习算法:Q-learning、SARSA、DDPG、A2C、PPO、DQN和TRPO。这些算法各有特点和适用场景,文章提供了Python代码示例说明实现方法。这些算法广泛应用于游戏、机器人和决策制定等领域,且仍在不断发展和改进中。

Trb701012的博客 1185

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

torchrl:强化学习算法的Pytorch实现

torchrl:强化学习算法的Pytorch实现 去发现同类优质开源项目:https://gitcode.com/ torchrl 是一套基于 Pytorch 的强化学习算法库,它支持连续和离散动作空间的环境,同时也适配1d和3d观察空间的环境。torchrl 包含了多种流行的强化学习算法,如软演员评论员(SAC)、DDPG、TD3、DQN、A2C、PPO 和 TRPO。 环境要求 火炬(tor...

gitblog_06742的博客 727
上一篇: 头脑风暴!爆肝整理:机器学习最优化算法(全面总结)
下一篇: 爆肝整理总结了90条简单实用的Python编程技巧!
田野猫咪
博客等级 码龄4年 5080粉丝 502原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值