我告诉你什么是深度学习

1 引言

在之前的文章你告诉我什么是深度学习中,笔者从线性回归中的房价预测、到梯形块儿的面积介绍了输入特征对于模型预测的重要性;接着又从特征提取以及非线性变换的角度介绍了特征提取对于模型的重要性;最后我们从单层神经网络(线性回归模型)顺利的过渡到了多层神经网络,也就是深度学习的概念中。在接下来的这篇文章中,我们再以分类任务为例,再次探索深度学习的理念以及为什么我们需要深度学习。

在前面我们也提到过,机器学习与深度学习最大的不同点在于特征的可解释性。在机器学习中,我们会尽可能的要求每个特征(包括不同特征之间组合得到的新特征)都具有一定的含义。例如鸢尾花和iris数据集中每个特征都有着其实际的信息。因此,在机器学习中基本上不存在所谓“抽象特征”的概念。但是,当我们用机器学习算法来做某一些分类任务时,又不得不用这些不知道什么意思的特征。

2 特征的意义

在上一篇文章中我们介绍了Softmax分类模型,从本质上来说它也算是机器学习模型中的一种。当我们用其对fashion mnist数据集进行分类时,输入模型的特征就是一张图片拉伸后的一个784维的向量,每个维度表示的仅仅只是一个像素值。那现在要是让你说出每个特征(像素值)的具体含义你能说清楚吗?要说清楚这显然是不能的,不过这依然不影响我们最后的分类结果。但这又是为什么呢?你知道吗?

有件事,叫天不知地知,我不知你知,那就是你鞋底有个洞。而对于即使输入给模型我们不知道什么含义的特征,模型依旧能够展现出很好的分类效果这件事情,其原因估计也就是天知地知模型知,恰恰我们不知。但这样解释合理吗?笔者认为这是合理的。想一想,狗狗主要是靠什么来辨识事物的?对,就是味道。但我们人能通过“味道”这个特征来辨识事物吗?类似的还有蝙蝠能够通过声波这个特征来辨识事物等,而这些都是我们人所不能的。那既然是这样,为什么不可以认为模型也具备识别某种我们人所不能识别的特征呢?

2.1 从具体到抽象

在本系列的第一篇文章中梯形块儿的面积预测部分我们说到,为了使得模型能有一个更好的预测效果,因此我们在原始特征 x 1 , x 2 x_1,x_2 x1,x2的基础上还人为的构造了三个依旧可解释的特征 x 1 x 2 , x 1 2 , x 2 2 x_1x_2,x_1^2,x^2_2 x1x2,x12,x22

图 1. 梯形面积测线性回归结构图(偏置未画出)

由此可以得到的是,如果仅仅只是通过原始特征来进行建模,那么效果往往会那么不尽人意。因此通常情况下我们都会在原有特征的基础上再人为的构造一部分特征进行建模。但问题在于,我们在手工构造特征的过程中大脑潜意识的会去寻求一个可具备解释性的结果,也就是新特征要具有明确的含义。

因此,上述人工构造特征的方法通常就会带来两个问题:①即使是在知道原始特征含义的情况下,也只会构造出极少的特征,这可谓是杯水车薪;②若是在不知道原始特征含义的情况下(例如像素点),几乎不可能再构造出新的特征。那怎么办呢?既然如此,何不把这个过程交给模型自己去完成呢?

图 2. 三分类Softmax结构图(偏置未画出)

如图2所示为上一篇文章中介绍的一个三分类Softmax模型结构,该模型以原始的四个特征 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4作为输入,经线性组合后再施以softmax操作作为整个模型的输出,并且可以看出其并没有加入任何其它的特征。但是试想一下,我们能不能先别那么着急将 o 1 , o 2 , o 3 o_1,o_2,o_3 o1,o2,o3直接作为输出结果,而是将这部分作为原始特征组合得到的新特征,然后再将这部分特征作为输入进行分类呢?

图 3. 特征提取示意图

如图3所示,原始特征 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4经过多次线性组合,后得到了 o 1 , ⋯   , o 5 o_1,\cdots,o_5 o1,,o5这5个新的特征,即:
o 1 = w 1 1 x 1 + w 2 1 x 2 + w 3 1 x 3 + w 4 1 x 4 ⋮ o 5 = w 17 1 x 1 + w 18 1 x 2 + w 19 1 x 3 + w 20 1 x 4 o_1=w^1_1x_1+w^1_2x_2+w^1_3x_3+w^1_4x_4\\[1ex] \vdots\\[1ex] o_5=w^1_{17}x_1+w^1_{18}x_2+w^1_{19}x_3+w^1_{20}x_4\\[1ex] o1=w11x1+w21x2+w31x3+w41x4o5=w171x1+w181x2+w191x3+w201x4
接着,再将 o 1 , ⋯   , o 5 o_1,\cdots,o_5 o1,,o5作为输入进行softmax分类。但这样行不行呢?如果你看过你告诉我什么是深度学习这篇文章的话,肯定知道这样是不行的,因为 o 1 , o 2 , ⋯   , o 5 o_1,o_2,\cdots,o_5 o1,o2,,o5仅仅只是线性组合得到的新特征。虽然看起来图3中多了一个特征提取层,但是最终的效果与图2中的结构并没有本质上的。因区此我们应该先对 o 1 , o 2 , ⋯   , o 5 o_1,o_2,\cdots,o_5 o1,o2,,o5施加一个非线性变换即: o i ′ = g ( o i ) o^{\prime}_i=g(o_i) oi=g(oi),然后再拿去做最后的分类任务。

到此,对于在原始特征上进行抽象特征提取的工作似乎就做完了,但就在这时突然从远处传来了两个声音:①图3在进行特征提取的时候能不能组合得到更多的特征,例如10个或者20个?②图3中的示例仅仅只是进行了一次特征提取,哪能不能在 o 1 , o 2 , ⋯   , o 5 o_1,o_2,\cdots,o_5 o1,o2,,o5的基础上,再进行几次分线性的特征提取,然后再进行最后的分类任务?

2.2 从浅层到深层

看起来这是两个问题,但其实背后都有着同样的初衷,那就是为了得到更为丰富的特征表示,然后提高下游任务的精度。那到底那种做法会更好呢?大量的研究实验表面,第二种方式所取得的效果要远远好于第一种方法。由此我们可以知道,通过深层次的特征提取能够有效的提高模型的表现能力。

图 4. 深层特征提取网络结构图

如图4所示,我们在图3的结构上又加入了一个新的非线性特征提取层,然后再将提取得到的特征进行最后的分类任务。此时我们可以发现,对于输出层之前的所有层,我们都可以将其看成是一个特征提取的过程,而且越靠后的隐含层也就意味着提取得到的特征越抽象。当原始输入经过多层网络的特征提取后,我们就可以将提取得到的特征输入到最后一层进行相应的操作(分类或者回归等)。因此,总结起来一句话,深度学习的核心目的就四个字:特征提取

在下一篇文章中,我们将会对图3和图4这两种结构的分类模型在同一数据集上的分类准确率进行对比,以此来验证加深网络的深度在一定程度上能够提高模型的表现能力。

3 总结

在这篇文章中,笔者首先回顾了文章你告诉我什么是深度学习中笔者当时介绍什么是深度学习的主体思路;然后介绍了虽然我们人类无法理解这些抽象特征,但是却不能忽略其带来的实际效果,就像是动物和人类在辨识外界事物时采用了彼此都不懂的特征;最后介绍了可以通过以深层特征提取的方式来获得更为抽像的特征,以此来提高模型在下游任务中的表现能力。所以,**所谓深度学习其实就是将原始特征通过多层神经网络进行抽象特征提取,然后再将提取得到的特征输入到最后一层进行回归或者分类处理的过程。**本次内容就到此结束,感谢您的阅读!

本次内容就到此结束,感谢您的阅读!如果你觉得上述内容对你有所帮助,欢迎关注并传播本公众号!若有任何疑问与建议,请添加笔者微信’nulls8’加群进行交流。青山不改,绿水长流,我们月来客栈见!

引用

[1]动手深度学习

[2]示例代码:https://github.com/moon-hotel/DeepLearningWithMe

推荐阅读

[1]Pytorch之简洁版Softmax多分类

[2]Pytorch之Softmax多分类任务

[3]想明白多分类必须得谈逻辑回归

[4]Pytorch之拟合正弦函数你会吗?

[5]你告诉我什么是深度学习

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页