AI技术入门学习(一):什么是神经网络?它是如何运作的?
一、神经网络因何而生?
神经网络,是计算机技术基于生物学技术提出的理念。
很多文章会重点强调这种计算模型是受到人类大脑结构和功能的启发,但不止于此,其实这种计算模型与人类视觉系统关系也非常大。
人类视觉系统非常复杂,包含数亿个神经元和连接,举个例子来说,在我们的认知领域,识别手写数字很容易,但这项工作对计算机程序来说却非常困难。
如图例,人会先通过视觉去看到数字,然后迅速传导到大脑进行辨析,输出结论——这是数字5。
即使这些5的长相各异,但人类出于某些原因仍能够精准判断,比如认识第一个5,自然而然对后续的符号产生联想,理解后续的符号都是数字,然后归类于5。
或者比如第三个5,独立去看,奇形怪状的,但若某人曾看见过某个5是这样书写的,也会自然而然将其认识为5。
识别手写数字并不容易,但人类非常擅长理解视觉所见,这种辨析往往在几分之一秒就不知不觉地完成。因此,我们通常不会意识到我们的视觉系统解决的问题有多复杂。
但对于计算机来说,这是一个全新的领域,计算机没有所谓的“视觉神经”,摄像头起到的作用仅仅是“看”而不是“迅速地想”,那么,该如何识别这个手写数字为5呢?
这就是神经网络所解决的问题,神经网络是存在于计算机中的、模拟了人类判断辨析事物的方法的运算集合,它可以依据这种运算能力去处理和模拟复杂的问题,如图像识别、语音识别、自然语言处理等。
这也是为什么AI会可以替代人,因为它的技术基础——神经网络,就是在模仿人。
二、神经网络是什么?其中有什么?
科学家们将人的判断步骤分为三块:输入-分析-输出,所以,神经网络也由输入层、隐藏层(我愿意称之为分析层)和输出层组成。
依据这种阶段的概念,制造出了存在于计算机中的人工神经元,将这些人工神经元,布置在输入层、隐藏层和输出层之中,人工神经元之间交叉着利用函数构建起来的关联线,最终形成了有结构的神经网络。
我会介绍两种重要的人工神经元模型:感知器和S型神经元。
1. 感知器
在输入层,最重要的就是该如何去获取有效信息,并输入到计算机之中。这点我们可以理解为,我们在看到某个事物时,并不是纯粹机械地在“看”,而是有主次意识地在“看”。
依然以这组数字为例,我们在“看”的时候,会重点看黑色的字体“5”,其次关注到周围的“·”以及其与“5”的排列关系,背景的灰色在思维惯性下会被忽视。
但对于计算机来说,如果不进行“感知”而是单纯去看,这张图对于它就是这样的(甚至更夸张一些,但我不知道该如何形容这种虚无):
而感知器的存在,就像是为计算机提供了一种优先级识别的能力。
感知器中会有一套二进制的运算方式,以图片中的各个“元素优先级(权重)”搭配“是/否判断”,来达成“识别感知”的目的。
比如,以上面的数字图为基础,感知器会这样帮助计算器识别图片中有文字。
中间的圆圈就是感知器,而在这个过程中,“黑色”和“线条”都要经过感知器的“是/否判断”,并且还会对应权重,比如“线条”的权重就应该略高于“黑色”,因为图中还有非线条的“·”存在,如果单纯以黑色为判断基础,“·”也会被定义为“数字”。
这就是感知器的工作原理。
当然,实际层面的判断不会如我介绍的这么简单,各种判断条件及权重的交叉是很复杂的,如下图,感知器会接力运行计算,最终输出结果。
这也是为什么会有人说,AI模型很考验“算力”,因为感知器需要在瞬间完成大量判断运算。
这里需要注意的是,感知器只有“单个条件”输出的能力,也就是说,一个感知器最终只会输出一个结果,如图中的这种输出多个结果的形式,是因为下一列的多个感知器都会使用这个感知器输出的同一个结果来进行判断。
2. S型神经元
上文提到的感知器,很容易爆发出一个致命问题:其中细小的一些权重变化,就会对后续结果造成很大影响。那么我们该如何保证最终输出的结果能满足我们的要求呢?
修正偏差。
我们可以利用结果来反向修改权重,就像是工作中经常会做的“复盘”,这会使神经网络表现得如我们所愿。
S 形神经元(Sigmoid神经元)就是这种可以自行复盘的人工神经元,是对早期感知器模型的改进,表面看与感知器很类似,但经过机器自行的复盘修正,其权重和偏差的微小变化仅会导致其输出的微小变化,这也是一直所讨论的机器学习的关键基础——通过不断修正偏差来不断逼近有效结果。
这种修正能力的基础来源于Sigmoid函数,该函数的特点是连续且可微、非线性,具体解释比较复杂,属于数学概念,简单了解一下即可。
连续且可微:“连续且可微”是描述函数性质的两个重要概念,在机器学习中,连续且可微的激活函数(如Sigmoid或Tanh)允许使用基于梯度的优化算法来训练神经网络。
非线性:这个函数使得神经网络能够学习和模拟非线性数据关系,显著扩展了网络的功能和应用范围。它不遵循线性原则,即其输出与输入之间的关系不是简单的、成比例的关系。更具体地说,如果一个函数 𝑓(𝑥)f(x) 对于其变量 𝑥x 的变化不是成倍增加或减少的,那么这个函数就被认为是非线性的。
随着深度学习技术的发展,现在已经有了更多高级的激活函数,如ReLU(Rectified Linear Unit),它们在许多现代深度学习架构中更为常用,但S型神经元依然在神经网络的历史发展中占有重要地位,它激发了其他函数的诞生。
3. 补充信息:前馈神经网络和循环神经网络
前文我们所介绍的,一直都是单向循环的网络结构,从输入-分析-输出的链路完成计算,这被定义为“前馈神经网络”(Feedforward Neural Networks,FFNNs)。
但人脑的结构真的是这样吗?
实际上,目前更接近于人脑的神经网络是循环神经网络(RNN),与传统的前馈神经网络不同,循环神经网络会通过内部状态(或称为细胞状态)来存储先前输入的相关信息,并且允许信息在网络中循环,这意味着网络的当前输出不仅依赖于当前的输入,还可能依赖于之前的输入。而且,神经元不仅接收来自前一层的输入,还可以接收来自同一层的神经元的输入,形成了复杂的循环连接。
循环神经网络目前的影响力不如前馈网络,前馈网络在商业和工业应用中的影响力更大,特别是在图像和视频处理领域。
但循环神经网络在需要处理序列数据和时间依赖性任务的研究和应用中具有重要影响力。随着深度学习技术的不断发展,这两种网络模型都在不断地被改进和优化,以适应更多的应用场景。
三、实战:利用神经网络分析该数字是5
还是以前文提到的数字5为例。
首先,我们可以对数字进行识别,即黑色 线条的概念,将所有数字提取出来。
紧接着,先把数字与数字分隔开,再去分割数字本身。
最终我们得到的数字碎片,会有可判断的属性,也会有对应的权重区分。
我们已经圈定范围为这些线条组成了一个数字,接下来我们需要判断的,就是这个数字到底是几,已知单个数字共有9个,也就是说会输出9种结果,我们以结果反推,每个数字都有对应特征,这些特征就是判断的条件和权重基础,而每一个碎片都会被经历数轮的判断,最终将这些碎片得出的结果再计算,得到结果,如图,我使用了四层神经网络来判断数字碎片的特征,最终导向识别结果,如果加上前面的识别分割,神经网络的结构会更密集:
输出层包含9个神经元。如果第一个神经元激发,即有输出≈1,就表明该神经网络认为该数字是0。
当然,虽然我是这么设计的,但这一切都只是一种启发。没有说明识别数字的神经网络必须按照我描述的方式运行,也不一定是四层结构,这只是一种基于实例所做的思维方式的延伸。
四、训练神经网络:梯度下降算法
基于前文,我们已经基本了解了神经网络的概念和架构逻辑。那么,神经网络如何才能更精准地达成我们想要达成的目标?我们如何避免神经网络的最终计算结果不出现偏差?
答案就是不断训练它。
在训练中测试,以最小化成本在测试中尽快找到权重和偏差并进行修正,使结果无线趋近于正确,即使初始结果不佳,通过调整参数,依然可以逐步提高神经网络的性能。
业内会用“成本函数”(也称为损失函数或目标函数)的概念来衡量网络输出与实际值之间的差异,梯度下降算法是一种强大的优化工具,它在机器学习和深度学习中用于最小化成本函数,从而找到模型参数的最佳值。
梯度下降不仅用于神经网络,还用于线性回归、支持向量机等多种机器学习算法,是许多高级优化技术的基础,也是机器学习中的一个核心概念,理解并掌握它对于构建和优化预测模型至关重要。
这个概念比较复杂,所以我用一个比喻来解释:想象你站在一座山的山顶,并想要到达山谷的最低点。由于你只能看到周围的一小段距离,你通过观察周围地形的斜率(即梯度)来决定每一步的移动方向。你总是朝着斜率最陡峭的下降方向走,这样就能逐渐走到山谷的最低点。
在这个比喻中,山的高度代表成本函数的值,而你的位置代表神经网络的参数(权重和偏差)。
成本函数越低,山越低,你到达山谷最低点的成本就越低,而梯度下降算法则是在这个过程中的作用,就是帮你加速度到达山谷最低点,进一步降低成本。
如何操作梯度下降:
- 初始化参数:为模型的权重和偏差选择初始值,通常这些值是随机的。
- 定义损失函数:选择一个能够量化模型预测与实际结果差异的损失函数,如均方误差(MSE,它计算了预测值与实际值之间差的平方的平均)。
- 计算梯度:计算损失函数相对于每个参数的梯度,即偏导数,这指示了损失函数在参数空间中增加最快的方向。
- 更新参数:根据梯度和预设的学习率,更新每个参数。更新的方向是梯度的相反方向,因为我们要减少损失。
- 迭代过程:重复步骤3和4,直到损失函数的值收敛到一个较小的值,或者达到预设的迭代次数。
- 学习率调整:学习率决定了每次更新参数的步长。可能需要根据模型的学习情况调整学习率。
- 随机梯度下降:在实际应用中,为了提高效率,通常使用随机梯度下降,即每次更新只使用一个小批量的训练数据来计算梯度。
- 监控和调试:在训练过程中监控损失函数的值,确保它在下降而不是增加。如果损失函数没有下降,可能需要调整学习率或检查模型是否有其他问题。
在很多情况下,简单的学习算法 良好的训练数据>=复杂算法,所以机器训练是非常重要的。
五、总结
通过将复杂问题分解为多个简单的子问题,我们就可以构建一个神经网络。其中每一层网络的回答都简单具体,我们是通过多个层次的网络叠加来解决复杂问题的。
而深度学习技术则是神经网络实现真正飞跃的重点,允许神经网络自动从训练数据中学习该如何调整权重和偏差,并进行基于梯度下降算法进行快速调整,是AI技术得以铺开在各个领域的重要基础。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!