Improving Federated Learning Personalization via MAML 论文笔记 【未完】

Improving Federated Learning Personalization via MAML Abstract FL算法与MAML具有很多相似性,可以用元学习算法来对其进行解释 微调可以使得gloabl 模型具有更强的准确率,同时更容易做定制化处理 通过标准的中心化数据库训练出来的模型相比Fedavg训练的更难进行定制化处理 Introduction 指出了FL与MAML算法的联系,并用MAML算法对FL算法进行解释 对FedAvg进行改进,采用两阶段的训练和fine-tune进行优化 发现FedAvg其实本质是一种metalearning算法,用于优化个性化定制的效果,而不是全局模型的优化。 Interpreting FedAvg as a Meta Learning Algorithm 下图展现了在FL中应用MAML算法(左侧),Reptile算法(中间)和FL的训练算法FedAvg(右侧)。设L为损失函数,在每一轮的迭代中,MAML会通过随机采样一个batch的任务T来进行训练。对于每个任务T,会有一个内循环,然后在外循环中聚集每个任务所获得的的梯度更新。对于FL算法会随机采样数个client T。对于每个T和其权重,会在local数据上进行数轮的迭代优化,然后将更新的梯度聚集形成一个新的global model。如果我们简化设置,并认为所有的client拥有相同的数据,那么所有的权重就会一样,这个时候reptile和fedavg其实就是同一种算法。 假设在FedAvg中的权重相同为wi。考虑有T个clients,并设置每个相关模型参数为θ\theta。对于每个cilent i,其损失函数为Li(θ)L_{i}(\theta),记gjig_{j}^{i}为第jthj^{t h}local训练过程所计算得到的梯度。 FedSGD的梯度更新函数为: gFedSGD=−βT∑i=1T∂Li(θ)∂θ=1T∑i=1Tg1i g_{F e d S G D}=\frac{-\beta}{T} \sum_{i=1}^{T} \frac{\partial L_{i}(\theta)}{\partial \theta}=\frac{1}{T} \sum_{i=1}^{T} g_{1}^{i} 将设我们将FOMAML用相同的术语来表示。假设Client 学习率为β\beta, 每个client的个性化模型经过K步后所获得的梯度更新为θKi=UKi(θ)=θ−β∑j=1Kgji=θ−β∑j=1K∂Li(θj)∂θ\theta_{K}^{i}=U_{K}^{i}(\theta)=\theta-\beta \sum_{j=1}^{K} g_{j}^{i}=\theta-\beta \sum_{j=1}^{K} \frac{\partial L_{i}\left(\theta_{j}\right)}{\partial \theta} 求微分可得到: ∂UKi(θ)∂θ=I−β∂∑j=1Kgji∂θ=I−β∑j=1K∂2Li(θj)∂θ2 \frac{\partial U_{K}^{i}(\theta)}{\partial \theta}=I-\beta \frac{\partial \sum_{j=1}^{K} g_{j}^{i}}{\partial \theta}=I-\beta \sum_{j=1}^{K} \frac{\partial^{2} L_{i}\left(\theta_{j}\right)}{\partial \theta^{2}} 在进行K次梯度更新后,对整个模型进行更新: gMAML=∂LMAML∂θ=1T∑i=1T∂Li(UKi(θ))∂θ=1T∑i=1TLi′(UKi(θ))(I−β∑j=1K∂2Li(θj)∂θ2) g_{M A M L}=\frac{\partial L_{M A M L}}{\partial \theta}=\frac{1}{T} \sum_{i=1}^{T} \frac{\partial L_{i}\left(U_{K}^{i}(\theta)\right)}{\partial \theta}=\frac{1}{T} \sum_{i=1}^{T} L_{i}^{\prime}\left(U_{K}^{i}(\theta)\right)\left(I-\beta \sum_{j=1}^{K} \frac{\partial^{2} L_{i}\left(\theta_{j}\right)}{\partial \theta^{2}}\right) 为了避免二次求导带来的计算量问题,FOMAML应运而生,通过K次的梯度更新后,直接采用第K+1次的梯度更新作为local update。 ...

December 2, 2019 · 1 分钟 · 144 字

Federated Adversarial Domain Adaptation 论文笔记【未完】

Federated Adversarial Domain Adaptation 目前联邦学习存在知识域迁移的问题,而导致无法具有较好的泛化能力。当源节点的标记数据和目标节点的未标记数据不同时候,就会出现域迁移的情况。 这paper主要提出了一种方式来解决联邦学习中知识域使用的方法,为了能够将不同节点所学习的知识能够和目标节点的数据分布所对齐。 该论文的方法主要将对抗适应技术应用到了联邦学习中。此外,设计了一种动态注意力机制,并且利用特征分解来增强知识迁移。 Introduction 传统的联邦学习存在一个问题:由于每个节点上的数据是通过nonidd的行为所收集而来的,因此会产生一个domain shift 的问题。例如:一个设备拍到的图片很多都是室内场景,一个拍到的很多是室外场景。本文主要提出的一个方法是,在不需要额外用户的监督情况下,通过对去中心化的节点中的数据进行知识迁移到一个新的不同的数据域的节点。 该方法也被称为,Unsupervised Federated Domain Adaptation. 目前有许多非监督域适应的方法,但是因为联邦学习的背景导致了一下的问题: 数据的存放是locally,而且无法分享。 模型的参数是在不同节点上独立训练,并且以不同的速度进行收敛,对于global模型的贡献取决于这两者域的相关性。 由于通过源节点学习出来的知识是高度集成的,难以解构,可能会引起negative transfer。 本文主要提出的方法名称为Federated Adversarial Domain Adaptation(FADA),利用对抗技术在联邦学习系统中解决域迁移的问题。 方法的主要步骤分为: 首先从理论角度对联邦域适应问题进行分析,并且提供一个泛化的,通用的界限。 收到理论效果的启发,提出一种有效的自适应算法,该算法基于对抗性适应和应用于联邦学习环境的表征解构技术。 设计一个动态注意力模型来应对联邦学习系统中不断变化的收敛速率。 Realated Work Unsupervised Domain Adaptation: UDA的目的是将知识从已经标记的数据域迁移到一个未标记的数据域。 Federated Learning:不多介绍了 Feature Disentanglement:特征解构,神经网络通过复杂的隐藏层提取出来的特征,通常是高度集成的。因此通过学习解构的特征可以帮助一出一些不相关,或者是特定域的知识,然后对需要的域知识进行建模。 Generalization Bound for FDA 首先回顾一下以单数据源为背景的自适应问题的理论误差范围的定义 然后描述在无监督的联邦域自适应情况下的误差范围的定义 Federated Adversarial Domain Adaptation 根据上一章节的理论不难看出权重α\alpha和距离的重要性。本文的方法是通过提出一个动态的注意力机制进行权重的学习,通过联邦对抗对齐机制来缩小源域和目标域的距离。此外,还采用了特征解构的方法提取和域无关的特征来加强知识的迁移。 动态注意力机制: 该机制的原理主要是去提高那些贡献度高的节点权重,降低贡献度低的节点权重,那么如何判断节点的贡献程度呢?本文采用了gap statistics方法评估目标特征能够多好的被clustered。 I=∑r=1k12nr∑i,j∈Cr∥fit−fjt∥2 I=\sum_{r=1}^{k} \frac{1}{2 n_{r}} \sum_{i, j \in C_{r}}\left\|f_{i}^{t}-f_{j}^{t}\right\|_{2} 假设有C1,C2,…,CkC_{1}, C_{2}, \ldots, C_{k}这么多聚集,CrC_r表示第r个聚集中,对象的索引,而且nr=∣Cr∣n_{r}=\left|C_{r}\right|。 直觉上来说,一个更小的gap statistics值说明了特征分布拥有更小的类内方差。通过计算两次迭代的gap statistics的差值来衡量每个源节点贡献的程度。 ...

November 24, 2019 · 2 分钟 · 253 字

MemoryGAN 论文笔记【未完】

Memory GAN 阅读笔记 简介 本文主要解决了训练非监督GAN中的两个问题, 第一,由于生成对抗网络只使用连续潜在分布来表示多个类或者数据簇,因此他们通常没办法正确的处理潜在空间中不同类之间的结构不连续性质。(由于模式崩溃问题导致) 例如 GAN 吧建筑和猫 嵌入在同一个连续潜在分布中 因此GAN可能在两个类别的过渡区域中 生成真实图像。 其次, 生成对抗网络的鉴别器非常容易遗忘过去生成的样本,在对抗训练过程中会产生不稳定性。 作者认为这两个主要问题可以通过生成器鉴别器都能访问的可学习的记忆网络得到解决。生成器可以有效学习训练样本的表示,以理解数据的底层聚类分布,从而缓解结构的不连续问题。与此同时,鉴别器可以更好记忆先前生成的样本的集群,这可以减轻遗忘的问题。 本文提出了一种端到端的生成对抗网络模型 记忆GAN,该模型涉及一种无监督的并且和现有生成对抗网络模型继集成的存储网络。 Von Mises-Fisher (vMF) mixture model. 记忆模块能够有效地缓解不稳定的问题。首先,为缓解结构不连续性问题,内存可以学习训练样本的表示,帮助生成器更好理解类和集簇分布。因此,我们可以将离散簇的建模与连续潜在空间上的数据属性的嵌入分开,这可以减轻不连续性问题。 其次 记忆网络能够通过学习记忆先前生成的样本数据簇来缓解遗忘问题,包括那种很稀有的样本。 结构 总体结构分为 记忆鉴别网络DMN和记忆条件生成网络(MCGN) 记忆鉴别网络 记忆鉴别网络分别由一个前馈网络μ\mu 和一个记忆网络组成。 其中前馈网络 μ\mu 是卷积神经网络,输入为x∈RDx \in \mathbb{R}^{D},输出是一个标准化后的向量 q=μ(x)∈RMq=\mu(x) \in \mathbb{R}^{M},其中 ∥q∥=1\|q\|=1。然后作为记忆模块的输入并输出判断结果。 记忆网络的公式为:M=(K,v,a,h)\mathcal{M}=(K, v, a, h),其中K∈RN×MK \in \mathbb{R}^{N \times M} 是内存key矩阵,NN是内存尺寸而MM是维度。v∈{0,1}Nv \in\{0,1\}^{N} 是内存矩阵。从概念上将,每个关键向量存储通过vMF混合模型学习的聚类中心表示,并且其对应的关键值是真假的判断结果。a∈RNa \in \mathbb{R}^{N} 是表示存在每个内存块中的物体的时长。而h∈RNh \in \mathbb{R}^{N}表示的是slot 直方图,其中每个hih_{i}表示属于第i个内存槽中的有效数据量。 相关机制: life-long memory network:可以自由增长内存空间,训练过程中无需重置。 k-nearest neighbor indexing for efficient memory lookup: k近邻索引用于查询 least recently used (LRU) scheme for memory update. LRU机制用于内存更新 ...

April 22, 2019 · 2 分钟 · 355 字

kettle入门教程

kettle 入门教程 由于最后一个学期还有一个学分不够,就得再休一门课,看了看课表也就只能挑个OLAP了,又是一门完全陌生的课,然后网上关于kettle的教程又非常少,自己就搜罗了一些资料记录一下该课需要用的工具的笔记吧 kettle 介绍 kettle是一个ETL(Extract, Transform and Load)数据抽取、转换、载入工具,ETL工具在数据仓库项目使用非常频繁,kettle也可以应用在以下一些场景: 在不同应用或数据库之间整合数据 把数据库中的数据导出到文本文件 大批量数据装载入数据库 数据清洗 集成应用相关项目是个使用 kettle使用非常简单,通过图形界面设计实现做什么业务,无需写代码去实现,因此,kettle是以面向元数据来设计 kettle支持很多种输入和输出格式,包括文本文件,数据表,以及商业和免费的数据库引擎。另外,kettle强大的转换功能让您非常方便操纵数据。 kettle 安装 下载地址 由于我的平台是mac,有bug,双击不能运行,只能解压后 在终端输入 sh spoon.sh 运行spoon 数据转换-导出为Excel 连接数据库 导出为Excel 首先下图所示新建一个转换,并设置数据库的连接。 设置完数据库连接之后,就可以设置输入源,这里我们采用数据库中的table作为输入源 设置好输入源可以点击preview先预览数据 设置完输入源 同理将输出源选择excel拖到工作界面,但是先别急着配置输出源,在view栏,添加一个hop,用来连接输入和输出源 这样在配置输出源的时候,在字段的tab就可以直接获取选择要导出的字段 最后点击开始就进行了转换 最后来看下导出的文件 Hello World 好,现在你已经学会了转换,下面我们就来个Helloword实例,这个教程是我在网上看到的,觉得还不错,可以多接触kettle的一些功能,而不像我上面的非常基础。 那么这个helloworld就是针对数据库中的每个人名输出对应的gretting并导出为文件。 首先同理设置输入源,但SQL语句需要修改下,我这里是只选出了他们的名字,按id排列,取前十个。 然后就是写个js脚本自动添加个hello 最后用hop将三个step链接,可以先执行preview看下结果 最后可以看下结果 以上只是演示了数据转换中最基础的几个功能,其他更详细的功能都可以在Design tab中找到 总的来说 kettle的操作逻辑就是 steps + hops,step是你的操作步骤,hops就是链接。 作业 JOB 上面只介绍了kettle的核心功能之一转换,现在要介绍kettle的另一个功能job。 作业其实就是一个自动化流程,当你需要进行多个转换或者要增加一些逻辑控制条件的情况下,就需要job来实现。 这里就根据前面hello world的例子,实现一个简单的job,检测当文件夹内不存在file的时候,就自动从数据库中导出数据并添加hello。 ...

March 23, 2019 · 1 分钟 · 75 字

One-shot Learning with Memory-Augmented Neural Networks 论文笔记 【未完】

One-shot Learning with Memory-Augmented Neural Networks 论文笔记 介绍 基于梯度的传统的深度学习方法需要大量的数据进行学习,当遇到新的数据,模型就不得不重新学习新的参数,而无法快速适应新的数据。 本文提出了一种记忆增强神经网络能够快速的同化新的数据,并且在学习少两样本后利用该数据做出准确的预测。 对于MANN模型的设计,作者有两个条件: 存储的信息必须稳定并且是元素级的寻址。 参数的数量不能束缚于存储空间的尺寸。 最终该模型能够组合以下两种优势: 能够基于梯度下降的方式获取原始数据中有用的信息来学习出一种通用的的学习方式。 能够基于额外的内存模块来快速的学习到从未见过信息。 元学习(Meta-Learning)方法设计 通常情况,都是通过在某个数据集DD上选择参数θ\theta来最小化学习代价L\mathcal{L} 但在元学习中,降低的是关于某个数据集分布p(D)p(D)的期望代价: θ∗=argmin⁡θED∼p(D)[L(D;θ)] \theta^{*}=\operatorname{argmin}_{\theta} E_{D \sim p(D)}[\mathcal{L}(D ; \theta)] 为了能够实现上述目的,本文做了如下的设置: 首先,采用序列输入,每个输入包含着上一个输入所对应的标签 (x1, null ),(x2,y1),…,(xT,yT−1) \left(\mathbf{x}_{1}, \text { null }\right),\left(\mathbf{x}_{2}, y_{1}\right), \ldots,\left(\mathbf{x}_{T}, y_{T-1}\right) 不同的数据集之间,标记会被打乱(防止网络逐渐学习样本和标签的映射关系),相反这使得网络学到在存储空间中保留数据样本直到下次正确的样本到来的技巧,这样就能够使得样本-标签信息绑定并且存储用于以后的使用。 元学习的模型会在不考虑数据及标签的实际内容前提下去学习绑定数据分布和对应的标签,并且会将泛化出一个通用的模型来映射数据与标签的关系用以预测。 记忆增强模型 神经图灵机(Neural Turing Machine) 神经图灵机的组成和本文的MANN大致类似。神经图灵机是由LSTM或者前馈网络这样的控制器组成,利用大量的读写heads和外置的内存模块交互。 在该模型中,控制器同样采用LSTM或者前馈网络。 To be continued

March 22, 2019 · 1 分钟 · 50 字