当前位置: 首页 > news >正文

深入浅出神经网络:从基础原理到高级应用

第5章 神经网络

更加详细内容可以看这篇文章

5.1 神经元模型

神经网络的基本单元是神经元模型。神经元模拟了生物神经元的行为,通过接收输入信号,进行加权求和,然后经过激活函数输出结果。
在这里插入图片描述

数学上,一个简单的神经元可以表示为:

y = f ( ∑ i = 1 n w i x i + b ) y = f\left(\sum_{i=1}^{n} w_i x_i + b\right) y=f(i=1nwixi+b)

其中, w i w_i wi是输入 x i x_i xi的权重, b b b是偏置, f f f是激活函数。
在这里插入图片描述

常见的激活函数包括Sigmoid函数、Tanh函数和ReLU函数,它们分别定义为:

Sigmoid ( x ) = 1 1 + e − x \text{Sigmoid}(x) = \frac{1}{1 + e^{-x}} Sigmoid(x)=1+ex1

Tanh ( x ) = tanh ⁡ ( x ) = e x − e − x e x + e − x \text{Tanh}(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} Tanh(x)=tanh(x)=ex+exexex

ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

这些激活函数各有特点,Sigmoid和Tanh函数压缩输入到固定范围内,但容易导致梯度消失问题;ReLU函数则通过简单的线性变换解决了梯度消失问题,但可能导致“死ReLU”现象。

5.2 感知机与多层网络

感知机是最简单的神经网络,由一个或多个神经元构成,它只能解决线性可分的问题。
感知机:两层神经元组成。
在这里插入图片描述

感知机的输出可以表示为:

y = sign ( ∑ i = 1 n w i x i + b ) y = \text{sign}\left(\sum_{i=1}^{n} w_i x_i + b\right) y=sign(i=1nwixi+b)

感知机的局限在于它仅能解决线性可分的问题。为了解决非线性问题,我们引入了多层感知机(MLP)。多层感知机通过引入隐藏层解决了非线性问题。一个两层感知机有输入层、隐藏层和输出层。其数学表示为:

h j = f ( ∑ i = 1 n w i j x i + b j ) h_j = f\left(\sum_{i=1}^{n} w_{ij} x_i + b_j\right) hj=f(i=1nwijxi+bj)

y k = g ( ∑ j = 1 m v j k h j + c k ) y_k = g\left(\sum_{j=1}^{m} v_{jk} h_j + c_k\right) yk=g(j=1mvjkhj+ck)

其中, w i j w_{ij} wij v j k v_{jk} vjk分别是输入层到隐藏层和隐藏层到输出层的权重, b j b_j bj c k c_k ck是偏置项, f f f g g g是激活函数。多层感知机的强大在于其能够通过多个隐藏层的组合,逼近任意复杂的函数。

5.3 误差逆传播算法

误差逆传播算法是训练多层神经网络的核心算法。其目标是通过最小化损失函数来调整网络的权重和偏置。常见的损失函数是均方误差(MSE),定义为:

E = 1 2 ∑ k = 1 K ( y k − t k ) 2 E = \frac{1}{2}\sum_{k=1}^{K} (y_k - t_k)^2 E=21k=1K(yktk)2

其中, y k y_k yk是网络的输出, t k t_k tk是目标值。反向传播通过链式求导法则计算损失函数相对于每个权重的梯度,然后使用梯度下降法更新权重:

w i j : = w i j − η ∂ E ∂ w i j w_{ij} := w_{ij} - \eta \frac{\partial E}{\partial w_{ij}} wij:=wijηwijE

其中, η \eta η是学习率。

详细来说,反向传播算法分为以下几个步骤:

  1. 前向传播:计算每层神经元的输入和输出。
  2. 计算误差:使用损失函数计算输出层的误差。
  3. 反向传播:根据输出层的误差,利用链式求导法则逐层计算每层的误差。
  4. 更新权重:根据计算出的误差和梯度,调整每个权重和偏置。

梯度计算的关键在于链式法则。对于隐藏层的每个权重 w i j w_{ij} wij,其梯度可以表示为:

∂ E ∂ w i j = ∂ E ∂ y k ⋅ ∂ y k ∂ h j ⋅ ∂ h j ∂ w i j \frac{\partial E}{\partial w_{ij}} = \frac{\partial E}{\partial y_k} \cdot \frac{\partial y_k}{\partial h_j} \cdot \frac{\partial h_j}{\partial w_{ij}} wijE=ykEhjykwijhj

通过这种方式,网络能够逐层调整权重,使得损失函数逐渐减小,逼近最优解。

当然,继续补全和详细解释剩下的部分。

5.4 全局最小与局部极小

在训练神经网络的过程中,我们希望找到损失函数的全局最小值,但由于损失函数通常是非凸的,我们可能会陷入局部极小值。解决这一问题的方法包括初始化权重的多次尝试、使用动量(Momentum)方法、以及更复杂的优化算法如Adam优化器。

局部最小值是在某一区域内,函数的取值达到了最小,但是如果将这个区域扩展到定义域上来,那么这个局部最小值就不一定是最小的。

全局最小值,是在定义域内,函数值最小。全局最小一定是局部最小值,但“局部极小 ” 不一定是“全局最小 ”。因此我们的目标是找到 “ 全局最小 ”。

可能存在多个局部极小值,但却只会有一个全局最小值

在这里插入图片描述

动量方法通过引入动量项来加速梯度下降,并减少震荡,其更新规则为:

v t + 1 = γ v t + η ∂ E ∂ w i j v_{t+1} = \gamma v_t + \eta \frac{\partial E}{\partial w_{ij}} vt+1=γvt+ηwijE
w i j : = w i j − v t + 1 w_{ij} := w_{ij} - v_{t+1} wij:=wijvt+1

其中, γ \gamma γ是动量系数,通常设为0.9。动量方法通过保留先前梯度更新的方向,使得参数在正确方向上前进得更快。

Adam优化器结合了动量法和RMSProp方法,通过自适应调整学习率,加速收敛并降低震荡。其更新规则为:

m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ E m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla E mt=β1mt1+(1β1)E
v t = β 2 v t − 1 + ( 1 − β 2 ) ( ∇ E ) 2 v_t = \beta_2 v_{t-1} + (1 - \beta_2) (\nabla E)^2 vt=β2vt1+(1β2)(E)2
m ^ t = m t 1 − β 1 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t} m^t=1β1tmt
v ^ t = v t 1 − β 2 t \hat{v}_t = \frac{v_t}{1 - \beta_2^t} v^t=1β2tvt
w = w − η m ^ t v ^ t + ϵ w = w - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} w=wηv^t +ϵm^t

其中, β 1 \beta_1 β1 β 2 \beta_2 β2是超参数,常设为0.9和0.999, ϵ \epsilon ϵ是一个极小值防止分母为零。

5.5 其他常见神经网络

除了多层感知机,还有许多其他类型的神经网络。

  1. 卷积神经网络(CNN)
    卷积神经网络专注于处理图像数据,通过卷积层提取特征。卷积操作可以表示为:

    ( I ∗ K ) ( x , y ) = ∑ i = 0 m − 1 ∑ j = 0 n − 1 I ( x + i , y + j ) K ( i , j ) (I * K)(x, y) = \sum_{i=0}^{m-1}\sum_{j=0}^{n-1} I(x+i, y+j) K(i, j) (IK)(x,y)=i=0m1j=0n1I(x+i,y+j)K(i,j)

    其中, I I I是输入图像, K K K是卷积核。卷积层通过滑动窗口操作提取局部特征,并通过池化层(如最大池化)进一步减少特征图的尺寸。典型的CNN架构包括卷积层、池化层、全连接层等。

  2. 循环神经网络(RNN)
    循环神经网络用于处理序列数据,通过隐藏层之间的循环连接捕捉时间序列关系。其更新公式为:

    h t = f ( W h h h t − 1 + W x h x t + b h ) h_t = f(W_{hh} h_{t-1} + W_{xh} x_t + b_h) ht=f(Whhht1+Wxhxt+bh)
    y t = g ( W h y h t + b y ) y_t = g(W_{hy} h_t + b_y) yt=g(Whyht+by)

    其中, W h h W_{hh} Whh, W x h W_{xh} Wxh, W h y W_{hy} Why是权重矩阵, h t h_t ht是隐藏状态, x t x_t xt是输入, y t y_t yt是输出。RNN在处理长序列时可能会遇到梯度消失或爆炸问题,常用的变种有长短期记忆网络(LSTM)和门控循环单元(GRU),它们通过引入门机制有效地缓解了这些问题。

  3. 生成对抗网络(GAN)
    生成对抗网络由生成器和判别器组成。生成器通过噪声生成假数据,判别器则用于区分真实数据和假数据。训练过程是一个零和博弈,两个网络互相竞争,使得生成器生成的数据越来越真实。GAN的损失函数为:

    min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z)))] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

    其中, D D D是判别器, G G G是生成器, x x x是真实数据, z z z是噪声。

  4. 自编码器(Autoencoder)
    自编码器用于数据降维和特征学习,由编码器和解码器组成。编码器将输入数据压缩到低维表示,解码器则将低维表示重构为原始数据。自编码器的目标是最小化重构误差:

    L ( x , x ^ ) = ∣ ∣ x − x ^ ∣ ∣ 2 L(x, \hat{x}) = ||x - \hat{x}||^2 L(x,x^)=∣∣xx^2

    其中, x x x是输入数据, x ^ \hat{x} x^是重构数据。常见的变种有稀疏自编码器、去噪自编码器和变分自编码器(VAE)。

总结

神经网络是深度学习的核心,理解其基础构造和训练方法对于掌握现代人工智能技术至关重要。通过以上各章节的详细讲解,我们从神经元模型、感知机、多层网络、误差逆传播算法,到全局最小与局部极小问题,以及不同类型的神经网络,一步步深入了解其原理和应用。希望这些内容能够帮助你更好地理解神经网络的复杂性和强大潜力。


http://www.mrgr.cn/news/57643.html

相关文章:

  • 宝塔面板9.2部署jar之痛
  • 学习threejs,使用THREE.PointCloudMaterial(新版本:THREE.PointsMaterial)样式化粒子
  • Python快速入门教程
  • 代码随想录 -- 贪心 -- 单调递增的数字
  • 论文解读 | ECCV2024 AutoEval-Video:一个用于评估大型视觉-语言模型在开放式视频问答中的自动基准测试...
  • 安全见闻(7)——开阔眼界,不做井底之蛙
  • Redis 哨兵模式
  • 文字识别接口应用场景解析-身份证识别、发票识别API、车牌识别
  • 智能听诊器革新宠物健康监测
  • 快速上手学习API接口和应用开发
  • SAP 数据以0.5为基数向下取整
  • **KAMA指标**,用于衡量股价趋势的一个技术分析指标
  • 【T+】畅捷通T+软件更新补丁提示当前系统中没有安装T+产品
  • pandas_profiling :教你一行代码生成数据分析报告
  • 【002】基于springboot的医护人员排班系统
  • SpringBoot poi-tl通过模板占位符生成word文件
  • 第一批用AI的设计师,已经彻底赚翻了!
  • 网站怎么做的?
  • 【语音转文本新体验】Windows部署Whisper Web结合内网穿透轻松远程转录——“cpolar内网穿透”
  • 【vue2.7.16系列】手把手教你搭建后台系统__selectIcon和svgIcon组件(12)
  • 1024节的由来?程序员节的由来?
  • Springboot网络安全培训平台-计算机毕业设计源码88959
  • R语言笔记(二):向量
  • 基础数据结构——队列(双端队列,优先级队列,阻塞队列)
  • 【MySQL】C语言连接MySQL数据库3——事务操作和错误处理API
  • C++中指针类型、引用类型、值类型