帝国cms做笑话网站/公司网站域名续费一年多少钱

帝国cms做笑话网站,公司网站域名续费一年多少钱,任丘做网站,做网站为什么要购买空间强化学习的概念 在技术人员眼里,深度学习、强化学习,或者是大模型,都只是一些算法。无论是简单,还是复杂,我们都是平静的看待。当商业元素日益渗透进技术领域,人人言必称大模型的时候。技术人该反思一下&a…

强化学习的概念

在技术人员眼里,深度学习、强化学习,或者是大模型,都只是一些算法。无论是简单,还是复杂,我们都是平静的看待。当商业元素日益渗透进技术领域,人人言必称大模型的时候。技术人该反思一下,是否确实是我们自己太乏味了。今天在翻看强化学习的时候,它确实是机器学习领域里非常重要的一个方面,如何描述它的概念,可以让普罗大众知道它的价值呢?尝试不要用学术化或者技术化的语言,试试标题党的口吻,可能更好理解。

夸张地描述强化学习

在这里插入图片描述

哇塞!听好了哈,强化学习简直就是一场超级疯狂、令人惊掉下巴的智能冒险之旅!
想象一下,有个超级聪明的 “小家伙”,它就像一个充满好奇的探险家,被扔进了一个千变万化、神秘莫测的奇妙世界。这个世界里到处都是复杂的规则、隐藏的陷阱和闪闪发光的宝藏。而强化学习,就是赋予这个 “小家伙” 一套超绝的生存秘籍,让它能在这个疯狂世界里摸爬滚打,不断探索。
它可不是瞎闯哦!每一次行动,不管是成功还是失败,都会得到世界给予的或大或小、或甜或苦的 “反馈”。就好像在玩一场超大型的、没有尽头的电子游戏,每一次操作,游戏都会告诉你是得分了还是被扣分了。而这个 “小家伙”,就靠着这些反馈,像个疯狂的学习机器一样,不断调整自己的行为。
它会不断尝试新的路径,从一次次的跌倒中爬起来,总结经验,变得越来越聪明,越来越厉害!在强化学习的神奇魔力下,这个 “小家伙” 从最初的懵懂无知,到最后能像武林高手一样,在这个复杂世界里游刃有余,精准地找到那些隐藏在深处的宝藏,避开所有危险,这能力简直逆天!它就像是一个自学成才的超级英雄,在强化学习的神奇力量加持下,一步步成长为能征服任何复杂环境的无敌存在,简直是智能领域里最让人拍案叫绝、目瞪口呆的奇迹啦!

正统的描述强化学习

在这里插入图片描述
强化学习是机器学习中的一个重要分支,它主要研究智能体(agent)如何在环境中采取一系列行动,以最大化累积奖励。以下是对强化学习定义的具体介绍:
主体与环境
智能体:可以是机器人、软件程序或其他能够感知环境并执行动作的实体。智能体具有自主性,能够根据自身的策略决定在每个时刻采取何种行动。
环境:是智能体所处的外部世界,它包含了各种状态和规则。环境会根据智能体采取的行动发生变化,并向智能体反馈相应的奖励信号。
核心要素
状态:用于描述环境在某一时刻的状况。例如在机器人导航任务中,机器人的位置、周围障碍物的分布等信息构成了环境的状态。智能体通过感知环境来获取当前状态。
动作:智能体在每个状态下可以采取的行为。比如在游戏中,智能体可能的动作包括上下左右移动、攻击、跳跃等。智能体根据自身的策略选择要执行的动作。
奖励:是环境给予智能体的反馈信号,用于衡量智能体在某一时刻采取的动作的好坏。奖励可以是正的(表示动作得到了积极的反馈)、负的(表示动作导致了不好的结果)或零。智能体的目标是最大化长期累积奖励。
策略:是智能体根据当前状态选择动作的规则或函数。策略可以是确定性的,即对于每个状态都有唯一确定的动作;也可以是随机性的,根据一定的概率分布选择动作。智能体通过学习不断调整策略,以获得更多的奖励。
学习过程
强化学习的过程就是智能体与环境不断交互的过程。在每个时间步,智能体观察当前环境的状态,根据自己的策略选择一个动作并执行。环境接收到动作后,会转移到一个新的状态,并根据新状态和动作给智能体返回一个奖励。智能体根据这个奖励和新状态来更新自己的策略,以便在未来能够采取更好的行动,获得更多的奖励。通过不断地重复这个过程,智能体逐渐学习到在不同状态下应该采取什么动作,以实现长期奖励的最大化。
强化学习广泛应用于机器人控制、游戏、自动驾驶、资源管理等众多领域,为解决复杂的决策问题提供了一种有效的方法。

DQN + CartPole

DQN

DQN(Deep Q-Network)算法是一种将深度神经网络与 Q-learning 算法相结合的强化学习算法,它利用深度神经网络来逼近 Q 函数,能够自动学习从环境状态到最优动作价值的映射,从而让智能体在复杂的环境中通过不断试错来学习并选择最优的行为策略以最大化长期累积奖励,其具有能够处理高维感知数据、有效学习复杂环境中的最优策略等优点,在游戏、机器人控制等多个领域有广泛应用。
在这里插入图片描述
DQN 是深度学习和强化学习结合的一个算法。在没有深度学习的强化学习体系中,模型的状态和对应的动作是用表(或者其它形式)来记录。而有了深度学习,就可以用神经网络来记忆了,因此也就和深度学习结合起来了。深度神经网络,可以看成是一个黑盒,这个黑盒具有记忆的功能。但这个黑盒的记忆,有时不是完全准确的,它有一定的概率出错。这个实际和人类的记忆是一样的。人类的记忆是不完全准确的,偶尔会出现错误。这是因为人类记忆的形成、存储和提取过程受到多种因素的影响,比如记忆容易受到情绪、期望、暗示等因素的干扰,导致记忆内容出现偏差,像目击证人在回忆事件时可能会因为事后他人的提问方式等产生错误记忆;记忆还会随着时间的推移而逐渐模糊和失真,人们可能会遗忘一些细节,或者将不同事件的记忆混淆在一起;此外,个体的认知能力、知识经验等也会影响记忆的准确性,人们可能会根据自己的经验和理解对记忆进行重构,从而产生错误。
既然如此,为什么要用神经网络?
DQN 是在 Q-learning 上加入深度神经网络得到的,比较他们两者的差异,就可以明白其中的原因。
DQN(Deep Q-Network)算法相比Q-learning算法有以下几方面优势:
处理高维数据能力更强

  • Q-learning:通常使用表格来存储状态-动作值函数(Q值),对于状态空间和动作空间较小的问题能很好地工作,但当状态空间维度很高时,表格的规模会呈指数级增长,导致存储和计算成本极高,甚至难以处理。
  • DQN:引入了深度神经网络,能够自动提取高维数据中的特征,将原始的高维状态映射到一个低维的特征空间中进行处理,大大降低了数据处理的复杂度,使其可以应用于像图像、语音等复杂的高维数据输入的场景,比如在Atari游戏中,能直接以游戏画面作为输入来学习最优策略。

泛化能力更好

  • Q-learning:依赖于对每个具体状态-动作对的Q值进行估计和更新,对未曾经历过的状态-动作对,只能通过插值等方法进行估计,泛化能力有限。
  • DQN:深度神经网络具有强大的函数拟合能力,通过学习大量的状态-动作样本,能够捕捉到状态之间的相似性和规律性,从而对从未见过的新状态也能给出合理的Q值估计,表现出更好的泛化能力,能在不同但相似的环境中快速适应并做出较好的决策。

CartPole

一个经典的控制理论和强化学习领域的基准问题,通常由一辆可在水平轨道上移动的小车和一个通过铰链连接在小车上的杆子组成,任务是通过控制小车的左右移动让杆子尽可能长时间地保持直立不倒,常被用于评估各种控制算法和强化学习算法的性能。
在这里插入图片描述

算法代码

引入相关的库,如没有,需要先安装。可以考虑安装Anaconda,不过注意公司规模要小于100人,个人学习的话没问题。IDE可以用Jupyter Notebook,或者 PyCharm,也可以是VS Code,看个人偏好。

import gym
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import random
from collections import deque
import time

下面这段代码使用 PyTorch 框架定义了一个简单的全连接神经网络类 DQN,用于实现 DQN 算法中的 Q 网络。该网络接收环境的状态作为输入,输出每个可能动作对应的 Q 值,帮助智能体在强化学习任务中选择最优动作。

class DQN(nn.Module):def __init__(self, input_dim, output_dim):super(DQN, self).__init__()self.fc1 = nn.Linear(input_dim, 64)self.fc2 = nn.Linear(64, 64)self.fc3 = nn.Linear(64, output_dim)def forward(self, x):x = torch.relu(self.fc1(x))x = torch.relu(self.fc2(x))return self.fc3(x)

DQNAgent 类封装了一个 DQN 智能体的核心功能,包括经验存储、动作选择、经验回放等。智能体通过与环境交互收集经验,利用这些经验更新 Q 网络,以学习在不同状态下的最优动作策略。

# 定义 DQN 智能体
class DQNAgent:def __init__(self, state_dim, action_dim):self.state_dim = state_dimself.action_dim = action_dimself.memory = deque(maxlen=2000)self.gamma = 0.95  # 折扣因子self.epsilon = 1.0  # 探索率self.epsilon_min = 0.01self.epsilon_decay = 0.995self.learning_rate = 0.001self.model = DQN(state_dim, action_dim)self.optimizer = optim.Adam(self.model.parameters(), lr=self.learning_rate)self.criterion = nn.MSELoss()def remember(self, state, action, reward, next_state, done):self.memory.append((state, action, reward, next_state, done))def act(self, state):if np.random.rand() <= self.epsilon:return random.randrange(self.action_dim)state = torch.FloatTensor(state).unsqueeze(0)act_values = self.model(state)action = torch.argmax(act_values).item()return actiondef replay(self, batch_size):minibatch = random.sample(self.memory, batch_size)for state, action, reward, next_state, done in minibatch:state = torch.FloatTensor(state).unsqueeze(0)next_state = torch.FloatTensor(next_state).unsqueeze(0)target = rewardif not done:target = (reward + self.gamma * torch.max(self.model(next_state)).item())target_f = self.model(state)target_f[0][action] = targetself.optimizer.zero_grad()loss = self.criterion(self.model(state), target_f)loss.backward()self.optimizer.step()if self.epsilon > self.epsilon_min:self.epsilon *= self.epsilon_decay

DQNAgent 类实现了一个基于 DQN 算法的强化学习智能体,通过经验回放和 ϵ - 贪心策略,智能体能够在与环境的交互中不断学习,逐步优化自己的动作策略。

下面代码主要包含三个部分:训练智能体的函数 train_agent、运行训练好的模型并进行图形化展示的函数 run_trained_model 以及主函数。在主函数中,首先创建 CartPole-v1 环境,然后实例化 DQNAgent 智能体,接着调用 train_agent 函数对智能体进行训练,最后调用 run_trained_model 函数运行训练好的模型并展示其表现。

# 训练智能体
def train_agent(agent, env, episodes=5, batch_size=32):for episode in range(episodes):state = env.reset()total_reward = 0done = Falsewhile not done:action = agent.act(state)next_state, reward, done, _ = env.step(action)agent.remember(state, action, reward, next_state, done)state = next_statetotal_reward += rewardif len(agent.memory) > batch_size:agent.replay(batch_size)print(f"Episode: {episode + 1}/{episodes}, Reward: {total_reward}")return agent# 运行训练好的模型并进行图形化展示
def run_trained_model(agent, env, episodes=50):for episode in range(episodes):state = env.reset()total_reward = 0done = Falsewhile not done:env.render()time.sleep(0.2)state = torch.FloatTensor(state).unsqueeze(0)act_values = agent.model(state)action = torch.argmax(act_values).item()next_state, reward, done, _ = env.step(action)state = next_statetotal_reward += rewardprint(f"Episode {episode + 1}: Total Reward = {total_reward}")env.close()# 主函数
if __name__ == "__main__":env = gym.make('CartPole-v1')state_dim = env.observation_space.shape[0]action_dim = env.action_space.nagent = DQNAgent(state_dim, action_dim)# 训练智能体trained_agent = train_agent(agent, env)# 运行训练好的模型run_trained_model(trained_agent, env)

整体代码

可以复制粘贴直接在 Jupyter Notebook 或者 PyCharm 里运行。

import gym
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import random
from collections import deque
import time# 定义 DQN 网络
class DQN(nn.Module):def __init__(self, input_dim, output_dim):super(DQN, self).__init__()self.fc1 = nn.Linear(input_dim, 64)self.fc2 = nn.Linear(64, 64)self.fc3 = nn.Linear(64, output_dim)def forward(self, x):x = torch.relu(self.fc1(x))x = torch.relu(self.fc2(x))return self.fc3(x)# 定义 DQN 智能体
class DQNAgent:def __init__(self, state_dim, action_dim):self.state_dim = state_dimself.action_dim = action_dimself.memory = deque(maxlen=2000)self.gamma = 0.95  # 折扣因子self.epsilon = 1.0  # 探索率self.epsilon_min = 0.01self.epsilon_decay = 0.995self.learning_rate = 0.001self.model = DQN(state_dim, action_dim)self.optimizer = optim.Adam(self.model.parameters(), lr=self.learning_rate)self.criterion = nn.MSELoss()def remember(self, state, action, reward, next_state, done):self.memory.append((state, action, reward, next_state, done))def act(self, state):if np.random.rand() <= self.epsilon:return random.randrange(self.action_dim)state = torch.FloatTensor(state).unsqueeze(0)act_values = self.model(state)action = torch.argmax(act_values).item()return actiondef replay(self, batch_size):minibatch = random.sample(self.memory, batch_size)for state, action, reward, next_state, done in minibatch:state = torch.FloatTensor(state).unsqueeze(0)next_state = torch.FloatTensor(next_state).unsqueeze(0)target = rewardif not done:target = (reward + self.gamma * torch.max(self.model(next_state)).item())target_f = self.model(state)target_f[0][action] = targetself.optimizer.zero_grad()loss = self.criterion(self.model(state), target_f)loss.backward()self.optimizer.step()if self.epsilon > self.epsilon_min:self.epsilon *= self.epsilon_decay# 训练智能体
def train_agent(agent, env, episodes=5, batch_size=32):for episode in range(episodes):state = env.reset()total_reward = 0done = Falsewhile not done:action = agent.act(state)next_state, reward, done, _ = env.step(action)agent.remember(state, action, reward, next_state, done)state = next_statetotal_reward += rewardif len(agent.memory) > batch_size:agent.replay(batch_size)print(f"Episode: {episode + 1}/{episodes}, Reward: {total_reward}")return agent# 运行训练好的模型并进行图形化展示
def run_trained_model(agent, env, episodes=50):for episode in range(episodes):state = env.reset()total_reward = 0done = Falsewhile not done:env.render()time.sleep(0.2)state = torch.FloatTensor(state).unsqueeze(0)act_values = agent.model(state)action = torch.argmax(act_values).item()next_state, reward, done, _ = env.step(action)state = next_statetotal_reward += rewardprint(f"Episode {episode + 1}: Total Reward = {total_reward}")env.close()# 主函数
if __name__ == "__main__":env = gym.make('CartPole-v1')state_dim = env.observation_space.shape[0]action_dim = env.action_space.nagent = DQNAgent(state_dim, action_dim)# 训练智能体trained_agent = train_agent(agent, env)# 运行训练好的模型run_trained_model(trained_agent, env)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RNN实现精神分裂症患者诊断(pytorch)

RNN理论知识 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09; 是一种 专门用于处理序列数据&#xff08;如时间序列、文本、语音、视频等&#xff09;的神经网络。与普通的前馈神经网络&#xff08;如 MLP、CNN&#xff09;不同&#xff0c;RNN…

Lua的table(表)

Lua表的基本概念 Lua中的表&#xff08;table&#xff09;是一种多功能数据结构&#xff0c;可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制&#xff0c;其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成&#xff1a; 数组部分…

Linux-基本指令3

一.grep 语法&#xff1a; grep [选项] 搜寻字符串 ⽂件 功能&#xff1a;在⽂件中搜索字符串&#xff0c;将找到的⾏打印出来 常⽤选项&#xff1a; -i &#xff1a;忽略⼤⼩写的不同&#xff0c;所以⼤⼩写视为相同 -n &#xff1a;顺便输出⾏号 -v &#xff1a;反向选择&…

GPIO(嵌入式学习)

GPIO 通用输入输出口&#xff1a; 可分为八种输入输出模式 输出模式 下端可控制端口输出高低电平&#xff0c;用以驱动LED&#xff0c;控制蜂鸣器&#xff0c;模拟通信协议输出时序 输入模式 读取高低电平或电压&#xff0c;用与读取按键输入&#xff0c;外界模块电平信号…

【构建工具】Gradle Kotlin DSL中的大小写陷阱:BuildConfigField

在Android开发当中&#xff0c;BuildConfig是一个非常有用的功能&#xff0c;它允许我们在构建过程中定义常量&#xff0c;并在运行时使用它们。But&#xff01;&#xff01;当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候&#xff0c;有一些细微的差…

【Uniapp-Vue3】开发userStore用户所需的相关操作

在项目根路径下创建的stores文件夹中创建user.js文件 并将以下内容复制到user.js中 import {ref} from "vue" import { defineStore } from pinia; const uniIdCo uniCloud.importObject("uni-id-co") const db uniCloud.database(); const usersTable…

Redis分布式锁的实现(Redission)

写在前面 本人在学习Redis过程中学习到分布式锁时太多困惑和疑难杂点 需要总结梳理思路 以下思路都是最简单最基本的思路 主要用到Redission工具类 会涉及到看门狗机制等 本文内容部分引自Javaguide,小林coding等热门八股 用于个人学习用途 分布式锁介绍 对于单机多线程来说…

基于Apollo对配置类的热更新优化

背景 关于配置的热更新&#xff0c;apollo 通过com.ctrip.framework.apollo.spring.annotation.SpringValueProcessor 处理带Value的方法或字段&#xff0c;通过监听变更事件&#xff0c;采用反射去更新对应的值 但这个功能仅仅用于单个属性&#xff0c;当我有一组有关联关系…

【AD】3-5 元件在原理图中的基本操作2

1.导线连接 选择放置->线&#xff08;CtrlW&#xff09;&#xff0c;或者直接点击横条处&#xff0c;建议使用直角走线 注意&#xff1a;下图中的线不具有电气连接属性&#xff0c;只是单纯的线 双击导线&#xff0c;进行设置导线粗细及颜色 2.网络标签 放置->网络标…

vim:基础配置

Vim 配置清单 设置行号显示 set number 设置相对行号&#xff08;可选&#xff09; set relativenumber设置制表符为4个空格 set tabstop4 设置自动缩进 set autoindent " 启用语法高亮 syntax on" 设置背景颜色&#xff08;可选&#xff0c;根据终端或GUI Vi…

day02_Java基础

文章目录 day02_Java基础一、今日课程内容二、数组&#xff08;熟悉&#xff09;1、定义格式2、基本使用3、了解数组的内存图介绍4、数组的两个小问题5、数组的常见操作 三、方法&#xff08;熟悉&#xff09;1、定义格式2、方法重载overload 四、面向对象&#xff08;掌握&…

【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees学习笔记

本文以 2-3-4 树详细讲解了 B 树的概念&#xff0c;逐步分析其操作&#xff0c;并用 Java 实现了标准的 B 树。 1. 2-3 & 2-3-4 Trees 上一节课中讲到的二叉搜索树当数据是随机顺序插入的时候能够使得树变得比较茂密&#xff0c;如下图右侧所示&#xff0c;时间复杂度也就…

【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘

摘要 支持向量机&#xff08;SVM&#xff09;是机器学习中的经典算法&#xff01;本文将深入解析最大间隔分类原理&#xff0c;手撕对偶问题推导过程&#xff0c;并实战实现非线性分类与图像识别。文中附《统计学习公式手册》及SVM调参指南&#xff0c;助力你掌握这一核心算法…

西门子S7-1200比较指令

西门子S7-1200 PLC比较指令学习笔记 一、比较指令的作用 核心功能&#xff1a;用于比较两个数值的大小或相等性&#xff0c;结果为布尔值&#xff08;True/False&#xff09;。典型应用&#xff1a; 触发条件控制&#xff08;如温度超过阈值启动报警&#xff09;数据筛选&…

solidwork智能尺寸怎么对称尺寸

以构造轴为中心线就能画智能尺寸的对称尺寸。先点击边再点击构造线

深入浅出:Spring AI 集成 DeepSeek 构建智能应用

Spring AI 作为 Java 生态中备受瞩目的 AI 应用开发框架&#xff0c;凭借其简洁的 API 设计和强大的功能&#xff0c;为开发者提供了构建智能应用的强大工具。与此同时&#xff0c;DeepSeek 作为领先的 AI 模型服务提供商&#xff0c;在自然语言处理、计算机视觉等领域展现了卓…

CSS浮动详解

1. 浮动的简介 浮动是用来实现文字环绕图片效果的 2.元素浮动后会有哪些影响 对兄弟元素的影响&#xff1a; 后面的兄弟元素&#xff0c;会占据浮动元素之前的位置&#xff0c;在浮动元素的下面&#xff1b;对前面的兄弟 无影响。 对父元素的影响&#xff1a; 不能撑起父元…

python数据类型等基础语法

目录 字面量 注释 变量 查数据类型 类型转换 算数运算符 字符串定义的三种方式 字符串占位 数据输入 字面量 被写在代码中固定的值 六种数据类型: 1 字符串 String 如"egg" 2 数字 Number: 整数int 浮点数float 复数complex :如43j 布尔…

Android 图片压缩详解

在 Android 开发中,图片压缩是一个重要的优化手段,旨在提升用户体验、减少网络传输量以及降低存储空间占用。以下是几种主流的图片压缩方法,结合原理、使用场景和优缺点进行详细解析。 效果演示 直接先给大家对比几种图片压缩的效果 质量压缩 质量压缩:根据传递进去的质…

【linux】详谈 环境变量

目录 一、基本概念 二、常见的环境变量 取消环境变量 三、获取环境变量 通过代码获取环境变量 环境变量的特性 1. getenv函数:获取指定的环境变量 2. environ获取环境变量 四、本地变量 五、定义环境变量的方法 临时定义&#xff08;仅对当前会话有效&#xff09; 永…