MoE环游记:4、难处应当多投入
By 苏剑林 | 2025-03-28 | 4348位读者 | 引用前两篇文章我们都在讨论负载均衡,其中在《MoE环游记:3、换个思路来分配》介绍Loss-Free方案时,笔者留了一个悬念:它引入的Bias项有一个冗余的自由度,这个自由度可以用来做另外有趣的事情。这篇文章我们就来讨论这件事。
我们知道,MoE是为每个Token只选择最匹配的$k$个Expert来进行计算,从而在增大参数量的同时还节省了计算量。然而,当我们仔细思考就会发现,这个策略实际上有明显的可改进之处:直观来看,每个Token的难度并不一样,所以更合理的方案应该是难的Token分配更多的计算资源,简单的token分配更少的资源,这样或许能在同样有限的资源下将效果最大化。
而刚才提到的Bias的额外自由度,恰好可以用来简单地实现这个目标。
通过梯度近似寻找Normalization的替代品
By 苏剑林 | 2025-04-02 | 1548位读者 | 引用不知道大家有没有留意到前段时间的《Transformers without Normalization》?这篇论文试图将Transformer模型中的Normalization层用一个Element-wise的运算DyT替代,以期能提高速度并保持效果。这种基础架构的主题本身自带一点吸引力,加之Kaiming He和Yann LeCun两位大佬挂名,所以这篇论文发布之时就引起了不少围观,评价也是有褒有贬。
无独有偶,上周的一篇新论文《The Mathematical Relationship Between Layer Normalization and Dynamic Activation Functions》从梯度分析和微分方程的视角解读了DyT,并提出了新的替代品。个人感觉这个理解角度非常本质,遂学习和分享一波。
写在前面
DyT全称是Dynamic Tanh,它通过如下运算来替代Normalization层:
\begin{equation}\mathop{\text{DyT}}(\boldsymbol{x}) = \boldsymbol{\gamma} \odot \tanh(\alpha \boldsymbol{x}) + \boldsymbol{\beta}\end{equation}
百科翻译:氢氧化钠(NaOH)的详细介绍
By 苏剑林 | 2009-07-08 | 71119位读者 | 引用对于我们来说,维基百科是一个难得的资料库,但是与其英文版相比,中文版就相形见绌了,就好像本文中所讲的氢氧化钠,在中文版的资料为http://zh.wikipedia.org/w/index.php?title=NaOH&variant=zh-cn;而在英文版的资料为http://en.wikipedia.org/wiki/NaOH 可见英文版本是多么丰富。为了使大家能够更多地了解到科学,笔者特地翻译了一些英文版的维基百科中一些资料。
百科翻译:臭氧的性质
By 苏剑林 | 2009-07-08 | 25817位读者 | 引用臭氧对于我们来说是极为重要的,可以说,没有臭氧,我们都会死于紫外线的强烈照射之下!这里翻译了一些关于臭氧的信息,来源于http://en.wikipedia.org/wiki/Ozone,中文维基为http://zh.wikipedia.org/w/index.php?title=%E8%87%AD%E6%B0%A7&variant=zh-cn
臭氧,英文名为Ozone或trioxygen,化学式$O_3$,每个臭氧分子含有3个氧原子,属于三原子分子。与氧气是同素异形体(组成元素相同,但是结构不同,所表现出来的性质也不同),但比氧气更不稳定。在地表上的臭氧是一种空气污染物,对人和动物的呼吸道系统会产生有害影响。而大气层上部的臭氧层则能够吸收大量的紫外线,使地球的生物不受过量紫外线的侵害。
增强typecho的搜索功能
By 苏剑林 | 2018-01-09 | 74190位读者 | 引用科学空间是使用typecho程序搭建的博客,侧边栏提供了搜索功能,然而typecho内置搜索功能仅仅是基于字符串的全匹配查找,因此导致很多合理的查询都没法得到结果,比如“2018天象”、“新词算法”都没法给出结果,原因就是文章中都不包含这些字符串。
于是就萌生了加强搜索功能的想法,之前也有读者建议过这个事情。这两天搜索了一下,本来计划用Python下的Whoosh库来建立一个全文检索引擎,但感觉整合和后期维护的工作量太大,还是放弃了。后来想到在typecho自身的搜索上加强,在公司同事(大佬)的帮助下,完成了这个改进。
由于是直接修改typecho源文件实现的改进,因此如果typecho升级后就可能被覆盖,因此在这里做个备忘。
探索
通过在Github检索我发现,typecho的搜索功能是在var/Widget/Archive.php
中实现的,具体代码大概在1185~1192行:
新词发现的信息熵方法与实现
By 苏剑林 | 2015-10-26 | 118957位读者 | 引用在本博客的前面文章中,已经简单提到过中文文本处理与挖掘的问题了,中文数据挖掘与英语同类问题中最大的差别是,中文没有空格,如果要较好地完成语言任务,首先得分词。目前流行的分词方法都是基于词库的,然而重要的问题就来了:词库哪里来?人工可以把一些常用的词语收集到词库中,然而这却应付不了层出不穷的新词,尤其是网络新词等——而这往往是语言任务的关键地方。因此,中文语言处理很核心的一个任务就是完善新词发现算法。
新词发现说的就是不加入任何先验素材,直接从大规模的语料库中,自动发现可能成词的语言片段。前两天我去小虾的公司膜拜,并且试着加入了他们的一个开发项目中,主要任务就是网络文章处理。因此,补习了一下新词发现的算法知识,参考了Matrix67.com的文章《互联网时代的社会语言学:基于SNS的文本数据挖掘》,尤其是里边的信息熵思想,并且根据他的思路,用Python写了个简单的脚本。
以自然数幂为系数的幂级数
By 苏剑林 | 2010-10-16 | 33798位读者 | 引用$\sum_{i=0}^{\infty} a_i x^i=a_0+a_1 x+a_2 x^2+a_3 x^3+...$
最近为了数学竞赛,我研究了有关数列和排列组合的相关问题。由于我讨厌为某个问题而设计专门的技巧,所以我偏爱通用的方法,哪怕过程相对麻烦。因此,我对数学归纳法(递推法)和生成函数法情有独钟。前者只需要列出问题的递归关系,而不用具体分析,最终把问题转移到解函数方程上来。后者则巧妙地把数列${a_n}$与幂级数$\sum_{i=0}^{\infty} a_i x^i$一一对应,巧妙地通过代数运算或微积分运算等得到结果。这里我们不用考虑该级数的敛散性,只需要知道它对应着哪一个“母函数”(母函数展开泰勒级数后得到了级数$\sum_{i=0}^{\infty} a_i x^i$)。显然,这两种方法的最终,都是把问题归结为代数问题。
最近评论