神经网络和深度学习饱受诟病的一点就是它是一个黑盒子。经过训练和测试,有时我们可以得到相当不错的结果。但是我们并不知道神经网络为什么表现良好。同样,有时候神经网络会得出令人啼笑皆非的结果,而我们往往也不知道这是为什么。当然,也有人认为神经网络的黑盒特性反而是它的优势所在。特斯拉AI部门主管Andrej Karpathy前两天就撰文主张神经网络意味着软件开发方式的基础性变革,软件开发将步入2.0时代。
前天,也有人在Reddit的机器学习节点上发起讨论:黑盒问题是否被夸大了?这一问题提出后,引发了激烈的争论,不到24小时就收到了近百条回复。论智选译了其中一些评论,以飨读者。
黑盒反而是优势
soutioirsim发起了讨论,主张黑盒更多地应被视作优势而不是问题,因为它意味着模型没有为人类的解释能力所限制:
“每当我向非机器学习领域的学者介绍使用了神经网络或其他酷炫的机器学习方法的工作的时候,常常收到的评论是这些方法是一些“黑盒子”,你无法解释它们是如何起作用的。
“我不同意这一观点,其依据是人类的解释能力限制了模型——如果我们仅仅使用容易解释的模型,那么我们就不会见到现在机器学习领域这么多的进展。如果你将机器学习定义为“能够自动从经验中学习和完善,而无需明确的指令”,那么基本上这个定义就意味着这些模型会难以解释,否则你本可以很容易地自己编写模型。
“这并不意味着我们不该努力追寻对这些模型更好的理解。实际上,我觉得最近Youtube上一个关于深度学习的信息理论的讲座非常棒,并且希望我们能看到更多这类工作。尽管如此,我觉得人们应当转变思想,更多地将“黑盒”看作优势而不是问题,因为它指向非人力可为的模型。”
失控的神经网络
tpapp157并不认为黑盒问题被夸大了,他从控制论的角度论述了神经网络的缺陷:
“在经典控制论中,我可以推导出一条控制定律,对动态系统进行持续的控制。使用基于微积分的技术,我可以精确地量化闭环系统的稳定性,以及它在所有条件下的开销和性能。无论顾客和合规系统对容错率有什么要求,我都可以证明我的控制定律是百分之百安全的。同时我可以精确地量化控制系统的其他特性,比如它的平稳度,或者说用户或乘客的舒适程度。我也可以基于单个产品的特定完工属性(已在工厂衡量)调整我设计的控制器,以便为某个单元优化控制器,这很容易。同样,这些都是基于微积分的技术,因此能够提供精确而可理解的结果。
“这些事神经网络一样也干不了。你最多对神经网络进行统计学的分析,从而得到一个关于系统的安全性和稳定性的粗糙的可信任度,而且,这个粗糙的可信任度还和你的训练样本及测试样本具有很强的相关性(当然,样本在某种程度上总是有偏向的)。不可否认的是,反常的边际情形和其他预期之外的条件可能导致一个受控的系统变得不稳定。如果神经网络出错了,我们无法理解它为什么出错,也很难修正这个错误。我们无法很容易地调整一个基础性的神经网络控制器,为某个单元的完工属性优化。
“进一步说,基于最优控制论,对于给定的动态系统和损失函数,我可以推导出相应的最优控制器,而不是通过训练神经网络得到一个最大值的逼近值,而且这个逼近值很可能仅仅是一个局部极大值(尽管没有人知道到底是不是)。我上面提到的是由基于微积分的方法推导的100%全局最优控制器。20世界40年代以来,最优控制论的进展是推动航空航天业发展的关键因素之一。”
nicksvr4则指出,训练数据的缺陷可能导致不可控的结果:
“我们可能没有意识到训练数据的缺陷。我曾经读到过一篇关于患者数据的报道。所有患有哮喘的病人在得肺炎后都没有出现并发症。之所以没有出现并发症,并不是因为他们患有哮喘,而是医院对哮喘病人额外精心的护理。而神经网络只看到了哮喘和无并发症之间的相关性。如果我们不验证其中的逻辑,哮喘病人会因为‘不会出现并发症’而被送回家,很有可能会因此导致并发症。”
安全攸关系统与用户体验
另一方面,即使黑盒在工程上工作得很好,面对最终用户的时候仍可能产生问题,特别是在安全攸关系统上。
hlynurd就举了机器学习决定治疗方案的例子:
“考虑一个所作决定会影响人们生命的模型。比如一个预测致命疾病的算法。想象一下,患者知道有一个自信的医生,能够理解为什么需要艰难或者昂贵的治疗方案,相比患者碰到一个人,耸耸肩告诉患者‘电脑说化疗’,前者心里要好过很多。”
Darkfeign对此表示赞同,认为飞行器的自动驾驶系统能为我们提供一些启发,安全攸关系统需要更多的“理性”:
“看看飞行器的自动驾驶系统的问责系统吧,都细致到了荒谬的程度了。如果我们不能很容易地发现错误所在,我们会愿意让神经网络驾驶汽车吗?
“我们仍然需要像贝叶斯网络和马尔可夫网络这样具有理性的系统。为了理性而牺牲性能会是一个艰难的决定,但在安全攸关系统中,我们可能没有多少选择。”
Amenemhab则认为Darkfeign的类比并不妥当,飞行器的自动驾驶系统和神经网络根本不是一回事:
“飞行器的自动驾驶系统和黑盒截然不同。它们具备精确的数学规格,并通过了证明辅助系统的校验。”
Darkfeign反驳说,他并没有说飞行器的自动驾驶系统和神经网络是一回事。他只是主张,除非有一天神经网络能提供类似的透明度,否则安全攸关系统就不会完全基于神经网络构建,不过神经网络也许会成为系统的一部分。
thatguydr则认为,如果神经网络的实际错误率远低于可解释的模型,那选择神经网络这样的“非理性系统”才是理性的选择:
“当神经网络的实际错误率远低于可解释的模型时,它们就会被用于安全攸关系统。保险公司是这个转变的调节阀。可笑的是居然没有人提到它们。如果保险公司认为神经网络对它们的账本底线(净收入)更有利,在保险公司作裁定的案例中,可解释性就是明日黄花。”
至于用户体验问题,phobrain认为可以通过神经网络结构的可视化来解决。也就是说,面对hlynurd举的“电脑说化疗”的情况,如果不能知晓原因的话,患者可以要求可视化神经网络的每一层。
phobrain这一极客性质的回答在12小时之内获得了38个赞同,并得到了一些画风相符的回应。hlynurd为神经网络开发者设计了台词:“医生,不管怎么样,你能给我生成一个能极大化37000号节点的激活函数的患者吗?我非常想知道那里出了什么问题。”gokstudio回复hlynurd道:“医生说好。然后克鲁苏被召唤来了,毁灭了整个世界。”singhan则回复道:“其实最后召唤来的是一只柠檬。”显然,他认为神经网络出错时,更可能产生一些意料之外的结果,而不是一些虽然严重但某种程度上可预期的结果。
英文草体的柠檬(lemon)和恶魔(demon)很相似
justtheprint比较严肃地回应了用户体验问题,指出现在有很多治疗方案和药品,其实我们并不理解它们的机制。我们唯一为其辩护的理由很简单,就是它们有效。黑盒算法也可以用这种诡异地类似的方法来评价:“在一个随机控制的试验中,我们遵循电脑的推断,结果患者的健康状况获得了改善,存活期也延长了。”
justtheprint的观点获得了不少赞同。singham举了精神类药物的例子,我们并不理解精神类药物的机制,然而它们仍然得到了批准。terath则指出,实际情况比这更糟,不仅是机制未明,甚至有些治疗手段的效用也不清楚:
“我们习以为常地实施一些甚至不知道是否有效的危险流程。例如,我们在进行过极少测试的情况下,实施了一件‘可耻的手术’,来测试这个流程到底是否工作。而且,这么干以后,我们常常发现其实这个危险的手术实际上并没有什么益处。
“至少我们可以测试机器学习模型,在给定数据满足一些统计学上的分布要求的前提下,可以得到一定程度上的精确性。”
havok_79结合自己在医疗行业的经验,指出目前的医疗系统其实某种程度上也是一个黑盒,未必比神经网络透明:
“我在医疗行业工作过一些年,这些经历让我对此有些厌倦了。通常,黑盒更多的是对机器学习的错误应用(甚至是基础统计学的错误应用),而不是模型本身的问题。
“一般的医生可能永远不会真正理解一个机器学习模型。我相信,不管使用的模型有多么简单,他们也不会理解的。医科教育基本上毫不强调数学和统计学。这不是我们训练医生要做的事情。我经常听到医生主张一些毫无因果关系的结果,只要这些观测数据的训练结果强化了先前的观点并具有合适的p值,医生就会主张结果成立。我曾经和一些委员会认证的信息学家合作过,他们尝试从样本数小于10的子群(样本总数以千计)中总结出有意义的结论。我们是不是应该限制一下神经网络在这个领域的推进,因为这个领域的专家其实并不具备使用神经网络的能力?
“医疗领域的模型应该和其他新治疗手段一样通过严格的审查。但是,如果在大批量的测试样本上,机器学习模型大多数时候能表现得比医生更好,那我真的不在乎我的医生到底能不能解释它。我也无法解释一个医生的错误。如果模型比医生犯得错更少,那我觉得它仍然是一个更优的选择。”
很多Reddit的用户都持有类似的功利主义的观点,尽管这个观点可能产生一些伦理上的风险。Ensemblegh就质疑道:
“如果保证更多人长期存活意味着有人需要解释张三和李四因为软件2.0版本的一个边界情形而死亡,你是否能接受?”
cclausen争锋相对地反问:
“你是否愿意和某人解释说,张三和李四因为医生所犯的错误而死亡,而软件本来可以避免这个错误?
“作为一个患者,我不知道哪个更糟糕。”
Abstractoid也主张抛开机制,更多地关注效用:
“如果我们告诉人们,在侦测癌症方面,模型有99%的准确率,而医生只有80%的准确率,我很怀疑有多少人会担心模型是如何得出结论的。你觉得脊髓灰质炎疫苗刚推出的时候,大多数医生理解它的原理吗?还是说,他们仅仅在乎这个疫苗是否有效?”
castlecrasher2也认为电脑可能更有效,虽然患者的观念可能需要一些时间才能转变:
“现实中,人往往会毫不迟疑地信任医生,因为他们是“专家”。而开始理解电脑可能更有效这一点则很难。”
NowanIlfideme也认为患者的观念需要改变:
“我相信,如果个体听从软件建议而死亡的概率低于听从医生建议而死亡的概率,那么人们仍然指责软件而不是接受他们只是运气不好(被软件错误地归类了)的态度是需要改变的。”
VelveteenAmbush还认为相比患者心理,治疗效果是更重要的因素:
“我猜问题的关键在于,如果患者必须选择是否进行最有效的治疗方案,患者将获得安慰看得有多重?
“我们应该更在意患者的想法,而不是这个治疗方案能最大限度地改善他们的健康状况,这种观点在我看来是一种倒退。我期望大部分患者在完全理解情况的前提下,能认同我的观点。
“所以也许答案是使用这个黑盒子,但是同时努力帮助患者理解模型是如何运作的,以及为什么答案在某种程度上来说如此不可思议。除了基础性的不可思议性之外,尽可能地帮助患者理解结果。然后给他们最好的治疗(根据黑盒子给出的治疗方案)。”
akcom则认为Abstractoid的观点有些偏激了:
“我们当然理解脊髓灰质炎疫苗的机制。我在医疗行业从事预测模型工作,可解释性绝对是关键因素。可解释性并不仅仅是医生想要的,也是针对设备的合规性认证所要求的。当你需要评估模型在生产环境的表现时,‘可以正常工作’可不够好。另外,我们也开始使用循环神经网络的注意机制来改善可解释性,Choi等人的一些工作对此起到了关键作用。”
问责机制
duschendestroyer提出,其实人类本身也是一个黑盒:
“你可以询问一个人他为什么得出某个结论或者做出某个特定的决策。然而心理学研究表明,我们只是编造了一个貌似合理的理由,而不是真的能够解释我们的决策过程。”
minewb对此表示赞同:
“人类对自身选择的原因的认识几乎总有一部分是错误的,甚至全是错的。然而,他们经常对自己的解释非常自信。这是一个危险的组合。认知科学的文献多次表明了这一点。”
htrp则认为尽管如此,至少我们可以追究人类的责任:
“我觉得问题的关键是可问责性。你可以朝一个人大吼大叫,让他干得快一点或者重新验证一下模型,也可以因为一个人的错误建模而开除他。
“而机器学习算法对此毫不在乎。”
psychedelic_thinker也指出人类习惯于追究责任:
“如果出现了错误,人类需要找到一个人去问责。这是人类自我满足的方式,也是他们不带负罪感地继续自己的生活的唯一方法。”
其他
关于soutioirsim(楼主)在主帖中提到的深度学习信息理论的讲座,somewittyalias提到ICLR 2018上发表的一篇论文的观点与之针锋相对。
datatatatata则认为这个讨论的主题偏了:
“首先,这个问题的命名并不妥当。人们抱怨黑盒,因为他们觉得这个问题很高级,但是在大多数情况下,我们并不真的在乎解释预测。我们在乎的是决定是否有意义,是否不偏不倚。我的同事说过一句话:‘如果问题是偏差,不要称它为黑盒。就称它为黑盒。’
“其次,解释决策并不总是需要阐释模型。事实上,我们可以使用诸如lime或者其他更高级的技术来解释单个预测。在大多数案例中,这很直接有效(除非你更关心偏差而不是黑盒)。例如,对于一个销售人员来说,解释单个信用决策比解释整个信用评分模型要更具可操作性。
“一言以蔽之,我认为“黑盒”实际上是一个伪问题。还有很多真实问题等待我们去解决(偏差,不可靠性,对抗性输入,等等)。”
notathrowaway113甚至认为神经网络是“皇帝的新装”:
“我并不理解你在说什么。人工神经网络只是利用非线性变换和数值优化方法在一个高维误差面上寻找最低点而已。这将产生一个针对给定输入向量集合和所需输出标签的表现最佳的模型。对于任何在线性代数方面有基础理解的人,人工神经网络完全是显而易见的。”