多智能体强化学习在优化价值投资的资产配置中的应用
在金融投资领域,价值投资强调通过分析资产的内在价值来选择投资标的。而资产配置则是将资金合理分配到不同资产上,以实现风险和收益的平衡。多智能体强化学习作为一种新兴的技术,具有处理复杂动态环境和多主体交互的能力。本研究的目的是探索如何利用多智能体强化学习优化价值投资的资产配置,提高投资组合的收益并降低风险。研究范围涵盖了多智能体强化学习的基本理论、价值投资的核心原则、资产配置的方法,以及如何将多智能体
多智能体强化学习在优化价值投资的资产配置中的应用
关键词:多智能体强化学习、价值投资、资产配置、优化策略、金融应用
摘要:本文深入探讨了多智能体强化学习在优化价值投资的资产配置中的应用。首先介绍了研究背景,包括目的、预期读者、文档结构和相关术语。接着阐述了多智能体强化学习与价值投资资产配置的核心概念及其联系,并给出了相应的原理和架构示意图与流程图。详细讲解了核心算法原理,通过 Python 代码进行具体操作步骤的演示。对涉及的数学模型和公式进行了详细说明并举例。通过项目实战展示了代码的实际案例和解读。分析了该技术在实际中的应用场景,推荐了学习资源、开发工具框架和相关论文著作。最后总结了未来发展趋势与挑战,还提供了常见问题解答和扩展阅读参考资料,旨在为相关领域的研究和实践提供全面且深入的指导。
1. 背景介绍
1.1 目的和范围
在金融投资领域,价值投资强调通过分析资产的内在价值来选择投资标的。而资产配置则是将资金合理分配到不同资产上,以实现风险和收益的平衡。多智能体强化学习作为一种新兴的技术,具有处理复杂动态环境和多主体交互的能力。本研究的目的是探索如何利用多智能体强化学习优化价值投资的资产配置,提高投资组合的收益并降低风险。研究范围涵盖了多智能体强化学习的基本理论、价值投资的核心原则、资产配置的方法,以及如何将多智能体强化学习应用于实际的资产配置场景中。
1.2 预期读者
本文预期读者包括金融领域的投资者、金融分析师、量化投资从业者,以及计算机科学领域对强化学习和金融应用感兴趣的研究人员和开发者。对于金融从业者,本文提供了一种新的技术手段来优化资产配置策略;对于计算机科学人员,本文展示了强化学习在金融领域的具体应用场景和挑战。
1.3 文档结构概述
本文将按照以下结构进行阐述:首先介绍多智能体强化学习和价值投资资产配置的核心概念与联系,包括原理和架构示意图;接着详细讲解核心算法原理和具体操作步骤,通过 Python 代码进行演示;然后介绍涉及的数学模型和公式,并举例说明;通过项目实战展示代码的实际案例和详细解释;分析该技术在实际中的应用场景;推荐相关的学习资源、开发工具框架和论文著作;最后总结未来发展趋势与挑战,提供常见问题解答和扩展阅读参考资料。
1.4 术语表
1.4.1 核心术语定义
- 多智能体强化学习(Multi - Agent Reinforcement Learning, MARL):是强化学习的一个扩展,涉及多个智能体在一个环境中进行交互和学习,每个智能体通过与环境和其他智能体的交互来最大化自己的累积奖励。
- 价值投资(Value Investing):一种投资策略,基于对资产内在价值的分析,寻找被低估的资产进行投资,期望在资产价格回归其内在价值时获得收益。
- 资产配置(Asset Allocation):将投资资金分配到不同类型的资产(如股票、债券、现金等)上,以实现投资组合的风险和收益目标。
- 智能体(Agent):在强化学习中,智能体是一个能够感知环境状态、采取行动并从环境中获得奖励的实体。
- 状态(State):环境在某一时刻的特征描述,智能体根据状态来选择行动。
- 行动(Action):智能体在某一状态下采取的操作,如买入、卖出或持有某种资产。
- 奖励(Reward):智能体采取行动后从环境中获得的反馈,用于评估行动的好坏。
1.4.2 相关概念解释
- 强化学习的基本原理:智能体通过与环境进行交互,不断尝试不同的行动,根据获得的奖励来调整自己的策略,以最大化长期累积奖励。
- 多智能体系统的特点:多个智能体之间存在交互和合作,每个智能体的决策会影响其他智能体的行为和环境状态。
- 价值投资的评估方法:通常通过分析公司的财务报表、行业前景、竞争优势等因素来评估资产的内在价值。
1.4.3 缩略词列表
- MARL:Multi - Agent Reinforcement Learning(多智能体强化学习)
- RL:Reinforcement Learning(强化学习)
- MDP:Markov Decision Process(马尔可夫决策过程)
2. 核心概念与联系
核心概念原理
多智能体强化学习原理
多智能体强化学习基于强化学习的基本框架,每个智能体在环境中独立地进行学习和决策。智能体通过感知环境状态 s t s_t st,选择行动 a t a_t at,并从环境中获得奖励 r t r_t rt。智能体的目标是学习一个策略 π \pi π,使得长期累积奖励 R = ∑ t = 0 T γ t r t R = \sum_{t = 0}^{T}\gamma^{t}r_t R=∑t=0Tγtrt 最大化,其中 γ \gamma γ 是折扣因子,用于权衡近期奖励和远期奖励。
在多智能体系统中,每个智能体的行动会影响其他智能体的状态和奖励,因此需要考虑智能体之间的交互。常见的多智能体强化学习方法包括集中式训练分布式执行(CTDE)、基于通信的方法等。
价值投资资产配置原理
价值投资的核心是寻找被低估的资产。资产配置则是根据投资者的风险偏好、投资目标和市场情况,将资金分配到不同的资产上。传统的资产配置方法通常基于均值 - 方差分析,通过优化投资组合的预期收益和风险来确定资产的权重。
在价值投资的资产配置中,需要对不同资产的内在价值进行评估,选择具有较高价值的资产,并根据资产之间的相关性和风险特征进行合理配置。
架构示意图
该示意图展示了多智能体系统与市场环境、资产配置策略和投资组合之间的关系。多智能体系统根据市场环境的状态信息做出决策,生成资产配置策略,将资金分配到不同的资产上形成投资组合。投资组合的收益和风险反馈到市场环境中,影响下一轮的状态信息。
3. 核心算法原理 & 具体操作步骤
核心算法原理
我们采用基于集中式训练分布式执行(CTDE)的多智能体强化学习算法,以深度 Q 网络(Deep Q - Network, DQN)为基础。每个智能体有自己的局部 Q 网络,用于选择行动,同时有一个集中式的评论家网络,用于评估智能体的联合行动价值。
集中式训练
在训练阶段,集中式评论家网络接收所有智能体的状态和行动信息,计算联合行动的价值。智能体的局部 Q 网络根据集中式评论家网络的反馈进行更新。具体来说,我们使用经验回放机制,将智能体的经验 ( s , a , r , s ′ ) (s, a, r, s') (s,a,r,s′) 存储在经验回放缓冲区中,然后随机采样一批经验进行训练。
分布式执行
在执行阶段,每个智能体独立地根据自己的局部 Q 网络选择行动,不需要集中式的协调。
具体操作步骤
以下是使用 Python 和 PyTorch 实现的具体代码:
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import random
# 定义局部 Q 网络
class LocalQNetwork(nn.Module):
def __init__(self, input_dim, output_dim):
super(LocalQNetwork, 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)
# 定义集中式评论家网络
class CentralizedCritic(nn.Module):
def __init__(self, num_agents, input_dim, action_dim):
super(CentralizedCritic, self).__init__()
total_input_dim = num_agents * (input_dim + action_dim)
self.fc1 = nn.Linear(total_input_dim, 64)
self.fc2 = nn.Linear(64, 64)
self.fc3 = nn.Linear(64, 1)
def forward(self, states, actions):
x = torch.cat([states, actions], dim=1)
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
return self.fc3(x)
# 定义经验回放缓冲区
class ReplayBuffer:
def __init__(self, capacity):
self.capacity = capacity
self.buffer = []
self.position = 0
def push(self, state, action, reward, next_state):
if len(self.buffer) < self.capacity:
self.buffer.append(None)
self.buffer[self.position] = (state, action, reward, next_state)
self.position = (self.position + 1) % self.capacity
def sample(self, batch_size):
batch = random.sample(self.buffer, batch_size)
states, actions, rewards, next_states = zip(*batch)
return np.array(states), np.array(actions), np.array(rewards), np.array(next_states)
def __len__(self):
return len(self.buffer)
# 多智能体强化学习类
class MultiAgentRL:
def __init__(self, num_agents, input_dim, action_dim):
self.num_agents = num_agents
self.input_dim = input_dim
self.action_dim = action_dim
self.local_q_networks = [LocalQNetwork(input_dim, action_dim) for _ in range(num_agents)]
self.centralized_critic = CentralizedCritic(num_agents, input_dim, action_dim)
self.optimizer_local = [optim.Adam(net.parameters(), lr=0.001) for net in self.local_q_networks]
self.optimizer_critic = optim.Adam(self.centralized_critic.parameters(), lr=0.001)
self.replay_buffer = ReplayBuffer(capacity=10000)
self.gamma = 0.99
def select_action(self, states):
actions = []
for i in range(self.num_agents):
state = torch.FloatTensor(states[i]).unsqueeze(0)
q_values = self.local_q_networks[i](state)
action = torch.argmax(q_values, dim=1).item()
actions.append(action)
return actions
def train(self, batch_size):
if len(self.replay_buffer) < batch_size:
return
states, actions, rewards, next_states = self.replay_buffer.sample(batch_size)
states = torch.FloatTensor(states)
actions = torch.FloatTensor(actions)
rewards = torch.FloatTensor(rewards).unsqueeze(1)
next_states = torch.FloatTensor(next_states)
# 更新集中式评论家网络
next_actions = []
for i in range(self.num_agents):
next_q_values = self.local_q_networks[i](next_states[:, i, :])
next_action = torch.argmax(next_q_values, dim=1)
next_actions.append(next_action)
next_actions = torch.stack(next_actions, dim=1)
target_values = self.centralized_critic(next_states.view(batch_size, -1), next_actions.view(batch_size, -1))
target_values = rewards + self.gamma * target_values
current_values = self.centralized_critic(states.view(batch_size, -1), actions.view(batch_size, -1))
critic_loss = nn.MSELoss()(current_values, target_values.detach())
self.optimizer_critic.zero_grad()
critic_loss.backward()
self.optimizer_critic.step()
# 更新局部 Q 网络
for i in range(self.num_agents):
q_values = self.local_q_networks[i](states[:, i, :])
action = actions[:, i].long().unsqueeze(1)
selected_q_values = q_values.gather(1, action)
q_targets = self.centralized_critic(states.view(batch_size, -1), actions.view(batch_size, -1))
local_loss = nn.MSELoss()(selected_q_values, q_targets.detach())
self.optimizer_local[i].zero_grad()
local_loss.backward()
self.optimizer_local[i].step()
代码解释
- 局部 Q 网络(LocalQNetwork):每个智能体有自己的局部 Q 网络,用于计算不同行动的 Q 值。
- 集中式评论家网络(CentralizedCritic):接收所有智能体的状态和行动信息,计算联合行动的价值。
- 经验回放缓冲区(ReplayBuffer):用于存储智能体的经验,随机采样一批经验进行训练,提高训练的稳定性。
- 多智能体强化学习类(MultiAgentRL):封装了智能体的选择行动和训练过程。
select_action方法:每个智能体根据自己的局部 Q 网络选择行动。train方法:首先更新集中式评论家网络,然后更新局部 Q 网络。
4. 数学模型和公式 & 详细讲解 & 举例说明
马尔可夫决策过程(MDP)
多智能体强化学习可以用扩展的马尔可夫决策过程(MDP)来描述。在多智能体 MDP 中,状态空间 S S S、行动空间 A = A 1 × A 2 × ⋯ × A n A = A_1\times A_2\times\cdots\times A_n A=A1×A2×⋯×An(其中 n n n 是智能体的数量)、奖励函数 r : S × A → R r: S\times A\rightarrow\mathbb{R} r:S×A→R 和状态转移概率 P : S × A × S → [ 0 , 1 ] P: S\times A\times S\rightarrow[0, 1] P:S×A×S→[0,1] 定义了环境的动态。
智能体的目标是学习一个策略 π : S → A \pi: S\rightarrow A π:S→A,使得长期累积奖励 R = ∑ t = 0 T γ t r ( s t , a t ) R = \sum_{t = 0}^{T}\gamma^{t}r(s_t, a_t) R=∑t=0Tγtr(st,at) 最大化。
Q 学习算法
Q 学习是一种无模型的强化学习算法,用于估计状态 - 行动对的价值 Q ( s , a ) Q(s, a) Q(s,a)。在多智能体 Q 学习中,每个智能体的局部 Q 函数 Q i ( s i , a i ) Q_i(s_i, a_i) Qi(si,ai) 表示在状态 s i s_i si 下采取行动 a i a_i ai 的预期累积奖励。
集中式评论家网络估计联合行动的价值 Q c e n t r a l ( s , a ) Q_{central}(s, a) Qcentral(s,a),其中 s = [ s 1 , s 2 , ⋯ , s n ] s = [s_1, s_2, \cdots, s_n] s=[s1,s2,⋯,sn] 和 a = [ a 1 , a 2 , ⋯ , a n ] a = [a_1, a_2, \cdots, a_n] a=[a1,a2,⋯,an]。
损失函数
评论家网络损失函数
评论家网络的损失函数使用均方误差(MSE):
L c r i t i c = 1 N ∑ i = 1 N ( Q c e n t r a l ( s i , a i ) − ( r i + γ max a ′ Q c e n t r a l ( s i + 1 , a ′ ) ) ) 2 L_{critic} = \frac{1}{N}\sum_{i = 1}^{N}(Q_{central}(s_i, a_i) - (r_i+\gamma\max_{a'}Q_{central}(s_{i+1}, a')))^2 Lcritic=N1i=1∑N(Qcentral(si,ai)−(ri+γa′maxQcentral(si+1,a′)))2
其中 N N N 是批量大小, s i s_i si、 a i a_i ai、 r i r_i ri 和 s i + 1 s_{i + 1} si+1 是采样的状态、行动、奖励和下一个状态。
局部 Q 网络损失函数
局部 Q 网络的损失函数也使用均方误差:
L l o c a l i = 1 N ∑ j = 1 N ( Q i ( s j i , a j i ) − Q c e n t r a l ( s j , a j ) ) 2 L_{local}^i=\frac{1}{N}\sum_{j = 1}^{N}(Q_i(s_j^i, a_j^i)-Q_{central}(s_j, a_j))^2 Llocali=N1j=1∑N(Qi(sji,aji)−Qcentral(sj,aj))2
其中 s j i s_j^i sji 和 a j i a_j^i aji 是第 i i i 个智能体的状态和行动。
举例说明
假设我们有两个智能体,每个智能体有 3 个状态和 2 个行动。状态空间 S = S 1 × S 2 S = S_1\times S_2 S=S1×S2,行动空间 A = A 1 × A 2 A = A_1\times A_2 A=A1×A2。
在某一时刻,智能体 1 的状态 s 1 = [ 0.1 , 0.2 , 0.3 ] s_1 = [0.1, 0.2, 0.3] s1=[0.1,0.2,0.3],智能体 2 的状态 s 2 = [ 0.4 , 0.5 , 0.6 ] s_2 = [0.4, 0.5, 0.6] s2=[0.4,0.5,0.6],联合状态 s = [ s 1 , s 2 ] s=[s_1, s_2] s=[s1,s2]。智能体 1 选择行动 a 1 = 0 a_1 = 0 a1=0,智能体 2 选择行动 a 2 = 1 a_2 = 1 a2=1,联合行动 a = [ a 1 , a 2 ] a = [a_1, a_2] a=[a1,a2]。
环境给予的奖励 r = 0.5 r = 0.5 r=0.5,下一个状态 s ′ s' s′。在训练时,我们根据上述损失函数更新集中式评论家网络和局部 Q 网络的参数。
5. 项目实战:代码实际案例和详细解释说明
5.1 开发环境搭建
安装 Python
首先需要安装 Python 3.7 或更高版本。可以从 Python 官方网站(https://www.python.org/downloads/)下载并安装。
安装依赖库
使用以下命令安装所需的依赖库:
pip install torch numpy
5.2 源代码详细实现和代码解读
以下是一个简单的项目实战代码,模拟多智能体强化学习在资产配置中的应用:
# 假设我们有 2 个智能体,每个智能体的状态维度为 5,行动维度为 3
num_agents = 2
input_dim = 5
action_dim = 3
# 初始化多智能体强化学习模型
model = MultiAgentRL(num_agents, input_dim, action_dim)
# 模拟训练过程
num_episodes = 1000
batch_size = 32
for episode in range(num_episodes):
# 初始化状态
states = np.random.rand(num_agents, input_dim)
for step in range(100):
# 选择行动
actions = model.select_action(states)
# 模拟环境反馈
next_states = np.random.rand(num_agents, input_dim)
rewards = np.random.rand(num_agents)
# 存储经验
model.replay_buffer.push(states, actions, rewards, next_states)
# 训练模型
model.train(batch_size)
states = next_states
if episode % 100 == 0:
print(f"Episode {episode}: Training...")
5.3 代码解读与分析
- 初始化模型:创建
MultiAgentRL类的实例,指定智能体的数量、状态维度和行动维度。 - 训练过程:
- 每个训练周期(episode)中,初始化状态。
- 在每个时间步(step)中,智能体选择行动,根据模拟的环境反馈获得下一个状态和奖励。
- 将经验存储在经验回放缓冲区中,并进行训练。
- 输出信息:每 100 个训练周期打印一次训练信息,方便观察训练进度。
在实际应用中,状态可以表示资产的市场信息(如价格、成交量等),行动可以表示资产的买卖决策,奖励可以根据投资组合的收益来定义。
6. 实际应用场景
机构投资者的资产配置
机构投资者(如基金公司、保险公司等)管理着大量的资金,需要进行合理的资产配置以实现风险和收益的平衡。多智能体强化学习可以帮助机构投资者考虑多个市场因素和不同资产之间的相互关系,动态调整资产配置策略。例如,不同的智能体可以负责不同类型的资产(如股票、债券、期货等),通过相互协作和学习,优化整个投资组合的配置。
个人投资者的投资决策
对于个人投资者,多智能体强化学习可以提供个性化的投资建议。个人投资者的风险偏好和投资目标各不相同,多智能体系统可以根据投资者的个人信息和市场情况,为其定制合适的资产配置方案。例如,一个智能体可以根据投资者的风险承受能力选择合适的资产类别,另一个智能体可以根据市场趋势调整资产的权重。
量化投资策略的优化
量化投资通过数学模型和算法来制定投资策略。多智能体强化学习可以用于优化量化投资策略,提高策略的适应性和盈利能力。例如,在高频交易中,多个智能体可以分别负责不同的交易信号和执行策略,通过强化学习不断调整交易参数,以适应市场的变化。
7. 工具和资源推荐
7.1 学习资源推荐
7.1.1 书籍推荐
- 《Reinforcement Learning: An Introduction》(Richard S. Sutton 和 Andrew G. Barto 著):强化学习领域的经典教材,全面介绍了强化学习的基本概念、算法和应用。
- 《Multi - Agent Systems: Algorithmic, Game - Theoretic, and Logical Foundations》(Yoav Shoham 和 Kevin Leyton - Brown 著):深入探讨了多智能体系统的理论和算法,包括多智能体强化学习。
- 《Value Investing: From Graham to Buffett and Beyond》(Bruce C. N. Greenwald 等著):详细介绍了价值投资的理论和实践方法。
7.1.2 在线课程
- Coursera 上的 “Reinforcement Learning Specialization”:由 DeepMind 科学家授课,系统介绍了强化学习的各个方面。
- edX 上的 “Multi - Agent Artificial Intelligence”:讲解了多智能体系统的原理和应用。
7.1.3 技术博客和网站
- OpenAI Blog(https://openai.com/blog/):提供了强化学习领域的最新研究成果和应用案例。
- Medium 上的 “Towards Data Science”:有许多关于强化学习和金融应用的文章。
7.2 开发工具框架推荐
7.2.1 IDE和编辑器
- PyCharm:一款功能强大的 Python 集成开发环境,提供了代码编辑、调试、版本控制等功能。
- Jupyter Notebook:交互式的开发环境,适合进行数据探索和模型调试。
7.2.2 调试和性能分析工具
- TensorBoard:用于可视化深度学习模型的训练过程和性能指标。
- PyTorch Profiler:可以帮助分析 PyTorch 模型的性能瓶颈。
7.2.3 相关框架和库
- PyTorch:一个开源的深度学习框架,提供了丰富的神经网络模块和优化算法。
- Stable Baselines3:一个用于强化学习的开源库,提供了多种强化学习算法的实现。
7.3 相关论文著作推荐
7.3.1 经典论文
- “Playing Atari with Deep Reinforcement Learning”(Volodymyr Mnih 等著):介绍了深度 Q 网络(DQN)算法,开启了深度强化学习的时代。
- “Multi - Agent Actor - Critic for Mixed Cooperative - Competitive Environments”(Ryan Lowe 等著):提出了多智能体演员 - 评论家算法,用于处理混合合作 - 竞争环境。
7.3.2 最新研究成果
- 关注 NeurIPS、ICML、AAAI 等顶级人工智能会议的论文,了解多智能体强化学习的最新研究进展。
7.3.3 应用案例分析
- 金融领域的研究期刊(如《Journal of Financial Economics》)上的文章,提供了多智能体强化学习在金融投资中的应用案例和分析。
8. 总结:未来发展趋势与挑战
未来发展趋势
与其他技术的融合
多智能体强化学习可能会与区块链、大数据、云计算等技术相结合,进一步拓展其在金融领域的应用。例如,区块链技术可以提供更安全、透明的交易环境,大数据可以提供更丰富的市场信息,云计算可以提供强大的计算能力。
自适应和鲁棒性增强
未来的多智能体强化学习算法将更加注重自适应和鲁棒性,能够在复杂多变的市场环境中快速调整策略,应对各种不确定性和风险。
跨领域应用拓展
除了金融领域,多智能体强化学习还可能应用于交通、能源、医疗等其他领域,实现资源的优化配置和决策的智能化。
挑战
数据质量和隐私问题
在金融领域,数据质量对模型的性能至关重要。同时,金融数据涉及大量的隐私信息,如何在保证数据质量的前提下保护数据隐私是一个挑战。
算法复杂度和可解释性
多智能体强化学习算法通常具有较高的复杂度,训练时间长,计算资源需求大。此外,算法的可解释性也是一个问题,如何让投资者理解模型的决策过程和依据是需要解决的难题。
市场动态和不确定性
金融市场具有高度的动态性和不确定性,市场规则和环境可能随时发生变化。多智能体强化学习模型需要能够快速适应这些变化,否则可能导致投资策略失效。
9. 附录:常见问题与解答
多智能体强化学习与单智能体强化学习有什么区别?
单智能体强化学习只有一个智能体与环境进行交互,而多智能体强化学习涉及多个智能体之间的交互和合作。多智能体系统中,每个智能体的决策会影响其他智能体的行为和环境状态,因此需要考虑智能体之间的协调和通信。
如何评估多智能体强化学习在资产配置中的性能?
可以使用多种指标来评估,如投资组合的收益率、夏普比率、最大回撤等。同时,还可以进行回测实验,比较不同策略在历史数据上的表现。
多智能体强化学习在实际应用中需要注意什么?
需要注意数据的质量和预处理,避免数据噪声和偏差对模型的影响。同时,要合理设置模型的参数,进行充分的训练和调试。此外,还需要考虑模型的可解释性和鲁棒性,以应对市场的变化。
10. 扩展阅读 & 参考资料
- Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
- Shoham, Y., & Leyton - Brown, K. (2008). Multi - Agent Systems: Algorithmic, Game - Theoretic, and Logical Foundations. Cambridge University Press.
- Greenwald, B. C. N., Kahn, J., Sonkin, P., & van Dijk, M. (2009). Value Investing: From Graham to Buffett and Beyond. Wiley.
- Mnih, V., Kavukcuoglu, K., Silver, D., Graves, A., Antonoglou, I., Wierstra, D., & Riedmiller, M. (2013). Playing Atari with Deep Reinforcement Learning. arXiv preprint arXiv:1312.5602.
- Lowe, R., Wu, Y., Tamar, A., Harb, J., Abbeel, P., & Mordatch, I. (2017). Multi - Agent Actor - Critic for Mixed Cooperative - Competitive Environments. arXiv preprint arXiv:1706.02275.
更多推荐



所有评论(0)