概率式编程语言(probabilistic programming languages(PPLs))的未来探讨

如果计算机(或编程语言)是我们理解这个世界的“望远镜”,无论这个“望远镜”如何精巧,它还是要人去操纵,并且,会被一部分人嫌弃,继而造出新的“望远镜” —— David 9

David一直相信,真正有用的工具,无论如何复杂,终究会用简单高效的形式提供给大众。虽然,目前python或R进行大数据或AI研究的门栏已经很低,但很可能还不够低,

来自:https://pediatricspeech.net/post/helping-your-child-become-an-independent-thinker-by-using-declarative-language/

要寻找这样一种“完美”的编程语言,首先我们须认清编程的目的是:“人类对机器提要求,机器完成要求”。但事实上,人类这种复杂的动物是不可能“完美地满足”的。目前任何一门编程语言以及未来语言都会面临“声明式编程”还是“命令式编程”的窘境:

如果你发号施令(对最忠诚的仆人),一开始,你可能给一条简单笼统的指令(声明式编程),希望你的仆人心领神会、想方设法把该办的事都搞定,呈现给你完美的结果,但是,后来你发现情况并不都和你预料的符合,于是你把需要改进的地方逐条告诉了仆人(各个要点和关键次序),这时你更像是亲力亲为(命令式编程)。之后你又厌倦了手把手指导,又开始了笼统的指令。。。这样循环往复,看似矛盾的两个过程,也一直交错出现在现代代码中:参考https://reedbarger.com/what-is-the-difference-between-imperative-and-declarative-code/

我们不能指望计算机帮我们搞定一切,但我们总想让它帮我们搞定更多。

上一代编程,是无场景无数据“喂养”的确定性编程时代,下一代编程,可能是灵活关注场景,持续数据“喂养”(David认为“持续”很重要),且具有丰富不确定性的编程时代。

对于下一代编程方法,一个可能憧憬就是概率式编程语言(probabilistic programming languages(PPLs))。通过这种语言, 继续阅读概率式编程语言(probabilistic programming languages(PPLs))的未来探讨

在“扎根”与“开拓”之间权衡,再聊聊现阶段的强化学习Reinforcement learning

从环境中获得显式(或隐式)的回报(奖赏)信息,强化学习(RL)是AI算法中最接近人真实生活的算法。正是由于这一点,强化学习可以简单到玩一个街机小游戏,也可以复杂到模拟并解释人类某个社会问题。此外,强化学习的tradeoff可以说是包罗万象,曾经我们聊过RL中对经验抽样的艺术,RL需要用恰当的方式从之前的路径经验中获得信息:

你可能只试了两个结果,但你可能已经有了四个路径。来自:https://distill.pub/2019/paths-perspective-on-value-learning/

但是,岂止是权衡抽样。RL还要考虑回报是否稀疏(少经验少信息)的问题angent(智能体)之间“合作”还是“竞争”的权衡went问题还有RL训练低效,需要可迁移的经验和提高抽样效率的问题。只要是一个智能体面对开放复杂环境可以遇到的问题,强化学习都可能遇到。更宽泛地,还包括我们今天要聊的“扎根”和“开拓”之间的权衡(David这样翻译Exploitation vs Exploration)。

“Exploitation vs Exploration”是把握强化学习的一个重要角度。

假如你要选择今天午饭在哪吃,你是会选择以前去过的餐厅,还是去未知的新餐厅试试?这就是典型的“扎根”和“开拓”的困境:

来自:https://lilianweng.github.io/lil-log/2018/01/23/the-multi-armed-bandit-problem-and-its-solutions.html#exploitation-vs-exploration

事实上如果经验足够丰富, 继续阅读在“扎根”与“开拓”之间权衡,再聊聊现阶段的强化学习Reinforcement learning

复杂模型解释的几种方法(interpret model): 可解释,自解释,以及交互式AI的未来#2,第二弹

如果不存在至高的上帝,那么也不存在至高的解释,不论解释者做何种努力 — David 9

假想这样一个场景,世界上仅有两个至高的神(比如“宙斯”和“赫拉”),互相解释同一件事情。虽然宙斯和赫拉都是无所不知的神,但我们假设宙斯对赫拉并不是无所不知的(同样赫拉对宙斯也是):

那么,他们相互可以解释清楚同一件事情吗?

因为赫拉除了宙斯之外已经无所不知了,那么,宙斯向赫拉解释的过程就退化为:把自己对这件事所知道的信息传递给赫拉

如果宙斯需要解释的信息都是共同知道的信息,那这种信息传递较容易。但如果解释中包括了宙斯知道的信息而赫拉不知道的,那么赫拉将难以理解和消化。并且,宙斯不知道赫拉有哪些事是已经知道的,所以宙斯不一定能高效地把自己知道的一切让赫拉明白。

也许,最高效的解释不仅是找到共同可以理解的交集,也在于如何预测对方可能已经知道的信息。

回到正题,对于复杂模型的解释,人们普遍停留在找“可以共同理解”的交集,当然, 继续阅读复杂模型解释的几种方法(interpret model): 可解释,自解释,以及交互式AI的未来#2,第二弹