# Progressive  Neural Networks

> [Progressive Neural Networks](https://arxiv.org/pdf/1606.04671.pdf)

学习解决复杂的任务序列——同时利用转移和避免灾难性遗忘——仍然是实现人类智能的关键障碍。渐进式网络方法在这个方向上向前迈进了一步:它们不容易遗忘，且可以通过与之前学习过的特征之间的横向连接利用先验知识。我们在各种强化学习任务(雅达利和3D 迷宫)上对该架构进行了广泛的评估，并证明它优于基于预处理和微调的通用基准。利用一种新的灵敏度测量方法，我们证明了迁移发生在学习策略的低水平感觉层和高水平控制层。

## 方法

### Progressive Neural Networks

渐进网络以单列开始：一个 $$L$$ 层的深度神经网络且带有隐藏激活层 $$h\_{i}^{(1)} \in \mathbb{R}^{n\_{i}}$$ （ $$i \leq L$$ ），并且参数 $$\Theta(1)$$ 已经收敛。当切换到第二个任务时，参数$$\Theta(1)$$被“冻结”，并且参数$$\Theta(2)$$的新列被实例化（随机初始化），其中隐层 $$h\_{i}^{(2)}$$ 通过横向连接从 $$h\_{i-1}^{(2)}$$ 和$$h\_{i-1}^{(1)}$$接收输入，推广到第K个任务：

$$
h\_{i}^{(k)}=f\left(W\_{i}^{(k)} h\_{i-1}^{(k)}+\sum\_{j\<k} U\_{i}^{(k : j)} h\_{i-1}^{(j)}\right)
$$

下图是K=3时的网络结构

![](https://2281160879-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaNHyhKoX7GdL4Ytevq%2F-LaNII8X8nnM6zkOZPLK%2F-LaNIJr9YgtJ4swlAb9r%2Fimage%20\(45\).png?generation=1553038398304192\&alt=media)

这些建模方法是由我们的目的决定的: ( 1 )在训练结束时解决独立的任务；( 2 )尽可能通过迁移加速学习；( 3 )避免灾难性遗忘。

### Adapters

在实践中，我们使用非线性横向连接（我们称之为Adapter）来增强前面的渐进网络层，它们既可以改善初始条件，也可以降低维度。

$$
h\_{i}^{(k)}=\sigma\left(W\_{i}^{(k)} h\_{i-1}^{(k)}+U\_{i}^{(k : j)} \sigma\left(V\_{i}^{(k : j)} \alpha\_{i-1}^{(\<k)} h\_{i-1}^{(\<k)}\right)\right)
$$

其中 $$h\_{i-1}^{(\<k)}=\left\[h\_{i-1}^{(1)} \cdots h\_{i-1}^{(j)} \cdots h\_{i-1}^{(k-1)}\right]$$ ， $$\alpha\_{i-1}^{(\<k)}$$ 是可学习的权重系数，$$V\_{i}^{(k : j)} \in \mathbb{R}^{n\_{i-1} \times n\_{i-1}^{(\<k)}}$$ 是投影函数，在卷积神经网络中，用 $$1\*1$$ 的卷积实现降维。

## 分析方法

### Average Perturbation Sensitivity (APS)

为了评估每个列对目标任务的贡献程度，我们可以在架构中的孤立点注入高斯噪声(例如单个列的单层)，并测量这种扰动对性能的影响。性能的显著下降表明最终预测严重依赖于该层。我们发现这种方法产生的结果与下面提出的基于Fisher的快速方法相似。

### Average Fisher Sensitivity (AFS)

我们可以利用Fisher信息矩阵得到扰动敏感度的局部近似值。虽然Fisher矩阵通常是相对于模型参数计算的，我们对策略网络 $$\pi$$ 的每一层的标准化激活值 $$\hat{h}\_{i}^{(k)}$$ 计算修改的对角Fisher $$\hat{F}$$ ，$$\hat{F}$$ 可以解释为策略对表示中微小变化的敏感性。我们定义第i层（m个特征）的对角矩阵 $$\hat{F}$$ 如下

$$
\hat{F}*{i}^{(k)}=\mathbb{E}*{\rho(s, a)}\left\[\frac{\partial \log \pi}{\partial \hat{h}*{i}^{(k)}} \frac{\partial \log \pi^{T}}{\partial \hat{h}*{i}^{(k)}}\right] \quad \operatorname{AFS}(i, k, m) \quad=\frac{\hat{F}*{i}^{(k)}(m, m)}{\sum*{k} \hat{F}\_{i}^{(k)}(m, m)}
$$

## 实验

### Pong Soup

这里使用了雅达利游戏中的乒乓游戏的变体进行测试，包括：噪声(固定高斯噪声被加到输入端)；黑色(黑色背景)；白色(白色背景)；缩放(输入缩放75 %)；V型翻转、H型翻转和VH型翻转(输入水平和/或垂直翻转）

![](https://2281160879-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaNHyhKoX7GdL4Ytevq%2F-LaNII8X8nnM6zkOZPLK%2F-LaNIJrDYZCJlOMlt-Fi%2Fimage%20\(36\).png?generation=1553038398411514\&alt=media)

Baseline2 (单列，只微调输出层 )在大多数实验中无法学习目标任务，因此具有负迁移。这种方法在有监督的学习环境中非常标准，在这种环境中，ImageNet训练的网络的功能通常会重新用于新的领域。

正如预期的那样，我们观察到Baseline3 (单列，完全微调)的好的正迁移，这是一个公认的迁移范例。然而，Progress Networks在中值和平均得分方面都优于这一Baseline，后面的差异更为明显。

下图是扰动分析的结果

![](https://2281160879-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaNHyhKoX7GdL4Ytevq%2F-LaNII8X8nnM6zkOZPLK%2F-LaNIJrFH7uYNZiCeHoF%2Fimage%20\(55\).png?generation=1553038398355358\&alt=media)
