并行多任务学习论文阅读(二)同步和异步优化算法

1、并行与分布式多任务学习(Multi-task Learning, MTL)简介

我们在上一篇文章《并行多任务学习论文阅读(一)多任务学习速览》(链接:并行多任务学习论文阅读(一):多任务学习速览 - lonelyprince7 - 博客园)中提到,实现多任务学习的一种典型的方法为增加一个正则项[1][2][3]:

minW∑t=1T[1mt∑i=1mtL(yti,f(xti;wt))]+λg(W)=∑t=1Tlt(wt)+λg(W)=f(W)+λg(W)(1)(1)minW∑t=1T[1mt∑i=1mtL(yti,f(xti;wt))]+λg(W)=∑t=1Tlt(wt)+λg(W)=f(W)+λg(W)

其中g(W)g(W)编码了任务的相关性(多任务学习的假定)并结合了TT个任务;λλ是一个正则化参数,用于控制有多少知识在任务间共享。在许多论文中,都假设了损失函数f(W)f(W)是凸的,且是L-LipschitzL-Lipschitz可导的(对L>0L>0),然而正则项g(W)g(W)虽然常常不满足凸性(比如采用矩阵的核范数),但是我们认为其实接近凸的,可以采用近端梯度算法(proximal gradient methods)[4]来求解。

不过任务数量很大时,多任务学习的计算复杂度很高,此时需要用多CPU/多GPU对学习算法进行加速,尽量使TT个任务的梯度的计算分摊到TT个不同的工作节点(worker)上。但实际上由于正则项的存在和损失函数的复杂性,想做到这个需要我们仔细地设计并行多任务学习算法,在保证算法加速的同时而尽量不影响优化算法最终的收敛。

2、MTL的同步(synchronized)分布式优化算法

我们将会从MTL的单机优化方法开始,逐步说明分布式优化的必要性并介绍它的一种主要实现手段——同步分布式优化算法。
我们先来看单机优化,由于g(W)g(W)正则项的不光滑性,MTL的目标函数常采用基于近端梯度的一阶优化方法进行求解,包括FISTA[5], SpaRSA[6]以及最近提出的二阶优化方法PNOPT[7]。下面我们简要回顾一下在这些方法中涉及到的两个关键计算步骤:

(1) 梯度计算(gradient computing) 设第kk迭代步的参数矩阵为W(k)W(k),目标函数光滑部分f(W(k))f(W(k))的梯度由每个任务的损失函数单独计算梯度后拼接而得:

∇f(W(k))=(∇l1(w(k)1),...,∇lT(w(k)T))(2)(2)∇f(W(k))=(∇l1(w1(k)),...,∇lT(wT(k)))

(2) 近端映射(proximal mapping) 在梯度更新后,我们会计算

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值