深度学习是一项庞大又复杂的工程,在建立深度学习模型时,走进死胡同被迫从头再来似乎是常事。
近日,Semantics3网站的联合创始人Govind Chandrasekhar在官方博客上发表了一篇文章,讲述了程序员在解决深度学习问题时的应该自问的五个问题。
Semantics3是一家2012年成立的数据科学初创公司,它创建了一个数据库,跟踪产品在网上的销售过程,为零售商提供数据。对于Govind Chandrasekhar写的这篇文章,量子位全文翻译如下:
研究数据科学是一件悲喜交加的事情。喜在当你偶然的发现提高了算法的性能,可能让你拥有持久的兴奋感;悲在你会经常发现自己站在一条单行道的尽头,苦苦探索到底哪里出了问题。
在这篇文章里,我将详述走过无数条深度学习死路后,得到的五个教训。在处理新问题或新方法前,我都会用想想下面这五个问题。
问题一:
先不管神经网络,一个没有先验知识、只受过你的数据集训练的人能解决这个问题吗?
这个问题对解决监督学习的困境尤为受用——这些问题的典型前提是,一个小的高质量数据集(比如N个实体)可以帮助你的模型近似得到一个潜在的功能,之后泛化到包含1000N个实体的整个数据集。
这些方法的好处在于,人类只需要研究很小部分数据就可以了,机器会学会把它运用到大范围的示例中。
但是在现实世界中,问题不总是含有可以被优先识别的模式。人们利用外部常识来解决的认知挑战比我们意识到的还要多,这经常导致我们错误地期望我们的算法在没有常识的情况下能够解决同样的挑战。
举个例子吧,看下面这三种描述:
Pets First Arkansas Dog Jersey, X-Small, Pink
Pets First Arizona Dog Jersey, X-Small, Pink
Pets First AR Dog Jersey, X-Small, Pink
这三组描述中,有两个表示的含义相同,你能找出那个含义不同的吗?
大多数美国人都不难解决这个问题,因为AR=Arkansas,AR!=Arizona是个常识。但是,一个对美国并不熟悉的人,可能就不知道答案是什么了。
你会发现,你创建的神经网络也没有能力解决这个问题,因为在语言应用这方面,没有特定的缩写规则可以供神经网络去模仿。当然指定了Arkansas等同于AR的情况除外。
类似这样的问题还有很多(可能在一开始你并不理解这些问题),并且它们在实际工作中还经常出现。回头审视之前建造的神经网络,并且明确需要补充的新知识是非常困难的。所以,在构建神经网络时,要及时跳出自己的思维定式。
问题二:
你构建的神经网络能通过正确的视角理解你的数据吗?
假设地区的缩写始终是名字的前两个字母,同时这个缩写不会重复。那么,我们再来用不同的示例回看刚刚的匹配问题:
“Pets First Arkansas Dog Jersey, X-Small”
“Pets First Arkansas Dog Jersey, Extra-Small”
“Pets First AR Dog Jersey, X-Small”
“Pets First Arkansas Dog Jersey, Large”
“Pets First MA Dog Jersey, Large”
你的目标是建立一个神经网络用于识别1、2、3等价而4、5不同。这个任务是在考验神经网络对“大小”这个概念理解——它们是否知道X-Small=Extra-Small ?也是在考验它对缩写的理解能力,比如Arkansas=ARkansas=AR因为前两个字母相同,而Arkansas不等于MA,等等。
你可能会通过Word2Vec来构建一个嵌入空间,将 X-Small映射为Extra-Small来解决这个问题。
尽管这种方法是一个标准解法,但可能你会妨碍神经网络找到你想让它学习的内容。如果把AR换成小写的ar,对人类来说就比较难识别了,我们会纠结ar到底指的的Arizona还是are。
同样,如果你选择建立词汇的嵌入空间,有效地将每一个单词映射到唯一的标记,那么你就掐断了神经网络理解组成字符“ARkansans”的机会。