2022-每周补脑14th

Posted by XiLock on November 26, 2022

科研

如何使 Python 程序快如闪电,提速 30%

一、性能分析

  1. 最懒的性能分析:Unix time 命令
  2. 最详细的性能分析:cProfile 命令

二、提升30%的想法与策略

  1. 快:内置数据类型(原因:C语言实现);慢:树或链表等自定义类型
  2. 使用 lru_cache 缓存数据(更多参考 :https://mobile.twitter.com/raymondh/status/1205969258800275456)
  3. 使用局部变量:与每个作用域内查找变量的速度有关,局部变量最快,类级属性中等,全局变量最慢
  4. 使用函数
  5. 不要访问属性:点操作符(.)用于访问对象属性,是使用 getattribue 触发字典查找
  6. 提防字符串:在循环中运行 模数(%s)或 .format() 会变量,优先用 f-string
  7. 优化的第一原则是不做优化,优化代码时要万分小心。(因为,可能会使代码难于阅读,难以维护。)

言论

  1. 学习知识不是越多越好越深越好,而是应当与自己驾驭知识的能力相匹配。 – 黄昆
  2. 三个善于:善于发现和提出问题、善于提出模型或方法去解决问题、善于做出最重要最有意义的结论。– 黄昆
  3. 还是老实点好,如果一次不老实,将来会有很多次不老实。 – 黄昆
  4. 回国不需要理由,不回国才需要理由。 – 彭桓武
  5. 初级工程师关心编写软件。他们重视代码质量,采用最佳实践,投入大量时间学习新技术,最终目标是创建优雅、高性能、可维护的软件。高级工程师关心构建系统。对他们来说,创建软件只是一个步骤。他们首先质疑是否需要构建软件,询问它会解决什么问题,以及为什么解决这些问题很重要,然后询问谁将使用该软件和使用规模,并且考虑软件将在哪里运行以及如何监控,还决定如何衡量软件是否真正解决了它应该解决的问题。 – What Makes a Senior Engineer? Writing Software vs Building Systems
  6. 如果你要说服其他人向你的项目投资,你应该先说服自己,为什么你愿意把时间和金钱投入这个项目,然后向其他人解释这一点,他们就会相信你。 – 保罗·格拉汉姆
  7. 欧洲之所以在近代领先了,主要原因是内部竞争。无数的诸侯(其实是盗窃集团)互相掠夺,激烈竞争。无能的统治者会被淘汰,小国被吞并。 如果一个统治者对一项发明不感兴趣,发明者就会收拾行装,去游说下一个诸侯,直到遇到对新事物感兴趣的人。这样激烈的竞争和互相的战争,摧毁了根深蒂固的既得利益者和保守的统治集团,推动了发明,为新事物的出现创造了条件。 – Hacker News
  8. 我做了几十年编码,我的职业生涯都被敏捷开发破坏了。没错,你始终是机器的一个齿轮,但敏捷开发让你每时每刻都感觉到这一点。 – Hacker News
  9. 坚持写日记与自己对话、反思,会如同向别人倾诉一样,重新整理你的思绪,产生新的思考。 – Xilock
  10. 低级的欲望,放纵即可获得。高级的欲望,克制才能达成。 – 莫言
  11. If the only tool you have is a hammer, you tend to see every problem as a nail. – Abraham Maslow
  12. 成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的声响,一种不再需要对别人察言观色的从容,一种终于停止向周围申诉求告的大气,一种不理会喧闹的微笑,一种洗刷了偏激的淡漠,一种无需声张的厚实,一种能够看的很远却并不陡峭的高度。 – 余秋雨
  13. That is the essence of science: ask an impertinent question, and you are on the way to the pertinent answer. – Jing Yu
  14. 在市场动荡的情况下,企业更多还是要做好核心根基。正所谓‘集中力量练内功’,本质上就是把核心产品做得更好,为你的核心客户带来更多的价值,让已有客户更满意,在此基础之上再扩张。 – Alluxio创始人李浩源

观点

两位诺奖得主的采访
  1. 我第一次成功生长的晶体是铌酸锂,为此我感到非常自豪。我意识到,这就是专业实验室10年前的产品。然后我在另一个实验中用的方法,是别人5年前用到的。因此我感到很自信:总有一天,我会成为第一个开发某一方法的人。幸运的是,我的梦想确实实现了。 – 1987年诺贝尔物理学奖得主Georg Bednorz
  2. 得到的东西,却从不同的角度去思考。发现就是一场意外,只青睐准备好的头脑。 – 诺奖得主:我的科研之路 大家谈
  3. 许多科学和技术的发明发现,都是由那些认为“万事皆有可能”的人完成的。我在科研之路中学到的东西源自学生时代。在科研生涯最开始的时候,我观察到了技术的障碍和限制,从中获得灵感,从不同的角度思考,不走常规路。 – 诺奖得主:我的科研之路 大家谈
  4. 我其实是自己设计了自己的“学位项目”。我在高中参加了杰克逊研究所(Jackson lab)的暑期项目后,就已经决定了自己的职业选择。所以我或多或少设计了自己的教育计划。 – 大卫·巴尔的摩
  5. 相比于其他职业而言,科学家更倾向于一直工作到七八十岁。更重要的是,我能够代表我共事过的大部分科学家说,我们并不把科研当成一份工作,我们把它视为我们的生活,能够有机会穷尽一生去探索人类知识的前沿,那是一种上天的赏赐。你们知道,许多其他职业的人都爱说“TGIF, thank God it’s Friday” (感谢上帝,今天是周五),因为周五对他们来说意味着一周工作马上要完成,可以去放假做自己想做的事。科学家与工作之间的关系不是这样,因为我们其实从来没有真正地离开过我们的”工作“,我们无时不刻在思考我们的研究,我们在阅读相关的知识,在用邮件沟通我们的研究(笑)… 我不得不说,我在你们这个年纪时,每周工作七天,一天中的大部分时间除了回家睡觉就在实验室。我读博士那会,大家经常很多天都不会离开洛克菲勒的校园。加州理工实际上也有类似的氛围。 – 大卫·巴尔的摩
一个大写的人和中国半导体物理及固体物理的奠基人——纪念黄昆先生百年诞辰

黄昆先生是中国半导体物理及固体物理的奠基人,留英6年提出了多个理论、模型或为其提供基础。回国后,黄昆显示主要从事教学工作,别人认为可惜,但他却不这么认为,标题链接是朱邦芬院士的回忆,关于黄昆先生的为人与治学。
另外还有一个关于黄昆先生的纪录片:纪念黄昆诞辰100周年纪录片

物理学家赵忠尧

赵忠尧是我国物理学家,中国核物理、中子物理、加速器和宇宙线研究的先驱和启蒙者,这里列几个例子。

一、 发现“反常吸收”
密立根教授的初衷是让赵忠尧通过实验,验证克莱因-仁科公式的正确性。1929年赵忠尧开始做实验,测量不同物质对于硬γ射线的吸收系数。实验用ThC’‘(铊208)所放出的能量为2.65MeV的硬γ射线。探测器用高气压电离室和真空静电计进行测量,用了水、铝、铜、锌、锡、铅等六种吸收体。由于他观察敏锐,实验严谨,又使用了高气压电离室等先进仪器,使他先后发现了“反常吸收和“特殊辐射“现象。当他将测量的结果与克莱因-仁科公式相比较时,发现只有轻元素对于硬γ射线的吸收才符合公式的预言。而当硬γ射线通过重元素,譬如铅时,所测得的吸收系数比公式的结果大了约40%。他称之为“反常吸收”,是首次观查到正负电子对产生现象。“特殊辐射”是指一种各向同性的辐射,他精确测量到其能量大约等于一个电子的质量。这是正负电子的湮灭辐射的首次实验证据。他曾向密立根建议用云室观察这一现象,未被采纳。他把这些发现告许了同学Anderson,并建议用云室观查,做更进一步的研究。由于与他同时进行的两个实验:Tarrant和Meitner实验的不正确结果,干扰了他正确的结果。加上Anderson没有如实地将他受赵忠尧实验启发的事实公诸于众,阴差阳错,使他与诺贝尔奖擦肩而过。1936年获得诺贝尔物理学奖,安德森在晚年承认他的研究是建基在赵忠尧的基础之上。

二、搭建加速器
赵忠尧原打算购买一台加速器,回国进行核物理实验。但手头的12万美元离一台2MeV静电加速器的价格(40万美元)相差太多。他只好自己设计一合规模较小,但结构比较先进的高气压型静电加速器。只在美国购置国内买不到的器材加工国内无法加工的部件,然后运回来配套组装。因为加速器在物理学中的重要,赵忠尧先到麻省理工学院(MIT)学习静电加速器发电部分和加速管的制造,开始设计静电加速器。半年后转去卡耐基学习离子源技术。后又回到MIT,落实速器部件的加工。同时还参加宇宙线研究。在此期间,定制了一台多板云室,完成了组装,并可进行宇宙线实验。这台云室后来在上世纪50年代初安装在云南高山宇宙线站上,他与王淦昌,张文裕一起开启了我国宇宙线研究时代。

三、心态 赵忠尧曾说:“在文化大革命隔离审查期间,我对自己走过的道路重新进行了回顾和思考。我想,一个人能做出多少事情,很大程度上是时代决定的。由于我才能微薄,加上条件的限制,工作没有做出多少成绩。唯一可以自慰的是,六十多年来,我一直在为祖国兢兢业业地工作,说老实话,做老实事,没有谋取私利没有虚度光阴。”

OpenI启智社区NLP开源算法库负责人相洋谈“下一代NLP模型将走向何方?”

鹏城实验室网络智能部云计算所副所长相洋一些关于NLP发展和学习的相关讨论,感觉也适用于其它AI开发,读完会有一些思考。

InfoQ:下一代 NLP 模型的发展趋势是什么样的?在未来有哪些值得关注的方向?
相洋:第一,传统意义上,大模型需要大量的数据、算力,训练很久才能训练出来。那么,我们如何才能更高效地去训练大模型?这个问题肯定是我们在未来需要解决的。如果在未来,我们能够在有限的资源下,快速地对大模型进行更新迭代,这对于人工智能产业将大大有利。
第二,就是模型的可解释性。这一直是机器学习模型,包括现在的深度学习、大模型遇到的一个难点,将来我们如何通过一些知识融入,包括因果推理等等,去进一步增强模型的解释性,可能也是一个非常热门的方向。
第三,最近我看到很多社区、微信群里在使用百度文心做的文本生成图像工具,输入一段文字,它就可以根据这些词去生成一幅图画。这是一个多模态的问题,从文本到图像的生成过程。这里面还体现了一个问题,即可控文本生成,也就是说,生成的内容是经过一些控制去生成的,而不是随意生成的。现在大模型生成文本的过程很多时候是不可控的,它可能生成的是一句话,但这句话只能保证语法和流畅度,它在逻辑或是常识性等方面是比较缺乏的。我们怎么通过技术去让这个模型生成的句子、图像更加可信、可靠?这也未来需要关注的一个方向。
第四,我认为 NLP 以及大模型能在更多领域发挥作用,比如现在比较热门的元宇宙、VR、AR 等方面,能结合现在的一些可视化元素,让虚拟的场景、虚拟的人以及虚拟的社区,更加具有人性化。有自然语言做加持,人与人之间的沟通可能在元宇宙中更加通畅。

InfoQ:小白如何才能快速入门 NLP?有哪些书籍推荐吗?
相洋:第一,大家需要先去了解到底什么是 NLP,NLP 能干什么。可以去网上看专家讲解、视频报告,也可以与自己周围的老师、同学、前辈多交流一下。先把 NLP 概念以及要做得事情搞明白,明确自己是不是对 NLP 这项技术,或者对 NLP 其中的某几项技术感兴趣。
第二,当你明确自己确实想往 NLP 方向发展的时候,就要针对自己关注的一项技术去找网上的公开课,比如斯坦福等学校有很多专家课专门讲自然语言处理、深度学习、机器学习等等,在掌握一些基础知识后,还要看一些 NLP 相关的论文,或是论文解读、相关文章,等等,这能够帮助大家更快地去理解一些 NLP 的知识。
第三,动脑和动手需要结合,不能只去看理论。希望大家可以从社区,比如启智社区、GitHub 等等,找一些比较有代表性的算法以及模型库,自己拿过来跑一跑,针对自己感兴趣的问题,可以尝试调改,把理论学习和实践相结合,才是一个比较完整有效的入门 NLP 的方式。
书籍方面,我最初接触 NLP 的时候,用的是李航老师写的《统计学习方法》。此外,还有一本复旦大学邱锡鹏老师写的《神经网络与深度学习》,这本书相对比较新,里面涉及到了很多神经网络、深度学习以及自然语言处理比较新的技术,包括预训练技术,等等。还有一本比较传统的书籍叫做《Deep learning》,自然语言处理离不开机器学习、深度学习,在这本书里,除了理论,还重点讲了一些自然语言处理例子,大家可以做参考。从理论到实践,循序渐进去掌握这些知识。

InfoQ:有用户提问,NLP 算法工程师的核心竞争力是什么?
相洋:是 NLP 算法底层的一些算法理解能力,而并不是应用能力。当你能够把 NLP 的一些底层原理、底层算法掌握好,融会贯通之后,才能够对模型的改进、使用、集成等更加得心应手,我认为这才是 NLP 算法工程师的核心竞争力。

除了这些,还给出了鹏城实验室在 OpenI 上面的主页,里面也有很多开源的算法库。他们团队主要和预训练模型相关,包括怎么去更高效地训练模型,怎么做模型的压缩、剪枝、蒸馏,还有模型的推理能力、解释能力等等。此外还有很多自然语言处理方向的应用,比如机器翻译、情感分析、医学 NLP等等。

有趣

  1. 朝天开枪也会伤人THE REALITY OF CELEBRATORY GUNFIRE

荐书

杂谈


手机版“神探玺洛克”请扫码