相对运动的一道妙题!
By 苏剑林 | 2012-12-02 | 18724位读者 | 引用昨天在研究一个最优化问题时,遇到了一个这样的积分:
$$\int \frac{1}{\cos^3 \theta} d\theta$$
然后就顺便研究了一下这种类型的函数的积分。一般来讲,这类积分可以写成$\int cos^n \theta d\theta$或$\int sin^n \theta d\theta$,其中n是一个整数。
首先我们来解决n=1的情况,我们很容易就有$\int cos\theta d\theta=sin\theta +C$或$\int sin\theta d\theta=-cos\theta +C$,这是一个基本的结果。
如果n是大于1的正整数,那么可以用递推的方法来搞定:
王骁威:勇敢的追梦者
By 苏剑林 | 2012-11-06 | 39732位读者 | 引用破解数学猜想
今天在看《广州日报》时,偶然发现了一个不曾听闻的名字——王骁威。
他,跟我一样是一个90后,是韶关学院的大四学生,而现在,他多了一点名头:“仅用1表示数问题中的素数猜想”这一难题的破解者。
“仅用1表示数问题中的素数猜想”出现在加拿大数学家Richard K·Guy的著作《数论中未解决的问题》中,是上世纪50年代,加拿大数学家Richard K·Guy提出一个数论猜想:对于给定的素数p,$f(p)=f(p-1)+1$是否能成立。其中,“仅用1表示数”指的是只用1通过加法和乘法以及括号来表示自然数,对于给定的自然数n,用1来表示时,1的最少个数记为$f(n)$。据说在之前就有诸多数学家论证过,在3亿之前的素数里,上述猜想是成立的。
但是王骁威通过举出反例证否了这个命题,他指出p=353942783时这个公式并不成立。他是经过四个月的钻研,王骁威运用集合论的运算、分析、优化,才成功发现这个猜想的反例的。发现反例之后,王骁威陷入兴奋,把整理成的报告寄给国内几家杂志社,结果却令他失望,几家杂志社对他的论文均不感兴趣。“我也怀疑过自己的努力是否值得,但对数学的强烈兴趣让我坚持下来。”王骁威说自己将论文译成英文,英文名为《A counterexample to the prime conjecture of expressing numbers using just ones》(中文名为《仅用1表示数中素数猜想的一个反例》),投往全球最权威的数论杂志———美国艾斯维尔出版社的《Journal of Number Theory》(数论杂志),国外专家的青睐终于让他收获成功的喜悦,论文发表在杂志第133期(明年二月)上。数学大师丘成桐也通过邮件与王骁威交流,并对他表示肯定。
变分自编码器 = 最小化先验分布 + 最大化互信息
By 苏剑林 | 2018-10-10 | 121901位读者 | 引用这篇文章很简短,主要描述的是一个很有用、也不复杂、但是我居然这么久才发现的事实~
在《深度学习的互信息:无监督提取特征》一文中,我们通过先验分布和最大化互信息两个loss的加权组合来得到Deep INFOMAX模型最后的loss。在那篇文章中,虽然把故事讲完了,但是某种意义上来说,那只是个拼凑的loss。而本文则要证明那个loss可以由变分自编码器自然地导出来。
过程
不厌其烦地重复一下,变分自编码器(VAE)需要优化的loss是
\begin{equation}\begin{aligned}&KL(\tilde{p}(x)p(z|x)\Vert q(z)q(x|z))\\
=&\iint \tilde{p}(x)p(z|x)\log \frac{\tilde{p}(x)p(z|x)}{q(x|z)q(z)} dzdx\end{aligned}\end{equation}
相关的论述在本博客已经出现多次了。VAE中既包含编码器,又包含解码器,如果我们只需要编码特征,那么再训练一个解码器就显得很累赘了。所以重点是怎么将解码器去掉。
其实再简单不过了,把VAE的loss分开两部分
“让Keras更酷一些!”:随意的输出和灵活的归一化
By 苏剑林 | 2019-01-27 | 98939位读者 | 引用继续“让Keras更酷一些!”系列,让Keras来得更有趣些吧~
这次围绕着Keras的loss、metric、权重和进度条进行展开。
可以不要输出
一般我们用Keras定义一个模型,是这样子的:
x_in = Input(shape=(784,))
x = x_in
x = Dense(100, activation='relu')(x)
x = Dense(10, activation='softmax')(x)
model = Model(x_in, x)
model.compile(loss='categorical_crossentropy ',
optimizer='adam',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
开源一版DGCNN阅读理解问答模型(Keras版)
By 苏剑林 | 2019-08-20 | 69768位读者 | 引用去年写过《基于CNN的阅读理解式问答模型:DGCNN》,介绍了一个纯卷积的简单的问答模型。当时是用Tensorflow实现的,而且没有开源,这几天抽空用Keras复现了一下,决定开源。
模型综述
关于DGCNN的基本介绍,这里不再赘述。本文的模型并不是之前模型的重复实现,而是有所改动,这里只介绍一下被改动的地方。
1、这里放出的模型,线下验证集的分数大概是0.72(之前大约是0.75);
2、本次模型以字为单位,使用笔者之前探索出来的“字词混合Embedding”(之前是以词为单位);
3、本次模型完全去掉了人工特征(之前用了8个人工特征);
4、本次模型去掉了位置Embedding(之前将位置Embedding拼接到输入上);
5、模型架构和训练细节有所微调。
隐藏在动量中的梯度累积:少更新几步,效果反而更好?
By 苏剑林 | 2021-08-24 | 31674位读者 | 引用我们知道,梯度累积是在有限显存下实现大batch_size训练的常用技巧。在之前的文章《用时间换取效果:Keras梯度累积优化器》中,我们就简单介绍过梯度累积的实现,大致的思路是新增一组参数来缓存梯度,最后用缓存的梯度来更新模型。美中不足的是,新增一组参数会带来额外的显存占用。
这几天笔者在思考优化器的时候,突然意识到:梯度累积其实可以内置在带动量的优化器中!带着这个思路,笔者对优化了进行了一些推导和实验,最后还得到一个有意思但又有点反直觉的结论:少更新几步参数,模型最终效果可能会变好!
注:本文下面的结果,几乎原封不动且没有引用地出现在Google的论文《Combined Scaling for Zero-shot Transfer Learning》中,在此不做过多评价,请读者自行品评。
SGDM
在正式讨论之前,我们定义函数
\begin{equation}\chi_{t/k} = \left\{ \begin{aligned}&1,\quad t \equiv 0\,(\text{mod}\, k) \\
&0,\quad t \not\equiv 0\,(\text{mod}\, k)
\end{aligned}\right.\end{equation}
也就是说,$t$是一个整数,当它是$k$的倍数时,$\chi_{t/k}=1$,否则$\chi_{t/k}=0$,这其实就是一个$t$能否被$k$整除的示性函数。在后面的讨论中,我们将反复用到这个函数。
最近评论