25 Dec

矩阵化简二次型(无穷小近似处理抛物型)

(阅读本文最好有一定的线性代数基础,至少对线性代数里边的基本概念有所了解。)

这学期已经接近尾声了,我们的《解析几何》已经讲到化简二次曲线了。可是,对于没有线性代数的其他同学们,直接用转轴和移轴这个计算公式来变换,那计算量会让我们很崩溃的;虽然那个“不变量”方法计算上有些简单,却总让人感到很诡异,总觉得不知从何而来,而且又要记一堆公式。事实上,如果有线性代数的基础,这些东西变得相当好理解的。我追求用统一的方法求解同一种问题,即用统一的方式处理所有的二次型,当然也希望计算量简单一点。

一般的模型

一般的二次型可以写成
$$x^T A x + 2 b^T x + c=0$$

其中$x,b$都是n维列向量(各元素为$x_i$和$b_i$),A是n阶方阵(各元素为$a_{ij}$),c是常数。在这里,我们只讨论n=2和n=3的情况。化简二次型的过程,可以归结为A矩阵的简化。

点击阅读全文...

5 Feb

小数的二进制表示

也许中学老师会告诉5、10、20等等的十进制数字怎么化成二进制数字,但又没有老师告诉你怎么将十进制的0.1变成二进制的小数呢?

我们将一个十进制整数化为二进制是这样操作的:在十进制的计算法则中,将十进制数除以2,得到商和余数;把商除以2,得到商和余数;...重复下去,直到商为0。然后把每次得到的余数按倒序排列,就得到了二进制数字。比如6:

$$\begin{aligned}6\div 2=3...0 \\ 3\div 2=1...1 \\ 1\div 2=0...1\end{aligned}$$

倒过来就是110。这就是二进制中的6了。

点击阅读全文...

19 Aug

势能最小问题的探讨

本文我们来探讨下列积分的极值曲线:
$$S=\int f(x,y)\sqrt{dx^2+dy^2}=\int f(x,y)ds$$

这本质上也是一个短程线问题。但是它形式比较简答,物理含义也更加明显。比如,如果$f(x,y)$是势函数的话,那么这就是一个求势能最小的二维问题;如果$f(x,y)$是摩擦力函数,那么这就是寻找摩擦力最小的路径问题。不管是哪一种,该问题都有相当的实用价值。下面将其变分:

$$\begin{aligned} \delta S =&\int \delta[f(x,y)\sqrt{dx^2+dy^2}] \\ =&\int [ds\delta f(x,y)+f(x,y)\frac{\delta (dx^2+dy^2)}{2ds}]\\ =&\int ds(\frac{\partial f}{\partial x}\delta x+\frac{\partial}{\partial y}\delta y)+f \frac{dx d(\delta x)+dy d(\delta y)}{ds} \\=&\int ds(\frac{\partial f}{\partial x}\delta x+\frac{\partial}{\partial y}\delta y)+f \frac{dx}{ds} d(\delta x)+\frac{dy}{ds} d(\delta y) \end{aligned}$$

点击阅读全文...

21 Aug

[电子书]《最小作用量原理与物理学的发展》

最小作用量原理无疑是物理中最迷人的地方之一。国内基本上很少谈及到最小作用量原理的书籍,尤其是这方面的历史,这本书算是第一本,也是一个尝试吧。个人感觉这本书写得还是不错的,大体上讲了物理力、热、光、电各方面的作用量原理及其探索,给了我们一个大概的历史思路。尽管书本一些公式的地方还有欠清晰,但是我还是愿意推荐给读者们。本文提供电子书下载,原因很简单,这本书似乎已经停产了~在亚马逊已经买不到了。有兴趣的朋友下载打印吧。

点击阅读全文...

26 Dec

小论文《欧拉数学在数列级数的妙用》

这是我的数学分析期末小论文,是之前的文章《[欧拉数学]找出严谨的答案》的补充与完善,也是我自己的Latex写作练习。文章举了一些例子来说明通过离散数学连续化为离散命题的证明带来思路。

----------------------

通常我们都认为具体的级数是比较容易分析的,而抽象级数则比较难把握思路。抽象级数题目的种类太多,为了熟练解题通常都需要记忆很多形式,而且这些形式通常都很单一,缺乏可拓展性。而运用“欧拉数学”,可以为我们解决数项级数题提供一个独特的、实用性广的思路。

点击阅读全文...

31 May

基于最小熵原理的NLP库:nlp zero

陆陆续续写了几篇最小熵原理的博客,致力于无监督做NLP的一些基础工作。为了方便大家实验,把文章中涉及到的一些算法封装为一个库,供有需要的读者测试使用。

由于面向的是无监督NLP场景,而且基本都是NLP任务的基础工作,因此命名为nlp zero。

地址

Github: https://github.com/bojone/nlp-zero
Pypi: https://pypi.org/project/nlp-zero/

可以直接通过

pip install nlp-zero==0.1.6

进行安装。整个库纯Python实现,没有第三方调用,支持Python2.x和3.x。

点击阅读全文...

18 Apr

最小熵原理(一):无监督学习的原理

话在开头

在深度学习等端到端方案已经逐步席卷NLP的今天,你是否还愿意去思考自然语言背后的基本原理?我们常说“文本挖掘”,你真的感受到了“挖掘”的味道了吗?

无意中的邂逅

前段时间看了一篇关于无监督句法分析的文章,继而从它的参考文献中发现了论文《Redundancy Reduction as a Strategy for Unsupervised Learning》,这篇论文介绍了如何从去掉空格的英文文章中将英文单词复原。对应到中文,这不就是词库构建吗?于是饶有兴致地细读了一番,发现论文思路清晰、理论完整、结果漂亮,让人赏心悦目。

尽管现在看来,这篇论文的价值不是很大,甚至其结果可能已经被很多人学习过了,但是要注意:这是一篇1993年的论文!在PC机还没有流行的年代,就做出了如此前瞻性的研究。虽然如今深度学习流行,NLP任务越做越复杂,这确实是一大进步,但是我们对NLP原理的真正了解,还不一定超过几十年前的前辈们多少。

这篇论文是通过“去冗余”(Redundancy Reduction)来实现无监督地构建词库的,从信息论的角度来看,“去冗余”就是信息熵的最小化。无监督句法分析那篇文章也指出“信息熵最小化是无监督的NLP的唯一可行的方案”。我进而学习了一些相关资料,并且结合自己的理解思考了一番,发现这个评论确实是耐人寻味。我觉得,不仅仅是NLP,信息熵最小化很可能是所有无监督学习的根本

点击阅读全文...

8 Sep

“让Keras更酷一些!”:小众的自定义优化器

沿着之前的《“让Keras更酷一些!”:精巧的层与花式的回调》写下去~

今天我们来看一个小众需求:自定义优化器。

细想之下,不管用什么框架,自定义优化器这个需求可谓真的是小众中的小众。一般而言,对于大多数任务我们都可以无脑地直接上Adam,而调参炼丹高手一般会用SGD来调出更好的效果,换言之不管是高手新手,都很少会有自定义优化器的需求。

那这篇文章还有什么价值呢?有些场景下会有一点点作用。比如通过学习Keras中的优化器写法,你可以对梯度下降等算法有进一步的认识,你还可以顺带看到Keras的源码是多么简洁优雅。此外,有时候我们可以通过自定义优化器来实现自己的一些功能,比如给一些简单的模型(例如Word2Vec)重写优化器(直接写死梯度,而不是用自动求导),可以使得算法更快;自定义优化器还可以实现诸如“软batch”的功能。

Keras优化器

我们首先来看Keras中自带优化器的代码,位于:
https://github.com/keras-team/keras/blob/master/keras/optimizers.py

点击阅读全文...