20 Jan

我是一个费曼迷

前几天在台湾购买(淘宝代购)的《费曼统计力学》和《费曼计算学》在今天到手了,至此,我的费曼著作收藏基本完成了。

费曼重力学、统计力学和计算学

费曼重力学、统计力学和计算学

我是一个费曼迷,为费曼的小飞侠人格所吸引,为费曼的物理才能所折服。因此,我甚至像普通人追星那样追崇费曼,收藏他的书籍,还有学习他所发明的物理。

点击阅读全文...

2 Dec

相对运动的一道妙题!

这是在《200道物理学难题》中的第五道题,题目看起来没有什么特色,但是解法却非常巧妙:

四只蜗牛在做匀速直线运动(速度各不同),它们的运动轨迹是两两相交的直线,但是没有三条直线交于一点,也就是说他们的轨迹有六个交点。在它们之间,已经发生了五次相遇,问第六次相遇是否一定发生?换句话说,有没有可能只发生五次相遇的?

点击阅读全文...

22 Jul

三角函数幂的积分

昨天在研究一个最优化问题时,遇到了一个这样的积分:
$$\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的正整数,那么可以用递推的方法来搞定:

点击阅读全文...

6 Nov

王骁威:勇敢的追梦者

破解数学猜想

王骁威

王骁威

今天在看《广州日报》时,偶然发现了一个不曾听闻的名字——王骁威。

他,跟我一样是一个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期(明年二月)上。数学大师丘成桐也通过邮件与王骁威交流,并对他表示肯定。

点击阅读全文...

10 Oct

变分自编码器 = 最小化先验分布 + 最大化互信息

这篇文章很简短,主要描述的是一个很有用、也不复杂、但是我居然这么久才发现的事实~

《深度学习的互信息:无监督提取特征》一文中,我们通过先验分布和最大化互信息两个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分开两部分

点击阅读全文...

27 Jan

继续“让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)

点击阅读全文...

20 Aug

开源一版DGCNN阅读理解问答模型(Keras版)

去年写过《基于CNN的阅读理解式问答模型:DGCNN》,介绍了一个纯卷积的简单的问答模型。当时是用Tensorflow实现的,而且没有开源,这几天抽空用Keras复现了一下,决定开源。

模型综述

关于DGCNN的基本介绍,这里不再赘述。本文的模型并不是之前模型的重复实现,而是有所改动,这里只介绍一下被改动的地方。

1、这里放出的模型,线下验证集的分数大概是0.72(之前大约是0.75);

2、本次模型以字为单位,使用笔者之前探索出来的“字词混合Embedding”(之前是以词为单位);

3、本次模型完全去掉了人工特征(之前用了8个人工特征);

4、本次模型去掉了位置Embedding(之前将位置Embedding拼接到输入上);

5、模型架构和训练细节有所微调。

点击阅读全文...

24 Aug

我们知道,梯度累积是在有限显存下实现大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$整除的示性函数。在后面的讨论中,我们将反复用到这个函数。

点击阅读全文...