一、什么是人工智能

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。

讲人工智能之前我们先了解一下什么是人工神经网络:我们人类大脑中的神经网络是受到大脑结构的启发而创造出来的,在我们的大脑中,有数十亿个称为神经元的细胞,它们连接成了一个神经网络。

在这里插入图片描述

而人工神经网络正是模仿了上面的网络结构。下面是一个人工神经网络的构造图。每一个圆代表着一个神经元,他们连接起来构成了一个网络。

在这里插入图片描述

人类大脑神经元细胞的树突接收来自外部的多个强度不同的刺激,并在神经元细胞体内进行处理,然后将其转化为一个输出结果。人工神经元也有相似的工作原理。如下图所示。

在这里插入图片描述

上图中的x是人工神经元的输入,相当于人脑神经元受到了多个外部刺激。w是每个输入对应的权重,它影响着每个输入x的刺激强度。网络构建好了以后,我们只需要负责不停地将训练数据输入到人工神经网络中,它内部就会自己不停地发生变化不停地学习。打个比方,我们想要训练一个深度神经网络来识别狗。我们只需要不停地将🐶的图片输入到神经网络中去。训练成功后,我们任意拿来一张新的图片,它都能判断出里面是否有狗。但我们并不知道他的分析过程是怎样的,它是如何判断里面是否有狗的。就像当我们教小孩子认识狗时,我们拿来一条哈士奇,告诉他这是狗,拿来一条柴犬,告诉他这也是狗,他脑子里会自己不停地学习🐶的特征。最后我们拿来一条牧羊犬,问他,他会告诉你这也是狗。但他是怎么知道的?他脑子里的分析过程是怎么样的?我们无从知道~~

二、数据是怎么喂入神经网络的呢

假定待输入的数据是一张图像。为了存储图像,计算机要存储三个独立的矩阵(矩阵可以理解成二维数组),这三个矩阵分别与此图像的红色、绿色和蓝色相对应(世界上的所有颜色都可以通过红绿蓝三种颜色调配出来)。如果图像的大小是64 * 64个像素(一个像素就是一个颜色点,一个颜色点由红绿蓝三个值来表示,例如,红绿蓝为255,255,255,那么这个颜色点就是白色),所以3个64 * 64大小的矩阵在计算机中就代表了这张图像,矩阵里面的数值就对应于图像的红绿蓝强度值。上图中只画了个5 * 4的矩阵,而不是64 * 64,为什么呢?因为没有必要,搞复杂了反而不易于理解。

为了更加方便后面的处理,我们一般把上面那3个矩阵转化成1个向量x(向量可以理解成1 * n或n * 1的数组,前者为行向量,后者为列向量,向量也会在后面的文章专门讲解)。那么这个向量x的总维数就是64 * 64 * 3,结果是12288。在人工智能领域中,每一个输入到神经网络的数据都被叫做一个特征,那么上面的这张图像中就有12288个特征。这个12288维的向量也被叫做特征向量。神经网络接收这个特征向量x作为输入,并进行预测,然后给出相应的结果。

对于不同的应用,需要识别的对象不同,有些是语音有些是图像有些是传感器数据,但是它们在计算机中都有对应的数字表示形式,通常我们会把它们转化成一个特征向量,然后将其输入到神经网络中。

三、人工神经网络是如何进行预测的呢

上面我们已经讲了如何将数据输入到神经网络中。那么神经网络是如何根据这些数据进行预测的呢?我们将一张图片输入到神经网络中,神经网络是如何预测这张图中是否是狗的呢?

这个预测的过程其实只是基于一个简单的公式:z = dot(w,x) + b。

上面公式中的x代表着输入特征向量,假设只有3个特征,那么x就可以用(x1,x2,x3)来表示。如下图所示。w表示权重,它对应于每个输入特征,代表了每个特征的重要程度。b表示阈值[yù zhí],用来影响预测结果。z就是预测结果。公式中的dot()函数表示将w和x进行向量相乘。我们现在只需要知道上面的公式展开后就变成了z = (x1 * w1 + x2 * w2 + x3 * w3) + b。

那么神经网络到底是如何利用这个公式来进行预测的呢?下面我通过一个实例来帮助大家理解。

假设周末即将到来,你在考虑自己要不要去南京的夫子庙转一转。这时我们要预测你最终的决定是去还是不去。夫子庙景点离地铁站的距离,夫子庙景区各类小吃对你的诱惑,还有当天的天气情况都会影响你最终的决定。这时我们可以把这3个因素看作是3个输入特征。那你到底会不会去呢?你的个人喜好——你对上面3个因素的重视程度——会影响你的决定。这3个重视程度就是3个权重。

如果你觉得地铁远近无所谓,并且很想去吃小吃,同时看天气预报当天的天气很好,那么我们将预测你会去夫子庙。这个预测过程可以用我们的公式来表示。我们假设结果z大于0的话就表示会去,小于0表示不去。又设阈值b是-5。又设3个特征(x1,x2,x3)为(0,0,1),最后一个是1,它代表了好天气。又设三个权重(w1,w2,w3)是(2,2,7),最后一个是7表示你很喜欢好天气。那么就有z = (x1 * w1 + x2 * w2 + x3 * w3) + b = (0 * 2 + 0 * 2 + 1 * 7) + (-5) = 2。预测结果z是2,2大于0,所以预测你会去夫子庙。

如果你对当天天气情况很在意,并且对其它两个因素并不在意,那么我们预测你将不会去夫子庙。这同样可以用我们的公式来表示。设三个权重(w1,w2,w3)是(2,7,2),w2是7表示你对天气情况很在意。那么就有z = (x1 * w1 + x2 * w2 + x3 * w3) + b = (0 * 2 + 0 * 7 + 1 * 2) + (-5) = -3。预测结果z是-3,-3小于0,所以预测你不会去。

预测图片里是不是狗也是通过上面的公式。经过训练的神经网络会得到一组与狗相关的权重。当我们把一张图片输入到神经网络中,图片数据会与这组权重以及阈值进行运算,结果大于0就是狗,小于0就不是狗。

最后再稍微提一下激活函数。在实际的神经网络中,我们不能直接用逻辑回归。必须要在逻辑回归外面再套上一个函数。这个函数我们就称它为激活函数。激活函数非常非常重要,如果没有它,那么神经网络的智商永远高不起来。而且激活函数又分好多种,这个我们后面再讲。
详细教程请大家关注微信公众号“程序员唐丁”。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐