思算
#7文摘技术

Digest 007

技术阅读笔记 #7

阅读时间 8 分钟

文章

技术报道

Facebook撰文介绍他们在全面推广使用QUIC作为网络连接方式,用来取代TCP为基础的连接方式,从HTTP2迈向HTTP3。他们花了大篇幅介绍这个迁移项目的影响。我连TCP/IP都还没有完全搞明白,现在看来又要学新的东西了。

另外,Facebook也写了一个自己的QUIC实现:mvfst

个人采访

这篇最近对于Geoff Hinton的采访回顾了一下Hinton复兴这次神经网络的旅程,聊了一下他走上这条路的历史,以及他对于联接主义的信念。采访中问到了几个问题,Geoff Hinton的回答挺值得思考的。

  1. 深度网络能实现人类智能吗?
    • Geoff Hinton依然坚信深度学习能做任何事情,但是同时承认还需要很多概念和理论的突破。他提到了Transformers就是很不错的例子。
    • Geoff Hinton接下来提到了GPT-3最近的突破,及其利弊。
  2. 深度网络是要更深还是更广?
    • 都要。人脑也有极大数量的参数。
  3. 深度网络需要常识吗?
    • Geoff Hinton认为深度网络中嵌入常识确实很重要。

另外一个很有意思的回答是Geoff Hinton提到Stephen Kosslyn和Jerry Fodor/Zenon Pylyshyn之间关于visual image的辩论:

  • Kosslyn: when you manipulate visual images in your mind, what you have is an array of pixels and you're moving them around.
  • Fodor/Pylyshyn: visual image is hierarchical, structural descriptions. You have a symbolic structure in your mind, and that's what you're manipulating.

然后Geoff Hinton认为这两派都是错的:

  • Kosslyn: thought we manipulated pixels because external images are made of pixels, and that's a representation we understand.
  • Fodor/Pylyshyn: thought we manipulated symbols because we also represent things in symbols, and that's a representation we understand.
  • Hinton认为:I think that's equally wrong. What's inside the brain is these big vectors of neural activity.

这个观点真的非常有意思。

知识网页

这个网页很有意思,讲得是地理空间研究中的坐标系统有多么复杂。整个页面是以不同的问题来组织信息的,问题从浅入深,层层递进,以问答的方式介绍了地理空间系统的一些计算和矫正数据的方法。

文本排版

这篇文章讲了一下计算机的文字排版问题。文字排版是计算机视觉界面中最重要的一部分,这个问题真的是非常复杂。从段落分析,到段落中的文字呈现方向,到字符确认,到字体渲染,到最后呈现,每一步都可能出错,每一步都需要适应不同国家不同文化的排版需求。 文字段落的方向确认本身就是一个很有趣的问题,W3C有一篇比较好的讲解文章。另外,这篇关于Linux文字渲染的短文把整个渲染的步骤比较简介明了地展现了出来,对文章的阅读也很有帮助。

另外,这篇Text Rendering Hates You也是一篇蛮有意思的小文章的。

网络学习

网络教材

这是一本关于Git的短小的教程,主要就是三个大的章节,整个阅读下来可能就是2个小时左右。

知识可视化

这是另外一个学习Git的小工具,利用了一些可视化/可探索化的方式来呈现了Git的各种命令背后发生的事情。我觉得这里最值得学习的应该是作者如何用D3来实现了整个教程。很棒的Explorable Explanation的例子。

网络课程

这是一个软件工程的课程,而不是具体的某种技术、某种程序语言、或者某种研究领域的课程。里面讨论的内容有一些跟技术有关,有一些是一些软件工程项目开发实践上的问题,我觉得可以结合Google的软件工程那本书一起来看。

多媒体

经验分享

这是一个2012年的视频,两个主讲通过一个简单的弹球游戏,展示了如何用一些简单的效果,使得整个游戏生动起来,更加"juicy"。这是一个非常好玩的视频,花20分钟看完这个视频非常值得。每一个功能都挺简单的,但是放到一起就非常炫酷了。另一个源

软件设计

Multi-dispatch会根据运行时的实参类型来选择对应的函数。这个视频讲了一下Multiple Dispatch是怎么使得下面两件事情变得容易的:

  1. Define new type for existing operations.
  2. Define new operation for existing types.

Multiple Dispatch这个概念还挺陌生的,而且好像C++确实没有办法很好地实现这个功能。Simplify C++写过一篇文章试图用covariant函数来 实现Multiple Dispatch,但是我看完之后感觉离这个演讲中提到的Multiple Dispatch还有很大的差距,尤其是Julia语言的不同用户可以直接用Multiple Dispatch来扩展已有的库的功能。

Eli Bendersky的博客上有关于不同语言的Multiple Dispatch的一系列文章(1, 2, 3, 4)

工具、技术、展示

硬件展示

树莓派400已经可以支撑起整个"台式机"形态了!主要的计算单元被放在了键盘背后,然后可以驱动鼠标键盘,还可以接外接显示器,看起来非常不错!