diff --git "a/2023/11/27/go-\345\237\272\347\241\200/index.html" "b/2023/11/27/go-\345\237\272\347\241\200/index.html" index eb1e3a0..d86b248 100644 --- "a/2023/11/27/go-\345\237\272\347\241\200/index.html" +++ "b/2023/11/27/go-\345\237\272\347\241\200/index.html" @@ -26,7 +26,7 @@ - + @@ -211,7 +211,7 @@
@@ -283,9 +283,13 @@1 |
|
go语言没有异常,全部都用ERROR来表示
+对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
1 |
|
或者将编译和运行两个过程分开,先编译后运行:
1 |
|
学习网站:
go的官网下载网站,选择合适的系统版本进行安装
下载安装包并按照安装包的指引下载相关的内容
对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装
测试GO的版本
1 |
|
测试GO的环境变量
1 |
|
go语言没有异常,全部都用ERROR来表示
1 |
|
1 |
|
学习网站:
go的官网下载网站,选择合适的系统版本进行安装
下载安装包并按照安装包的指引下载相关的内容
对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装
测试GO的版本
1 |
|
测试GO的环境变量
1 |
|
对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
1 |
|
或者将编译和运行两个过程分开,先编译后运行:
1 |
|
论文标题:
-《Vast: Value function factorization with variable agent -sub-teams》
-《Automatic Grouping for Efficient Cooperative Multi-Agent -Reinforcement Learning》
-论文代码:https://github.com/zyfsjycc/GoMARL
-价值函数的提出是为了缓解在传统的中心化训练和去中心化执行中的Critic网络出现的难以训练的问题,同时传统的合作型多智能体强化学习的方法难以解决信用分配的问题,即如何确定某个智能体对于全局任务而言的贡献程度。
-\[ -Q_{tot} (τ,a)≈Ψ([Q_i (τ_i,a_i)]_{i=1}^N) -\]
-目的就是学习到这样一个分解算子 \(Ψ\),能够将局部的价值函数 \(Q_i\) 拟合成全局的价值函数 \(Q_{tot}\),而这样的拟合过程学习到的分解算子\(Ψ\)应当满足以下的约束条件: \[ -\underset{\boldsymbol{a}}{\arg \max } Q_{\text {tot -}}(\boldsymbol{\tau}, \boldsymbol{a})=\left(\begin{array}{c} -\operatorname{argmax}_{a_1} Q_1\left(\tau_1, a_1\right) \\ -\vdots \\ -\operatorname{argmax}_{a_N} Q_N\left(\tau_N, a_N\right) -\end{array}\right) -\] -这个公式的本质是希望分解之后的局部和全局的最优动作能够最优一致,才能保证这样的算子分解方法是有效果的。
- -因此,为了能够缓解朴素的价值函数分解方法中的缺乏群组信息的缺陷,文中提出能够分组处理多智能体系统的工作VAST,能够动态处理群组划分的算子来给出基于分组的智能体价值函数方法。
-分组策略的本质是学习一个概率分布\(\mathcal{X}(k∣i,τ_(t,i),s_t -)\),概率分布的本质思想是能够通过每个智能体的状态以及历史数据信息给出智能体 -\(i\) 所在的组别 \(k\)
-\[ -𝑔=𝐴 ̂(𝑘,𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 ) ∇_𝜃 log𝒳_{MetaGrad} (𝑘∣𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 ) -\]
+\[ -𝐴 ̂(𝑘,𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 )=𝑄 ̂(𝑘,𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 )−𝑉 ̂(𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 ) -\]
-\[ -𝑉 ̂(𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 )=∑_(𝑎_{𝑡,𝑖}∈𝒜_𝑖) 𝜋_𝑖 (𝑎_{𝑡,𝑖}∣𝜏_{𝑡,𝑖} ) 𝑄_𝑖 -(𝜏_{𝑡,𝑖},𝑎_{𝑡,𝑖} ) -\]
+Functional versus nominal safety 功能安全与名义安全
+Functional Safety,FuSa 是指电子电路中操作的完整性
+名义安全是在假设HW和SW系统运行无差错(即在功能上是安全的)的情况下,AV是否正在做出安全的逻辑决策。
+Sense,Plan,Act 感知 计划 行动
+这里还采用了不同的分组器方法加入实验的对比
-将D 分成\(K= ⌈ηN⌉≤ N = -|D|\)个子团队\(G_{t,k}\) -其中比例\(η ∈ [ -1⁄N,1]\),所有的团队集合 \(G_t=⟨G_{t,1},…,G_{t,K} ⟩\),
分组:\(G_{t,k}⊆D,G_{t,k}∩G_{t,k′}=∅ -;D=U_{k=1}^K G_{t,k}\)
组内联合动作:\(a_{t,k}^G=a{t,j} -_j∈G_{t,k}\)
选择\(Ψ_{VDN}\)算子分解(满足IGM):
-\[ -Q_{t,k}^G (τ_{t,k}^G,a_{t,k}^G )=Ψ_{VDN} (⋅)=∑_{j∈G_{t,k}} Q_j -(τ_{t,j},a_{t,j}) -\]
最终的全局联合价值函数近似:
\[ -Q_{tot} (τ_t,a_t )=Ψ(Q_{t,1}^G (τ_{t,1}^G,a_{t,1}^G ),…,Q_{t,K}^G -(τ_{t,K}^G,a_{t,K}^G )) -\] -
-如果以群组为单位的价值函数分解的方式能够保证IGM条件: \[ -argmax_(𝑎_{𝑡,𝑘}^𝐺∈𝒜)〖𝑄_{tot}(𝜏_𝑡,𝑎_𝑡)〗= -⟨argmax_(⟨𝐚_{𝐭,𝐤}^𝐆 ⟩_(𝐺_{𝑡,𝑘}∈𝒢_𝑡 ))𝑄_{𝑡,𝑘}^𝐺 (𝜏_{𝑡,𝑘}^𝐺,𝑎_{𝑡,𝑘}^𝐺 -)⟩_(𝐺_{𝑡,𝑘}∈𝒢_𝑡) -\] 希望能够满足对于局部智能体到全局价值函数的IGM条件的保持 \[ -argmax_(𝑎_𝑡∈𝒜)𝑄_{tot}(𝜏_𝑡,𝑎_𝑡 )= -⟨argmax_(𝑎_{𝑡,𝑖}∈𝒜_𝑖 )𝑄_𝑖 (𝜏_{𝑡,𝑖},𝑎_{𝑡,𝑖})⟩_(𝑖∈𝒟) -\] 推导过程如下: \[ -\begin{aligned} -& Q_{t, k}^G\left(\tau_{t, k}^G, a_{t, k}^G\right)=\sum_{j \in G_{t, -k}} Q_j\left(\tau_{t, j}, a_{t, j}\right) ; \operatorname{argmax}_{a_t -\in G_{t, k}} Q_{t, k}^G\left(\tau_{t, k}^G, a_{t, -k}^G\right)=\left\langle\operatorname{argmax}_{a_{t, i} \in -\mathcal{A}_i} Q_i\left(\tau_{t, i}, a_{t, i}\right)\right\rangle_{i \in -G_{t, k}} \\ -& a_t \stackrel{\Psi}{=}\left\langle a_{t, k}^G\right\rangle_{G_{t, -k} \in \mathcal{G}_t} \stackrel{\Psi_{V D -N}}{=}\left\langle\left\langle\bar{a}_{t, i}\right\rangle_{i \in G_{t, -k}}\right\rangle_{G_{t, k} \in \mathcal{G}_t} -\stackrel{\mathcal{D}=G_{t, 1} \cup \cdots \cup G_{t, -K}}{=}\left\langle\bar{a}_{t, i}\right\rangle_{i \in \mathcal{D}} -\end{aligned} -\]
-目标:
形式化的规则:
+不考虑前车倒退的情况,后车撞上前车那么后车负责,后车有责任和前车保持距离
\(c_r\)表示前车,\(c_f\)表示后车,\(\rho\)表示的是前车的反应时间,\(a_{max,break}\)表示的是前车的最大加速度,\(a_{max,accel}\)表示的是最多的加速制动,\(a_{min,break}\)表示的是后车的最小制动加速度来保证不会撞到前车
同方向行驶的安全距离
+给出最小的安全纵向距离: \[ +d_{min}=max\{v_r\rho+1/2a_{max,accel}\rho^2+((v_r+\rho +a_{max,accel})^2)/2a_{min,break}-v_f^2/2a_{max,break},0\} +\]
\(t_b\) dangerous time;\([t_b,t_b+\rho]\) 表示一定的反应时间 +在这个范围之内在给定的加速度范围之内 执行proper response
Proper Response +:表示我们允许执行的最大加速度的限制,并取最小值约束保证满足所有的约束
安全纵向距离和Proper Response取决于参数:\(\rho,a_{max,sccel},a_{min,brake},a_{max,brake}\) +参数保证了对智能体行为的假设,选择适当的参数
Utopia is possible +如果所有智能体车辆都能够遵循合理的响应,那么能归纳证明可以规避事故的发生
自动分组的基本逻辑是学习\(f_g:A↦G\),这样的算子的目标是能够学习到系数权重 -\[ -Q_G^{tot} (s_t,u_t )=E_(s_{t+1:∞},u_{t+1:∞} ) [∑_(k=0)^∞ γ^k -r_{t+k}∣s_t,u_t;G] -\] 让总体的联合动作价值函数的值最大,分组的价值函数为: \[ -𝑄^{𝑔_𝑗}=𝑓(𝑄^{𝑗_1} (𝜏^{𝑗_1},𝑢^{𝑗_1}),⋯,𝑄^{𝑗_{𝑛_𝑗}} (𝜏^{𝑗_(𝑛_𝑗 -)},𝑢^{𝑗_{𝑛_𝑗}};𝑤_1^{𝑔_𝑗}) -\] 学习到的贡献程度为:\(𝑤_1^{𝑔_𝑗}\),训练的目标函数为: \[ -ℒ_𝑔 (𝜃_{w_1})=𝔼_((𝐳,𝐮,𝑟,𝐳′)∼ℬ∑_𝑖(∥𝑓_(w_1)^𝑖 (𝜏^𝑖 (𝑧^𝑖,𝑢^𝑖 );𝜃_(w_1)^𝑖 -)∥_{𝑙_1}) -\] -根据每次在分组中的贡献权重来依次调整智能体的分组,当贡献的权重过小的话,就认为智能体不属于分组中,进入下一轮的分组调整中。
- - -智能体内嵌信息网络获取的群组相关信息\(e_i\)
Similarity-Diversity -objective:来自同一组的智能体的信息是相似的,来自不同群体的智能体信息之间保持多样性: -\[ -\begin{gathered} -\mathcal{L}_{S -D}\left(\theta_e\right)=\mathbb{E}_{\mathcal{B}}\left(\sum_{i \neq j} -I(i, j) \cdot \operatorname{cosine}\left(f_e\left(h^i ; \theta_e\right), -f_e\left(h^j ; \theta_e\right)\right)\right) \\ -\text { where } I(i, j)=\left\{\begin{array}{cc} --1, & a^i, a^j \in g^k \\ -1, & a^i \in g^k, a^j \in g^l, k \neq l -\end{array}\right. -\end{gathered} -\] -很直观的理解,对于合作型的强化学习任务而言,我们希望能够在同一个任务域内强化策略的合作,而不同的任务域内的策略应当保持多样性,能够让多智能体系统探索更多的可能性,防止陷入局部最优的情况。
Agent Network特点:
-合理性表示: \[ -𝜕𝑄^{𝑡𝑜𝑡}/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 ) (𝜕𝑄^𝑎)/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 -) (𝜕𝑄^𝑎)/(𝜕𝑣_ℎ^𝑎 ) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ )=𝑓_𝑑 (𝑒^𝑎 )⋅(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 -) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ ) -\]
群体状态下的群体行动价值信息,将全局的状态分解成局部的状态信息用于训练,这部分的局部状态信息是基于群组划分之后的状态信息
\(s^{g_j}\) 是分组后\(e_t^i (a_i∈g_j -)\)按组别融合,建立分组器映射
-\[ -f_{w_2}(s^g ):s^g→w_2^g -\]
集中到策略梯度中,内嵌群组状态信息潜在促进组内合作: \[ -𝜕𝑄^{𝑡𝑜𝑡}/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 ) (𝜕𝑄^𝑎)/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 -) (𝜕𝑄^𝑎)/(𝜕𝑣_ℎ^𝑎 ) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ )=𝑓_𝑑 (𝑒^𝑎 )⋅(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 -) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ ) -\]
按照全文的总共方法的总述可以得到全局分解目标: \[ -ℒ(𝜃)=ℒ_𝑇𝐷 (𝜃)+𝜆_𝑔 ℒ_𝑔 (𝜃_(w_1 ) )+𝜆_𝑆𝐷 ℒ_𝑆𝐷 (𝜃_𝑒 ) -\]
在星际争霸的环境中的训练结果
- -消融实验
- -谷歌足球的训练结果
- -]]>Functional versus nominal safety 功能安全与名义安全
-Functional Safety,FuSa 是指电子电路中操作的完整性
-名义安全是在假设HW和SW系统运行无差错(即在功能上是安全的)的情况下,AV是否正在做出安全的逻辑决策。
-Sense,Plan,Act 感知 计划 行动
-目标:
-形式化的规则:
-不考虑前车倒退的情况,后车撞上前车那么后车负责,后车有责任和前车保持距离
\(c_r\)表示前车,\(c_f\)表示后车,\(\rho\)表示的是前车的反应时间,\(a_{max,break}\)表示的是前车的最大加速度,\(a_{max,accel}\)表示的是最多的加速制动,\(a_{min,break}\)表示的是后车的最小制动加速度来保证不会撞到前车
同方向行驶的安全距离
-给出最小的安全纵向距离: \[ -d_{min}=max\{v_r\rho+1/2a_{max,accel}\rho^2+((v_r+\rho -a_{max,accel})^2)/2a_{min,break}-v_f^2/2a_{max,break},0\} -\]
\(t_b\) dangerous time;\([t_b,t_b+\rho]\) 表示一定的反应时间 -在这个范围之内在给定的加速度范围之内 执行proper response
Proper Response -:表示我们允许执行的最大加速度的限制,并取最小值约束保证满足所有的约束
安全纵向距离和Proper Response取决于参数:\(\rho,a_{max,sccel},a_{min,brake},a_{max,brake}\) -参数保证了对智能体行为的假设,选择适当的参数
Utopia is possible -如果所有智能体车辆都能够遵循合理的响应,那么能归纳证明可以规避事故的发生
车道中心是平面上一条平滑有向的曲线 \(r\) ,其中所有部分可以表示为 \(r^{(1)},...,r^{(k)}\) -即可以是线性的,也可以是弧形的
构造 \(R->R^2\)的变换为 \(\phi\) -就是横纵坐标,从而来保证在逻辑上的前后车辆的关系
具体的映射的方式可以表示为如下:
-横纵速度/加速度 -的计算就可以通过这样的坐标系定义之下得到的一阶/二阶的导数计算得到
车道中心是平面上一条平滑有向的曲线 \(r\) ,其中所有部分可以表示为 \(r^{(1)},...,r^{(k)}\) +即可以是线性的,也可以是弧形的
构造 \(R->R^2\)的变换为 \(\phi\) +就是横纵坐标,从而来保证在逻辑上的前后车辆的关系
具体的映射的方式可以表示为如下:
+横纵速度/加速度 +的计算就可以通过这样的坐标系定义之下得到的一阶/二阶的导数计算得到
Probably-Approximately-Correct (PAC)
-X表示的是原始的数据与映射的数据域,从期望的角度给出误差率的平均值:
-\[
-\mathbb{P}_{(x, s) \sim D}\left[Q(s, \pi(\hat{s}(x))) \geq Q(s,
-\pi(s))-\epsilon_i\right] \geq 1-\delta_i
+ Probably-Approximately-Correct (PAC)
+X表示的是原始的数据与映射的数据域,从期望的角度给出误差率的平均值:
+\[
+\mathbb{P}_{(x, s) \sim D}\left[Q(s, \pi(\hat{s}(x))) \geq Q(s,
+\pi(s))-\epsilon_i\right] \geq 1-\delta_i
+\] 通过记录许多人类驾驶员的数据来构建此分布,而不是遵循自动驾驶车辆的特定策略(不切实际),由于任何合理策略对
+D
+的影响都很小,通过应用简单的数据增强技术,我们可以构建适当的分布,然后在传感系统的每次重大更新后执行离线验证。 重点关注经常发生的“测量不准确”类型的错误 let \(p(o)\),\(\hat{p}(o)\) be the positions of o in the
+coordinate system of the host vehicle according to \(s(x)\), \(\hat{s}(x)\)
+respectively.分别表示某个对象的真实的位置信息和传感器的位置信息。 目标到主车辆的距离为:\(\|p\|\)
+,加性误差:\(\|p(o)-\hat{p}(o)\|\),相对误差为 \(\frac{\|p(o)-\hat{p}(o)\|}{\|p(o)\|}\) 对于positions a set of objects \(O\)表示的是一堆对象,要求 \(p(o)\) 和 \(\hat{p}(o)\)之间的相对误差小于一个精确度不妨计作
+$$ ,但是\(\epsilon-ego-accurate\)
+的传感状态不能保证PAC传感系统能够满足每个合理的价值函数:当相对误差很小的时候,尽管认为合理了,但是对于实际的情况而言会出现不同的价值函数结果。选择制动or继续前进,横向不能用相对距离 表明\(\epsilon-ego-accurate\)
+并不能保证我们的传感系统是PAC。是否还有其他属性足以满足 PAC
+传感系统的要求 给出价值函数合理的L-语义-\(Lipschitz\)条件 判定为PAC传感系统的终极判定 目标是减少事故发生的概率,存在两类安全情况: 解决的是如何确保和验证safety-critic sensing
+mistake足够小,采用的方法是融合多个工程和技术都独立的子系统。多数子系统认为安全才算安全: 单侧c-近似独立的多个子系统 对于服从单侧-c近似独立的子系统,能够推出: 基于多子系统方案和Corollary 3,为了达到10^-9
+失效率,对sensing系统的验证不再需要10^9
+小时的数据,而是分别对每个子系统验证10^5小时就可以了 独立假设背后的合理性留给我们去推理。有些传感器对会产生完全不相关的误差;单侧-c近似独立是否成立 对于安全幽灵而言,当出现至少有两个传感器认为的情况是危险的,才能认为是危险的 Building a scalable sensing
+system可扩展的传感器系统PAC sensing system
+
+
+Safety
+
+
+]]>
+
+
|
|
|
|
|
|
|
|
|
|
|
|
指定虚拟环境x的python版本是3.8,base环境是3.11;conda +activate激活x之后python版本仍为3.11。
+原因:在base环境中修改了.zshrc文件中的python只定路径,让每次虚拟环境中的python找到的python都只能按照指定的python路径进行寻找,从而导致conda环境中的python版本不能制定。
+修改方式:
+
|
进入 +.zshrc环境中进行修改,如果发现一类诸如其他python版本指定的路径的话,需要进行删除,只需要保留最原始的关于anaconda的命令初始化,完成之后输入
+
|
解决问题
+下载使用清华源加上: -i +https://pypi.tuna.tsinghua.edu.cn/simple
+++]]>清华:
+https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:
+http://mirrors.aliyun.com/pypi/simple/
中国科技大学 +:
+https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
豆瓣:
+http://pypi.doubanio.com/simple/
论文标题:
+《Vast: Value function factorization with variable agent +sub-teams》
+《Automatic Grouping for Efficient Cooperative Multi-Agent +Reinforcement Learning》
+论文代码:https://github.com/zyfsjycc/GoMARL
+价值函数的提出是为了缓解在传统的中心化训练和去中心化执行中的Critic网络出现的难以训练的问题,同时传统的合作型多智能体强化学习的方法难以解决信用分配的问题,即如何确定某个智能体对于全局任务而言的贡献程度。
+\[ +Q_{tot} (τ,a)≈Ψ([Q_i (τ_i,a_i)]_{i=1}^N) +\]
+目的就是学习到这样一个分解算子 \(Ψ\),能够将局部的价值函数 \(Q_i\) 拟合成全局的价值函数 \(Q_{tot}\),而这样的拟合过程学习到的分解算子\(Ψ\)应当满足以下的约束条件: \[ +\underset{\boldsymbol{a}}{\arg \max } Q_{\text {tot +}}(\boldsymbol{\tau}, \boldsymbol{a})=\left(\begin{array}{c} +\operatorname{argmax}_{a_1} Q_1\left(\tau_1, a_1\right) \\ +\vdots \\ +\operatorname{argmax}_{a_N} Q_N\left(\tau_N, a_N\right) +\end{array}\right) +\] +这个公式的本质是希望分解之后的局部和全局的最优动作能够最优一致,才能保证这样的算子分解方法是有效果的。
+ +因此,为了能够缓解朴素的价值函数分解方法中的缺乏群组信息的缺陷,文中提出能够分组处理多智能体系统的工作VAST,能够动态处理群组划分的算子来给出基于分组的智能体价值函数方法。
+分组策略的本质是学习一个概率分布\(\mathcal{X}(k∣i,τ_(t,i),s_t +)\),概率分布的本质思想是能够通过每个智能体的状态以及历史数据信息给出智能体 +\(i\) 所在的组别 \(k\)
+\[ +𝑔=𝐴 ̂(𝑘,𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 ) ∇_𝜃 log𝒳_{MetaGrad} (𝑘∣𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 ) +\]
+\[ +𝐴 ̂(𝑘,𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 )=𝑄 ̂(𝑘,𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 )−𝑉 ̂(𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 ) +\]
+\[ +𝑉 ̂(𝑖,𝜏_{𝑡,𝑖},𝑠_𝑡 )=∑_(𝑎_{𝑡,𝑖}∈𝒜_𝑖) 𝜋_𝑖 (𝑎_{𝑡,𝑖}∣𝜏_{𝑡,𝑖} ) 𝑄_𝑖 +(𝜏_{𝑡,𝑖},𝑎_{𝑡,𝑖} ) +\]
+这里还采用了不同的分组器方法加入实验的对比
+将D 分成\(K= ⌈ηN⌉≤ N = +|D|\)个子团队\(G_{t,k}\) +其中比例\(η ∈ [ +1⁄N,1]\),所有的团队集合 \(G_t=⟨G_{t,1},…,G_{t,K} ⟩\),
分组:\(G_{t,k}⊆D,G_{t,k}∩G_{t,k′}=∅ +;D=U_{k=1}^K G_{t,k}\)
组内联合动作:\(a_{t,k}^G=a{t,j} +_j∈G_{t,k}\)
选择\(Ψ_{VDN}\)算子分解(满足IGM):
+\[ +Q_{t,k}^G (τ_{t,k}^G,a_{t,k}^G )=Ψ_{VDN} (⋅)=∑_{j∈G_{t,k}} Q_j +(τ_{t,j},a_{t,j}) +\]
最终的全局联合价值函数近似:
\[ +Q_{tot} (τ_t,a_t )=Ψ(Q_{t,1}^G (τ_{t,1}^G,a_{t,1}^G ),…,Q_{t,K}^G +(τ_{t,K}^G,a_{t,K}^G )) +\] +
+如果以群组为单位的价值函数分解的方式能够保证IGM条件: \[ +argmax_(𝑎_{𝑡,𝑘}^𝐺∈𝒜)〖𝑄_{tot}(𝜏_𝑡,𝑎_𝑡)〗= +⟨argmax_(⟨𝐚_{𝐭,𝐤}^𝐆 ⟩_(𝐺_{𝑡,𝑘}∈𝒢_𝑡 ))𝑄_{𝑡,𝑘}^𝐺 (𝜏_{𝑡,𝑘}^𝐺,𝑎_{𝑡,𝑘}^𝐺 +)⟩_(𝐺_{𝑡,𝑘}∈𝒢_𝑡) +\] 希望能够满足对于局部智能体到全局价值函数的IGM条件的保持 \[ +argmax_(𝑎_𝑡∈𝒜)𝑄_{tot}(𝜏_𝑡,𝑎_𝑡 )= +⟨argmax_(𝑎_{𝑡,𝑖}∈𝒜_𝑖 )𝑄_𝑖 (𝜏_{𝑡,𝑖},𝑎_{𝑡,𝑖})⟩_(𝑖∈𝒟) +\] 推导过程如下: \[ +\begin{aligned} +& Q_{t, k}^G\left(\tau_{t, k}^G, a_{t, k}^G\right)=\sum_{j \in G_{t, +k}} Q_j\left(\tau_{t, j}, a_{t, j}\right) ; \operatorname{argmax}_{a_t +\in G_{t, k}} Q_{t, k}^G\left(\tau_{t, k}^G, a_{t, +k}^G\right)=\left\langle\operatorname{argmax}_{a_{t, i} \in +\mathcal{A}_i} Q_i\left(\tau_{t, i}, a_{t, i}\right)\right\rangle_{i \in +G_{t, k}} \\ +& a_t \stackrel{\Psi}{=}\left\langle a_{t, k}^G\right\rangle_{G_{t, +k} \in \mathcal{G}_t} \stackrel{\Psi_{V D +N}}{=}\left\langle\left\langle\bar{a}_{t, i}\right\rangle_{i \in G_{t, +k}}\right\rangle_{G_{t, k} \in \mathcal{G}_t} +\stackrel{\mathcal{D}=G_{t, 1} \cup \cdots \cup G_{t, +K}}{=}\left\langle\bar{a}_{t, i}\right\rangle_{i \in \mathcal{D}} +\end{aligned} +\]
+自动分组的基本逻辑是学习\(f_g:A↦G\),这样的算子的目标是能够学习到系数权重 +\[ +Q_G^{tot} (s_t,u_t )=E_(s_{t+1:∞},u_{t+1:∞} ) [∑_(k=0)^∞ γ^k +r_{t+k}∣s_t,u_t;G] +\] 让总体的联合动作价值函数的值最大,分组的价值函数为: \[ +𝑄^{𝑔_𝑗}=𝑓(𝑄^{𝑗_1} (𝜏^{𝑗_1},𝑢^{𝑗_1}),⋯,𝑄^{𝑗_{𝑛_𝑗}} (𝜏^{𝑗_(𝑛_𝑗 +)},𝑢^{𝑗_{𝑛_𝑗}};𝑤_1^{𝑔_𝑗}) +\] 学习到的贡献程度为:\(𝑤_1^{𝑔_𝑗}\),训练的目标函数为: \[ +ℒ_𝑔 (𝜃_{w_1})=𝔼_((𝐳,𝐮,𝑟,𝐳′)∼ℬ∑_𝑖(∥𝑓_(w_1)^𝑖 (𝜏^𝑖 (𝑧^𝑖,𝑢^𝑖 );𝜃_(w_1)^𝑖 +)∥_{𝑙_1}) +\] +根据每次在分组中的贡献权重来依次调整智能体的分组,当贡献的权重过小的话,就认为智能体不属于分组中,进入下一轮的分组调整中。
+ + +智能体内嵌信息网络获取的群组相关信息\(e_i\)
Similarity-Diversity +objective:来自同一组的智能体的信息是相似的,来自不同群体的智能体信息之间保持多样性: +\[ +\begin{gathered} +\mathcal{L}_{S +D}\left(\theta_e\right)=\mathbb{E}_{\mathcal{B}}\left(\sum_{i \neq j} +I(i, j) \cdot \operatorname{cosine}\left(f_e\left(h^i ; \theta_e\right), +f_e\left(h^j ; \theta_e\right)\right)\right) \\ +\text { where } I(i, j)=\left\{\begin{array}{cc} +-1, & a^i, a^j \in g^k \\ +1, & a^i \in g^k, a^j \in g^l, k \neq l +\end{array}\right. +\end{gathered} +\] +很直观的理解,对于合作型的强化学习任务而言,我们希望能够在同一个任务域内强化策略的合作,而不同的任务域内的策略应当保持多样性,能够让多智能体系统探索更多的可能性,防止陷入局部最优的情况。
Agent Network特点:
+合理性表示: \[ +𝜕𝑄^{𝑡𝑜𝑡}/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 ) (𝜕𝑄^𝑎)/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 +) (𝜕𝑄^𝑎)/(𝜕𝑣_ℎ^𝑎 ) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ )=𝑓_𝑑 (𝑒^𝑎 )⋅(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 +) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ ) +\]
群体状态下的群体行动价值信息,将全局的状态分解成局部的状态信息用于训练,这部分的局部状态信息是基于群组划分之后的状态信息
\(s^{g_j}\) 是分组后\(e_t^i (a_i∈g_j +)\)按组别融合,建立分组器映射
+\[ +f_{w_2}(s^g ):s^g→w_2^g \]
通过记录许多人类驾驶员的数据来构建此分布,而不是遵循自动驾驶车辆的特定策略(不切实际),由于任何合理策略对 -D -的影响都很小,通过应用简单的数据增强技术,我们可以构建适当的分布,然后在传感系统的每次重大更新后执行离线验证。
重点关注经常发生的“测量不准确”类型的错误
let \(p(o)\),\(\hat{p}(o)\) be the positions of o in the -coordinate system of the host vehicle according to \(s(x)\), \(\hat{s}(x)\) -respectively.分别表示某个对象的真实的位置信息和传感器的位置信息。
-目标到主车辆的距离为:\(\|p\|\) -,加性误差:\(\|p(o)-\hat{p}(o)\|\),相对误差为 \(\frac{\|p(o)-\hat{p}(o)\|}{\|p(o)\|}\)
对于positions a set of objects \(O\)表示的是一堆对象,要求 \(p(o)\) 和 \(\hat{p}(o)\)之间的相对误差小于一个精确度不妨计作 -$$ ,但是\(\epsilon-ego-accurate\) -的传感状态不能保证PAC传感系统能够满足每个合理的价值函数:当相对误差很小的时候,尽管认为合理了,但是对于实际的情况而言会出现不同的价值函数结果。选择制动or继续前进,横向不能用相对距离
表明\(\epsilon-ego-accurate\) -并不能保证我们的传感系统是PAC。是否还有其他属性足以满足 PAC -传感系统的要求
+集中到策略梯度中,内嵌群组状态信息潜在促进组内合作: \[ +𝜕𝑄^{𝑡𝑜𝑡}/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 ) (𝜕𝑄^𝑎)/(𝜕𝜃_ℎ )=(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 +) (𝜕𝑄^𝑎)/(𝜕𝑣_ℎ^𝑎 ) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ )=𝑓_𝑑 (𝑒^𝑎 )⋅(𝜕𝑄^{𝑡𝑜𝑡})/(𝜕𝑄^𝑎 +) (𝜕𝑣_ℎ^𝑎)/(𝜕𝜃_ℎ ) +\]
按照全文的总共方法的总述可以得到全局分解目标: \[ +ℒ(𝜃)=ℒ_𝑇𝐷 (𝜃)+𝜆_𝑔 ℒ_𝑔 (𝜃_(w_1 ) )+𝜆_𝑆𝐷 ℒ_𝑆𝐷 (𝜃_𝑒 ) +\]
给出价值函数合理的L-语义-\(Lipschitz\)条件
目标是减少事故发生的概率,存在两类安全情况:
-解决的是如何确保和验证safety-critic sensing -mistake足够小,采用的方法是融合多个工程和技术都独立的子系统。多数子系统认为安全才算安全:
单侧c-近似独立的多个子系统
+消融实验
对于服从单侧-c近似独立的子系统,能够推出:
+src="https://gitee.com/lihaibineric/picgo/raw/master/pic/image-20231122225941711.png" +alt="消融实验对比" /> + + +谷歌足球的训练结果
基于多子系统方案和Corollary 3,为了达到10^-9 -失效率,对sensing系统的验证不再需要10^9 -小时的数据,而是分别对每个子系统验证10^5小时就可以了
独立假设背后的合理性留给我们去推理。有些传感器对会产生完全不相关的误差;单侧-c近似独立是否成立
对于安全幽灵而言,当出现至少有两个传感器认为的情况是危险的,才能认为是危险的
Building a scalable sensing -system可扩展的传感器系统
-
|
|
|
|
|
|
|
|
|
|
|
|
指定虚拟环境x的python版本是3.8,base环境是3.11;conda -activate激活x之后python版本仍为3.11。
-原因:在base环境中修改了.zshrc文件中的python只定路径,让每次虚拟环境中的python找到的python都只能按照指定的python路径进行寻找,从而导致conda环境中的python版本不能制定。
-修改方式:
-
|
进入 -.zshrc环境中进行修改,如果发现一类诸如其他python版本指定的路径的话,需要进行删除,只需要保留最原始的关于anaconda的命令初始化,完成之后输入
-
|
解决问题
-下载使用清华源加上: -i -https://pypi.tuna.tsinghua.edu.cn/simple
---]]>清华:
-https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:
-http://mirrors.aliyun.com/pypi/simple/
中国科技大学 -:
-https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
豆瓣:
-http://pypi.doubanio.com/simple/
学习网站:8小时转职Golang工程师
-go的官网下载网站,选择合适的系统版本进行安装https://go.dev/dl/
-下载安装包并按照安装包的指引下载相关的内容
对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装 https://go.dev/doc/install
测试GO的版本
-
|
测试GO的环境变量
-
|
go语言没有异常,全部都用ERROR来表示
-
|
|
学习网站:8小时转职Golang工程师
+go的官网下载网站,选择合适的系统版本进行安装https://go.dev/dl/
+下载安装包并按照安装包的指引下载相关的内容
对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装 https://go.dev/doc/install
测试GO的版本
+
|
测试GO的环境变量
+
|
对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
+
|
或者将编译和运行两个过程分开,先编译后运行:
+
|