《自然极值》系列——7.悬链线问题
By 苏剑林 | 2010-12-26 | 73883位读者 | 引用约翰与他同时代的110位学者有通信联系,进行学术讨论的信件约有2500封,其中许多已成为珍贵的科学史文献,例如同他的哥哥雅各布以及莱布尼茨、惠更斯等人关于悬链线、最速降线(即旋轮线)和等周问题的通信讨论,虽然相互争论不断,特别是约翰和雅各布互相指责过于尖刻,使兄弟之间时常造成不快,但争论无疑会促进科学的发展,最速降线问题就导致了变分法的诞生。
有意思的是,1690年约翰·伯努利的哥哥雅可比·伯努利曾提出过悬链线问题向数学界征求答案。即:
固定项链的两端,在重力场中让它自然垂下,求项链的曲线方程.
吊桥上方的悬垂钢索,挂着水珠的蜘蛛网,电杆间的电线都是悬链线。伽利略最早注意到悬链线,猜测悬链线是抛物线。1691年莱布尼兹、惠更斯以及约翰·伯努利各自得到正确答案,所用方法是诞生不久的微积分。
费曼积分法——积分符号内取微分(2)
By 苏剑林 | 2012-06-12 | 96052位读者 | 引用上一篇文章我对“费曼积分法”做了一个简单的介绍,并通过举例来初步展示了它的操作步骤。但是,要了解一个方法,除了知道它能够干什么之外,还必须了解它的原理和方法,这样我们才能够更好地掌握它。因此,我们需要建立“积分符号内取微分”的一般理论,为进一步的应用奠基。
一般原理
我们记
$$G(a)=\int_{m(a)}^{n(a)} f(x,a)dx$$
在这里,f(x,a)是带有参数a的关于x的函数,而积分区间是关于参数a的两个函数,这样的积分也叫变限积分,可以理解为是普通定积分的推广。我们记F(x,a)为f(x,a)的原函数,也就是说$\frac{\partial F(x,a)}{\partial x}=f(x,a)$,那么按照微积分基本定理,我们就有:
$$G(a)=F(n(a),a)-F(m(a),a)$$
It is time.
By 苏剑林 | 2015-05-24 | 55122位读者 | 引用终于可以缓一缓了~~
有留意科学空间的朋友可能发现这段时间更新比较缓慢,这一切还得从今年寒假说起...
今年一月底,由于各种原因,结合自己的兴趣,我找了一份实习工作,内容是Python编程。工作是在华南理工大学的论坛上发布的,说的比较简洁,我也比较简洁地投了简历过去,想不到收到回复了,也被录用了。二月上班,进去之后,才发现原来公司还是一家国内比较知名的电商企业,我的主要工作是数据挖掘...虽然我有一点Python的经验,但是数据挖掘基本上不在行的,所以只能够边工作边学习,疯狂恶补数据挖掘的知识。在这个过程中,我学会了很多关于数据挖掘的东西,要知道,在这之前,我不知道什么叫“特征”,什么是“逻辑回归”、“SVM”...那时候真是万千无知。
漫话模型|模型与选芒果
By 苏剑林 | 2015-07-15 | 38539位读者 | 引用很多人觉得“模型”、“大数据”、“机器学习”这些字眼很高大很神秘,事实上,它跟我们生活中选水果差不了多少。本文用了几千字,来试图教会大家怎么选芒果...
模型的比喻
假如我要从一批芒果中,找出好吃的那个来。而我不能直接切开芒果尝尝,所以我只能观察芒果,能观察到的量有颜色、表面的气味、大小等等,这些就是我们能够收集到的信息(特征)。
生活中还要很多这样的例子,比如买火柴(可能年轻的城里人还没见过火柴?),如何判断一盒火柴的质量?难道要每根火柴都划划,看看着不着火?显然不行,我们最多也只能划几根,全部划了,火柴也不成火柴了。当然,我们还能看看火柴的样子,闻闻火柴的气味,这些动作是可以接受的。
【中文分词系列】 7. 深度学习分词?只需一个词典!
By 苏剑林 | 2017-03-06 | 117477位读者 | 引用这个系列慢慢写到第7篇,基本上也把分词的各种模型理清楚了,除了一些细微的调整(比如最后的分类器换成CRF)外,剩下的就看怎么玩了。基本上来说,要速度,就用基于词典的分词,要较好地解决组合歧义何和新词识别,则用复杂模型,比如之前介绍的LSTM、FCN都可以。但问题是,用深度学习训练分词器,需要标注语料,这费时费力,仅有的公开的几个标注语料,又不可能赶得上时效,比如,几乎没有哪几个公开的分词系统能够正确切分出“扫描二维码,关注微信号”来。
本文就是做了这样的一个实验,仅用一个词典,就完成了一个深度学习分词器的训练,居然效果还不错!这种方案可以称得上是半监督的,甚至是无监督的。
《Attention is All You Need》浅读(简介+代码)
By 苏剑林 | 2018-01-06 | 884174位读者 | 引用2017年中,有两篇类似同时也是笔者非常欣赏的论文,分别是FaceBook的《Convolutional Sequence to Sequence Learning》和Google的《Attention is All You Need》,它们都算是Seq2Seq上的创新,本质上来说,都是抛弃了RNN结构来做Seq2Seq任务。
这篇博文中,笔者对《Attention is All You Need》做一点简单的分析。当然,这两篇论文本身就比较火,因此网上已经有很多解读了(不过很多解读都是直接翻译论文的,鲜有自己的理解),因此这里尽可能多自己的文字,尽量不重复网上各位大佬已经说过的内容。
序列编码
深度学习做NLP的方法,基本上都是先将句子分词,然后每个词转化为对应的词向量序列。这样一来,每个句子都对应的是一个矩阵$\boldsymbol{X}=(\boldsymbol{x}_1,\boldsymbol{x}_2,\dots,\boldsymbol{x}_t)$,其中$\boldsymbol{x}_i$都代表着第$i$个词的词向量(行向量),维度为$d$维,故$\boldsymbol{X}\in \mathbb{R}^{n\times d}$。这样的话,问题就变成了编码这些序列了。
第一个基本的思路是RNN层,RNN的方案很简单,递归式进行:
\begin{equation}\boldsymbol{y}_t = f(\boldsymbol{y}_{t-1},\boldsymbol{x}_t)\end{equation}
不管是已经被广泛使用的LSTM、GRU还是最近的SRU,都并未脱离这个递归框架。RNN结构本身比较简单,也很适合序列建模,但RNN的明显缺点之一就是无法并行,因此速度较慢,这是递归的天然缺陷。另外我个人觉得RNN无法很好地学习到全局的结构信息,因为它本质是一个马尔科夫决策过程。
从动力学角度看优化算法(五):为什么学习率不宜过小?
By 苏剑林 | 2020-10-10 | 55315位读者 | 引用本文的主题是“为什么我们需要有限的学习率”,所谓“有限”,指的是不大也不小,适中即可,太大容易导致算法发散,这不难理解,但为什么太小也不好呢?一个容易理解的答案是,学习率过小需要迭代的步数过多,这是一种没有必要的浪费,因此从“节能”和“加速”的角度来看,我们不用过小的学习率。但如果不考虑算力和时间,那么过小的学习率是否可取呢?Google最近发布在Arxiv上的论文《Implicit Gradient Regularization》试图回答了这个问题,它指出有限的学习率隐式地给优化过程带来了梯度惩罚项,而这个梯度惩罚项对于提高泛化性能是有帮助的,因此哪怕不考虑算力和时间等因素,也不应该用过小的学习率。
对于梯度惩罚,本博客已有过多次讨论,在文章《对抗训练浅谈:意义、方法和思考(附Keras实现)》和《泛化性乱弹:从随机噪声、梯度惩罚到虚拟对抗训练》中,我们就分析了对抗训练一定程度上等价于对输入的梯度惩罚,而文章《我们真的需要把训练集的损失降低到零吗?》介绍的Flooding技巧则相当于对参数的梯度惩罚。总的来说,不管是对输入还是对参数的梯度惩罚,都对提高泛化能力有一定帮助。
最近评论