我对中国科技行业的看法(译文)

danwwang 是彭博社的一个技术分析师,写了一篇2019年回顾,详细谈了他对中国科技行业、中美贸易战的看法。

我觉得,他的那篇文章有很多启发,总体比较客观,中国的劣势和优势都谈到了。下面就是主要部分的翻译,插图是我配的。

我对中国科技行业的看法

作者:@danwwang

原文网址:https://danwang.co/2019-letter/

1、

2019年,我从香港搬到了北京。

北京不适宜步行,天气也不好,但它是一个令人着迷的地方。

世界上有几个地方感觉像是世界的中心,北京就是其中之一。(其他的地方还有旧金山,东京和华盛顿特区。)我的朋友说:北京是一个散发出阴郁力量感的城市,孟买和那不勒斯也给人这种感觉。

2、

北京到处都是令人生畏的建筑物,每栋大楼的入口都散发着一种神秘感。

外国人应该记住,北京是一个纯粹依靠政治意愿维持的城市。请问世界上还有哪个主要城市远离重要的河流或水域?

古代的中国皇帝,选择北京将北方的平原与南方的稻田连接起来。这座城市已经连续800年成为中国的首都。

3、

对于那些想要过上快乐生活的人,北京可能不适合他们。亚洲有许多适合生活的地方:香港是一个热带小岛,新加坡基本类似,台北很宜居,东京也不错。

北京吸引的是中国最聪明的人,然后吸引着世界上许多有趣的人。现在旧金山和纽约的人们,对话内容非常局限,谈来谈去就是十几个话题,而北京是众多重要故事的中心。

4、

中国的一个问题是,向世界输出的成功的文化产品太少了。

刘慈欣的《三体》三部曲算一个成功的文化输出。2019年,我可以再添加一个例子:抖音(TikTok)。两者都是好东西。

令人失望的是,过去的十年中,中国没有创造出更多刺激世界其他地区的文化产品。毕竟在这期间,中国的人均 GDP 翻了一番。下一个十年是否会有所不同,我们能在中国看到一系列激动人心的全球性文化创作?北京最好可以回答这个问题。

Continue reading "我对中国科技行业的看法(译文)"

区块链小白书

按:这本书比较适合小白科普,作者李笑来。李笑来是成功上岸的投机者,目前活跃在区块链、比特币圈。


区块链小白书

李笑来(著)© 2019

警告

区块链作为金融互联网新技术,不可避免地会涉及到投资和投机 —— 而对绝大多数普通人来说:

投资有风险,决策需谨慎!

前言

新华社北京10月25日电,中共中央政治局10月24日下午就区块链技术发展现状和趋势进行第十八次集体学习。

中共中央总书记习近平在主持学习时强调,区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。我们要把区块链作为核心技术自主创新的重要突破口,明确主攻方向,加大投入力度,着力攻克一批关键核心技术,加快推动区块链技术和产业创新发展。

习近平在主持学习时发表了讲话。他指出,区块链技术应用已延伸到数字金融、物联网、智能制造、供应链管理、数字资产交易等多个领域。目前,全球主要国家都在加快布局区块链技术发展。我国在区块链领域拥有良好基础,要加快推动区块链技术和产业创新发展,积极推进区块链和经济社会融合发展。

习近平强调,要强化基础研究,提升原始创新能力,努力让我国在区块链这个新兴领域走在理论最前沿、占据创新制高点、取得产业新优势。要推动协同攻关,加快推进核心技术突破,为区块链应用发展提供安全可控的技术支撑。要加强区块链标准化研究,提升国际话语权和规则制定权。要加快产业发展,发挥好市场优势,进一步打通创新链、应用链、价值链。要构建区块链产业生态,加快区块链和人工智能、大数据、物联网等前沿信息技术的深度融合,推动集成创新和融合应用。要加强人才队伍建设,建立完善人才培养体系,打造多种形式的高层次人才培养平台,培育一批领军人物和高水平创新团队。

……

到了 2019 年,是李笑来在区块链世界里生存的第 9 个年头。这些年来,人们对区块链的误解甚至诋毁现在终于可以烟消云散了 —— 因为区块链技术终于在中国获得了认可与支持。

然而,需要注意的是,区块链技术作为金融互联网新技术,不可避免地与投机(或投资)联系在一起,导致的结果是市场上骗局丛生,行业里鱼龙混杂,所以有必要让民众对区块链有正确且清楚的了解。这就是《区块链小白书》的意义 —— 它就是写给小白的,目的不仅是为了让小白少走弯路,更是为了让小白不要误入歧途。

李笑来,二〇一九年十月,于北京

准备工作

1. 不要滥用类比

你将要尝试着学习并理解的,是一个前所未有的重大创新,其中有很多你一下子难以理解透彻的概念,很少有人能一下子全都弄明白……

在这样的时候,人们会不由自主地抄近路走捷径 —— 滥用类比:

“哦! 我明白了,这就好像是……”

比如,你经常会看到人们挣扎着理解了半天,突然冒出一句:“哦,我懂了,比特币就是电子黄金!” 类比是约等号(≈),而“这就是”是等号(=),约等号和等号之间的差别有时甚至超过十万八千里。 比特币与电子黄金之间的关系甚至干脆就谈不上是约等于…… 全然不是一个东西。

在理解全新事物的时候,滥用类比的危害非常大,因为你压根就找不到什么过往已经存在的东西真的和这个创新竟然一模一样 —— 否则,它也不可能被称为创新了,是不是?

这种不恰当的类比被滥用多次之后,就再也没办法形成正确的理解了 —— 因为理解一个创新需要理解多个前所未有的概念,每个都做了不恰当的类比之后,多次非常不恰当的约等于拼接起来之后,无论如何都没办法达到一个与正确理解相近的效果。

请务必注意,每次你的脑子里不由自主地冒出 “这就好像……” 这个念头的时候,你都要把它强压回去。

2. 重复重复再重复

遇到暂时无法理解的概念,不要担心、不要纠结、不要停顿,你要做的事情很简单:

  • 继续读下去;
  • 读完之后再重复读很多次……

这是学习任何新知识或者在任何新领域探索的 “必杀技”。这背后有一个重要的原理:

绝大多数难以理解的知识,是因为它内部有很多 “前置引用”。

所谓的前置引用,就是一个在后面才能深入理解的概念竟然在此之前已经被引用了,导致的结果是学习者总是处于懵懂的状态。学校里的知识却不是这样的,学校里的知识总是线性层层递进的,理解了前面,就能理解后面…… 关于 “前置引用”,你可以参阅我在《自学是门手艺》里的阐述。

“硬着头皮读完,而后重复读很多次” 这个策略,就是可以轻松突破 “前置引用” 所设置的障碍。这个技巧,事实上可以用在任何领域。

3.借助群智的力量

快速掌握新知识,快速适应新领域,还有个重要的技巧,就是借助群智的力量。事实上,在学校里,你早就应该发现这个技巧了 —— 如果你能跟那些学霸经常聊天,经常玩耍,你就会发现总是在不经意之间,很多重点难点就那样轻而易举地被解决掉了……

这首先因为人是社交动物,然而更为重要的是,交流这个东西,随意的交流总是比刻意的交流更为有效 —— 因为随意的交流总是刻意解决那些连你自己都没意识到的问题…… 可偏偏,这些你自己意识不到的问题恰恰是最重要甚至最关键的问题。如果不借助这种群智的力量,很难想象还有什么办法可以解决这种隐秘的关键问题。

比特币

比特币是个前所未有的东西,所以绝大多数人很难清楚地理解它。这一个章节之中,我们会用极为简单的语言尽量做到通俗易懂 —— 并且,尽量不涉及那些晦涩难懂的技术概念。

1. 什么是比特币

2009 年,比特币横空出世,绝大多数人对此全然不知。即便是在 10 年后的今天,比特币对大众来说也依然神秘…… 不过,总是可以用很简单的方式说清楚:

理解比特币最简单的方法是把它想象成一家世界银行:

这家叫 Bitcoin 的世界银行发行了一个叫做 BTC 的货币……

基于翻译的局限,无论是 Bitcoin 还是 BTC,在中文之中都叫 “比特币”。

对中国民众来说,最大的狐疑来自于 “银行是谁都可以开的么?”,以及 “货币这东西你说发就发啊?”…… 刚开始的时候这确实难以理解,甚至难以接受。可科技发展已经给我们演示过很多次 “过去完全不可能的事情竟然就那么发生了!” 电子邮件就那样悄无声息地替代了书信,互联网语音通讯就那么不声不响地替代了电话。

2. 比特币其实不可能替代法币

对于新生事物,人们总是过于两极分化,要么断然拒绝接受,要么对它寄予过分的期待。比特币不可能替代法币(Fiat Money,法定货币)—— 只因为最简单的原因:

日常生活中人们需要的货币必须是价格相对稳定的。

在可预见的未来相当长一段时间里,比特币的价格不可能稳定;恰恰相反,它的价格波动剧烈 —— 仅此一点,就使得它没办法成为日常生活中人们所最普遍使用的货币。

长期来看,即便比特币的价格因为绝大多数人都接受而趋于稳定,它也只不过会成为地球上众多货币之中的一个而已,仍旧不可能替代所有法币。

3. 比特币解决了什么问题

如果你有兴趣耐心反复阅读比特币白皮书,《比特币:一种点对点的电子现金系统》,那么你就会发现一个你之前并不了解的概念是它的核心:

双花问题(Double Spending

简单讲,就是“同一笔钱一次只能花在一个地方”,“绝对不能让同一笔钱竟然同时花到了两个地方”,否则就只能是 “记账有误”。银行的核心业务是什么呢?银行的最核心业务其实只有一个,那就是:记账 —— 绝对不能记错账,更不应该做假账。

数字时代的尴尬在于,传统中心化管理的数据库,用来记账的时候,那账簿是有无数种可能被篡改的,账本上随意增加一条不合理的记录、随意删除一条不合规的记录,随意修改任何记录中的数字,都有可能违规且干脆无法防范……

那怎么办呢?比特币这家世界银行的解决方案很简单:

  • 我不自己管理数据库了;
  • 把这个数据库的管理权限交给所有人,大家共同维护这个账簿;
  • 每个人手中所持有的账簿必须与其他人的一样才算有效账簿;
  • 所以,全网所有的账簿都只能一样;
  • 所以,没有人可以私自篡改账簿并被所有其他人接受……

如此这般,就保证了这家世界银行的账簿不可能出错,不可能被恶意篡改,不可能再出现任何 “同一笔钱竟然同时花在两个地方” 的情况。

于是,逻辑就很清晰了:

  • 问题是 “必须要有一个不可篡改的可信账簿……”
  • 解决方案是 “那我们分布式管理罢!”

你看,“去中心化” 并非目标,而是分布式管理的结果;而 “公开透明” 也只是分布式管理的自然而然的结果…… 多年以来,不明就里的人们总是神话 “去中心化” 带来的颠覆,总是神话 “公开透明” 的各种优势 —— 其实是本末倒置了。去中心化指的是网络结构去中心化,不会直接带来任何颠覆。而公开透明,固然在一些地方必需必要,但,事实上绝大多数商业模式在公开透明的方式下无法良好运营。别说商业模式了,连游戏都是这样的,猜大小游戏可以一直公开透明,可棋牌游戏,必须等到游戏结束之后才可以公开透明,否则游戏就无法进行了……

4. 区块链究竟是什么

区块链是 blockchain 这个英文新词汇的 “生硬翻译” —— 事实上,绝大多数翻译就是很生硬的,你看看上面的 “双花”(Double Spending)就能感觉到了。

所谓区块,是 block 的翻译,可以理解为 “信息块”(这个单词在计算机领域就是这个意思)。

blockComputing: a large piece of text processed as a unit.

如此这般,区块链(blockchain)就是字面上的意思,它就是由前后链接起来的信息块构成。

在比特币这家世界银行的设计中,区块(block),就是一个又一个不断生成的子账簿,这些子账簿通过一种特定的算法(哈希算法)前后链接起来,形成总账簿(blockchain)。从这个角度望过去,区块链技术没什么神秘的,通俗地讲,它只不过是一种新的记账技术而已。

比特币这家世界银行,就是这样建立在区块链技术上的第一个分布式应用。而区块链技术,通俗地讲,无非是个不可篡改的分布式数据库技术而已。

5. 区块链技术会改变世界吗

在一些场景下,这个世界的确需要不可篡改的数据库技术。比如,法院的卷宗,交通部门的违章记录,工商部门的企业登记,民政局的婚姻登记,公安局的身份证,大学的毕业证,等等等等……

尤其需要区块链技术的领域,除了公共事务领域之外,还有物联网。机器产生数据的速度和数量都远远超过人类,而机器数量未来也会必然远远超出人口的数量不止几个量级…… 面对未来不可想象地庞大的物联网世界,不可篡改的数据记录绝对不可或缺 —— 甚至可以说,没有区块链技术,未来的物联网世界不可能安全发展。

所以说,区块链技术的确会改变世界。

不过,至于区块链技术究竟在将来会把这个世界变成什么样子,今天的我们很难准确预测。历史证明,每次技术革新出现的时候,我们的想象力都极为匮乏,我们的预测能力都聊胜于无。三四十年前,人们想象互联网是这样改变世界的:

到时候你给别人写信,就会变成这样:你在这边敲完,那边的打印机就自动把整个信件打印出来了……

事实上,没有任何一个专家能在四十年前想象出我们今天可以拿着一个掌中设备坐在家里点两下一会儿外卖就送到门口了…… 所以,过多的预测和想象,实际上是徒劳无益的。

6. 挖矿是怎么回事

比特币这家世界银行想出来的维护账簿的方式是使用分布式网络,那么就需要吸引足够多的节点来参与 —— 节点数量越多,网络越安全。可问题在于:

人家凭什么来参与呢?

所以,比特币这家世界银行吸引大家参与分布式网络建设的方法是:

每 10 分钟左右发一次 “红包”……

这里的 “10 分钟”,是因为比特币这个分布式网络每十分钟要完成一个子账簿(就是一个区块),而后把这个新的子账簿附加到原来的总账之中(即,区块链)。生成、校验子账簿,并且确认无误地附加到原来的总账之中,这个过程需要网络中的节点贡献算力。而算力并不是白白贡献的,大家干活了之后,就可以参与 ”抢红包“!

比特币这家世界银行通过不断地 “发红包” 完成了它的货币发行 —— 按照程序最初的设定,比特币这家世界银行(Bitcoin)要持续发红包 142 年!刚开始的时候每 10 分钟左右发 50 个比特币(BTC),以后每 4 年减半一次,每个 “红包” 里的比特币数量从 50 个减成 25 个,后来再减成 12.5 个,6.25 个…… 以此类推。比特币(BTC)总量为恒定的 2,100 万个 —— 红包全部发完之后,参与网络维护的节点依然可以通过分享网络转账手续费而获益。

通过架设比特币节点获利的过程,被人们形象地称为 “挖矿”(mining),而参与建设节点的那些人被人们称为 “矿工”(miners)。因为 “抢红包” 是有一定运气因素存在的行为,所以,矿工们会集中挖矿,方式是把自己的节点算力集中到一个 “矿池”(mining pool)之中,以便增加自己抢红包时的运气。目前全球排名第一的矿池是币印矿池

十年前,比特币网络刚刚运行的时候,参与人数少,总算力也很低,那时候随便用一台笔记本电脑就可以 “挖” 出很多比特币 —— 当然,那时候的比特币也不值钱…… 第一笔比特币交易是,有人用1万个比特币买了一个披萨!

上图来自:https://www.blockchain.com/charts/hash-rate?timespan=all

时至今日,比特币网络算力已经大到惊人的地步,不使用专门定制的计算机(所谓 “矿机”)是很难 “挖” 出比特币的。矿机的发展,经过了 CPU 时代,GPU 时代,早就进入了 ASIC 时代,并且,从 128 纳米的芯片几经升级,目前已经有公司在研究 7 纳米、甚至 5 纳米的比特币挖矿芯片了。

7. 比特币凭什么涨啊涨

如果你能把比特币(BTC)理解为 “一个叫做比特币(Bitcoin)的分布式世界银行应用” 的股票,那么就比较容易理解比特币(BTC)的价格上涨趋势了。

上图来自 https://www.blockchain.com/charts/market-price?timespan=all

这个叫做比特币(Bitcoin)的分布式世界银行应用就好像是一家上市公司,它的核心业务只有两个部分:发行和记账。而它的价值取决于有多少人认同它、使用它 —— 在这一方面,地球上任何一家银行都如此。截至 2019 年,全球使用比特币的人数不超过 3000 万,相对于整个人口数量,这依然是个相当小的比例。所以,它还有很大的上涨空间 —— 只不过,在任何一个短期之内,上下波动都非常剧烈,所以,普通人参与投机的风险非常高。

Continue reading "区块链小白书"

你所不知道的 AI 进展

人工智能现在是常见词汇,大多数人可能觉得,它是学术话题,跟普通人关系不大。

但是实际上,AI 突飞猛进,正在脱离实验室,进入日常生活。仅仅是现在的技术水平,就足以模糊现实与虚拟的界限,颠覆一般民众的认知。

(图1:2018年10月,世界第一幅 AI 生成的肖像画,拍卖成交价43.25万美元。)

为了让普通人了解 AI 的进展,谷歌的机器学习专家格里高利·萨普诺夫(Grigory Sapunov)写了一篇通俗的科普文章,介绍目前的技术成果。这盘文章非常精彩,有大量的图片,加上一些简单的解释,信息量很大,对于了解技术动态很有帮助。

(图2:谷歌的机器学习专家格里高利·萨普诺夫)

下面就是那篇文章的翻译,比较长,图片很多,但是值得耐心读完。我保证,有些内容一定会让你感到吃惊。

另外,插播一条活动消息。大家知道,国内最大的在线教育平台之一的腾讯课堂,赞助了我的个人网站。他们最近启动了"腾讯课堂101计划",推广优质的技术教育资源。 大家可以留意一下本文结尾的免费活动信息,帮你掌握开发网页和手机 App,提高技术水平。

一、图像处理

人工智能最早是从图像处理开始的。图像处理是一种常见任务,智能要求比较高,需要使用 PhotoShop 之类的软件人工编辑,一般的算法解决不了。

1.1 对象补全

2017年,日本科学家提出了一种图像的对象补全模型。经过训练,模型可以补全图片上缺失的部分。

(图3:图像的对象补全模型)

上图中,左边是原始图片,然后把中间的花盆涂掉,输入模型。模型会自动补全缺失的部分(右图),由于它不知道,那里有一个花盆,所以只会根据没有涂掉的部分,补上地板和扶手。

下面是更多这样的例子。涂掉的部分,模型都会补上,哪怕它根本不知道,那里原来是什么。

(图4:图像的对象补全示例)

Nvidia 公司将这个模型做成了产品,放在网上。你可以到它的网站,上传一张图片,然后涂掉一些部分,让网站替你补全。

(图5:涂掉沙发旁边的茶几)

有的图像软件已经应用这项技术,去除人像脸上的斑点。

1.2 背景处理

背景处理指的是,将前景物体从图片分离出来,再对背景进行加工。目前,已经有很好的智能算法可以去除图片背景。

(图6:图片的背景去除)

在模型内部,图片会转成像素的色块。下图的浅紫色块就是前景物体,然后再把这些像素提取出来。

(图7:背景去除模型)

这个模型也已经做成了线上服务,大家可以上传图片感受一下它的效果。

既然可以去除背景,那当然就可以更改背景,为图片合成打开方便之门。

(图8:更改图片背景)

1.3 样式转换

人工智能还能够识别图片的风格样式(即像素的变化规律),将其套用在另一张图片。

(图9:原始图片)

上图是两张原始图片,第一张是梵高的名画《星夜》,第二张是普通的风景照。模型可以提取第一张图片的风格,将其套用在第二张图片。

(图10:套用梵高的《星夜》风格)

其他名画的风格,同样可以套用。

(图11:图像的风格转换)

1.4 图像着色

一旦识别出图片中的物体,模型就可以统计不同物体的像素颜色规律,然后就能推断黑白照片可能的颜色,从而实现照片着色

(图12:黑白照片的着色)

网上也有免费的着色服务,大家可以体验。

二、GAN 方法

2.1 简介

GAN 是"生成对抗网络"(Generative Adversarial Networks)的缩写,它是一种革命性的提升人工智能模型效果、生成虚拟图像的方法。

原理很简单,就是两个神经网络互相对抗。一个神经网络负责生成虚拟图像,另一个神经网络负责鉴定假图像。理论上,如果 GAN 训练成功,那么生成的假图像与真图像将无法区分。2014年,这种方法提出以后,快速发展,目前效果已经可以乱真。

(图13:GAN 的改进速度)

上图是过去几年,GAN 生成的虚拟人像。可以发现,每过一年,图片越来越大,细节越来越丰富,越发接近真实人像。它的工作方法也是如此,第一步生成一张低分辨率图片,然后慢慢放大,依次修改每一个像素,确定该像素怎样才能最大概率通过鉴定器。

GAN 不仅能生成虚拟图像,还能生成音频、文本,甚至是化合物分子。AI 模型可能创造出来的任何东西,都能使用 GAN 提升效果。GitHub 有一个仓库,专门收集不同用途的 GAN,目前已经有500多种模型。

2.2 StyleGAN

目前,生成虚拟人像效果最好的模型是 Nvidia 公司的 StyleGAN。下面两张头像,你能分辨哪张是虚拟的,哪张是真实的吗?

(图14:GAN 虚拟人像)

这是网站截图,你可以去那个网站试试看,能猜对多少张。需要提醒的是,这是2018年底的模型产物,随着模型进化,迟早将无法分辨真假。

GAN 不仅能生成人像,实际上可以生成任何图像。下面是 BigGAN 模型生成的各种图像,图片里的东西都是不存在的。

(图15:BigGAN 模型生成的虚拟图像)

2.3 图像翻译

一种图像通过 GAN 转变为另一种图像,称为图像翻译。空拍照片变成地图、黑白照片变成彩色照片,都是图像翻译的例子。

pix2pix 是图像翻译的开源工具,它可以让黑夜变成白天,示意图变成实物图。

(图16:图像翻译)

也可以让春天变成夏天,晴天变成雨天。

(图17:图像翻译)

图像翻译的难点在于,它需要有成对的示例(源图像和相应的目标图像),告诉模型应该怎么翻译,这些示例可能很难创建。但是反过来,只要有配对的示例,就可以翻译图像,不管这种翻译是否合理。下面是两只小猫翻译成对应的豹子、狮子和老虎。

(图18:图像翻译)

CycleGAN 模型还支持跨域翻译,将照片翻译成油画,斑马翻译成马。

(图19:图像翻译)

Nvidia 开发了一个 GauGAN 软件,可以在线试玩。用户只需手绘一个示意图,软件就能生成一张对应的风景照片。

(图20:GauGAN 将示意图变成照片)

2.4 人像翻译

图像翻译用于人像,就是人像翻译。StarGAN 模型可以翻译面部属性,比如头发的颜色、性别、肤色等。

(图21:脸部属性的改变)

还可以把其他人的表情移植到你的脸上,下图分别是愤怒、快乐、恐惧的表情翻译。

(图22:表情的改变)

SC-FEGAN 是人像翻译的开源软件,可以让你编辑人像,比如加上刘海,去除墨镜等等。

(图23:人像编辑软件 SC_FEGAN)

2.5 文本到图像生成

GAN 最惊人的成果之一,大概就是根据文本生成图像。用户提供一个句子,软件生成对应的图像。原始文本"一只红中透白、长着非常短的尖嘴的鸟",可以得到下面的图像。

(图24:根据文本生成图像)

论文甚至提到,将来存在可能,根据剧本直接生成一部电影。

三、视频生成

图像处理逐渐成熟以后,人工智能业界的关注重点就转向了视频。

从一个视频生成另一个视频,这就叫视频翻译。目前比较成熟的两个方向是运动传递和面部交换。

3.1 运动传递

运动传递指的是,将一个人的动作(包括身体、眼睛或嘴唇的动作)翻译到另一个人身上,使得另一个人出现一模一样的动作。

2018的论文《Everybody Dance Now》,给出了一个模型,可以将舞者的动作移植到任何人身上。

(图25:动作传递)

上图中,蓝衣女子的跳舞视频完全是假的,是将左上角舞者的动作套用在她身上,自动生成的。

NVIDIA 公司的开源软件 vid2vid 更为强大,可以生成高分辨率的、连贯的逼真视频。

(图26:vidvid 软件)

3.2 脸部生成

脸部生成指的是,根据一张脸的表情和动作,重建另一张脸。最著名的例子是虚拟的奥巴马演讲。2017年,华盛顿大学的团队发表了一段奥巴马的演讲视频。奥巴马其实从未做过这个演讲,是将别人的表情和口型套在他脸上生成的,语音也是合成的。

(图27:虚拟的奥巴马演讲)

这种伪造的视频被称为 Deepfake(深度伪造),具有很大的欺骗性,许多在线平台都禁止上传这一类视频。

(图28:伪造的特朗普演讲,将喜剧演员的表演变成特朗普自己在讲。)

(图29:深度伪造的普京)

2018年出现的《深度视频肖像》更进了一步,生成的视频不局限于虚拟的面部表情,还会头部旋转、眼睛凝视和眨眼,是 3D 的肖像重构。

(图29:深度视频肖像)

这些技术还在继续发展,现在你可以给出任意文本,从任何你指定的对象嘴里说出来。甚至只凭一张照片,就可以生成一段表情变化的视频。

(图30:一张照片生成各种表情)

3.3 中国的实践

国内的人工智能视频生成,并不落后于国外。换脸应用 ZAO 只需用户上传一张照片,就能把影视剧主人公的脸换掉,好像你本人在表演电影一样。

(图31:换脸应用 ZAO)

2018年,新华社与搜狗合作推出了虚拟新闻主播,具有真人的形象,带有声音、面部表情和动作,在电视上播报新闻,已经开通了英语、俄语、阿拉伯语的主持人。

(图32:虚拟新闻主播)

3.4 视频渲染

除了视频生成,人工智能在视频渲染上也取得了很大进展。

Nvidia 公司2018年展示了实时光线追踪 RTX 技术。这项技术用人工智能预测光线的变化,从而不用耗费大量计算去追踪光线,因此可以实时渲染出高画质的 3D 动画。这对于视频游戏有重大意义。

下面是使用这项技术的 Unreal Engine 4,实时渲染出的一个女子的3D 动画,可以一边计算生成,一边播放,完全没有延迟。

(图32:实时渲染的动画)

实时光线追踪技术还可以用于自动驾驶,在白天和黑夜的不同时间,不同的路面和环境下,预测出暴雨、风雪和强烈的眩光导致的光线变化,对驾驶做出调整。

四、文本和声音处理

最后,简单提一下,人工智能在文本和声音处理领域的进展。

(1)语音合成

谷歌在2018年推出了智能助手 Google Duplex,它会根据你的日程,自动打电话去餐厅订座位。谷歌 CEO 说,这个机器人的对话能力,使得对方完全没有发现这是机器人。

(2)音乐合成

OpenAI 基金会推出的 MuseNet,通过学习数十万段 MIDI 音乐,能做到使用10种乐器,生成一段4分钟的音乐。它的官网有这些音乐的下载,相当动听。

(3)自动评论

据报道,使用 Yelp 网站的数据进行训练的模型,可以自动生成餐厅评论。

  1. 我喜欢这个地方,一直来这里已经好多年。它是与朋友和家人相聚的好地点,我喜欢这里的食物和服务,从未有过糟糕的经历。
  2. 我吃了烤蔬菜汉堡配薯条!哦,很好吃!
  3. 我和我的家人都是这个地方的忠实粉丝。工作人员超级好,食物也很棒。鸡肉很好,大蒜酱也很完美。配水果的冰淇淋也很美味。强烈推荐!

上面这些都是机器生成的评论。

(4)智能邮件

Gmail 会根据电子邮件的来信内容,自动生成三种不同的回复,让用户选择。如果只是简单回应,用户不用自己动手写。

Gmail 的另一个功能是,根据用户已经写的内容,预测接下来会写的句子,供用户选择。

五、小结

毫无疑问,人工智能是很酷的技术,创造出了神奇的产品,有着难以想象的巨大应用前景。

但是,人工智能也是一把双刃剑,模糊了现实与虚拟之间的界限,把我们带上了一条不可预测的道路。作为个人,了解这些技术的进展和潜力,有助于保持一份清醒,享受技术之福的同时,避免它带来的一些副作用。

作者:阮一峰

有史以来最复杂的软件(英文)

原文:https://www.quora.com/What-is-the-most-sophisticated-piece-of-software-ever-written-1

作者认为,Stuxnet 蠕虫病毒可能是有史以来最复杂的软件,的确针对性很强,隐蔽性很好,是复杂无比的系统工程。

我们不知道 Stuxnet 的作者是谁,只知道大概是在2005年至2010年间编写的。

这种病毒藏在 U 盘上。当 U 盘插入 PC,它会自动运行,将自已复制到该 PC。它至少有三种自动运行的方法。如果某种方法行不通,就尝试另一种。其中的两种运行方法是全新的,使用了 Windows 的两个无人知晓的秘密 Bug。

一旦蠕虫进入 PC ,它会尝试获得该 PC 的管理员权限,使用的也是前面提到的那两个无人知道的秘密 Bug。然后,它把自己留下的痕迹全部清除,不让防病毒软件检测到它的存在,用户不会看到任何东西。这种蠕虫隐藏得很好,出现后一年多,没有任何一家安全公司发现它的存在。

它会秘密访问 http://www.mypremierfutbol.com 或 http://www.todaysfutbol.com 这两个网站,告诉服务器已经成功侵入了一台新的 PC,然后从网站下载最新版本自行更新。

它会将自身复制到任何插入该 PC 的 U 盘。使用的 U 盘驱动程序由 Realtek 公司进行了数字签名,但是 Realtek 公司并不知道有这个签名。这意味着,蠕虫作者能够获取 Realtek 公司的最高密钥。

它利用两个 Windows 的 Bug ----一个涉及网络打印机,另一个涉及网络文件----将自己传播到局域网里面的其他计算机上。

直到这一步,它的真正任务还没有开始。

它在每一台计算机上寻找一种由西门子设计的用于大型工业机械自动化的控制软件。一旦发现这种软件,它会使用另一个以前未知的 Bug,将自身复制到工业控制器的驱动程序。然后,它会检查两家特定公司的工业电机,其中一家公司在伊朗,另一家在芬兰。它要搜索的特定电机称为变频驱动器,主要用于运行工业离心机,提纯多种化学品,比如铀。

由于蠕虫完全控制了离心机,因此它可以做任何事情,可以将离心机全部关闭,也可以将它们全部摧毁:只需设定以最大速度旋转离心机,直到它们全都像炸弹一样爆炸,杀死任何恰好站在附近的人。

但它没有这么做,一旦它控制了每台离心机......它就进入潜伏。一旦达到设定的时间,它就会悄悄地唤醒自己,锁住离心机,使得人类无法关闭这些机器。然后悄悄地,蠕虫开始旋转这些离心机,修改了安全参数,增加了一些气体压力......

此外,它还会在离心机正常运转的时候,偷录一段21秒的数据记录。当它控制离心机运行的时候,会一遍又一遍地播放这段数据记录。管理人员会看到,计算机屏幕上的所有离心机运行数据都很正常,但这其实是蠕虫让他们看的。

现在让我们想象一下,有一家工厂正在用离心机净化铀。电脑上的所有数字都表明离心机运行正常。但是,离心机正在悄悄地出问题,一个接一个地倒下,这使得铀产量一直下降。铀必须是纯净的。你的铀不够纯净,无法做任何有用的事情。

工厂的管理者根本找不到原因,离心机的数据是正常的。你永远不会知道,所有这些问题都是由一种计算机蠕虫引起的。这是一种历史上最狡猾和最聪明的计算机蠕虫,它由一些拥有无限资金和无限资源的令人难以置信的秘密团队编写,并且设计时只考虑一个目的:偷偷摧毁某个国家的核弹计划,并且不被发现。

XYplorer输入中文乱码问题解决

XYplorer是我最近用的比较多的资源管理器类软件,弥补了诸多之前Total Commander的不足,插件也很好用。但是最近遇到一个问题,就是在里面新建文件夹命名或者文件重命名时,输入的中文都是问号(?)无法命名的问题。

后来经过尝试,发现是在系统设置里设置了英文输入法的问题,删除即可。之前安装应为输入法主要是为了避免玩游戏时按到SHIFT切换中英文的问题才添加的。

删除方法:Win -> 设置 -> 时间和语言 -> 左侧菜单选择“语言” -> 点击“中文” -> 在弹出来的菜单选择 “选项” -> 在最下面删除“美式键盘” 即可。

挤倒一个好德便利店需要多久?

  1. 挤倒一个好德便利店需要多久?全家告诉我:2年
  2. 这个全家是在2016年夏天开的,我记得第一次去的时候,是想买个雪糕,当时店员跟我说,冰柜还没装修好呢,印象深刻
  3. 今天下班路过的时候,好德门口的喇叭,喊着“超市关门,买一送一”,一共不到两年时间
  4. 全家做对了什么?好德做错了什么?我记得2015年的时候看过NHK的一部纪录片,讲了上海便利店战争,之后开始观察,几乎有了罗森和全家的地方,好德就节节败退
  5. 螳螂捕蝉,黄雀在后,也许2年后,更新的业态会让罗森全家也遇到今天好德的挑战。

如何让DOS输出的日期和时间在只有单字符时补0

想在命名文件的时候,根据当前日期和时间来命名生成的文件,但是默认的方法在生成文件名的时候,会间断性报错,排查了之后发现是因为DOS输出的%date%和%time%会在有单字的时候,在前面填充一个空格,而这个空格会截断DOS命令,导致出错。

解决方法有2个,第一个是直接在系统设置里,或者注册表里改系统日期和时间格式,如图所示:


或直接导入注册表:(请将以下文字保存为“日期时间格式.reg”文件)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International]
"sLongDate"="yyyy-MM-dd"
"sShortDate"="yyyy-MM-dd"
"sTimeFormat"="HH:mm:ss"
"sShortTime"="HH:mm"
"sYearMonth"="yyyy-MM"

因为作为一般用户,貌似只有Word在插入日期时间的时候会用到这个值,其他地方没有会遇到使用这个值得地方,所以改动应该不会带来什么副作用。其他经常要跟时间打交道的同学请综合评估影响。

第二个方法,在DOS环境中排查%date%、%time%输出的空格,替换为0:,代码如下:

Continue reading "如何让DOS输出的日期和时间在只有单字符时补0"

卸载Cygwin方法两则

Cygwin是一个Windows下使用Linux环境的平台,安装简单、环境独立(也可以把Cygwin\bin目录增加到Windows系统的PATH环境中,在cmd中调用Linux命令),比微软提供的Linux环境都方便不少,因为是真机资源,性能也比虚拟机好很多。

卸载也很简单,把文件夹整个删除即可,但是因为权限配置问题,每次删除都会留下一些不能被删除的“尾巴”,还要通过一些辅助软件才能彻底清空。

在网上搜索之后,发现两个比较好的一次性清理干净的做法。如下:

第一个方法:在CMD下键入如下命令,其中D:\cygwin是Cygwin的安装目录

SET DIRECTORY_NAME="D:\cygwin"
C:\windows\system32\TAKEOWN /f %DIRECTORY_NAME% /r /d y
C:\windows\system32\ICACLS %DIRECTORY_NAME% /grant administrators:F /t
PAUSE

这段代码的作用是把Cygwin文件夹下的所有文件的所有权都赋予给管理员用户,去除了诸如SYSTEM用户等的权限,然后再直接删除目录即可

第二个方法:在Cygwin安装文件执行的时候,选中uninstall,如图,然后执行安装过程。

使用愉快!

神经网络入门

眼下最热门的技术,绝对是人工智能。

人工智能的底层模型是"神经网络"(neural network)。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于它。学习人工智能,一定是从它开始。

什么是神经网络呢?网上似乎缺乏通俗的解释。

前两天,我读到 Michael Nielsen 的开源教材《神经网络与深度学习》(Neural Networks and Deep Learning),意外发现里面的解释非常好懂。下面,我就按照这本书,介绍什么是神经网络。

这里我要感谢优达学城的赞助,本文结尾有他们的《前端开发(进阶)》课程的消息,欢迎关注。

一、感知器

历史上,科学家一直希望模拟人的大脑,造出可以思考的机器。人为什么能够思考?科学家发现,原因在于人体的神经网络。

  1. 外部刺激通过神经末梢,转化为电信号,转导到神经细胞(又叫神经元)。
  2. 无数神经元构成神经中枢。
  3. 神经中枢综合各种信号,做出判断。
  4. 人体根据神经中枢的指令,对外部刺激做出反应。

既然思考的基础是神经元,如果能够"人造神经元"(artificial neuron),就能组成人工神经网络,模拟思考。上个世纪六十年代,提出了最早的"人造神经元"模型,叫做"感知器"(perceptron),直到今天还在用。

上图的圆圈就代表一个感知器。它接受多个输入(x1,x2,x3...),产生一个输出(output),好比神经末梢感受各种外部环境的变化,最后产生电信号。

为了简化模型,我们约定每种输入只有两种可能:1 或 0。如果所有输入都是1,表示各种条件都成立,输出就是1;如果所有输入都是0,表示条件都不成立,输出就是0。

二、感知器的例子

下面来看一个例子。城里正在举办一年一度的游戏动漫展览,小明拿不定主意,周末要不要去参观。

他决定考虑三个因素。

  1. 天气:周末是否晴天?
  2. 同伴:能否找到人一起去?
  3. 价格:门票是否可承受?

这就构成一个感知器。上面三个因素就是外部输入,最后的决定就是感知器的输出。如果三个因素都是 Yes(使用1表示),输出就是1(去参观);如果都是 No(使用0表示),输出就是0(不去参观)。

三、权重和阈值

看到这里,你肯定会问:如果某些因素成立,另一些因素不成立,输出是什么?比如,周末是好天气,门票也不贵,但是小明找不到同伴,他还要不要去参观呢?

现实中,各种因素很少具有同等重要性:某些因素是决定性因素,另一些因素是次要因素。因此,可以给这些因素指定权重(weight),代表它们不同的重要性。

  • 天气:权重为8
  • 同伴:权重为4
  • 价格:权重为4

上面的权重表示,天气是决定性因素,同伴和价格都是次要因素。

如果三个因素都为1,它们乘以权重的总和就是 8 + 4 + 4 = 16。如果天气和价格因素为1,同伴因素为0,总和就变为 8 + 0 + 4 = 12。

这时,还需要指定一个阈值(threshold)。如果总和大于阈值,感知器输出1,否则输出0。假定阈值为8,那么 12 > 8,小明决定去参观。阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。

上面的决策过程,使用数学表达如下。

上面公式中,x表示各种外部因素,w表示对应的权重。

四、决策模型

单个的感知器构成了一个简单的决策模型,已经可以拿来用了。真实世界中,实际的决策模型则要复杂得多,是由多个感知器组成的多层网络。

上图中,底层感知器接收外部输入,做出判断以后,再发出信号,作为上层感知器的输入,直至得到最后的结果。(注意:感知器的输出依然只有一个,但是可以发送给多个目标。)

这张图里,信号都是单向的,即下层感知器的输出总是上层感知器的输入。现实中,有可能发生循环传递,即 A 传给 B,B 传给 C,C 又传给 A,这称为"递归神经网络"(recurrent neural network),本文不涉及。

五、矢量化

为了方便后面的讨论,需要对上面的模型进行一些数学处理。

  • 外部因素 x1x2x3 写成矢量 <x1, x2, x3>,简写为 x
  • 权重 w1w2w3 也写成矢量 (w1, w2, w3),简写为 w
  • 定义运算 w⋅x = ∑ wx,即 w 和 x 的点运算,等于因素与权重的乘积之和
  • 定义 b 等于负的阈值 b = -threshold

感知器模型就变成了下面这样。

六、神经网络的运作过程

一个神经网络的搭建,需要满足三个条件。

  • 输入和输出
  • 权重(w)和阈值(b
  • 多层感知器的结构

也就是说,需要事先画出上面出现的那张图。

其中,最困难的部分就是确定权重(w)和阈值(b)。目前为止,这两个值都是主观给出的,但现实中很难估计它们的值,必需有一种方法,可以找出答案。

这种方法就是试错法。其他参数都不变,w(或b)的微小变动,记作Δw(或Δb),然后观察输出有什么变化。不断重复这个过程,直至得到对应最精确输出的那组wb,就是我们要的值。这个过程称为模型的训练。

因此,神经网络的运作过程如下。

  1. 确定输入和输出
  2. 找到一种或多种算法,可以从输入得到输出
  3. 找到一组已知答案的数据集,用来训练模型,估算wb
  4. 一旦新的数据产生,输入模型,就可以得到结果,同时对wb进行校正

可以看到,整个过程需要海量计算。所以,神经网络直到最近这几年才有实用价值,而且一般的 CPU 还不行,要使用专门为机器学习定制的 GPU 来计算。

七、神经网络的例子

下面通过车牌自动识别的例子,来解释神经网络。

所谓"车牌自动识别",就是高速公路的探头拍下车牌照片,计算机识别出照片里的数字。

这个例子里面,车牌照片就是输入,车牌号码就是输出,照片的清晰度可以设置权重(w)。然后,找到一种或多种图像比对算法,作为感知器。算法的得到结果是一个概率,比如75%的概率可以确定是数字1。这就需要设置一个阈值(b)(比如85%的可信度),低于这个门槛结果就无效。

一组已经识别好的车牌照片,作为训练集数据,输入模型。不断调整各种参数,直至找到正确率最高的参数组合。以后拿到新照片,就可以直接给出结果了。

八、输出的连续性

上面的模型有一个问题没有解决,按照假设,输出只有两种结果:0和1。但是,模型要求wb的微小变化,会引发输出的变化。如果只输出01,未免也太不敏感了,无法保证训练的正确性,因此必须将"输出"改造成一个连续性函数。

这就需要进行一点简单的数学改造。

首先,将感知器的计算结果wx + b记为z


z = wx + b

然后,计算下面的式子,将结果记为σ(z)


σ(z) = 1 / (1 + e^(-z))

这是因为如果z趋向正无穷z → +∞(表示感知器强烈匹配),那么σ(z) → 1;如果z趋向负无穷z → -∞(表示感知器强烈不匹配),那么σ(z) → 0。也就是说,只要使用σ(z)当作输出结果,那么输出就会变成一个连续性函数。

原来的输出曲线是下面这样。

现在变成了这样。

实际上,还可以证明Δσ满足下面的公式。

ΔσΔwΔb之间是线性关系,变化率是偏导数。这就有利于精确推算出wb的值了。

作者:阮一峰