什么是深度学习
还是这一张图,我们前几天见过了,人工智能包括机器学习,机器学习包括深度学习,那究竟什么是深度学习呢?我们先看一张图:
图中在以 x 轴和 y 轴组成的坐标系中,有一些点,可以看到,其中有一些是白点,有一些是黑点,这些点可以用(x,y)这样的坐标表示,我们现在要做的任务就是根据 x 和 y 这些点的坐标,找到一些规律,或者是找到一个比较好的办法、公式等去描述这些点,你是否可以根据找到的规律或者公式,判断这个点是白点还是黑点。
你已经看出来了,从左上到右下,可以画一条线,线的右上方是黑色的点,线的左下方是白色的点,没错,你可能很容易就求出这条线,但是这样描述这个问题,不够好,看下面的图:
除了上面那条线外,我们还可以画一条与其垂直的线,就像上图中间这样,同时我们把坐标系也转换一下,原始的坐标系不够“好”,我们将新的两条垂直的线定义为新的 x 轴和 y 轴,这时就得到了上图中的图三,这次是不是就漂亮了一些。这两个坐标系的转换比较简单,坐标的(x,y )的转换也是很简单,在后来的坐标系中,我们可以得出结论,x 大于零是黑点,x 小于零是白点。如果这是问题的一部分,这样的坐标系也会很大的简化问题。
这是一种类型的数据转换,也是比较简单的一种。我们把这种转换包装成一个盒子,我们输入一个点的坐标值,这个盒子经过上述的转换,会告诉我们结果是黑点还是白点。
上面就是一种概念上的“学习”,下面我们分析什么叫做“深度学习”。机器学习中很典型的问题就是手写数字识别,即一张手写数字的图片上,这个手写数字是几,在深度学习的模型中,会有如下的一个网络模型:
歪歪扭扭的一个数字图片,给了一个黑盒子,最后给出的结果是手写数字 4,这是如何得出来的结果呢?我们在这个黑盒子中,会对图片进行一些信息提取处理和加工,然后根据处理的结果进行判定,但是这个过程是复杂的,一次信息提取和加工达不到要求,因此会一步一步深入加工和处理,每处理一次,原始信息被更改的越大,信息变形越大越模糊,但是对结果有用的判定信息越来越多,将这种处理分成好多层,最终会得到最后的结果,如下图:
我们知道,在整个数据流中,本质上都是一些数字,不同的层次上,设置的权重数值是不一样的,因此每一层处理处的结果也是不一样的,并且会逐步接近最终的结果:
对于最终判定出来的结果,我们还要确定这个结果是否是正确的,这就涉及到了数据集的概念。数据集就是一些已经标记好的数据,比如十万张手写数字图片,每个图片上具体是数字几,要有人工提前标记好,这样,我们通过这个网络得出的结果与人工标记好的结果进行对比,我们就很容易得出这个网络是否是一个有效的网络,这样就可以得出一个分数或正确率,这下图中就是 Loss score:
有了这个 Score 究竟有什么用的?我们假设分数高代表正确率高,那么我认为设置不同权重或参数的网络,最后分数高的参数设置的比分数低的参数设置的更好或更有效,因此我可以认为我通过调整参数,就可以提高最终的正确率,这在很多情况下是一个繁琐无聊简单但是很有意义的工作,一般这种工作作为程序员都会把它交给系统去做,这就引出了下面的模型,即反馈信号,我把最终的结果反馈给中间层的参数去进行调参,直到最终的结果达到预期要求或阈值,这时的参数就是满足需求的参数,要固定下来,这就是网络训练出来的模型,下次拿来一张图片,在这个模型下,得出的结果,就有 Loss score 概率是正确的。
上面这个过程,就是典型的深度学习网络工作过程原理。对于一个网络,我们最初设置的参数是一个随机的值,大量的数据输入网络,网络通过反馈的机制,就会训练出一个效果还不错的模型。这样我们就可以理解一个问题,为什么神经网络是在近些年才大规模发展起来的,因为我们以前没有足够“好”的数据,近些年随着互联网的飞速发展,尤其是一些巨头公司,掌握着海量的优质数据,则进行学习训练出的模型自然会更加有效,同时由于这个过程繁琐而运算量极大,因此也是近些年硬件性能提高后提供了条件。
一般情况下,进行深度学习的网络叫做神经网络,这明显是一个生物学上的词汇,但其实人类大脑的思考过程与计算机中的神经网络,并没有那么明显的相像之处,这个问题就不深究了,了解一下就好了。
现在你理解了什么叫深度学习了吗?理解什么叫神经网络了吗?
公众号原文