看透深度学习核心思想,三分钟从入门到精通!

当前人工智能经济持续迅猛增长,人工智能工程师薪资水涨船高,这主要得益于深度学习技术在图像识别和语音识别上取得的重大进展,而学习神经网络是熟练掌握深度学习必须经过的一站。本文主要介绍神经网络的基本原理,快速理解原理让你可以利用神经网络做自己想做的idea,这看起来很酷,但实际上却是特别的酷!

大多数人都可以一眼看出它是504192。在我们大脑的每一个半球,都有主要的视觉皮质,它包含了1.4亿个神经元,在这些神经元之间有数百亿的接触。然而人类的视觉不仅仅包含了,而是一系列的视觉皮质,逐步进行更复杂的图像处理。

入门篇---神经元

神经网络技术是对人脑神经系统的模拟,人脑神经系统的主要组成是神经元和数目众多的突触。可以把神经元理解为包含权重的函数,上一个神经元将数据传递给它后,由这个神经元进行计算,根据计算结果,发出相应的电信号,由下一个神经元接受信号再进行计算。经过多层运算后,计算结果被抽象更高层次,最终根据多层神经元的处理,输出一个计算结果。

以上过程是神经元的基本原理,神经网络是对神经元的模仿和扩大,通过多层神经元系统,可以解决现实世界中的非线性问题。

神经网络原理篇

一个完整的神经网络主要由输入层,隐藏层,输出层组成。进行模型训练时,训练集里一条完整的实例经过预处理,变为了一组完整的数据,输入层是这组数据进入神经网络进行训练或测试的入口,在输入层,数据保持不变,但在传入下一个隐藏层之前,需要进行加权运算。

所谓加权运算,就是乘了一个权重参数。比如,一个丈母娘选择一个优秀的女婿,就有她的标准,其中,颜值占比1/10,人品占比7/10,经济实力占比2/10,以上的这几个数字就是权重。那么如果这家的闺女是个白富美,追求者达到了数千之多,无法人工一一挑选,就可以使用神经网络来完成,赋予对应参数以权重,相乘的结果就是女婿的中意指数。

线性VS非线性:

以上这个例子是一个简单的线性函数(y=1/10*x1+7/10*x2+2/10*x3)就可以算出来的,但是一般的实际问题,都不是严格的线性问题。线性可以简单理解为一条直线,一个分类问题,如果用一条直线完成分类任务,那么这就是一个线性问题,对应的解决方案就是线性模型;那么非线性就可以理解为不是直线的线---曲线,比如,如果将下图中的两种颜色的点分为两类,在左图中,用是一条直线进行分割,则这条直线作为一个解决方案就是一个线性模型,它所完成的是线性分割;而右图是不连续的曲线,这显然是一个非线性模型完成的划分。一句话来总结,非线性的最大特征是曲线的出现,线性的最大特征是只有一条直线。

但非线性的本质是特征之间的相互影响。这个应该怎么理解呢?举个例子,房屋面积大小和房子的地段都可以直接影响房价的高低,但是,房子的地段也会影响房子的大小,在三里屯附近一定小户型居多,但在荒郊野外,肯定都是大户型,这种带有直接影响同时还对结果有间接影响的因素,都是线性模型无法表达出来的,但是在非线性模型中可以很容易的进行表达。特征之间不是相互独立的,而是它们有相互作用的。

接下来说说隐藏层,如下图所示,粉红色层是输入层,最后一层是输出层,中间的两层是隐藏层,之所以叫中间这部分为隐藏层,主要是因为它的层数是不确定的,可以是非常深层的网络,也可以只有一层,所以笼统地称为隐藏层,它接受来自输入层的数据,并向输出层输出数据。

隐藏层的主要组成是大量的神经元,每一层都可以定义神经元个数。在上图所示中,隐藏层层数为两层,每层神经元个数为4个。从上一层传过来的参数被存储在本层神经元内,这些数据又经过再次加权运算输入到下一层神经元内。隐藏层可以将网络由线性转换为非线性,这大大增强了生成模型的表达能力。

输出层是将隐藏层的运算结果进行综合加权,最后进行输出的层。

以上简单介绍了神经网络的结构和工作过程,接下来举个例子。

构建以下简单神经网络来完成对房价的预测。现在输入一组数据,中间的隐藏层就相当于四个专家,四位专家接收到来自三个数据与权重的组合,会产生一个来自这位专家的评价,这样的一个专家就相当于一个感知机,可以做出判断,同样是这样,四位专家分别产生各自的评价,最后的输出层将四位专家的评价综合到一起,在输出前经过一个激活函数,激活函数会对输入的数据进行检测,看这个输入是否满足了一定的条件,产生了最终的结果。对于每个专家的工作过程,是相当于一个感知机,感知机只能完成线性的分类,当多个感知机累计在一起时,就可以进行非线性的分类。这个过程就相当于,一个感知机是一条直线,多个感知机就可以产生多条直线,多条直线累计在一起,可以无限逼近于任何一个光滑曲面。这里再对感知机的工作原理介绍一下。

感知机是一类人造神经元,在许多神经网络中,主要的神经元模型是sigmoid神经元。我们将很快的了解什么是sigmoid神经元,但是想要知道为什么sigmoid要这么定义,就需要我们花点时间去了解感知机。

感知机如何工作?一个感知机通过一些二进制的输入,然后产生一个二进制的输出:

在上图中,感知机有三个输入

,通常它可以有更多或者更少的输入。Rosenblatt提出了一个简单的规则来计算输出,它用权重来表示各个输入对输出的重要性。神经元的输出,要么是0要么是1,由权重和权重与参数的积的值是否小于或者大于某一阈值。和权重一样,阈值也是一个实数,它是神经元的一个参数。用代数式表达就是:

以上就是感知机的工作原理。

激活函数本身是非线性的,其他的输入经过激活函数后,也都会变为非线性。

到这里,基本上只是简单介绍了神经网络的基础知识,想了解更多,订阅我,每天都会有更新。

把你看完不懂的地方写在评论区,我将第一时间进行解答,并会根据亲们的建议,精益求精。