音乐总是可以让我感动

现在互联网上的新闻,总是屁股决定脑袋。如果你看海外反华自媒体报道里的中国和国内报道里的中国,你会怀疑他们报道的是这是两个完全不同的世界。 我自己这两种报道看多了,常常会有精神分裂的感觉。

身居海外,反华报道是媒体的主流。不过我还是偶尔会去看看《新闻联播》,体验一下正能量的感觉,也顺便锻炼一下自己的批判思考的能力。几天前我偶尔坚持到了《新闻联播》结束,结果节目的结尾伴随着优美的音乐《我爱你中国》开始播出中国的风光纪录片,突然思乡之情油然而起:自己离开母国已经太长时间了。回头我找出来曲谱,在家里的钢琴上开始弹奏,当乐曲到达高潮的时候,自己竟然禁不住泪流满面:这音乐真是让人太感动了。

海外华人说到底还是不在自己的国家,生活难免战战兢兢。东方的集体主义和西方的个人主义,其实总是会有一个平衡平衡点,而不是像现在这样截然对立。双方总是应该互相交流,而不是彼此敌视。当下两方统治阶级为了自己的私利,刻意在人民之间制造仇恨(比如川普之流美国政客以及中宣部),造成了多少人间悲剧?真心希望我们的后代,能够拥有一个更好的明天。

衡量分类器效果的一些指标 (4) – Dual Encoder 中的 Precision 和 Recall

Dual Encoder 是一个非常常用的网络模型。它用于将两个不同领域的数据比如query 和 document, 或者 Image 和 entity 映射到同一个 embedding 空间。这样训练出来的模型既可以用来做两个领域数据之间的相互查询,也可以用来对一对来自两个领域的数据进行打分。

通常在训练Dual Encoder模型的时候,我们使用一种叫做batch softmax的办法。假定我们的训练数据是 Image-Entity Pair,而且全部是正例,我们从训练数据文件中读取一批(假定100个)这样的训练数据,然后把它们排成一个矩阵,每个Image一行,每个Entity一列,这样我们一共形成一个100行100列的矩阵,其中第一个 Image-Entity pair的 Image 放在第一行,entity放在第一列,而第二个 Image-Entity pair的 Image 放在第二行,entity放在第二列,以此类推。在这样的矩阵中,我们一共有100*100 = 10000 个 Image-Entity Pairs,其中对角线上的那些 Pair是正例,而我们将所有不在对角线上的 Pairs就直接当做反例来训练。

衡量 Dual Encoder模型也可以使用precsion和recall这两个指标。其中 Precison一般使用 Precision@1,它的意思是说在使用模型对一个矩阵中的10000 Image-Entity Pairs 打分以后,从每一行中挑出得分最高的那个entity,这样每行一个,我们就一共收集100个entity。这些entity中处于对角线上的元素(也就是训练数据中的正例)的个数除以收集的entity总数(100),就是模型的 Precision@1。 我们也可以定义Precision@k (k大于1),也就是每行收集k个元素,然后还是用收集的元素中的对角线元素的个数除以收集的总数(100*k)。但是因为Dual Encoder 模型中假定一个 Image 只有一个 Entity 是正确的,因此 这个时候的 Precision@k 数字会比 Precision@1小很多,而且其实际意义也不明确。

相应的,Recall一般使用 Recall@k (k大于1),它的意思是说在使用模型对一个矩阵中的10000 Image-Entity Pairs 打分以后,从每一行中挑出k个得分最高的entity,我们就一共收集100*k个entity。这些entity中处于对角线上的元素(也就是训练数据中的正例)的个数除以总共对角线的entity个数(总是100),就是模型的 Recall@k。 这里我们注意到 Recall@1 和 Precision@1 的结果将会是完全一致的。

 

乒乓球起下旋不能只靠摩擦力

乒乓球起下旋,俗称为上手,是相持过程中最重要的一项基本功。虽说在大球时代,先上手的威力有所减弱,职业运动员反拉对方质量一般的上旋球比比皆是,但是通过起下旋将下旋球对抗转为上旋球对抗依然是发动进攻和掌握主动的必由之路。

首先解释一下什么是起下旋:所谓起下旋,也就是在保持拍面前倾的情况下,将一个低于球网的下旋来球回击过网。拍型如果不前倾的话,那就不叫起下旋,而应该叫托或者搓了。托或者搓不是我们本文要讨论的内容。

要将一个低于球网的乒乓球回击过网,从物理学上分析,至少要有一个向上又通过球心的力。大家都知道,当我们摩擦乒乓球的时候,摩擦力的方向与乒乓球正切,这个正切方向的力没有通过球心,只能为乒乓球制造旋转,而不能使球产生位移。另外,在拍型前倾的情况下,球拍在垂直方向对于乒乓球也有一个作用力,但是这个作用力指向下方,只会将乒乓球打下网。那么拍型前倾起下旋的物理原理是什么呢?

事实上,我们的确可以在拍面保持前倾的情况下,把一个低于网顶的下旋来球回击过网。这里的原因是:当乒乓球大力飞向胶皮的时候,胶皮就凹了下去,形成了一个坑。这个时候沿着拍面的方向发力的话,坑底的力依然是正切于乒乓球,制造旋转,但是坑边儿上的力,不是正切的。实际上坑边上的力经过分解以后,就有一个通过球心,而且是向上的力的分量。正是这个力将乒乓球向上推举过网。坑越深的话,坑边儿上的横向作用力就越大,相应的向上的力的分量就越大。这也就是为什么海绵越厚越软,起下旋球就越容易,而越硬越薄,下旋球球就困难:因为硬而且薄的海绵不容易制造深坑。

拉下旋球,高手们一直很强调迎前。除了因为下旋球不太向前走之外,也是为了加强制造深坑。菜鸟们之所以起下旋球困难,就是因为不太了解上面的这个原理:用尽所有的力量向上摩擦,却没有留下力量去制造这个坑,最后的结果就是摩擦的太薄,给球的力主要都是切向的力,而向上的力分量不足,所以下旋球就很难拉起来,常见的失败是球的旋转很强,但是向前向上飞行很慢,最后软绵绵的下网。

大家可能注意到,除了通过球心的向上分量以外,坑底和坑边的力还给球一个切向的分量。这个力的分量的主要作用是对球进行摩擦,使其旋转,从而制造弧线。如果没有这个分量的话,球只会直线飞行而没有旋转。有了这个摩擦以后,球才能有一个向上的旋转,进而产生一个典型的上旋球:球过网以后因为伯努利原理飞行弧线下扎,因而更容易上台,而不是飞出球台。

综上所述,拉起下旋球,需要又打又磨。所谓打,就是制造这个坑,然后让坑边的力量对球产生一个向上的分量,将球托起过网。所谓磨,就是对球产生一个切向的摩擦分量,这样使球旋转变成变成上旋球,制造弧线,便于更容易上台。所谓灌胶或者内能海绵,就是加强坑边儿的强度。加强坑向上托举的力量。拉球的时候就可以省力一些。但是无论如何,没有这个坑,下旋球是不可能拉过网的。

综上所述,如果你拉下旋球总是下网,试着换一个更软的海绵,另外打球的时候更注意迎前,应该就会有改进啦。笔者前一阵子尝鲜,换了 Tibhar MX-S 胶皮,这个胶皮是挺拔系列中最硬的一款,结果就是上旋球打得风生水起,正手拉下旋却频频下网,拉的我怀疑人生。自己钻研了一阵子,换到较软的 T05-FX,问题就立刻解决了,也顺便把自己的心得体会拿出来和朋友们分享啦。

把葡萄树挖掉了

我们家后院有个木棚架。几年以前,我突然冒出一个想法:如果这个棚子上爬满了葡萄藤,我们就既有一片宝贵的阴凉,又有鲜美的葡萄可以吃吗?在这个美好的愿景下,我说干就干,就在旁边儿挖了一个坑,种了一棵葡萄树。几年下来, 部分是因为品种,部分是因为照顾不善,葡萄树总是长得长得不温不火,总是刚刚爬到棚顶就再也不长了, 实际上一点阴凉都没有,而且期间还死掉过一次,被迫换了一个新苗。这样折腾了四五年,也没有什么进展。原来的目的没有达到不说,架子搭的歪歪扭扭,占掉很多宝贵的空间。想要挖掉吧,又觉得有些可惜,毕竟已经花了这么多功夫,每年还能结一点点葡萄,最少也算后院一道风景。就这样犹豫了很久,没有动作。这个周末休假, 早上起来在后院散步, 不知怎么看到葡萄树,念头又重新冒出来。这次说干就干,拿来梯子,解开葡萄架,再拿来锄头一阵猛挖,最后拿剪刀把葡萄枝剪成一段一段,全部堆到马路上等待环卫工人打扫,短短30分钟就全部清理干净了。在马路旁边只是很小一堆,等周一清洁的人来一收拾就什么痕迹都没有了。

想想这是一个很小的事情。一项计划,既然没有达到自己的目的,那就应该果断的予以舍弃,自己实在不应该被这个东西困扰了这么久。生活之中,有得有失, 得失分明。不拖泥带水,藕断丝连,这才是人生大智慧。今天这件事情算是做对了。

从方博,周雨,闫安退出国家队说起

最近得到消息, 中国国家乒乓球队的92代球员方博,周雨,闫安全部退出国家队了。我的印象中方博还是很能打的, 最少2015年世锦赛打败了张继科, 而且他们这一代应该是接马龙,张继科和许昕, 怎么打着打着就都没有了呢?上网看了看新闻的详情, 才知道国家队断代培养, 他们几个都没有发展前途了。其中有一个人提到的原因,让我深表同意: 这个人说, 92代的技术属于探索阶段, 从樊振东开始大家才真正确立了反手为主的技术体系, 樊振东, 林高远,梁靖坤,这波球员从小就从反手练起。92代的球员, 想要靠拢这个技术体系,  那就得推翻以前学的东西,重新苦练。练,大家都愿意, 但是年纪大了, 身体能不能扛得下来是一个巨大的问号: 练的不够, 技术不够熟练, 赢不了球; 练的太多, 身体到处是伤病, 还是赢不了球。运动员过了那个吃身体饭的黄金点以后, 练还是不练都是进退失据, 就算是废了。

想来我自己前一阵子苦练乒乓, 才一周时间, 就得了网球肘。现在很喜欢钢琴, 但是因为腰的缘故, 没有办法坐下来使用踏板。心有余而力不足, 只能仰天长叹啊。

狗的笨男主人和聪明女主人

自己最近领养了一只小狗,做了两件蠢事。多亏聪明的妈妈指点,才找到正确的办法。

狗狗的味道很厉害。妈妈要我整天清洁。尤其是狗狗拉屎以后,要擦屁股。我的狗狗是只母狗。我看她屁股上有两个洞,搞不清楚哪个是拉屎的洞,哪个是尿尿的洞。回头报告妈妈。妈妈想了想说,靠近尾巴的那个就是拉屎的洞。顿时醍醐灌顶。

狗狗回来的时候,带了个项圈儿。我想要给她换成一个新的,可是旧的不知道怎么卸下来。我左研究右研究,不得其不得其门而入:虽然项圈可以大小调节,但是没有可以整个打断链条的机关呀。回头报告妈妈。妈妈想了想说,你把项圈调大,就可以从头上退下来。顿时醍醐灌顶。

Buffon’s Needle

假定在地板上有一组平行线,它们之间的距离为d。假定一根长度为 l  (l < d) 的针,随机扔到地板上,那么这根针和某一个平行线相交的概率是多少?这就是著名的Buffon’s Needle 问题。这个问题出现在量子力学简介这本书第一章的习题中。我研究这个问题,已经有一段时间了。直到最近,看了这个YouTube视频,才找到了一个简单的办法来解决。

如图所示,IJ表示needle,其中心点K到平行线的距离为 x (a.k.a. 线段KM),needle和平行线的夹角是 \alpha。那么明显的x的取值范围是:

    \[0 \le x \le \dfrac{d}{2}\]

\alpha 的取值范围是:

    \[0 \le \alpha \le \dfrac{\pi}{2}\]

我们假定x\alpha 都是自由随机变量,并且相互独立,那我们就有如下三个概率分布函数:

    \[p(x) = \dfrac{2}{d}\]

    \[p(\alpha) = \dfrac{2}{\pi}\]

    \[p(x, \alpha) = p(x) p (\alpha) = \dfrac{4}{d \pi}\]

我们注意到所谓Needle和平行线相交, 也就是下面的等式成立:

    \[x  = KM < KL = \dfrac{l}{2} \cdot \sin \alpha\]

那么这件事情发生的概率就是

    \[P(x < \dfrac{l}{2} \cdot \sin \alpha)\]

我们注意到在上面的条件概率中, \alpha 是自由变量, x 受到限制, 所以我们可以使用下面的在概率密度函数上二重积分来计算这个事件发生的概率:

    \[\int_0^{\dfrac{\pi}{2}} \int_0^{ \dfrac{l}{2} \cdot \sin \alpha} \dfrac{4}{d \pi} dx d \alpha = \int_0^{\dfrac{\pi}{2}} \dfrac{4}{d \pi} \cdot \dfrac{l}{2} \cdot \sin \alpha d \alpha = \dfrac{2l}{\pi d}\]

如果 l = d 那么上面的公式就简化为:

    \[P = \dfrac{2}{\pi}\]

Youtube 上还有好几个视频, 真的是用这个办法来估计 \pi 的值, 相当有趣。

抱着苏格拉底的心情

明天要去做结肠镜检查了,检查前的准备事项洋洋洒洒有六七页,最重要的就是前一天不能吃东西,还要喝药清理肠子。我就这样饿了一整天,终于到了喝药的时间了,拿过药来,兑上凉水,抱着苏格拉底喝下毒药的心情,慢慢把它全部喝下,真是难喝啊。

苏格拉底为了自己的信仰拒绝逃命,而选择喝下毒药,真是奇人。真是令我辈只能高山仰止。