23 Jun

貌离神合的RNN与ODE:花式RNN简介

本来笔者已经决心不玩RNN了,但是在上个星期思考时忽然意识到RNN实际上对应了ODE(常微分方程)的数值解法,这为我一直以来想做的事情——用深度学习来解决一些纯数学问题——提供了思路。事实上这是一个颇为有趣和有用的结果,遂介绍一翻。顺便地,本文也涉及到了自己动手编写RNN的内容,所以本文也可以作为编写自定义的RNN层的一个简单教程

注:本文并非前段时间的热点“神经ODE”的介绍(但有一定的联系)。

RNN基本

什么是RNN?

众所周知,RNN是“循环神经网络(Recurrent Neural Network)”,跟CNN不同,RNN可以说是一类模型的总称,而并非单个模型。简单来讲,只要是输入向量序列$(\boldsymbol{x}_1,\boldsymbol{x}_2,\dots,\boldsymbol{x}_T)$,输出另外一个向量序列$(\boldsymbol{y}_1,\boldsymbol{y}_2,\dots,\boldsymbol{y}_T)$,并且满足如下递归关系
$$\boldsymbol{y}_t=f(\boldsymbol{y}_{t-1}, \boldsymbol{x}_t, t)\tag{1}$$
的模型,都可以称为RNN。也正因为如此,原始的朴素RNN,还有改进的如GRU、LSTM、SRU等模型,我们都称为RNN,因为它们都可以作为上式的一个特例。还有一些看上去与RNN没关的内容,比如前不久介绍的CRF的分母的计算,实际上也是一个简单的RNN。

说白了,RNN其实就是递归计算

点击阅读全文...

12 Mar

历史上的谜案——刘徽有没有使用外推法?

刘徽

刘徽

话说当年我国古代数学家刘徽创立“割圆术”计算圆周率的事迹,在今天已被不少学生知晓;虽不能说家喻户晓,但是也为各教科书以及老师津津乐道。和古希腊的“数学之神”阿基米德同出一辙,刘徽也是使用圆的内接、外切正多边形来逼近圆形的;不一样的是,刘徽使用的方法是计算半径为1的圆的内接、外切正多边形的面积,而阿基米德计算的则是直径为1的圆的内接、外切正多边形的周长。两者的计算效果有什么区别呢?其实阿基米德的方法应该更快一点,阿基米德算到正n边形所得到的值,相当于刘徽算到正2n边形了。

在此我们不再对两者的计算方法进行区分,因为两者的本质都是一样的。按照现代数学的写法,“割圆术”的理论依据是
$$lim_{n\to \infty} n \sin(\frac{\pi}{n})=\pi\tag{1}$$
当然,刘徽不可能有现代计算正弦函数值的公式(现在计算正弦函数值一般用泰勒级数展开,而泰勒级数展开需要用到$\pi$的值),甚至在他那个时代就连笔墨也没有,据我所知即使是后来的祖冲之推算圆周率时,唯一的计算工具也只是现在称为“算筹”的小棍。不过刘徽还是凭借着超强的毅力,利用递推的方法逐步求圆周率。

点击阅读全文...