多任务学习漫谈(一):以损失之名
By 苏剑林 | 2022-01-18 | 149292位读者 | 引用能提升模型性能的方法有很多,多任务学习(Multi-Task Learning)也是其中一种。简单来说,多任务学习是希望将多个相关的任务共同训练,希望不同任务之间能够相互补充和促进,从而获得单任务上更好的效果(准确率、鲁棒性等)。然而,多任务学习并不是所有任务堆起来就能生效那么简单,如何平衡每个任务的训练,使得各个任务都尽量获得有益的提升,依然是值得研究的课题。
最近,笔者机缘巧合之下,也进行了一些多任务学习的尝试,借机也学习了相关内容,在此挑部分结果与大家交流和讨论。
加权求和
从损失函数的层面看,多任务学习就是有多个损失函数$\mathcal{L}_1,\mathcal{L}_2,\cdots,\mathcal{L}_n$,一般情况下它们有大量的共享参数、少量的独立参数,而我们的目标是让每个损失函数都尽可能地小。为此,我们引入权重$\alpha_1,\alpha_2,\cdots,\alpha_n\geq 0$,通过加权求和的方式将它转化为如下损失函数的单任务学习
\begin{equation}\mathcal{L} = \sum_{i=1}^n \alpha_i \mathcal{L}_i\label{eq:w-loss}\end{equation}
在这个视角下,多任务学习的主要难点就是如何确定各个$\alpha_i$了。
最小熵原理(五):“层层递进”之社区发现与聚类
By 苏剑林 | 2019-10-19 | 150278位读者 | 引用让我们不厌其烦地回顾一下:最小熵原理是一个无监督学习的原理,“熵”就是学习成本,而降低学习成本是我们的不懈追求,所以通过“最小化学习成本”就能够无监督地学习出很多符合我们认知的结果,这就是最小熵原理的基本理念。
这篇文章里,我们会介绍一种相当漂亮的聚类算法,它同样也体现了最小熵原理,或者说它可以通过最小熵原理导出来,名为InfoMap,或者MapEquation。事实上InfoMap已经是2007年的成果了,最早的论文是《Maps of random walks on complex networks reveal community structure》,虽然看起来很旧,但我认为它仍是当前最漂亮的聚类算法,因为它不仅告诉了我们“怎么聚类”,更重要的是给了我们一个“为什么要聚类”的优雅的信息论解释,并从这个解释中直接导出了整个聚类过程。
当然,它的定位并不仅仅局限在聚类上,更准确地说,它是一种图网络上的“社区发现”算法。所谓社区发现(Community Detection),大概意思是给定一个有向/无向图网络,然后找出这个网络上的“抱团”情况,至于详细含义,大家可以自行搜索一下。简单来说,它跟聚类相似,但是比聚类的含义更丰富。(还可以参考《什么是社区发现?》)
CRF用过了,不妨再了解下更快的MEMM?
By 苏剑林 | 2020-02-24 | 47966位读者 | 引用HMM、MEMM、CRF被称为是三大经典概率图模型,在深度学习之前的机器学习时代,它们被广泛用于各种序列标注相关的任务中。一个有趣的现象是,到了深度学习时代,HMM和MEMM似乎都“没落”了,舞台上就只留下CRF。相信做NLP的读者朋友们就算没亲自做过也会听说过BiLSTM+CRF做中文分词、命名实体识别等任务,却几乎没有听说过BiLSTM+HMM、BiLSTM+MEMM的,这是为什么呢?
今天就让我们来学习一番MEMM,并且通过与CRF的对比,来让我们更深刻地理解概率图模型的思想与设计。
模型推导
MEMM全称Maximum Entropy Markov Model,中文名可译为“最大熵马尔可夫模型”。不得不说,这个名字可能会吓退80%的初学者:最大熵还没搞懂,马尔可夫也不认识,这两个合起来怕不是天书?而事实上,不管是MEMM还是CRF,它们的模型都远比它们的名字来得简单,它们的概念和设计都非常朴素自然,并不难理解。
强大的NVAE:以后再也不能说VAE生成的图像模糊了
By 苏剑林 | 2020-07-10 | 107933位读者 | 引用昨天早上,笔者在日常刷arixv的时候,然后被一篇新出来的论文震惊了!论文名字叫做《NVAE: A Deep Hierarchical Variational Autoencoder》,顾名思义是做VAE的改进工作的,提出了一个叫NVAE的新模型。说实话,笔者点进去的时候是不抱什么希望的,因为笔者也算是对VAE有一定的了解,觉得VAE在生成模型方面的能力终究是有限的。结果,论文打开了,呈现出来的画风是这样的:
然后笔者的第一感觉是这样的:
W!T!F! 这真的是VAE生成的效果?这还是我认识的VAE么?看来我对VAE的认识还是太肤浅了啊,以后再也不能说VAE生成的图像模糊了...
Ladder Side-Tuning:预训练模型的“过墙梯”
By 苏剑林 | 2022-06-20 | 67239位读者 | 引用如果说大型的预训练模型是自然语言处理的“张良计”,那么对应的“过墙梯”是什么呢?笔者认为是高效地微调这些大模型到特定任务上的各种技巧。除了直接微调全部参数外,还有像Adapter、P-Tuning等很多参数高效的微调技巧,它们能够通过只微调很少的参数来达到接近全量参数微调的效果。然而,这些技巧通常只是“参数高效”而并非“训练高效”,因为它们依旧需要在整个模型中反向传播来获得少部分可训练参数的梯度,说白了,就是可训练的参数确实是少了很多,但是训练速度并没有明显提升。
最近的一篇论文《LST: Ladder Side-Tuning for Parameter and Memory Efficient Transfer Learning》则提出了一个新的名为“Ladder Side-Tuning(LST)”的训练技巧,它号称同时达到了参数高效和训练高效。是否真有这么理想的“过墙梯”?本来就让我们一起来学习一下。
生活中的趣味数学:同一天生日概率有多大
By 苏剑林 | 2009-07-29 | 28863位读者 | 引用庆祝圆周率(π)节!
By 苏剑林 | 2010-03-14 | 70679位读者 | 引用π = 3.141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 820 974 944 592 ...
$\pi \approx {355}/{113}$
“山巅一寺一壶酒,尔乐苦煞吾,把酒吃,酒杀尔,杀不死,乐而乐”
$\pi$,一个小小的符号,代表着一个伟大的数字。从古到今,几乎所有国家都有人研究过它。在很长的时期内,$\pi$的有效数字代表了这个国家的数学发展程度,在使用计算机计算以前,$\pi$的计算可谓是马拉松式进行。很早人们就知道了2-4位的有效数字(古希腊、古中国、古印度),众所周知之后祖冲之的3.1415926领先了一千多年;紧接着是西方的35位、100位、500位.....甚至有人穷其一生就为算$\pi$!自从计算机参与到其中之后,有效数字光速般增加,而在2009年末,有科学家已经用超级计算机计算出圆周率暂时计到小数点后2万9千亿个小数位。现在$\pi$的位数已经不大重要了(毕竟30位有效数字就完全足够用来精确衡量宇宙大小!),$\pi$的计算成为了测试计算机性能以及测试算法效率的一个指标!
《向量》系列——2.曲率半径
By 苏剑林 | 2010-07-18 | 54866位读者 | 引用圆周是如此地和谐与完美,致使数学家和物理学家对它钟爱有加。几何上可以把一条曲线的局部看做一个圆弧,利用圆的性质去研究它(在数学上,曲率半径的倒数就是曲率,曲率越大,曲线越弯曲);物理学家喜欢把一个质点的曲线运动轨迹的局部看做圆周运动,利用圆周运动的方法来描述这种运动。这两种研究方法都告诉了我们,两种不同的“线”在极小的范围内可以等效的,这也为我们对科学进行探究提供了一点指导思想:把未知变已知,以已知看未知。物理学和数学的两种处理方法中,有一点是殊途同归的:那就是看轨迹看成一个圆后,圆的半径是多少?我们首先得求出它。
在数学分析上可以利用微积分的相关知识来推导曲率半径公式,而BoJone则更偏爱物理方法,通过物理和向量知识的结合,推导出曲率半径公式,让BoJone感到“别有一番风味”。
最近评论