第一章——人工智能简介

发布于:2024-05-06 ⋅ 阅读:(26) ⋅ 点赞:(0)

在这里插入图片描述

在仅仅只学完一篇文章后,你肯定依然感觉朦胧,这是正常的,因为不可能用一篇文章就把神经网络给讲清楚了。在这里插入图片描述

人工智能,就像在科幻电影中所展示的那样,是让机器像人类一样进行思考和行动的能力。自从人工智能这个概念在1956年首次提出以来,科学家们一直在探索各种方法来实现它。这些方法包括专家系统、决策树、归纳逻辑和聚类等,但都被认为是"假智能",因为它们的内部分析过程是可解释的,就像是一系列程序的执行。
直到人工神经网络技术的出现,才使机器真正具备了"真智能"。人工神经网络的内部结构像黑盒子一样,就像人类的大脑一样,我们无法准确地理解它们的内部工作原理。这使得机器能够像人类一样识别图像、打败围棋世界冠军等任务,但我们并不清楚它们是如何做到的。
这种无法理解的黑盒子特性让人们对人工智能的未来充满了不确定性和担忧。一些安全协会已经成立,以防范可能由人工智能带来的潜在风险,因为人工智能有可能在某一天认为人类不应该存在于这个世界上,而采取行动来消除我们。

1. 什么是神经网络

人工神经网络是受到人类大脑结构的启发而创造出来的,这也是它能拥有真智能的根本原因。在我们的大脑中,有数十亿个称为神经元的细胞,它们连接成了一个神经网络。

人工神经网络正是模仿了上面的网络结构。下面是一个人工神经网络的构造图。每一个圆代表着一个神经元,他们连接起来构成了一个网络。
在这里插入图片描述
人类大脑神经元细胞的树突接收来自外部的多个强度不同的刺激,并在神经元细胞体内进行处理,然后将其转化为一个输出结果。如下图所示。
在这里插入图片描述
这就是最基本的神经元组成!
上面的x是神经元的输入,相当于树突接收的多个外部刺激。w是每个输入对应的权重,它影响着每个输入x的刺激强度。

训练深度神经网络的过程就叫做深度学习。网络构建好了后,我们只需要负责不停地将训练数据输入到神经网络中,它内部就会自己不停地发生变化不停地学习。打比方说我们想要训练一个深度神经网络来识别猫。我们只需要不停地将猫的图片输入到神经网络中去。训练成功后,我们任意拿来一张新的图片,它都能判断出里面是否有猫。但我们并不知道他的分析过程是怎样的,它是如何判断里面是否有猫的。就像当我们教小孩子认识猫时,我们拿来一些白猫,告诉他这是猫,拿来一些黑猫,告诉他这也是猫,他脑子里会自己不停地学习猫的特征。

2. 基础知识

2.1 如何将数据输入到神经网络中

我们需要弄懂的第一步就是如何将数据输入到神经网络中。例如,在语音识别、人脸识别这些应用中,是如何将语音、人脸输入到神经网络中的?举个例子来给大家介绍如何将女优的图片数据输入到神经网络中。
在这里插入图片描述
补充知识1:

RGB 图像是由红色 R、绿色 G 和蓝色 B三种基本颜色通道组成的图像。每个像素都由这三种颜色的强度组合而成,这三种颜色的强度决定了像素的颜色。这种颜色混合方式源于人眼对光的感知方式,因为人眼能够分辨出红、绿、蓝三种基本颜色。
在 RGB 图像中,每个像素都有一个对应的红色、绿色和蓝色值。通常情况下,这些值的范围是 0 到 255,其中 0 表示没有该颜色的强度,255 表示最大强度。例如,(255, 0, 0) 表示红色,(0, 255, 0) 表示绿色,(0, 0, 255)表示蓝色。
通过在三个颜色通道中调整各自的强度,可以创建出各种各样的颜色。混合不同强度的红、绿、蓝色通道可以产生出几乎所有的可见颜色。
待输入的数据是一张图像。为了存储图像,计算机要存储三个独立的矩阵(矩阵可以理解成二维数组,后面的教程会给大家详细讲解),这三个矩阵分别与此图像的红色、绿色和蓝色相对应(世界上的所有颜色都可以通过红绿蓝三种颜色调配出来)。如果图像的大小是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作为输入,并进行预测,然后给出相应的结果。

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

我们已经知道了数据是如何被输入到神经网络中的。那么神经网络是如何根据这些数据进行预测的呢?我们将一张图片输入到神经网络中,神经网络是如何预测这张图中是目标的呢?

2.2 神经网络是如何进行预测

在这里插入图片描述
我们已经知道了如何将数据输入到神经网络中。那么神经网络是如何根据这些数据进行预测的呢?我们将一张图片输入到神经网络中,神经网络是如何预测这张图中是否有猫的呢??

这个预测的过程其实只是基于一个简单的公式:z = dot(w,x) + b。看到这个公式,完全不用怕
在这里插入图片描述上面公式中的x代表着输入特征向量,假设只有3个特征,那么x就可以用(x1,x2,x3)来表示。w表示权重,它对应于每个输入特征,代表了每个特征的重要程度。b表示阈值,用来影响预测结果。z就是预测结果。公式中的dot()函数表示将w和x进行向量相乘。我们现在只需要知道上面的公式展开后就变成了

举个例子:

假设这次你对地铁距离很在意,因为你很懒得走太远。你也很期待参加音乐节,因为你喜欢音乐,但你对天气并不是特别在意。现在让我们来预测一下你是否会去音乐节。

假设我们的特征向量是 (x1, x2, x3) = (1, 0, 0),表示你在乎地铁距离,但不在乎天气,而且你很期待参加音乐节。权重向量是 (w1, w2, w3) = (4, 1, 3),表示你对地铁距离的重视程度比较高,对音乐节的重视程度也很高,而对天气的重视程度较低。阈值仍然是 -5。

现在我们来计算预测结果:

[ z = (x1 * w1 + x2 * w2 + x3 * w3) + b ] [ = (1 * 4 + 0 * 1 + 0 * 3)+ (-5) ] [ = 4 - 5 ] [ = -1 ]

预测结果 z 小于 0,因此预测你不会去音乐节。因为预测结果小于阈值,这意味着你可能会选择留在家里,而不去参加音乐节,因为地铁距离对你的影响比音乐节的吸引力更大。

我们知道了神经网络是如何进行预测的。那么它又是如何判断自己是否预测正确了的呢?如果发现自己预测错误了,他又是如何从错误中进行学习?

2.3 神经网络如何判断自己预测得是否准确

在这里插入图片描述

神经网络可以通过逻辑回归之类的算法来对输入进行预测。那么神经网络自己如何判断预测结果是
否准确呢?这一步是非常重要的,因为只有知道自己预测结果是否准确,才能够对自身进行调整,好让结果越来越准确,这就是学习的过程。我们人类学习也应该遵循这个道理,如果一个人一直不停的学,但是不验证自己的学习成果,那么有可能学的方向或学习方法都是错的,不停地学但是结果却都白学了。

要验证学习成果,就要判断预测结果是否准确,靠损失函数(loss function)。
下面这个公式是输入的参数进function,得出预测的结果(这个结果仅仅是数值,不代表太多含义)
在这里插入图片描述
如上图。ỳ是预测的结果。上面的i角标指代某一个训练样本(指代某一个训练样本),例如,yi是对
干训练样本xi的预测结果。
第一个公式代表输入的x和b和w进行运算
第二个公式代表将运算的结果送入激活函数内(后面会讲)

👇
在这里插入图片描述
上图是一个损失函数,要知道损失函数的公式是不固定的,你自己创造一个损失函数也可以!
损失函数运算后得出的结果越大,那么预测就与实际结果的偏差越大,即预测精度越不高。理论上你可以用上面的公式作为损失函数–预测结果y与实际结果y的差的平方再乘以二分之一。但是在实践中人们通常不会用它。
解读一下这个公式:有上标的y代表了真实值,没有上标的y代表理想值,相减代表了他们的差值,平方是为了不出现负数,二分之一其实没有太多含义!
在这里插入图片描述
上图这个损失函数是实际中经常使用的。

损失函数在机器学习和深度学习中扮演着至关重要的角色,它是用来度量模型预测结果与实际数据之间的差异程度的函数。从专业的角度来说,损失函数是在模型训练过程中优化的目标函数之一,它提供了一种量化的方法来评估模型的性能。
在监督学习任务中,损失函数通常衡量模型预测值与真实标签之间的差异。通过最小化损失函数,可以使模型的预测结果尽可能地接近真实标签,从而提高模型的准确性和泛化能力。
从概率论的角度来看,损失函数可以看作是衡量模型预测分布与真实分布之间差异的指标。在训练过程中,模型的目标就是不断调整参数,使得损失函数达到最小值,从而使模型的预测分布尽可能地接近真实分布。
理解损失函数的含义和作用对于分析模型的性能、选择合适的优化算法以及调整模型参数具有重要意义。

2.4 神经网络是如何进行学习的

前面已经学过如何将待预测数据输入到神经网络中,也明白了神经网络是如何对这些数据进行预测的,还知道了神经网络是如何判断自己预测得是否准确的。
那么如果结果预测得不准确,是不是要想办法让预测变得准确呢?这个努力让自己预测得更准确的过程就是学习。
我们已经知道,预测得是否准确是由w和b决定的,所以神经网络学习的目的就是要找到合适的w和b。通过一个叫做梯度下降(gradient descent)的算法可以达到这个目的。梯度下降算法会一步一步地改变w和b的值,新的w和b会使损失函数的输出结果更小,即一步一步让预测更加精准。

在这里插入图片描述
在这里插入图片描述
上面的公式是我们之前学到的逻辑回归算法(用于预测),以及损失函数(用于判断预测是否
准确)。结合上面两个公式,输入x和实际结果y都是固定的,所以损失函数其实是一个关于
w和b的函数(w和b是变量)。所谓“学习”或"训练神经网络",就是找到一组w和b,使这
个损失函数最小,即使预测结果更精准。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考文献
[1]周志华.《机器学习》
[2]李航.《统计学习方法(第2版)》
[3]诸葛越、葫芦娃.《百面机器学习》
[4]弗朗索瓦·肖莱.《Python深度学习Q》
[5]伊恩·古德费洛.《深度学习》
[6]谈继勇.《深度学习》
[7]http://www.ai-start.com/dl2017/