9 Dec

《自然极值》系列——5.最速降线的故事

如果说前面关于这个系列的内容还不能使得读者您感到痛快,那么接下来要讲述的最速降线和悬链线问题也许能够满足你的需要。不过在进入对最速降线问题的理论探讨之前,我们先来讲述一个发生在17世纪的激动人心的数学竞赛的故事。我相信,每一个热爱数学和物理的朋友,都将会为其所振奋,为其所感动。里边渗透的,不仅仅是一次学术的竞争,更是一代又一代的人对真理的追求与探路的不懈精神。

(以下内容来源于网络,科学空间整理)

意大利科学家伽利略在1630年提出一个分析学的基本问题── “一个质点在重力作用下,从一个给定点A到不在它垂直下方的另一点B,如果不计摩擦力,问沿着什么曲线滑下所需时间最短。”这算是这个著名问题的起源了(为什么别人没有想起这个问题呢?所以说大科学家的素质就是思考、创新,要有思想,人没有思想,就和行尸走肉没有什么区别)。可惜的是伽利略说这曲线是圆,但这却是一个错误的答案。

Brachistochrone

Brachistochrone

点击阅读全文...

26 Dec

《自然极值》系列——7.悬链线问题

悬链.jpg

约翰与他同时代的110位学者有通信联系,进行学术讨论的信件约有2500封,其中许多已成为珍贵的科学史文献,例如同他的哥哥雅各布以及莱布尼茨、惠更斯等人关于悬链线、最速降线(即旋轮线)和等周问题的通信讨论,虽然相互争论不断,特别是约翰雅各布互相指责过于尖刻,使兄弟之间时常造成不快,但争论无疑会促进科学的发展,最速降线问题就导致了变分法的诞生。

有意思的是,1690年约翰·伯努利的哥哥雅可比·伯努利曾提出过悬链线问题向数学界征求答案。即:

固定项链的两端,在重力场中让它自然垂下,求项链的曲线方程.

吊桥上方的悬垂钢索,挂着水珠的蜘蛛网,电杆间的电线都是悬链线。伽利略最早注意到悬链线,猜测悬链线是抛物线。1691年莱布尼兹、惠更斯以及约翰·伯努利各自得到正确答案,所用方法是诞生不久的微积分。

点击阅读全文...

26 Dec

《自然极值》系列——8.极值分析

《非线性泛函分析及其应用,第3卷,变分法及最优化》

《非线性泛函分析及其应用,第3卷,变分法及最优化》

本篇文章是《自然极值》系列最后一篇文章,估计也是2010年最后一篇文章了。在这个美好的2010年,想必大家一定收获匪浅,BoJone也在2010年成长了很多。在2010年的尾声,BoJone和科学空间都祝大家在新的一年里更加开心快乐,在科学的道路上更快速地前行。

在本文,BoJone将与大家讨论求极值的最基本原理。这一探讨思路受到了天才的费恩曼所著《费恩曼物理讲义》的启迪。我们分别对函数求极值(求导)和泛函数极值(变分)进行一些简略的分析。

一、函数求极值

对于一个函数$y=f(x)$,设想它在$x=x_0$处取到最大值,那么显然对于很小的增量$\Delta x$,有
$$f(x_0+\Delta x) \leq f(x_0)\tag{3}$$根据泰勒级数,我们有
$f(x_0+\Delta x)=f(x_0)+f'(x_0)\Delta x$————(4)

点击阅读全文...

29 Jul

基于GRU和am-softmax的句子相似度模型

搞计算机视觉的朋友会知道,am-softmax是人脸识别中的成果。所以这篇文章就是借鉴人脸识别的做法来做句子相似度模型,顺便介绍在Keras下各种margin loss的写法。

背景

细想之下会发现,句子相似度与人脸识别有很多的相似之处~

已有的做法

在我搜索到的资料中,深度学习做句子相似度模型,就只有两种做法:一是输入一对句子,然后输出一个0/1标签代表相似程度,也就是视为一个二分类问题,比如《Learning Text Similarity with Siamese Recurrent Networks》中的模型是这样的

将句子相似度视为二分类模型

将句子相似度视为二分类模型

包括今年拍拍贷的“魔镜杯”,也是这种格式。另外一种做法是输入一个三元组“(句子A,跟A相似的句子,跟A不相似的句子)”,然后用triplet loss的做法解决,比如文章《Applying Deep Learning To Answer Selection: A Study And An Open Task》中的做法。

这两种做法其实也可以看成是一种,本质上是一样的,只不过loss和训练方法有所差别。但是,这两种方法却都有一个很严重的问题:负样本采样严重不足,导致效果提升非常慢。

点击阅读全文...

26 Dec

【学习清单】最近比较重要的GAN进展论文

这篇文章简单列举一下我认为最近这段时间中比较重要的GAN进展论文,这基本也是我在学习GAN的过程中主要去研究的论文清单。

生成模型之味

GAN是一个大坑,尤其像我这样的业余玩家,一头扎进去很久也很难有什么产出,尤其是各个大公司拼算力搞出来一个个大模型,个人几乎都没法玩了。但我总觉得,真的去碰了生成模型,才觉得自己碰到了真正的机器学习。这一点,不管在图像中还是文本中都是如此。所以,我还是愿意去关注生成模型。

当然,GAN不是生成模型的唯一选择,却是一个非常有趣的选择。在图像中至少有GAN、flow、pixelrnn/pixelcnn这几种选择,但要说潜力,我还是觉得GAN才是最具前景的,不单是因为效果,主要是因为它那对抗的思想。而在文本中,事实上seq2seq机制就是一个概率生成模型了,而pixelrnn这类模型,实际上就是模仿着seq2seq来做的,当然也有用GAN做文本生成的研究(不过基本上都涉及到了强化学习)。也就是说,其实在NLP中,生成模型也有很多成果,哪怕你主要是研究NLP的,也终将碰到生成模型。

好了,话不多说,还是赶紧把清单列一列,供大家参考,也作为自己的备忘。

点击阅读全文...

15 Feb

在这个系列中,我们尝试从能量的视角理解GAN。我们会发现这个视角如此美妙和直观,甚至让人拍案叫绝。

上一篇文章里,我们给出了一个直白而用力的能量图景,这个图景可以让我们轻松理解GAN的很多内容,换句话说,通俗的解释已经能让我们完成大部分的理解了,并且把最终的结论都已经写了出来。在这篇文章中,我们继续从能量的视角理解GAN,这一次,我们争取把前面简单直白的描述,用相对严密的数学语言推导一遍

跟第一篇文章一样,对于笔者来说,这个推导过程依然直接受启发于Benjio团队的新作《Maximum Entropy Generators for Energy-Based Models》

原作者的开源实现:https://github.com/ritheshkumar95/energy_based_generative_models

本文的大致内容如下:

1、推导了能量分布下的正负相对抗的更新公式;

2、比较了理论分析与实验采样的区别,而将两者结合便得到了GAN框架;

3、导出了生成器的补充loss,理论上可以防止mode collapse;

4、简单提及了基于能量函数的MCMC采样。

点击阅读全文...

18 Jun

当Bert遇上Keras:这可能是Bert最简单的打开姿势

Bert是什么,估计也不用笔者来诸多介绍了。虽然笔者不是很喜欢Bert,但不得不说,Bert确实在NLP界引起了一阵轩然大波。现在不管是中文还是英文,关于Bert的科普和解读已经满天飞了,隐隐已经超过了当年Word2Vec刚出来的势头了。有意思的是,Bert是Google搞出来的,当年的word2vec也是Google搞出来的,不管你用哪个,都是在跟着Google大佬的屁股跑啊~

Bert刚出来不久,就有读者建议我写个解读,但我终究还是没有写。一来,Bert的解读已经不少了,二来其实Bert也就是基于Attention的搞出来的大规模语料预训练的模型,本身在技术上不算什么创新,而关于Google的Attention我已经写过解读了,所以就提不起劲来写了。

Bert的预训练和微调(图片来自Bert的原论文)

Bert的预训练和微调(图片来自Bert的原论文)

总的来说,我个人对Bert一直也没啥兴趣,直到上个月末在做信息抽取比赛时,才首次尝试了Bert。因为后来想到,即使不感兴趣,终究也是得学会它,毕竟用不用是一回事,会不会又是另一回事。再加上在Keras中使用(fine tune)Bert,似乎还没有什么文章介绍,所以就分享一下自己的使用经验。

点击阅读全文...

6 Nov

这个星期对微分方程的认识

这个星期研究了两道微分方程问题:“导弹跟踪”以及“太阳炉”问题。从中我加深了对微分方程的理解,也熟悉了微分方程的相关运算。仅此记录,权当抛砖引玉。

一、微分方程的本质

很多读者都知道,自从牛顿和莱布尼兹发明微积分之后,微积分就迅速地渗透到了几乎所有的学科,后来发展出许多出色的分支,如变分、微分方程等。众所周知,微分方程是解决很多重要问题的工具。不知道各位读者对微分及微分方程的认识如何?其实对于常微分方程而言,它的本质和我们已经学习过的代数方程一样,只不过相互之间的对应运算关系除了常规的加减乘除幂等之外,还多了两个相互关系:微分和积分。例如对于一阶微分方程$\dot{y}=f(x,y)$,也许大家都认为它是一个二元方程,其实不然,这是一个“四个未知数、三道方程”所组成的方程组,我们可以将它写成

$$dy=f(x,y)dx,y=\int dy,x=\int dx$$

点击阅读全文...