海山数据库(He3DB)+AI:(一)神经网络基础

文章目录

    • [1 引言](#1 引言)
    • [2 基本结构](#2 基本结构)
      • [2.1 神经元](#2.1 神经元)
      • [2.2 模型结构](#2.2 模型结构)
    • [3 训练过程](#3 训练过程)
      • [3.1 损失函数](#3.1 损失函数)
      • [3.2 反向传播](#3.2 反向传播)
      • [3.3 基于梯度的优化算法](#3.3 基于梯度的优化算法)
    • [4 总结](#4 总结)

1 引言

神经网络可以被视为一个万能的拟合器,通过深层的隐藏层实现输入数据到输出结果的映射。神经网络的思想源于对大脑的模拟,在其发展过程中历了三大浪潮:感知器时代(1940s-1960s)、BP算法时代(1980-1995))和深度学习时代(2006-至今)。在深度学习时代,随着众多研究学者的投入和硬件的发展,从结构较为简单的前馈神经网络,到针对图像数据的卷积神经网络,到处理序列数据的循环神经网络,再到捕捉长距离依赖的transformer,神经网络在多个任务上展现出强大的生命力。2022年,基于transformer架构的ChatGPT的出现,掀起了一场大模型浪潮,在大数据、大参数量的训练下,模型产生了涌现现象,在语言理解、逻辑推理等能力上展现惊艳的能力。本文以最简单的前馈神经网络(Feed Forward Neural Network,FFNN)为例,首先介绍神经网络的基本框架,然后介绍模型的训练过程,为本系列奠定基础。

2 基本结构

2.1 神经元

神经元是构成前馈神经网络的基本组件,其基本原理是通过对输入进行加权、激活,实现信息的非线性处理和传递,一个神经元的结构如图1所示,其数学表达式如公式1所示。


图1 神经元

h w , b ( x ) = f ( w T x + b ) (1) h_{w,b}(x)=f(w^Tx+b) \tag{1} hw,b(x)=f(wTx+b)(1)

加权:对于输入的多个信号,每个信号都关联了一个权重,该权重反映了输入信号对于输出的重要性。该权重在初始时被随机初始化,权重的值即模型训练的目的。对输入信号进行加权和偏置计算后,得到线性组合结果。

激活 :激活将线性转化为非线性,使得能够拟合更复杂的函数。ReLu函数是最常用的激活函数之一,其数学表达式如公式2所示,当输入大于0时,输出不变,当输入小于0时,输出为0。ReLu函数以非常简单的方式增加了网络的非线性,具有易于求导的优点,使得模型在训练时具有较快的速度。
R e L u ( x ) = m a x ( 0 , x ) (2) ReLu(x) =max(0,x)\tag{2} ReLu(x)=max(0,x)(2)

2.2 模型结构

基于单个神经元,即可构建模型。前馈神经网络主要可分为三个部分:输入层、隐藏层和输出层,如图2为一个较简单的前馈神经网络:


图2 一个简单的神经网络

输入层:与外界数据的直接接口,接收并传递数据到网络的下一层。

隐藏层:隐藏层可以有多层,每层中可以设置多个神经元。隐藏层实现对输入数据的特征提取,在学习过程中不断调整神经元的权重和偏置值,寻找输入数据到输出结果的最优表示。

输出层:网络的最后一层,给出最终的预测结果。输出层的结构与具体任务相关,在分类任务中,一般使用softmax函数得到概率分布,在回归任务中,可直接计算预测值。(分类任务对应离散,回归任务对应连续。)

从数学表达式来看,隐藏层的输出如公式3所示:
h i = σ ( w 1 i 1 × x 1 + w 2 i 1 × x 2 + b ) (3) h_i = \sigma (w_{1i}^1\times x_1 + w_{2i}^1\times x_2+b)\tag{3} hi=σ(w1i1×x1+w2i1×x2+b)(3)

输出层的输出公式如公式4所示:
y i = σ ( w 1 i 2 × h 1 + w 2 i 2 × h 2 + w 3 i 2 × h 3 + w 4 i 2 × h 4 + b ) (4) y_i = \sigma (w_{1i}^2\times h_1 + w_{2i}^2\times h_2+ w_{3i}^2\times h_3 + w_{4i}^2\times h_4 + b)\tag{4} yi=σ(w1i2×h1+w2i2×h2+w3i2×h3+w4i2×h4+b)(4)

公式3和公式4即模型前向计算的过程。

3 训练过程

训练过程即通过大量的数据样本,对模型中的权重及偏置参数进行学习,实现输入数据到输出结果的最优表示。

在模型的训练过程中,还包括三个部分:损失函数、反向传播算法和最优化方法。损失函数,又称为代价函数,反映了模型预测结果到目标结果之间的差值。反向传播算法基于损失函数计算网络中所有权重参数的梯度,这个梯度反馈给最优化方法,用来更新权重以最小化损失函数,使得预测结果不断接近目标结果。

3.1 损失函数

根据具体任务选择损失函数。在回归任务中,常用的损失函数有均方差损失函数,在分类任务中,常用的损失函数有交叉熵损失函数。

均方差损失函数: 计算预测值和目标值之间差值的平方和,来衡量预测的准确性,如公式5所示。
M S E = 1 N ∑ ( y i − y ^ i ) 2 (5) MSE = \frac{1}{N}\sum(y_i-\hat{y}_i)^2\tag{5} MSE=N1∑(yi−y^i)2(5)

其中, y i y_i yi为目标值, y ^ i \hat{y}_i y^i为预测值, N N N为样本数量。

交叉熵损失函数: 交叉熵损失函数衡量预测结果的概率分布和真实标签的的差异,如公式6所示。
C E = − 1 N ∑ i = 1 N [ y i ln ⁡ y ^ i + ( 1 − y i ) ln ⁡ ( 1 − y ^ i ) ] (6) CE=-\frac{1}{N} \sum_{i=1}^{N}\left[y_{i} \ln \hat{y}i+\left(1-y{i}\right) \ln (1-\hat{y}_i)\right]\tag{6} CE=−N1i=1∑N[yilny^i+(1−yi)ln(1−y^i)](6)

其中, y i y_i yi为真实标签, y ^ i \hat{y}_i y^i为预测的概率分布, N N N为样本数量。

3.2 反向传播

假设使用如图1所示的神经网络,损失函数为公式1,那么基于链式法则可以计算出神经网络中每一个参数的梯度。

(1)输出层的梯度
∂ C E ( W , b ) ∂ w ( 2 ) = ∂ C E ( W , b ) ∂ y ∂ y ∂ w ( 2 ) \frac{\partial CE(W, b)}{\partial w^{(2)}} = \frac{\partial CE(W, b)}{\partial y}\frac{\partial y}{\partial w^{(2)}} ∂w(2)∂CE(W,b)=∂y∂CE(W,b)∂w(2)∂y

(2)隐藏层的梯度

∂ C E ( W , b ) ∂ w ( 1 ) = ∂ C E ( W , b ) ∂ y ∂ y ∂ h ∂ h ∂ w ( 1 ) \frac{\partial CE(W, b)}{\partial w^{(1)}} = \frac{\partial CE(W, b)}{\partial y}\frac{\partial y}{\partial h}\frac{\partial h}{\partial w^{(1)}} ∂w(1)∂CE(W,b)=∂y∂CE(W,b)∂h∂y∂w(1)∂h

在更深的神经网络中,可通过递推由后一层的梯度计算出前一层的梯度,梯度从后往前进行计算,因此称为反向传播。

3.3 基于梯度的优化算法

在最优化问题中,可分为凸优化和非凸优化,其中凸优化可寻找到全局最优解,非凸优化问题复杂难以求解,只有通过各种策略和方法寻找近似解和局部最优解。神经网络的优化问题属于非凸优化问题,常用的优化算法有最速梯度下降法。由反向传播算法得到了每个参数的梯度,梯度反映了参数的调整方向,优化算法基于这些梯度,对权重值进行调整,使得损失值下降,预测值不断接近目标值。

最速下降法的步骤如下:

1.参数初始化:选择初始参数值 x ( 0 ) x(0) x(0),可以是随机的或根据问题特点进行初始化。设定终止精度ε>0,以及迭代次数;

2.计算梯度:由反向传播算法得到梯度;

3.更新参数:取负梯度为下降方向(正梯度为损失值增长的方向),设置步长 α \alpha α(或学习率),沿着该方向移动步长;

4.阈值判断:如果所有W,b的变化值都小于停止迭代阈值ϵ,则跳出迭代循环,否则进入步骤2;

4.输出结果:输出最终的权重参数。

4 总结

本文介绍了一种较为简单的前馈神经网络,介绍其基本组件、模型结构、前向计算流程,并简单介绍了模型的训练原理。前馈神经网络是大多数深度模型的基石,在此基础上演化出更加结构更加复杂的深度模型,如在前馈神经的网络的基础上根据图像数据的特征,使用稀疏交互、等变表示和参数共享的思想设计出卷积神经网络。在transformer中,前馈神经网络被用来实现用自注意力机制,捕捉输入序列中的长程依赖关系,并更好地理解输入序列中的语义信息。

相关推荐
AI_NEW_COME36 分钟前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室1 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself1 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
IT古董2 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
centurysee2 小时前
【最佳实践】Anthropic:Agentic系统实践案例
人工智能
mahuifa2 小时前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai
四口鲸鱼爱吃盐2 小时前
Pytorch | 从零构建GoogleNet对CIFAR10进行分类
人工智能·pytorch·分类
落魄君子2 小时前
ELM分类-单隐藏层前馈神经网络(Single Hidden Layer Feedforward Neural Network, SLFN)
神经网络·分类·数据挖掘
蓝天星空2 小时前
Python调用open ai接口
人工智能·python
睡觉狂魔er2 小时前
自动驾驶控制与规划——Project 3: LQR车辆横向控制
人工智能·机器学习·自动驾驶