华为诺亚方舟实验室多项强化学习研究成果获IJCAI 2020录用

本文转载自诺亚实验室。

近期,华为诺亚方舟实验室(决策推理实验室-强化学习研究团队)的3项研究成果被人工智能领域顶级会议IJCAI(录取率12.6%)接收(一作都为实习生,主要工作在华为实习期间完成),涵盖团队在高效强化学习研究方向近期的探索和研究成果,包括基于迁移学习的策略复用对多模态示教数据人类先验知识的合理利用。

Efficient Deep Reinforcement Learning via Adaptive Policy Transfer

图1:面向深度强化学习的策略迁移框架

深度强化学习解决很多复杂问题的能力已经有目共睹,然而,如何提升其学习效率是目前面临的主要问题之一。现有的很多方法已验证迁移学习可利用相关任务中获得的先验知识来加快强化学习任务的学习效率。

然而,这些方法需要明确计算任务之间的相似度,或者只能选择一个适合的源策略,并利用它提供针对目标任务的指导性探索。目前仍缺少如何不显式的计算策略间相似性,自适应的利用源策略中的先验知识的方法。

本文提出了一种通用的策略迁移框架(PTF),利用上述思想实现高效的强化学习。PTF通过将多策略迁移过程建模为选项(option)学习,option判断何时和哪种源策略最适合重用,何时终止该策略的重用。

如图1所示,PTF分为两个子模块,智能体(agent)模块和option模块。Agent模块负责与环境交互,并根据环境的经验和option的指导进行策略更新。以PTF-A3C为例,agent模块的策略更新公式如下:

其中,agent模块对源策略的利用通过添加一个额外的损失函数,该损失函数计算agent策略与源策略之间的差异。根据option的终止函数,我们提出了一种自适应调整策略重用的机制,为损失函数设计了启发式的权重系数,避免负迁移的出现。Option模块负责option的值网络和终止网络的学习,option的值函数更新参考DQN的更新方式,最小化损失函数

Option模块通过计算以下梯度更新终止网络的参数

Option模块根据其值函数选择一个option和与其对应的源策略,用以给agent模块提供指导。Agent模块对其利用过程根据该option的终止概率停止,同时,option模块重新选择一个新的option和源策略,重复上述过程。PTF可以自然地与现有的深度强化学习方法结合。实验结果表明,PTF在离散和连续动作空间中的学习效率和最终性能方面,都优于原始的强化学习方法,并超越了最新的策略迁移方法(如图2所示)。

文章链接:https://arxiv.org/abs/2002.08037。

【诺亚决策推理RL研究团队与天津大学、南京大学等联合研究工作】

图2:各类方法在迷宫环境上的平均累积收益

Triple-GAIL: A Multi-Modal Imitation Learning Framework with Generative Adversarial Nets

图3:Triple-GAIL框架

模仿学习是一种基于专家示教重建期望策略的方法,一直是AI领域的研究热点。为了提升模仿学习的通用性和在实际工程中的应用,相关的研究方向吸引了大量学术和工业界人士,其中利用多模态模仿学习提升模仿学习效果是重要的方向之一。例如,应用于自动驾驶中的驾驶行为学习,真实驾驶员示教数据由于驾驶技能和行为习惯的多样性呈现多种模态并服从不同的分布,如果直接利用行为克隆(Behavioral Cloning,BC)或逆向强化学习(Inverse Reinforcement Learning,IRL)容易导致模态坍塌问题(mode collapse problem),因缺乏发现和区分示教数据中的模态变化的能力。为了针对多模态示教数据进行有效的模仿,我们提出了一种基于生成对抗模仿学习(Generative Adversarial Imitation Learning,GAIL)的多模态模仿学习算法框架(图3),称为Triple-GAIL,通过对模态选择和行为模仿联合学习并利用模态选择器增量式生成数据促进模态区分优化模仿效果。Triple-GAIL在GAIL的基础上增加了一个模态选择器(Selector)用于区分多个模态,并和生成器(Generator)一起持续生成状态-动作-模态数据序列,达到数据增广的目的,而判别器(Discriminator)用于区分状态-动作-模态数据序列是否来自于专家示教数据。与已有多模态模仿学习方法相比,Triple-GAIL既可以直接通过指定模态生成行为轨迹,也可以直接利用模态选择器基于历史数据判断模态。

根据上述目标函数,我们从理论上证明了当且仅当 时,生成器和选择器能够同时收敛到各自的最优值,并在公开驾驶数据集(图4)和实时策略游戏中验证了Triple-GAIL相比其他方法能够更高效地学习到接近专家示教的多模态行为。

文章链接:https://arxiv.org/abs/2005.10622。

【诺亚决策推理RL研究团队与清华大学、南京大学联合研究工作】

图4:各种方法基于NGSIM数据集的驾驶行为学习效果对比

KoGuN: Accelerating Deep Reinforcement Learning via Integrating Human Suboptimal Knowledge

图5:KoGuN框架

人类在面对新任务时,能够自然地利用从之前任务中获得的先验知识指导其之后的学习过程。这样的先验知识未必是与当前任务完全匹配的,很可能是次优的、模糊的,但是仍然能够大大加速人类的学习过程。因此,在强化学习过程中利用人类提供的先验知识直观上能够加速其学习过程。在序列决策问题中,利用人类知识的一系列重要工作是模仿学习,模仿学习需要利用专家的示教数据重建期望策略。而示教数据作为人类知识在某个任务下的具体体现,是low level的知识,我们期望能够利用high level的知识,例如人类的常识知识,在未见过的任务中且没有示教数据可供使用的情况下指导智能体的学习。受此启发,我们提出了一种新颖的知识引导策略网络(Knowledge Guide Policy Network,KoGuN),将人类的先验知识结合到深度强化学习的学习过程中,其框架如图5所示。我们引入了可学习的知识控制器(Knowledge Controller)编码人类知识,其中包含若干条模糊规则。模糊规则适用于基于不确定的、不精确的知识进行推理,这与人类提供的具有非精确性的先验知识相契合。我们使用的模糊规则的形式如下:

其推理过程可用下式表示:

同时,我们设计了知识精化模块(Refine Module)对次优先验进行修正。我们提出的知识引导策略网络能够与现有的基于策略的强化学习算法结合,进行端到端的训练。实验结果显示,我们的方法在离散和连续动作空间任务中均能够提高智能体的学习效率:

在收益信号非常稀疏的情况下,我们的方法优势更加明显,如下:

文章链接:https://arxiv.org/abs/2002.07418

END

备注:强化

强化学习交流群

关注最新最前沿的强化学习技术,

若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

### DEEPFM 推荐算法工作原理及实现 #### 工作原理概述 DeepFM 是一种融合了因子分解机(Factorization Machine, FM)和深度神经网络(Deep Neural Network, DNN)的推荐算法。它通过结合线性模型的强大表达能力和深层结构的学习能力,在处理稀疏数据方面表现出色[^1]。 DeepFM 的核心在于其能够同时利用浅层特征交互(由 FM 部分完成)和深层次特征组合(由 DNN 完成)。具体来说,DeepFM 将输入向量分为两部分:一部分用于 FM 层计算二阶特征交叉;另一部分则作为嵌入向量送入 DNN 进行高阶特征提取[^2]。 #### 发展历程与背景 DeepFM 被华为团队于 IJCAI'2017 提出,旨在解决传统推荐系统中存在的冷启动问题和稀疏性问题。在此之前,LR 和 FM 等经典模型虽然能有效捕捉低阶特征交互,但在面对复杂场景时显得力不从心。而基于深度学习的方法如 Wide&Deep 则可以更好地建模复杂的非线性关系,但可能忽略了一些简单的显式特征交互。 因此,DeepFM 设计了一个统一框架来兼顾两者优势——既保留了 FM 对简单特征交互的有效捕能力,又引入了 DNN 来探索更深层次的关系模式。 #### TensorFlow 实现细节 以下是使用 TensorFlow 构建 DeepFM 模型的一个简化版本: ```python import tensorflow as tf from tensorflow.keras.layers import Input, Dense, Embedding, Flatten, Concatenate from tensorflow.keras.models import Model def build_deepfm(feature_columns, hidden_units=[64, 32], output_dim=1): # 输入定义 inputs = {feat.name: Input(shape=(1,), name=feat.name) for feat in feature_columns} # 嵌入层 (Embedding Layer) embeddings_list = [] linear_terms = [] for feat in feature_columns: embedding = Embedding(input_dim=feat.vocabulary_size, output_dim=feat.embedding_dim)(inputs[feat.name]) flattened_embedding = Flatten()(embedding) # 添加到列表中分别供 FM 和 DNN 使用 embeddings_list.append(flattened_embedding) linear_terms.append(Dense(1)(flattened_embedding)) fm_input = Concatenate(axis=-1)(embeddings_list) # FM 部分 sum_of_squares = tf.reduce_sum(fm_input ** 2, axis=1, keepdims=True) square_of_sums = tf.reduce_sum(fm_input, axis=1, keepdims=True) ** 2 fm_output = 0.5 * tf.reduce_sum(square_of_sums - sum_of_squares, axis=1, keepdims=True) # DNN 部分 dnn_input = Concatenate(axis=-1)(embeddings_list) x = dnn_input for units in hidden_units: x = Dense(units, activation='relu')(x) dnn_output = Dense(output_dim, activation='sigmoid')(x) # 合并 FM 和 DNN 输出 final_output = tf.add_n([tf.add_n(linear_terms), fm_output, dnn_output]) model = Model(inputs=list(inputs.values()), outputs=final_output) return model ``` 此代码片段展示了如何构建一个完整的 DeepFM 结构,其中包含了 FM 组件、DNN 组件以及最终输出层的设计思路。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值