[欧拉数学]素数倒数之和
By 苏剑林 | 2011-11-19 | 39098位读者 | 引用上一篇文章我通过欧拉数学的方式简单地讲了数论中的“黎曼ζ函数”和“金钥匙”。事实上,这把“金钥匙”与很多问题之间的联系已经被建立了起来,换句话说,“金钥匙”已经插入到了相应的“锁孔”中,数学家的工作就是要把这个金钥匙“拧动”,继而打开数学之门!
接下来我们看看如何证明所有素数的倒数之和发散的。在入正题之前,我们得需要看一个引理:
无限数列${a_n}$的每一项都大于0,那么$\sum\limits_{n=1}^{\infty} a_n$与$\prod\limits_{n=1}^{\infty} \left(1+a_n\right)$的敛散性相同。换句话说,两者互为充分必要条件!
【翻译】星空之夜:夏季恒星的色彩
By 苏剑林 | 2013-07-25 | 32851位读者 | 引用数学基本技艺之23、24(下)
By 苏剑林 | 2013-09-27 | 24762位读者 | 引用在上一篇文章中我们得到了第23题的解,本来想接着类似地求第24题,但是看着23题的答案,又好像发现了一些新的东西,故没有继续写下去。等到今天在课堂上花了一节课研究了一下之后,得到了关于这种拟齐次微分方程的一些新的结果,遂另开一篇新文章,与大家分享。
一、特殊拟齐次微分方程的通解
在上一篇文章中,我们求出了拟齐次微分方程$\frac{dy}{dx}=x+\frac{x^3}{y}$的解:
$$(2y+x^2)(x^2-y)^2=C$$
或者写成这样的形式:
$$(y+\frac{1}{2} x^2)(y-x^2)^2=C$$
素数之美2:Bertrand假设的证明
By 苏剑林 | 2014-08-09 | 23316位读者 | 引用有了上一篇文章的$\prod\limits_{p\leq n}p < 4^{n-1}$的基础,我们其实已经很接近Bertrand假设的证明了。Bertrand假设的证明基于对二项式系数$C_n^{2n}$的素因子次数的细致考察,而在本篇文章中,我们先得到一个关于素数之积的下限公式,然后由此证明一个比Bertrand假设稍微弱一点的假设。最后,则通过一个简单的技巧,将我们的证明推动至Bertrand假设。
二项式系数的素因子
首先,我们考察$n!$中的素因子$p$的次数,结果是被称为Legendre定理的公式:
$n$中素因子$p$的次数恰好为$\sum\limits_{k\geq 1}\left\lfloor\frac{n}{p^k}\right\rfloor$。
证明很简单,因为$n!=1\times 2\times 3\times 4\times \dots \times n$,每隔$p$就有一个$p$的倍数,每隔$p^2$就有一个$p^2$的倍数,每隔$p^3$就有一个$p^3$的倍数,每增加一次幂,将多贡献一个$p$因子,所以把每个间隔数叠加即可。注意该和虽然写成无穷形式,但是非零项是有限的。
两百万素数之和与“电脑病”
By 苏剑林 | 2014-10-17 | 15728位读者 | 引用原则上来讲,同样的算法,如果分别在Python和C++上实现,那么Python的速度肯定比不上C++的。但是Python还被称为“胶水语言”,它允许我们把主要计算的部分用C或C++等高效的语言编写好,然后它作为“粘合剂”把两者粘合在一起。正因为如此,Python才有了各种各样的扩展库,这些库中有不少是用C语言编写的。因此,我们在编写Python程序的时候,如果可以用这些现成的库,速度会快很多。本文就是用Numpy来改进之前的《两百万前素数之和与前两百万素数之和》的计算。
算法本身是没有变的,只是用了Numpy来处理数组计算,代码如下:
“噪声对比估计”杂谈:曲径通幽之妙
By 苏剑林 | 2018-06-13 | 179325位读者 | 引用说到噪声对比估计,或者“负采样”,大家可能立马就想到了Word2Vec。事实上,它的含义远不止于此,噪音对比估计(NCE, Noise Contrastive Estimation)是一个迂回但却异常精美的技巧,它使得我们在没法直接完成归一化因子(也叫配分函数)的计算时,就能够去估算出概率分布的参数。本文就让我们来欣赏一下NCE的曲径通幽般的美妙。
注:由于出发点不同,本文所介绍的“噪声对比估计”实际上更偏向于所谓的“负采样”技巧,但两者本质上是一样的,在此不作区分。
问题起源
问题的根源是难分难舍的指数概率分布~
指数族分布
在很多问题中都会出现指数族分布,即对于某个变量$\boldsymbol{x}$的概率$p(\boldsymbol{x})$,我们将其写成
$$p(\boldsymbol{x}) = \frac{e^{G(\boldsymbol{x})}}{Z}\tag{1}$$
其中$G(\boldsymbol{x})$是$\boldsymbol{x}$的某个“能量”函数,而$Z=\sum_{\boldsymbol{x}} e^{G(\boldsymbol{x})}$则是归一化常数,也叫配分函数。这种分布也称为“玻尔兹曼分布”。
重新写了之前的新词发现算法:更快更好的新词发现
By 苏剑林 | 2019-09-09 | 98086位读者 | 引用新词发现是NLP的基础任务之一,主要是希望通过无监督发掘一些语言特征(主要是统计特征),来判断一批语料中哪些字符片段可能是一个新词。本站也多次围绕“新词发现”这个话题写过文章,比如:
在这些文章之中,笔者觉得理论最漂亮的是《基于语言模型的无监督分词》,而作为新词发现算法来说综合性能比较好的应该是《更好的新词发现算法》,本文就是复现这篇文章的新词发现算法。
多任务学习漫谈(一):以损失之名
By 苏剑林 | 2022-01-18 | 156686位读者 | 引用能提升模型性能的方法有很多,多任务学习(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$了。
最近评论