关于自然景观和人文景观

今天读到王小波的文章《自然景观和人文景观》,他写出了我对国内的乡村一直很想说的话,我认为他的这篇文章到现在都还没有过时,从我自己的村子到北京这座城市,现在还是如此。 王小波:自然景观和人文景观 我到过欧美的很多城市,美国的城市乏善可陈,欧洲的城市则很耐看。比方说,走到罗马城的街头,古罗马时期的竞技场和中世纪的城堡都在视野之内。这就使你感到置身于几十个世纪的历史之中。走在巴黎的市巾心,周围是漂亮的石头楼房,你可以在铁栅栏上看到几个世纪之前手工打出的精美花饰。英格兰的小城镇保留着过去的古朴风貌,在厚厚的草顶下面,悬挂出木制的啤酒馆招牌。我记忆中最漂亮的城市是德国的海德堡,有一座优美的石桥夹在内卡河上,河对岸的山上是海德堡选帝侯的旧官堡。可以与之相比的有英国的剑桥,大学设在五六百年前的石头楼房里,包围在常春藤的绿荫里——这种校舍不是任何现代建筑可比。比利时的小城市和荷兰的城市,都有无与伦比的优美之处,这种优美之处就是历史。相比之下,美国的城市很是庸俗,塞满了乱糟糟的现代建筑。他们自己都不爱看,到了夏天就跑到欧洲去度假——历史这种东西,可不是想有就能有的呀。 有位意大利的朋友告诉我说,除了脏点、乱—点,北京城很像一座美国的城市。我想了一下,觉得这是实情——北京城里到处是现代建筑,缺少历史感。在我小的时候就不是这样的,那时的北京的确有点与众不同的风格。举个例子来说,我小时候作在北京的郑工府里,那是一座优美的古典庭院,眼看着它就变得面门全非、塞满了四四方方的楼房,丑得要死。郑王府的遭遇就是整个北京城的缩影。顺便说一句,英国的牛津城里,所有的旧房子,屋主有翻修内部之权,但外观一毫不准动,所以那座城市保持着优美的旧貌。所有的人文景观属于我们只有一次。假如你把它扒掉,再重建起来就不是那么回事了。 这位意大利朋友还告诉我说,他去过山海关边的老龙头,看到那些新建的灰砖城楼,觉得很难看。我小时候见过北京城的城楼,还在城楼边玩耍过,所以我不得不同意他的意见。真古迹使人留恋之处,在于它历经沧桑直至如今,在它身边生活,你才会觉得历史至今还活着。要是可以随意翻盖,那就会把历史当作可以随意捏造的东西,一个人尽可夫的娼妇;这两种感觉真是大不相同。这位意大利朋友还说,意大利的古迹可以使他感到自己不是属于一代人,而是属于一族人,从亘古到如今。他觉得这样活着比较好,他的这些想法当然是有道理的,不过,现在我们谈这些已经有点晚了。 谈过了城市和人文景观。也该谈谈乡村和自然景观——谈这些还不晚。房龙曾说,世界上最美丽的乡村就在奥地利的萨尔兹堡附近。那地方我也去过,满山枞木林,农舍就在林中。铺了碎石的小径一尘不染……还有荷兰的牧场,弥漫精心修整的人工美。牧场中央仓放干草的小亭子,油漆得整整齐齐,像是园林工人干的活;因为要把亭子造成那个样于,不但要手艺巧,还要懂什么是好看。让别人看到自己住的地方是—种美丽的自然景观,这也是一种作人的态度。谈论这些域外的风景不是本文土旨,主旨当然还是讨论中国。我前半辈子走南闯北,去过国内不少地方,就我所见,贫困的小山村,只要不是穷到过不下去,多少还有点样。到了靠近城市的地方,人也算有了点钱,才开始难看。家家户户房子宽敞了,院墙也高了,但是样子恶俗,而且门前渐渐和猪窝狗圈相类似。到了城市的近郊,到处是乱倒的垃圾。进到城里以后,街上是干净了,那是因为有清洁工在扫。只要你往楼道里看一看,阳台上看一眼,就会发现,这里住的人比近郊区的人还要邋遢得多。总的来说,我以为现在到处都是既不珍惜人文景观、也不保护自然景观的邋遢娘们邋遢汉。这种人要吃,要喝,要自己住得舒服,别的一概不管。 我的这位意大利朋友是个汉学家。他说,中国入只重写成文字的历史,不重保存环境中的历史。这话从—个意大利人嘴里说出来,叫人无法辩驳。人家对待环境的态度比我们强得多。我以为,每个人都有—部分活在自己所在的环境中,这一部分是不会死的,它会保存在那里,让后世的人看到。住海德堡,在剑桥,在萨尔兹堡,你看到的不仅是现世的人,还有他们的先人,因为世世代代的维护,那地方才会像现在这样漂亮。和青年朋友谈这些,大概还有点用。

June 9, 2021

.NET 6 Preview 4中.NET Core的更新内容

原文:bit.ly/3wFqDy9 作者:Daniel 译者:王亮 .NET 6 预览版 4 现已发布,其中包括对 ASP.NET Core 的许多新改进。 下面是此次预览版中 ASP.NET Core 的更新内容: 1 开始使用 要开始使用 .NET 6 Preview 4 中的 ASP.NET Core,请安装 .NET 6 SDK[1]。 如果你在 Windows 上使用 Visual Studio,我们建议安装 Visual Studio 2019 16.11 的最新预览版。如果你在 macOS 上,我们建议安装 Visual Studio 2019 for Mac 8.10 的最新预览版。 2 升级一个现有的项目 要将一个现有的 ASP.NET Core 应用程序从 .NET 6 Preview 3 升级到.NET 6 Preview 4。 将所有 Microsoft.AspNetCore. 引用包更新为 6.0.0-preview.4.。 更新所有 Microsoft.Extensions. 引用包更新为 6.0.0-preview.4.。 请参阅 .NET 6 中 ASP.NET Core 的完整中断变化列表[2]。 ...

June 8, 2021

重读王小波

这几日开始重读王小波的作品,打算从《沉默的大多数》到《黄金时代》、《白银时代》、《青铜时代》和《革命时期的爱情》,然后把王小波全集剩下的文章都读一遍。前面这四本书是我在大学的时候读过的图书,那时候大一宿舍有一位江苏的舍友,他姐姐是南京师范大学的中文系学生,极力推荐他读王小波,我受他的影响读完了这几本书。那时候读王小波,觉得很奇特,但我觉得自己并没有完全读懂他。虽然如此,我相信王小波对我的影响很大,这种影响是不知不觉中的影响,那时候中文互联网还很自由,我们都还可以使用谷歌的手气不错,那时候真的是中国互联网的黄金时代。 这次我放弃那种囫囵吞枣、一目十行的阅读方法,而是细致阅读,特别是阅读《沉默的大多数》的时候。这两天读到《中国知识分子与中古遗风》里面关于知识分子最害怕的事情,王小波真是太睿智了,这段话至今依然令人惊叹: “我也有一个问题,是这样的:什么是知识分子最害怕的事?而且我也有答案,自以为经得起全球知识分子的质疑,那就是:知识分子最怕活在不理智的年代。所谓不理智的年代,就是伽利略低头认罪,承认地球不转的年代,也是拉瓦锡上断头台的年代;是茨威格服毒自杀的年代,也是老舍跳进太平湖的年代。 “我认为,知识分子的长处只是会以理服人,假如不讲理,他就没有长处,只有短处,活着没意思,不如死掉。丹麦王子哈姆雷特说:活着呢,还是死去,这是问题。但知识分子赶上这么个年代,死活不是问题。最大的问题是:这个倒霉的年头儿何时过去。假如能赶上这年头过去,就活着;赶不上了就犯不着再拖下去。 “老舍先生自杀的年代,我已经懂事了,认识不少知识分子。虽然我当时是个孩子,但嘴很严,所以也是他们谈话的对象。就我所知,他们最关心的正是赶得上赶不上的问题。在那年头死掉的知识分子,只要不是被杀,准是觉得赶不上好年头了。而活下来的准觉得自己还能赶上——当然,被改造好了、不再是知识分子的人不在此列。因此我对自己的答案颇有信心,敢拿这事和天下人打赌,知识分子最大的不幸,就是这种不理智。”

June 7, 2021

隐形马尔可夫模型(HMM)

什么是熵(Entropy) 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度。熵越大,系统越无序,意味着系统结构和运动的不确定和无规则;反之,,熵越小,系统越有序,意味着具有确定和有规则的运动状态。熵的中文意思是热量被温度除的商。负熵是物质系统有序化,组织化,复杂化状态的一种度量。 熵最早来原于物理学. 德国物理学家鲁道夫·克劳修斯首次提出熵的概念,用来表示任何一种能量在空间中分布的均匀程度,能量分布得越均匀,熵就越大。 一滴墨水滴在清水中,部成了一杯淡蓝色溶液热水晾在空气中,热量会传到空气中,最后使得温度一致更多的一些生活中的例子: 熵力的一个例子是耳机线,我们将耳机线整理好放进口袋,下次再拿出来已经乱了。让耳机线乱掉的看不见的“力”就是熵力,耳机线喜欢变成更混乱。熵力另一个具体的例子是弹性力。一根弹簧的力,就是熵力。 胡克定律其实也是一种熵力的表现。万有引力也是熵力的一种(热烈讨论的话题)。浑水澄清 于是从微观看,熵就表现了这个系统所处状态的不确定性程度。香农,描述一个信息系统的时候就借用了熵的概念,这里熵表示的是这个信息系统的平均信息量(平均不确定程度)。 最大熵模型 我们在投资时常常讲不要把所有的鸡蛋放在一个篮子里,这样可以降低风险。在信息处理中,这个原理同样适用。在数学上,这个原理称为最大熵原理(the maximum entropy principle)。 让我们看一个拼音转汉字的简单的例子。假如输入的拼音是"wang-xiao-bo",利用语言模型,根据有限的上下文(比如前两个词),我们能给出两个最常见的名字“王小波”和“王晓波 ”。至于要唯一确定是哪个名字就难了,即使利用较长的上下文也做不到。当然,我们知道如果通篇文章是介绍文学的,作家王小波的可能性就较大;而在讨论两岸关系时,台湾学者王晓波的可能性会较大。在上面的例子中,我们只需要综合两类不同的信息,即主题信息和上下文信息。虽然有不少凑合的办法,比如:分成成千上万种的不同的主题单独处理,或者对每种信息的作用加权平均等等,但都不能准确而圆满地解决问题,这样好比以前我们谈到的行星运动模型中的小圆套大圆打补丁的方法。在很多应用中,我们需要综合几十甚至上百种不同的信息,这种小圆套大圆的方法显然行不通。 数学上最漂亮的办法是最大熵(maximum entropy)模型,它相当于行星运动的椭圆模型。“最大熵”这个名词听起来很深奥,但是它的原理很简单,我们每天都在用。说白了,就是要保留全部的不确定性,将风险降到最小。 回到我们刚才谈到的拼音转汉字的例子,我们已知两种信息,第一,根据语言模型,wangxiao-bo可以被转换成王晓波和王小波;第二,根据主题,王小波是作家,《黄金时代》的作者等等,而王晓波是台湾研究两岸关系的学者。因此,我们就可以建立一个最大熵模型,同时满足这两种信息。现在的问题是,这样一个模型是否存在。匈牙利著名数学家、信息论最高奖香农奖得主希萨(Csiszar)证明,对任何一组不自相矛盾的信息,这个最大熵模型不仅存在,而且是唯一的。而且它们都有同一个非常简单的形式 – 指数函数。下面公式是根据上下文(前两个词)和主题预测下一个词的最大熵模型,其中 w3 是要预测的词(王晓波或者王小波)w1 和 w2 是它的前两个字(比如说它们分别是“出版”,和“”),也就是其上下文的一个大致估计,subject 表示主题。 我们看到,在上面的公式中,有几个参数lambda和Z,他们需要通过观测数据训练出来。最大熵模型在形式上是最漂亮的统计模型,而在实现上是最复杂的模型之一。 我们上次谈到用最大熵模型可以将各种信息综合在一起。我们留下一个问题没有回答,就是如何构造最大熵模型。我们已经所有的最大熵模型都是指数函数的形式,现在只需要确定指数函数的参数就可以了,这个过程称为模型的训练。 最原始的最大熵模型的训练方法是一种称为通用迭代算法 GIS(generalized iterative scaling) 的迭代 算法。GIS 的原理并不复杂,大致可以概括为以下几个步骤: 假定第零次迭代的初始模型为等概率的均匀分布。 用第 N 次迭代的模型来估算每种信息特征在训练数据中的分布,如果超过了实际的,就把相应的模型参数变小;否则,将它们便大。 重复步骤 2 直到收敛。 GIS 最早是由 Darroch 和 Ratcliff 在七十年代提出的。但是,这两人没有能对这种算法的物理含义进行很好地解释。后来是由数学家希萨(Csiszar)解释清楚的,因此,人们在谈到这个算法时,总是同时引用 Darroch 和Ratcliff 以及希萨的两篇论文。GIS 算法每次迭代的时间都很长,需要迭代很多次才能收敛,而且不太稳定,即使在 64 位计算机上都会出现溢出。因此,在实际应用中很少有人真正使用 GIS。大家只是通过它来了解最大熵模型的算法。 八十年代,很有天才的孪生兄弟的达拉皮垂(Della Pietra)在 IBM 对 GIS 算法进行了两方面的改进,提出了改进迭代算法 IIS(improved iterative scaling)。这使得最大熵模型的训练时间缩短了一到两个数量级。这样最大熵模型才有可能变得实用。即使如此,在当时也只有 IBM 有条件是用最大熵模型。 由于最大熵模型在数学上十分完美,对科学家们有很大的诱惑力,因此不少研究者试图把自己的问题用一个类似最大熵的近似模型去套。谁知这一近似,最大熵模型就变得不完美了,结果可想而知,比打补丁的凑合的方法也好不了多少。于是,不少热心人又放弃了这种方法。第一个在实际信息处理应用中验证了最大熵模型的优势的,是宾夕法尼亚大学马库斯的另一个高徒原 IBM 现微软的研究员拉纳帕提(Adwait Ratnaparkhi)。拉纳帕提的聪明之处在于他没有对最大熵模型进行近似,而是找到了几个最适合用最大熵模型、而计算量相对不太大的自然语言处理问题,比如词性标注和句法分析。拉纳帕提成功地将上下文信息、词性(名词、动词和形容词等)、句子成分(主谓宾)通过最大熵模型结合起来,做出了当时世界上最好的词性标识系统和句法分析器。拉纳帕提的论文发表后让人们耳目一新。拉纳帕提的词性标注系统,至今仍然是使用单一方法最好的系统。科学家们从拉纳帕提的成就中,又看到了用最大熵模型解决复杂的文字信息处理的希望。 ...

June 7, 2021

[转]龙应台的《目送》

华安上小学第一天,我和他手牵着手,穿过好几条街,到维多利亚小学。九月初,家家户户院子里的苹果和梨树都缀满了拳头大小的果子,枝丫因为负重而沉沉下垂,越出了树篱,钩到过路行人的头发。 很多很多的孩子,在操场上等候上课的第一声铃响。小小的手,圈在爸爸的、妈妈的手心里,怯怯的眼神,打量着周遭。他们是幼儿园的毕业生,但是他们还不知道一个定律:一件事情的毕业,永远是另一件事情的开启。 铃声一响,顿时人影错杂,奔往不同方向,但是在那么多穿梭纷乱的人群里,我无比清楚地看着自己孩子的背影──就好像在一百个婴儿同时哭声大作时,你仍旧能够准确听出自己那一个的位置。华安背着一个五颜六色的书包往前走,但是他不断地回头;好像穿越一条无边无际的时空长河,他的视线和我凝望的眼光隔空交会。 我看着他瘦小的背影消失在门里。 十六岁,他到美国做交换生一年。我送他到机场。告别时,照例拥抱,我的头只能贴到他的胸口,好像抱住了长颈鹿的脚。他很明显地在勉强忍受母亲的深情。 他在长长的行列里,等候护照检验;我就站在外面,用眼睛跟着他的背影一寸一寸往前挪。终于轮到他,在海关窗口停留片刻,然后拿回护照,闪入一扇门,倏忽不见。 我一直在等候,等候他消失前的回头一瞥。但是他没有,一次都没有。 现在他二十一岁,上的大学,正好是我教课的大学。但即使是同路,他也不愿搭我的车。即使同车,他戴上耳机──只有一个人能听的音乐,是一扇紧闭的门。有时他在对街等候公交车,我从高楼的窗口往下看:一个高高瘦瘦的青年,眼睛望向灰色的海;我只能想象,他的内在世界和我的一样波涛深邃,但是,我进不去。一会儿公交车来了,挡住了他的身影。车子开走,一条空荡荡的街,只立着一只邮筒。 我慢慢地、慢慢地了解到,所谓父女母子一场,只不过意味着,你和他的缘分就是今生今世不断地在目送他的背影渐行渐远。你站立在小路的这一端,看着他逐渐消失在小路转弯的地方,而且,他用背影默默告诉你:不必追。 我慢慢地、慢慢地意识到,我的落寞,仿佛和另一个背影有关。 博士学位读完之后,我回台湾教书。到大学报到第一天,父亲用他那辆运送饲料的廉价小货车长途送我。到了我才发觉,他没开到大学正门口,而是停在侧门的窄巷边。卸下行李之后,他爬回车内,准备回去,明明启动了引擎,却又摇下车窗,头伸出来说:“女儿,爸爸觉得很对不起你,这种车子实在不是送大学教授的车子。” 我看着他的小货车小心地倒车,然后“噗噗”驶出巷口,留下一团黑烟。直到车子转弯看不见了,我还站在那里,一口皮箱旁。 每个礼拜到医院去看他,是十几年后的时光了。推着他的轮椅散步,他的头低垂到胸口。有一次,发现排泄物淋满了他的裤腿,我蹲下来用自己的手帕帮他擦拭,裙子也沾上了粪便,但是我必须就这样赶回台北上班。护士接过他的轮椅,我拎起皮包,看着轮椅的背影,在自动玻璃门前稍停,然后没入门后。 我总是在暮色沉沉中奔向机场。 火葬场的炉门前,棺木是一只巨大而沉重的抽屉,缓缓往前滑行。没有想到可以站得那么近,距离炉门也不过五米。雨丝被风吹斜,飘进长廊内。我掠开雨湿了前额的头发,深深、深深地凝望,希望记得这最后一次的目送。 我慢慢地、慢慢地了解到,所谓父女母子一场,只不过意味着,你和他的缘分就是今生今世不断地在目送他的背影渐行渐远。你站立在小路的这一端,看着他逐渐消失在小路转弯的地方,而且,他用背影默默告诉你:不必追。

June 3, 2021

社区正式发布.NET 6 Preview4

时间过得真快,.NET 5我还没有来得及研究,眼看.NET 6的正式版本马上就要来了,我一直期待这个版本,因为这是LTS版本,我们团队会迁移到这个版本上来。 社区一直在不断推进.NET 6的可用性,Build 2021大会发布了Preview4,这个版本更新很大,可能与最终的版本相差不大,,正式发布RC版本是在8月份,正式发布RTM版本是在11月 ,到时后.NET正式完成.NET Framwork和.NET Core以及Mono的功能统一,还是非常值得期待的。 新产品功能: System.Text.Json support for IAsyncEnumerable System.Text.Json: Writable DOM Feature Microsoft.Extensions.Logging compile-time source generator System.Linq enhancements Significantly improved FileStream performance on Windows Enhanced Date, Time and Time Zone support CodeGen .NET Diagnostics: EventPipe for Mono and Improved EventPipe Performance IL trimming Single-file publishing CLI install of .NET 6 SDK Optional Workloads Built-in SDK version checking CLI Templates (dotnet new) 另外,还有.NET MAUI或多平台应用UI :允许开发人员构建适用于Windows、MacOS、ios 和android的应用程序,共享单一代码库和模板。 ASP.NET Blazor混合应用程序:帮助开发人员构建基于Web的跨平台桌面体验,从而利用本机设备功能。 对ARM的加强支持:包括 Silicon 和ARM64支持。

May 26, 2021

马尔可夫链(Markov Chain)

马尔可夫链是一种非常重要的随机过程模型,在排队论、预测等方面有非常多的应用,当年我考数学系的时候就是冲着学校有一位马尔可夫领域的顶级数学家,不过后来自己越走越偏,也没有来得及进修这个算法。 随机过程 讲马尔可夫链不得不提到随机过程。顾名思义,它其实就是个过程,比如今天下雨,那么明天下不下雨呢?后天下不下雨呢?从今天下雨到明天不下雨再到后天下雨,这就是个过程。那么怎么预测N天后到底下不下雨呢?这其实是可以利用公式进行计算的,随机过程就是这样一个工具,把整个过程进行量化处理,用公式就可以推导出来N天后的天气状况,下雨的概率是多少,不下雨的概率是多少。 说白了,随机过程就是一些统计模型,利用这些统计模型可以对自然界的一些事物进行预测和处理,比如天气预报,比如股票,比如市场分析,比如人工智能。它的应用还真是多了去了。 马尔可夫链 (Markov Chain) 马尔可夫链 (Markov Chain)是随机过程中的一种过程,到底是哪一种过程呢?好像一两句话也说不清楚,还是先看个例子吧。 比如一个人,每天中午12点的标配,仨状态:吃,玩,睡。这就是传说中的状态分布。 你想知道他n天后中午12点的状态么?是在吃,还是在玩,还是在睡?这些状态发生的概率分别都是多少? 先看个假设,他每个状态的转移都是有概率的,比如今天玩,明天睡的概率是几,今天玩,明天也玩的概率是几几,看图更清楚一点。 这个矩阵就是转移概率矩阵P,并且它是保持不变的,就是说第一天到第二天的转移概率矩阵跟第二天到第三天的转移概率矩阵是一样的。(这个叫时齐,不细说了,有兴趣的同学自行百度)。 有了这个矩阵,再加上已知的第一天的状态分布,就可以计算出第N天的状态分布了。 S1 是4月1号中午12点的的状态分布矩阵 [0.6, 0.2, 0.2],里面的数字分别代表吃的概率,玩的概率,睡的概率。 那么 4月2号的状态分布矩阵 S2 = S1 * P (俩矩阵相乘)。 4月3号的状态分布矩阵 S3 = S2 * P (跟S1无关,只跟S2有关)。 4月4号的状态分布矩阵 S4 = S3 * P (跟S1,S2无关,只跟S3有关)。 … 4月n号的状态分布矩阵 Sn = Sn-1 * P (只跟它前面一个状态Sn-1有关)。 总结 马尔可夫链就是这样一个任性的过程,它将来的状态分布只取决于现在,跟过去无关!就把下面这幅图想象成是一个马尔可夫链吧。实际上就是一个随机变量随时间按照Markov性进行变化的过程。

May 24, 2021

自由多元文化主义

去年一整年在阅读政治哲学方面的图书,前段时间读完金里卡先生的《当代政治哲学》,开始对自由多元文化注意产生浓厚的兴趣,“多元文化主义的自由主义”在上世纪末以来,一直是欧美倡导的价值观,特别是澳大利亚、新西兰和加拿大,这三个主要的移民国家几乎把自由多元文化注意当成本国的主流价值观。 这段时间先后阅读了十几篇论文,包括周濂老师的《如果多元文化主义是答案,它的问题是什么》、《澳大利亚多元文化主义政策的形成》、《多元文化主义的兴衰?关于多样性社会中接纳和包容的新争论》,这是我的文献综述结果: 我觉得自己下一步可以集中重读罗尔斯和金里卡,做更深入的思考,目前我的初步感觉是:自由多元主义是非常美好的理想,而且也有实际操作的可能,现实中的澳大利亚、加拿大和新西兰做得也非常不错。即使如此,我仍然相信在宪政制度下要真正平稳地运行自由多元主义,其实需要更高的社会成本和更高的公民素质。 更进一步,**我甚至认为自由多元文化主义有可能最适合的运用是:已经能保障基本自由和人权、并且收入水平达到发达国家水平的移民国家。**这里我要说明:如果一个国家已经建立起了自由多元文化主义,那么哪怕物质收入水平下降到发展中国家,也适用自由多元文化主义这一价值体系。对于加拿大、澳大利亚和新西兰这几个著名的移民国家,如果轻易放弃自由多元主义,那么将是莫大的损失和悲哀。 对于美国和欧洲来说,践行自由多元主义(这里指让其成为社会主流),可能会面临很多困难和阻碍,但是我觉得这不是放弃理想的理由。

May 23, 2021

贝叶斯算法-垃圾邮件过滤器

垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户。 正确识别垃圾邮件的技术难度非常大。传统的垃圾邮件过滤方法,主要有"关键词法"和"校验码法"等。前者的过滤依据是特定的词语;后者则是计算邮件文本的校验码,再与已知的垃圾邮件进行对比。它们的识别效果都不理想,而且很容易规避。 2002年,Paul Graham提出使用"贝叶斯推断"过滤垃圾邮件。他说,这样做的效果,好得不可思议。1000封垃圾邮件可以过滤掉995封,且没有一个误判。 另外,这种过滤器还具有自我学习的功能,会根据新收到的邮件,不断调整。收到的垃圾邮件越多,它的准确率就越高。 贝叶斯过滤器是一种统计学过滤器,建立在已有的统计结果之上。所以,我们必须预先提供两组已经识别好的邮件,一组是正常邮件,另一组是垃圾邮件。 我们用这两组邮件,对过滤器进行"训练"。这两组邮件的规模越大,训练效果就越好。Paul Graham使用的邮件规模,是正常邮件和垃圾邮件各4000封。 “训练"过程很简单。首先,解析所有邮件,提取每一个词。然后,计算每个词语在正常邮件和垃圾邮件中的出现频率。比如,我们假定"sex"这个词,在4000封垃圾邮件中,有200封包含这个词,那么它的出现频率就是5%;而在4000封正常邮件中,只有2封包含这个词,那么出现频率就是0.05%。(【注释】如果某个词只出现在垃圾邮件中,Paul Graham就假定,它在正常邮件的出现频率是1%,反之亦然。这样做是为了避免概率为0。随着邮件数量的增加,计算结果会自动调整。) 有了这个初步的统计结果,过滤器就可以投入使用了。 现在,我们收到了一封新邮件。在未经统计分析之前,我们假定它是垃圾邮件的概率为50%。(【注释】有研究表明,用户收到的电子邮件中,80%是垃圾邮件。但是,这里仍然假定垃圾邮件的"先验概率"为50%。) 我们用S表示垃圾邮件(spam),H表示正常邮件(healthy)。因此,P(S)和P(H)的先验概率,都是50%。 然后,对这封邮件进行解析,发现其中包含了sex这个词,请问这封邮件属于垃圾邮件的概率有多高? 我们用W表示"sex"这个词,那么问题就变成了如何计算P(S|W)的值,即在某个词语(W)已经存在的条件下,垃圾邮件(S)的概率有多大。 根据条件概率公式,马上可以写出 公式中,P(W|S)和P(W|H)的含义是,这个词语在垃圾邮件和正常邮件中,分别出现的概率。这两个值可以从历史资料库中得到,对sex这个词来说,上文假定它们分别等于5%和0.05%。另外,P(S)和P(H)的值,前面说过都等于50%。所以,马上可以计算P(S|W)的值: 因此,这封新邮件是垃圾邮件的概率等于99%。这说明,sex这个词的推断能力很强,将50%的"先验概率"一下子提高到了99%的"后验概率”。 做完上面一步,请问我们能否得出结论,这封新邮件就是垃圾邮件? 回答是不能。因为一封邮件包含很多词语,一些词语(比如sex)说这是垃圾邮件,另一些说这不是。你怎么知道以哪个词为准? Paul Graham的做法是,选出这封信中P(S|W)最高的15个词,计算它们的联合概率。(【注释】如果有的词是第一次出现,无法计算P(S|W),Paul Graham就假定这个值等于0.4。因为垃圾邮件用的往往都是某些固定的词语,所以如果你从来没见过某个词,它多半是一个正常的词。) 所谓联合概率,就是指在多个事件发生的情况下,另一个事件发生概率有多大。比如,已知W1和W2是两个不同的词语,它们都出现在某封电子邮件之中,那么这封邮件是垃圾邮件的概率,就是联合概率。 在已知W1和W2的情况下,无非就是两种结果:垃圾邮件(事件E1)或正常邮件(事件E2)。 其中,W1、W2和垃圾邮件的概率分别如下: 如果假定所有事件都是独立事件(【注释】严格地说,这个假定不成立,但是这里可以忽略),那么就可以计算P(E1)和P(E2): 又由于在W1和W2已经发生的情况下,垃圾邮件的概率等于下面的式子: 即 将P(S)等于0.5代入,得到 将P(S|W1)记为P1,P(S|W2)记为P2,公式就变成 这就是联合概率的计算公式。 将上面的公式扩展到15个词的情况,就得到了最终的概率计算公式: 一封邮件是不是垃圾邮件,就用这个式子进行计算。这时我们还需要一个用于比较的门槛值。Paul Graham的门槛值是0.9,概率大于0.9,表示15个词联合认定,这封邮件有90%以上的可能属于垃圾邮件;概率小于0.9,就表示是正常邮件。 有了这个公式以后,一封正常的信件即使出现sex这个词,也不会被认定为垃圾邮件了。

May 20, 2021

贝叶斯算法-医患诊断模型

1、背景材料及引言 7岁女孩晓宇(化名)患急性支气管炎,在武汉市儿童医院住院4天,医生为确诊病情,为她抽血化验了32个指标,仅化验费就花费1130元。晓宇的家长质疑:医院如此看病,是过度检查。晓宇的接诊医生李志超说:“晓宇入院时,根据其家长自述病情,我认为孩子的情况有些严重,于是确定了上述化验指标”。该院四内科副主任李医生说:在当时情况下,李志超对患者的病情判断、以及开出的化验指标,都是有道理的。但如果是我接诊,会以自己的经验有针对性地进行化验检查,可能不会一下开出这么多化验指标。该科主任温玟莉主任医师称:一次抽血化验32个指标,是因为李志超当时怀疑孩子得了败血症,这样处理没有问题。但最后的检查结果并不是败血症,这只能说明李志超较年轻,缺乏丰富的临床经验,只有通过全面检查才能确诊。 在医患关系紧张,看病难、看病贵的现实情况下,我们应如何看待这个颇有争议的案例,医生看病是应该有针对性地开方,还是列出“算法式”的化验指标进行排查,本研究以贝叶斯公式为依据,从中国现行的医疗体制出发,对此类问题进行了有益的探索,以期建立一种定量化的诊断模型。 2、模型建立 设“患者有某种病症”为事件A,引起事件A的病因为样本空间Ω。B1,B2,…Bn为Ω的一个分划,即Bi∩Bj=Φ,i≠j,Uni=1Bi=Ω,并假定P(Bi)>0。由贝叶斯公式,由某病因引起事件A的概率为: P(Bi|A)=P(Bi)P(A|Bi)/n/j=1P(Bj)P(A⌒Bj)(1) 公式(1)为医生有针对性地确诊提供了参考。 在疹疗过程中,医生要根据临床经验对各种病因Bi进行权衡。如果误诊,则有可能承担相应的医疗事故风险,相应的误诊概率记为P′(Bi),并设因可能承担风险而承担的赔偿费用为C′i,患者承担医生针对病因Bi开出的疹疗方案的费用为Ci,于是在一次诊治过程中患者承担的平均费用为: E(A)=ni=1P(Bi)Ci(2) 医生可能承担的平均赔偿金额为: E′(A)=ni=1P′(Bi)C′i(3) 我们称该模型为诊断模型,并以δ1≤E(A)-E′(A)≤δ2为标准来衡量诊断方案的合理性,其中δ1≥0,δ2为某一不是特别大的正数。即患者所承担的平均医疗费用应比医生可能承担的平均赔偿金要多,但两者不应差别太大。 3、模型检验 我们以发热和上腹疼痛两个病症的相关数据对该模型进行检验。设原假设为H0:诊断是合理的。备择假设为H1,诊断合理与否需要进一步考查。 对表1和表2中相关数据的说明:中国2002年9月1日实施的《医疗事故处理条例》(以下简称《条例》)第五十条对赔偿项目和标准的规定与当地上一年度职工平均工资水平紧密挂钩,实行一次性结算。表1和表2中的工资水平参考了2007年2月湖北省第十届人民代表大会上的湖北省政府工作报告中的数据:2006年城镇居民人均可支配收入为9803元。对发热症状中的“非典”及“某种类似非典的突发疾病”所可能带来的医疗事故我们以一级医疗事故中的死亡来处理,赔偿金额按<国家赔偿法>第二十七条的规定,检查费用以一次全身检查所需费用10000元进行计算;对“心肺功能缺陷”所可能带来的医疗事故我们按二级医疗事故处理,赔偿金额取202110,检查费用按心电图20元次,心脏彩超180元次,心肌酶谱60元次,肺检查80元次进行计算,药费以相应检查费用的0.8计算。对上腹疼痛症状中的“胃癌”及“心、膈等器官有病变”可能带来的医疗事故我们按二级医疗事故来处理,赔偿金额取202110,对B3的检查费用以B超40元次,催C120元次,胃镜(无痛)240元次进行计算,药费以相应检查费用的0.8计算,对B4的检查费用以胃镜(无痛)240元次和心脏彩超180元次进行计算,药费以相应检查费用的0.8计算。对两种症状中“其它”原因对患者可能造成的损害我们以《条例》第三十三条(三)的规定进行处理:在现有医学科学技术条件下,发生无法预料或者不能防范的不良后果的,不属于医疗事故。对两种症状中“其它”原因,患者的一次医疗费用我们取城镇居民人均可支配收入的5%,即490元进行计算。所有医疗费用均指一次诊治的检查费和药费之和,不包括后续治疗的费用。检查费用以武汉市某三级甲等医院的相关标准为参考。表1发热症状诊断模型的相关数据注:B1=人体生理功能的正常表现:B4=某种类似非典的突发疾病;B5=心肺功能缺陷。表2上腹疼痛症状诊断模型的相关数据注,B2=胃溃疡、十二指肠溃疡;B4=心、膈等器官有病变。 设“发热症状”为事件A1,“上腹疼痛症状”为事件A2,由表1和表2的数据计算得(四舍五入精确到元): E(A1)=121,E′(A1)=187165;E(A2)=265,E′(A2)=22232 我们会发现原假设H0:诊断是合理的,是不成立的。这些数据告诉我们医生这个职业的确是个高风险的职业,在中国建立医疗责任保险制度有着必要性与迫切性。 4、模型评价 该模型在合理假设的基础上,对“对症下药”进行量化,对诊疗方案的合理性给出了一个量化的标准,有一定的合理性与临床参考价值。特别是在用数据对模型检验后,证实了医生的确是个高风险的职业,也显示了在中国建立医疗责任保险制度的必要性和紧迫性。但在模型应用过程中还需要注意以下几个方面:①病因的复杂性。病因的复杂性会导致样本空间的分划的个数n比较大,因此需要结合医学规律对样本空间分划进行合理的选择。②患者体质的差别。不同的患者对同类的医疗事故,由于体质的差别可能带来不同程度的损害。③医生临床诊断水平的差异。不同的医生,由于经验等方面的因素,误诊概率可能有较大的差别。④医院的潜规则。有的医院把医生的收入与其给医院的创收挂钩,这样同一病症在不同的医院治疗,诊疗费用会有较大的差别。⑤实际赔偿金的差别。不同地区上一年度人均收入差别较大,加之实际赔偿金还与实际谈判能力有关系,这样就可能导致同类医疗事故在不同地区及不同的患者(或家属)身上,实际赔偿金差别也较大。⑥现行医疗体制对模型的影响。下面对此进行较详细的分析。 中国现行的医疗事故赔偿责任者只有一个,就是医疗机构,但医疗机构作为理性人,会尽量减少其自身的医疗成本以实现利益的最大化。医疗机构会将其自身受到的损失通过以下三种主要方式进行转移:一是利用价格机制,提高医疗费用,即将损失分散于所有的就医者身上;二是由具体责任人承担风险,即将损失的一部分转移给与事故直接相关的医务人员;三是通过责任保险机制,将损失转移给保险公司。但长期以来,在中国实际上只有第一种和第二种途径在发挥着作用,责任保险机制可以说作用甚微。 这样,就很容易导致医疗费用上涨,引发医患关系紧张。医学的专业化使得医疗机构和患者之间存在巨大的信息差,医疗机构有动机也有能力通过使患者进行重复或者不必要的检查项目等方法多收费用,弥补自身损失.因此模型作用的发挥,还需要以下几方面的配合: ①重视医德建设,提高医护人员自身修养。裘法祖院士在文献里有很深刻的认识。 ②加强医患之间的沟通,进行换位思考,让医生理解患者的苦衷,让患者理解诊疗的风险。 ③加强误诊规律的研究。医疗技术的进步从来都是和风险相并存的,从某种程度上说误诊是不可避免的,但作为医护人员要提高生命权保护意识,不断提高自身的临床思维能力诊断能力力争把误诊率降到最低。 ④加强医护人员临床思维能力和临床经验的提高。医学很大程度上是经验学科,医学理论最终还要内化为医护人员的实际诊断能力才能发挥作用。公式(1)为医护人员提高诊断水平提供了一个很好的参考。 ⑤探索适合中国国情的、于患于医均有益的医疗责任保险制度。尤其是在生命意识越来越受到重视的今天,只有切实的降低行医的风险,才能从根本上解决医患关系紧张的现状,实现医患关系的和谐。

May 18, 2021