1.1.1 何为深度学习
深度学习从字面理解包含两个意思,分别是“深度”和“学习”。
1.学习
首先说“学习”这个词。我们从小就听着“好好学习,天天向上”的教诲,然后按时到校上课,在课堂上认真听讲,努力完成作业,在考试中取得一个好的名次。抽象地说,我们的学习就是一个认知的过程,从学习未知开始,到对已知的总结、归纳、思考与探索。比如伸出一根手指就是1,伸出两根手指加在一起就是1 + 1 = 2。这是一个简单的探索和归纳过程,也是人类学习的最初形态。
所以总结来说,这种从已经有的信息通过计算、判定和推理,而后得到一个认知结果的过程就是“学习”。
那么,读者看到这里也许会问,这个所谓的“学习”和“深度学习”又有什么关系?这里不妨更进一步地提出一个问题:对于同样的学习内容,为什么有的学生学习好而有的学生学习差?
这就涉及一个“学习策略”和“学习方法”的问题。对同样的题目,不同的学生由于具有不同的认知和思考过程,而根据其不同的认知得到的答案往往千差万别,归根结底,也就是由于不同的学生具有不同的“学习策略”和“学习方法”而导致不同的结果。
为了模拟人脑中的“学习策略”和“学习方法”,学术界研究出使用计算机去模拟这一学习过程的方法,被称为“神经网络”。
这个词从字面上看和人脑有着一点关系。在人脑中负责活动的基本单元是“神经元”,它以细胞体为主体,由许多向周围延伸的不规则树枝状纤维构成的神经细胞。人脑中含有上百亿个神经元,而这些神经元互相连接成一个更庞大的结构,称为“神经网络”,如图1.1所示。
图1.1 神经网络
但是到目前为止,科学界还是没有弄清楚人脑工作的具体过程和思考传递的方式,所以这个“神经网络”也只是模拟而已。
2.深度
这里再定义两个概念:“输入”和“输出”,输入就是已知的信息,输出就是最终获得的认知的结果。例如在计算1 + 1 = 2的这个过程中,这里的1和“+”号,就是输入,而得到的计算结果2就是输出。
但是,随着输入的复杂性增强,例如当你伸出三根手指,那么正常的计算过程就是先计算1 + 1= 2,之后在得到2这个值的基础上再计算2 + 1 = 3,这才是一个正常的计算过程。
这里举这个例子是向读者说明,数据的输入和计算过程随着输入数据的复杂性增加,需要一个层次化的计算过程,也就是将整体的计算过程分布到各个不同的“层次”上去计算。
图1.2展示了一个具有“层次”的深度学习模型,hidden_layer_1到hidden_layer_n是隐藏层,而左边的input_layer和右边的output_layer是输出层。如果这是一个计算题的话,那么在每个隐藏层中,都是对此题过程的一个步骤和细节进行处理。可以设想,随着隐藏层的增加以及隐藏层内部处理单元的增多,能够在一个步骤中处理的内容就更多,所使用的数据更为复杂,而能够给出的结果就越多,因此可以在最大限度上对结果进行拟合,从而得到一个近似于“正确”的最终输出。
图1.2 神经网络中的“深度”
归根结底,所谓“深度”就是人为地使用不同层次不同任务目标的“分层”神经元,去模拟整个输入、输出过程的一种手段。