将一个基础的网络分层并模块化,使用一个路由网络来为每个任务选择不同的模块,路由网络也可以学习。这就是所谓的软模块。
用到的是SAC算法的改进型,文中引用的确实最原始的SAC文章(坑死)。改进的SAC取缔了V网络,并且温度系数\(\alpha\)不再固定死,而是通过梯度下降更新。SAC的温度系数自学版本没有完全理解,最好去看看。
Soft Modularization

Base Policy有L层,每层由n个模块构成。Routing网络由L-1层的输出,每层都输出n*n的矩阵,代表了每个模块与下一层中模块之前连接的权重。\(s_t\)代表当前状态,\(z_{\tau}\)代表了与任务相关的one-hot编码。两个输入经过全连接层都会得到一个D维的向量,D在这里是一个超参数。
最后Base Policy输出的是\(\mu ,\sigma\)代表一个分布。
不同任务的难易程度不同造成了收敛速度也不同。因此要在各个任务的损失函数前加个权重,这个权重与\(\alpha\)相关。 \[ w_{i} =\frac{e^{-\alpha _{i} } }{\sum_{j=1}^{M} e^{-\alpha _{i}} } \] 而\(\alpha\)则是通过梯度下降更新的。