网站建设最基础是什么,沈阳seo排名优化教程,营销网站开发渠道有哪些,页面优化的方法文章目录 1 神经网络组成2 神经网络的优化2.1 反向传播算法 BP算法2.2 梯度下降算法2.3 训练中可能会遇到的问题2.3.1 如何避免过拟合#xff1f;2.3.2 如何避免到局部最小#xff1f;2.3.3如何避免梯度消失和梯度爆炸 #xff1f; 3 常见的一些神经网络3.1 感知机#xff… 文章目录 1 神经网络组成2 神经网络的优化2.1 反向传播算法 BP算法2.2 梯度下降算法2.3 训练中可能会遇到的问题2.3.1 如何避免过拟合2.3.2 如何避免到局部最小2.3.3如何避免梯度消失和梯度爆炸 3 常见的一些神经网络3.1 感知机Perceptron3.2 多层前馈神经网络3.3 其他 神经网络是一种模仿人脑神经元网络结构和功能的数学模型其中非常重要的一部分是有激活函数。 激活函数模拟了生物神经元的兴奋性质。在生物神经系统中神经元接收到足够的刺激时会被激活并产生电信号传递给其他神经元。激活函数在神经网络中的作用类似它根据输入信号的加权和是否超过了某个阈值来决定神经元是否被激活以及激活的程度。这种非线性的激活特性使得神经网络能够学习和表示复杂的非线性关系增强了神经网络的表达能力。
有了激活函数从某种意义来说就可以解决非线性问题了。这在实际中有着非常重要的意义
1 神经网络组成
神经网络被广泛应用于机器学习和人工智能领域。神经网络由多个神经元组成这些神经元分布在不同的层中每一层都可以包含多个神经元。
神经元是神经网络的基本组成单元模仿人类大脑中的神经元。每个神经元接收来自其他神经元的输入信号并产生一个输出信号这个输出信号可以传递到其他神经元。神经元包括三个主要部分 输入权重Weights每个输入都与一个权重相关联权重决定了输入信号的重要性。 求和器Summation输入和对应的权重相乘后求和加上一个偏置项bias。 激活函数Activation Function对求和结果进行非线性转换产生神经元的输出。
对于激活函数我们常见的有阶跃函数但由于它不连续不光滑所以更常用的是Sigmod函数Relu函数 Sigmoid 函数将输入值压缩到 (0, 1) 范围内常用于输出层。 $\sigma(x) \frac{1}{1 e^{-x}} $ ReLU 函数Rectified Linear Unit当输入大于 0 时输出等于输入否则输出为 0。 ReLU ( x ) max ( 0 , x ) \text{ReLU}(x) \max(0, x) ReLU(x)max(0,x) Tanh 函数将输入值压缩到 (-1, 1) 范围内比 Sigmoid 函数具有更陡的曲线。 tanh ( x ) e x − e − x e x e − x \text{tanh}(x) \frac{e^x - e^{-x}}{e^x e^{-x}} tanh(x)exe−xex−e−x
多个神经元组成神经网络的输入层、隐藏层和输出层。
输入层Input Layer接收外部输入的数据将数据传递给下一层神经元。隐藏层Hidden Layer在输入层和输出层之间的层负责对输入数据进行加工和处理提取数据的特征。输出层Output Layer输出最终的结果可以是分类、回归等任务的输出。
2 神经网络的优化
网络基本搭建好之后就会有参数
我们该如何去对这些参数进行调整呢
2.1 反向传播算法 BP算法
反向传播(backward propagation简称 BP)指的是计算神经网络参数梯度的方法。其原理是基于微积分中的链式规则按相反的顺序从输出层到输入层遍历网络依次计算每个中间变量和参数的梯度。
反向传播往往需要基于正向传播一起使用
2.2 梯度下降算法
梯度下降算法的基本思想是沿着函数梯度的反方向调整参数以达到函数的最小值。如果是求最大值则沿着梯度的方向调整参数。梯度表示函数在某一点的变化率梯度的反方向即函数下降最快的方向。
就是向着负梯度的方向下降而这个梯度我们已经通过2.1BP算法算出来了
算法步骤 初始化参数选择合适的初始参数值。 计算梯度计算损失函数关于参数的梯度。 更新参数沿着梯度的反方向更新参数。 θ θ − α ∇ J ( θ ) \theta \theta - \alpha \nabla J(\theta) θθ−α∇J(θ) 其中 θ \theta θ 是参数 a l p h a alpha alpha 是学习率控制参数更新的步长 ∇ J ( θ ) \nabla J(\theta) ∇J(θ) 是损失函数关于参数的梯度。 学习率是梯度下降算法中一个重要的超参数控制参数更新的步长。如果学习率过大可能会导致参数在最优值附近震荡无法收敛如果学习率过小可能会导致收敛速度过慢需要更多的迭代次数。 重复迭代重复步骤 2 和步骤 3直到满足停止条件如达到最大迭代次数、损失函数变化小于阈值等。
基于这个的常见的变种
随机梯度下降Stochastic Gradient Descent, SGD每次迭代随机选择一个样本计算梯度用于大规模数据集。批量梯度下降Batch Gradient Descent在整个数据集上计算梯度适用于小规模数据集。小批量梯度下降Mini-batch Gradient Descent综合了批量梯度下降和随机梯度下降的优点每次迭代随机选择一小部分样本计算梯度。
2.3 训练中可能会遇到的问题
2.3.1 如何避免过拟合 数据集扩增Data Augmentation增加训练数据的多样性可以通过旋转、翻转、缩放等方式对数据进行扩充使模型更加鲁棒。 正则化Regularization在损失函数中加入正则化项限制模型参数的大小防止模型过于复杂。常见的正则化方法包括 L1 正则化和 L2 正则化。 早停Early Stopping在训练过程中监控模型在验证集上的表现当验证集上的性能不再提升时停止训练防止模型在训练集上过拟合。
2.3.2 如何避免到局部最小
想要避免局部最小基本思想是从局部最小跳出或者增大随机性 使用随机化随机化初始参数值或随机选择样本顺序可以使算法更有可能跳出局部最小值。 模拟退火Simulated Annealing模拟退火算法通过在早期接受更大的跳跃来避免陷入局部最小值随着优化过程的进行逐渐减小跳跃的幅度使得算法更趋向于在全局范围内搜索最优解。 遗传算法Genetic Algorithm遗传算法通过模拟生物进化的过程使用交叉、变异等操作来生成新的解并根据适应度函数选择优秀的解可以有效地避免陷入局部最小值。
2.3.3如何避免梯度消失和梯度爆炸
使用合适的激活函数选择合适的激活函数可以缓解梯度消失和梯度爆炸问题。常用的激活函数如ReLU、Leaky ReLU、ELU等可以在一定程度上缓解梯度消失问题。使用批量归一化Batch Normalization批量归一化可以将每一层的输入归一化到均值为0、方差为1的分布有助于缓解梯度消失和梯度爆炸问题同时加速网络的收敛速度。使用梯度裁剪Gradient Clipping在反向传播过程中对梯度进行裁剪限制梯度的大小可以避免梯度爆炸问题。使用适当的权重初始化方法合适的权重初始化可以帮助避免梯度消失和梯度爆炸问题。比如使用Xavier初始化、He初始化等。减小网络深度过深的网络容易出现梯度消失和梯度爆炸问题可以考虑减小网络深度或者使用残差连接Residual Connection来缓解这个问题。使用梯度检查在训练过程中可以定期检查梯度的大小如果发现梯度出现异常值可以及时调整学习率或采取其他措施。
3 常见的一些神经网络
3.1 感知机Perceptron
感知机是一种简单的神经网络模型由美国科学家 Frank Rosenblatt 在 1957 年提出。它由单个神经元组成只包含输入层和输出层没有隐藏层。感知机的工作原理是将输入的特征值和对应的权重相乘后求和再经过激活函数处理最终输出结果。感知机适用于简单的线性分类问题。
但是由于感知机只有输出层神经元进行激活处理即只拥有一层功能神经网络因而不能很好处理非线性问题所以更多使用的是多层前馈神经网络
3.2 多层前馈神经网络
其实比起感知机多层前馈无非就是多了一些隐藏层
它包含一个输入层、一个或多个隐藏层以及一个输出层每个层都由多个神经元组成神经元之间没有同层连接只有跨层连接。信息在网络中从输入层经过隐藏层逐层传递最终到达输出层每一层的输出作为下一层的输入没有反馈回路。
3.3 其他
上面两种应用比较多但实际上还有
RBF网络换了一个激活函数启发我们在激活函数上选取可能有不同的更优的结果
ART网络和SOM网络他们都是一种竞争性的无监督学习的网络竞争性很有启发性
级联相关网络即自适应地产生网络结构我觉得这个思想也非常厉害
Elman神经网络允许网络中出现环形结构可以有反馈哈哈哈这个也很有趣
但是以上几种网络说实话最近都不怎么见了只能说我们汲取他们的结构思考看看可不可以给我们后面网络结构的改进做出一些启发