rl

强化学习-7.策略梯度算法

Deadly 提交于 2020-03-12 08:47:31
文章目录 引言 强化学习方法的分类 基于值函数的方法的局限性 策略梯度算法的优缺点 策略模型的建模方式 策略梯度算法 策略梯度目标函数 策略梯度的推导 弥补策略梯度的缺陷 引入基线 修改回报值函数 Actor-Critic MC 策略梯度 (REINFORCE) 使用 Critic 函数减小方差 使用优势函数减小误差 使用 TD 误差替代优势函数 策略梯度多种形式的总结 A2C 算法 引言 强化学习方法的分类 强化学习方法可以分为:基于值函数的方法、基于策略的方法和Actor-Critic。 基于值函数的方法: 用 值函数 进行策略评价+策略优化,用值函数导出策略 基于策略的方法: 直接学习 策略 Actor-Critic: 学习 值函数 + 策略 之前的强化学习方法都是基于值函数的方法,在值函数近似中,我们使用带参数w的函数去近似值函数,如下: 在基于值函数的方法中,策略是从值函数中导出的 使用贪婪的方法导出 最优策略 (最终收敛得到的策略) 使用 ϵ \epsilon ϵ -贪婪方法导出 行为策略 (智能体真正做的策略) 而基于策略的方法,直接将策略进行参数化。 基于值函数的方法的局限性 针对确定性策略 存在策略退化: 收敛后,若存在误差,则很容易因为微小的值函数差,发生策略退化现象 难以处理高维度的状态/动作空间 不能处理连续的状态/动作空间 收敛速度慢: 反复进行策略迭代

文献阅读课14-DIAG-NRE: A Neural Pattern Diagnosis Framework for远程监督关系抽取,模式标注去噪自动化,FN,FP,RL

跟風遠走 提交于 2020-03-08 01:09:26
文章目录 abstract 1. Introduction 2.相关工作 3.方法 3.1 NRE Models 3.2 Pattern Extraction 3.3 Pattern Refinement 3.4 Weak Label Fusion(WLF) 4 Experiments 4.1 Experimental Setup 4.2 Performance Comparisons 4.3 Pattern-based Diagnostic Results 4.4 Incremental Diagnosis 4.5案例研究 参考文献 Zheng, S., et al. (2019). DIAG-NRE A Neural Pattern Diagnosis Framework for Distantly Supervised Neural Relation Extraction. Proceedings ofthe 57th Annual Meeting ofthe Association for Computational Linguistics. code+data abstract 基于模式的标记方法在减轻远距离监督神经关系提取中不可避免的标记噪声方面取得了可喜的成果。但是,这些方法需要大量的专家工作来编写关系特定的模式,这使得它们过于复杂而无法快速推广

【校内模拟】string (SAM)(DSU on tree)

Deadly 提交于 2020-03-01 08:21:54
简要题意: 给一个串,询问有多少个区间可以由某一个串重复 k k k 次得到。 题解: 首先很容易发现就是询问有多少个子串有 n / k n/k n / k 的循环节。 也就是说要有 n − n / k n-n/k n − n / k 的 border。 也就是求由多少对 l , r l,r l , r ,满足 l c s ( l , r ) ≥ ( r − l ) ⋅ ( k − 1 ) lcs(l,r)\ge (r-l)\cdot(k-1) l c s ( l , r ) ≥ ( r − l ) ⋅ ( k − 1 ) 直接建立SAM然后DSU on tree 即可。 代码: # include <bits/stdc++.h> # define ll long long # define re register # define cs const using std :: cerr ; using std :: cout ; cs int N = 3e5 + 7 ; int n , k ; char s [ N ] ; namespace SAM { cs int N = :: N << 1 | 1 ; int fa [ N ] , len [ N ] , nw ; void init ( ) { for ( int re i = 1 ; i <= n ; ++ i ) len

奇袭:分治,桶

为君一笑 提交于 2020-02-11 01:08:43
大致的简化题意在我的考试反思里有,裸n 2 及以上的暴力也不打算再讲了。 1 #include<cstdio> 2 #include<ctime> 3 using namespace std; 4 #define rus register unsigned short 5 inline unsigned short max(const rus a,const rus b){return a>b?a:b;} 6 inline unsigned short min(const rus a,const rus b){return a<b?a:b;} 7 inline unsigned short read(){ 8 rus a=0;register char ch=getchar(); 9 while(ch<48||ch>57)ch=getchar(); 10 while(ch>=48&&ch<=57)a=(a<<3)+(a<<1)+ch-48,ch=getchar(); 11 return a; 12 } 13 int ans; 14 unsigned short pos[50005],n; 15 int main(){ 16 n=read(); 17 for(rus i=1,x,y;i<=n;++i) x=read(),y=read(), pos[x]=y; 18 for(rus i

论文速读:《AN ACTOR-CRITIC ALGORITHM FOR SEQUENCE PREDICTION》

落花浮王杯 提交于 2020-02-07 02:31:42
摘要 我们提出了一种训练神经网络的方法,使用强化学习(RL)中的演员评论方法生成序列。当前的对数似然训练方法受到训练和测试模式之间差异的限制,因为模型必须以先前的猜测而不是地面真实标记为基础生成标记。我们通过引入一个经过训练来评估输出令牌价值的评论家网络来解决这个问题,给定了演员网络的策略。这导致训练过程更接近测试阶段,并允许我们直接优化任务特定分数,例如BLEU。 至关重要的是,由于我们在监督学习环境中利用这些技术而不是传统的RL设置,因此我们根据地面实况输出来评判批评网络。我们表明,我们的方法可以提高合成任务和德语 - 英语机器翻译的性能。我们的分析为这些方法应用于自然语言生成任务铺平了道路,例如机器翻译,字幕生成和对话建模。 介绍 在机器学习的许多重要应用中,任务是开发一个系统,该系统在给定输入的情况下产生一系列离散标记。最近的工作表明,当训练预测给定输入和先前令牌的下一个输出令牌时,递归神经网络(RNN)可以在许多此类任务中提供出色的性能。这种方法已成功应用于机器翻译(Sutskever等,2014,Bahdanau等,2015),标题生成(Kiros等,2014,Donahue等,2015,Vinyals等,2015,Xu等,2015, Karpathy和Fei-Fei,2015)和语音识别(Chorowski等,2015,Chan等,2015)

Q Learns(Maze)

假装没事ソ 提交于 2020-02-06 04:41:54
maze_env.py """ Reinforcement learning maze example. Red rectangle: explorer. Black rectangles: hells [reward = -1]. Yellow bin circle: paradise [reward = +1]. All other states: ground [reward = 0]. This script is the environment part of this example. The RL is in RL_brain.py. View more on my tutorial page: https://morvanzhou.github.io/tutorials/ """ import numpy as np import time import sys if sys . version_info . major == 2 : import Tkinter as tk else : import tkinter as tk UNIT = 40 # pixels MAZE_H = 4 # grid height MAZE_W = 4 # grid width class Maze ( tk . Tk , object ) : def __init__ (

trivial分治算法

情到浓时终转凉″ 提交于 2020-02-03 02:37:15
按时间分治: CDQ分治 解决大多可以归化为 k k k 维偏序问题的离线算法。 K K K 维偏序问题的 b i t s e t bitset b i t s e t 解法: [已完成]例题1:CF 70 D ,支持动态加点的凸包问题,可以使用CDQ分治变成离线. [已完成]例题2:CF 848C, 设一段区间的价值为区间内每个出现过的数,最后一次出现的位置-第一次出现的位置之和。要求支持单点修改和区间查询。 解法:把每个 ai 看作二元组 ( i , p r e v a i ) (i,prev_{a_i}) ( i , p r e v a i ​ ​ ) ,则 a i a_i a i ​ 在区间内的贡献为 ∑ l ≤ i , p r e v a i ≤ r i − p r e v a i \sum_{l≤i,prev_{a_i}≤r}i−prev_{a_i} ∑ l ≤ i , p r e v a i ​ ​ ≤ r ​ i − p r e v a i ​ ​ ,中间的部分均消去,剩余的贡献恰为题目所求。因此,时间、 i i i 、 p r e v a i prev_{a_i} p r e v a i ​ ​ 组成了三维数点问题的三个维度,套用 CDQ 分治解决。 例题3:【UOJ#50】【UR #3】链式反应(分治FFT,动态规划) 线段树分治 动态图连通性.

【强化学习RL】model-free的prediction和control — MC, TD(λ), SARSA, Q-learning等

余生颓废 提交于 2020-01-26 13:30:20
本系列强化学习内容来源自对David Silver课程的学习 课程链接 http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html   本文介绍了在 model-free 情况下(即不知道回报Rs和状态转移矩阵Pss'),如何进行 prediction ,即预测当前policy的state-value function v(s)从而得知此policy的好坏,和进行 control ,即找出最优policy(即求出q*(s, a),这样π*(a|s)就可以立刻知道了)。   在prediction部分中,介绍了Monto Carlo(MC),TD(0),TD(λ)三种抽样(sample)估计方法,这里λ的现实意义是随机sample一个state,考虑其之后多少个state的价值。当 λ=0即TD(0) 时,只考虑下一个状态; λ=1 时几乎等同MC ,考虑T-1个后续状态即到整个episode序列结束; λ∈(0,1)时为TD(λ) ,可以表示考虑后续非这两个极端状态的中间部分,即考虑后面n∈(1, T-1)个状态。同时,prediction过程又分为 online update 和 offline update 两部分,即使用当前π获得下一个状态的回报v(s')和优化policy π是否同时进行。   在control部分中

【RL-TCPnet网络教程】第37章 RL-TCPnet之FTP客户端

半城伤御伤魂 提交于 2020-01-25 04:15:02
第37章 RL-TCPnet之FTP客户端 本章节为大家讲解RL-TCPnet的FTP客户端应用,学习本章节前,务必要优先学习第35章的FTP基础知识。有了这些基础知识之后,再搞本章节会有事半功倍的效果。 本章教程含STM32F407开发板和STM32F429开发板。 37.1 初学者重要提示 37.2 FTP函数 37.3 FTP配置说明(Net_Config.c) 37.4 FTP调试说明(Net_Debug.c) 37.5 FTP访问方法和板子的操作步骤 37.6 实验例程说明(裸机) 37.7 实验例程说明(RTX) 37.8 总结 37.1 初学者重要提示 学习本章节前,务必保证已经学习了第35章的基础知识。 本章配套的例子是将开发板作为FTP客户端,使用开发板上面的SD卡作为客户端的存储介质。所以测试本章节的例子,务必要准备一个SD卡。 由于配套例子的文件系统是采用的RL-FlashFS, 此文件系统的文件名仅支持ASCII字符,不支持中文,特别注意! 具体电脑端FTP服务器的创建方法和板子的操作步骤在本章的37.5小节有详细说明。 做本章节配套的实验,必须要看! 37.2 FTP函数 使用如下18个函数可以实现RL-TCPnet的FTP: ftp_accept_host ftp_check_account ftp_fclose ftp_evt_notify ftp

【python报错】 ModuleNotFoundError: No module named 'X' 如何调用自己写的 moudle / python / .py 文件(同一项目中)

依然范特西╮ 提交于 2020-01-24 03:56:06
自己用 python 写项目,文件系统结构如下: RL-for-Order-Workflow RL-for-Order-Workflow\pySim RL-for-Order-Workflow\pySim\test RL-for-Order-Workflow\pySim\test\test.py RL-for-Order-Workflow\pySim\entity RL-for-Order-Workflow\pySim\entity\source.py # RL-for-Order-Workflow\pySim\entity\source.py def a ( b ) : print ( b ) # RL-for-Order-Workflow\pySim\test\test.py from pySim . entity . source import * if __name__ == "__main__" : a ( 1 ) 在 entity 中写了个文件 source.py ,想在 test.py 调用,但是报错: ModuleNotFoundError: No module named 'pySim' 在 pyCharm 中就没有这个问题, 这因为 VS Code 并没有把项目的根目录加入到 path 中。 解决方案,把项目根目录加入到 path 中。 在 test.py