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

网站制作成品下载网店怎么开起来

网站制作成品下载,网店怎么开起来,知乎 淘宝网站建设,wordpress获取站点副标题【Python Pytorch】人工神经网络 ANN#xff08;上#xff09; 0. 生物神经网络1. 人工神经网络定义2. 人工神经网络结构2.1 感知机2.2 多层感知机2.3 全连接神经网络2.4 深度神经网络 2. 训练流程※ 数据预处理 (Data Preprocessing) 3. 常见激活函数3.1 Sigmoid / Logisti… 【Python · Pytorch】人工神经网络 ANN上 0. 生物神经网络1. 人工神经网络定义2. 人工神经网络结构2.1 感知机2.2 多层感知机2.3 全连接神经网络2.4 深度神经网络 2. 训练流程※ 数据预处理 (Data Preprocessing) 3. 常见激活函数3.1 Sigmoid / Logistic3.2 ReLU3.3 Tanh3.4 Softmax3.5 LeakyReLU3.6 Softplus3.7 Swish 4. 前向传播4.1 参数初始化4.1.1 基于固定方差4.1.2 基于方差缩放Xavier 初始化He初始化 4.1.3 正交初始化 4.2 矩阵表示 5. 常见损失函数5.1 回归问题5.1.1 平均绝对误差函数 l 1 \mathscr{l_1} l1​ 损失5.1.2 均方差误差函数 l 2 \mathscr{l_2} l2​ 损失5.1.3 Huber误差函数 5.2 分类问题5.2.1 交叉熵误差函数5.3.1 信息量5.3.2 熵5.3.3 相对熵 - KL散度5.3.4 交叉熵 0. 生物神经网络 生物神经网络 (Biological Neural Networks)一般指生物的大脑神经元、细胞、触点等组成的网络用于产生生物的意识帮助生物进行思考和行动。 组成细胞本体、树突、轴突丘、轴突、突触 生物神经元结构 要由细胞体、树突、轴突和突触组成。细胞体包含细胞核是神经元的“控制中心”树突从细胞体延伸出接收来自其他神经元的信号轴突是长纤维用于传递信号到其他神经元或组织突触是神经元之间的连接点通过电信号和化学信号进行信息传递‌。 感知机便是根据生物神经元简单抽象得到的模型。 有些在生物神经网络中的特性在人工神经网络中同样有所体现。 赫布法则如果两个神经元细胞总是同时被激活它们之间的连接就会加强。这种连接强度的变化是‌突触可塑性的结果突触可塑性是指突触连接强度的变化它负责优化神经回路、铭刻记忆以及形成与学习和适应性有关的机制。 凝固短期记忆转化为长期记忆的过程称作凝固凝固现象目前在人工神经网络中还没有对应的概念但人工神经网络存在记忆能力只是其容量有限且根据“喂给”神经网络的数据不同其所记忆的内容不同。 虽然当前神经网络发展已经不仅仅局限于从生物身上学习但模拟生物依旧是研究神经网络的重要方向。 脉冲神经网络 脉冲神经网络Spiking Neural Network,SNN脉冲神经网络是源于生物启发的新一代人工神经网络模型属于深度学习的子集且具有较强的生物基础支撑。 脉冲神经网络其模拟神经元更加接近实际除此之外把时间信息的影响也考虑其中。 脉冲神经网络中的神经元不是在每一次迭代传播中都被激活而在典型的多层感知机网络中却是而是在它的膜电位达到某一个特定阈值才被激活。当一个神经元被激活它会产生一个信号传递给其他神经元提高或降低其膜电位。 自组织神经网络 生物神经网络有一个重要的特点是高度可塑性这使得自然生物体具有卓越的适应性并且这种能力会影响神经系统的突触强度和拓扑结构。 然而人工神经网络主要被设计为静态的、完全连接的结构在面对不断变化的环境和新的输入时可能非常脆弱。尽管研究人员对在线学习和元学习进行了大量研究但目前最先进的神经网络系统仍然使用离线学习因为这与反向传播结合使用时更加简单。 哥本哈根信息技术大学的研究团队提出了一种自组织神经网络 ——LNDP能够以活动和奖励依赖的方式实现突触和结构的可塑性。 1. 人工神经网络定义 什么是人工神经网络 人工神经网络Artificial Neural Network即ANN它从信息处理角度对人脑神经元网络进行抽象 建立某种简单模型按不同的连接方式组成不同的网络。 神经网络是一种运算模型由大量的节点或称神经元之间相互联接构成。每个节点代表一种特定的输出函数称为激活函数activation function。每两个节点间的连接都代表一个对于通过该连接信号的加权值称之为权重这相当于人工神经网络的记忆。 通用近似定理 是人工神经网络的核心。 通用近似定理令 ϕ ( ⋅ ) \phi(·) ϕ(⋅)是一个非常数、有界、单调递增的连续函数 L d L_{d} Ld​是一个 d d d维的单位超立方体 [ 0 , 1 ] d [0,1]^{d} [0,1]d C ( L d ) C(L_{d}) C(Ld​)是定义在 L d L_{d} Ld​上的连续函数集合。对于任何一个函数 f ∈ C ( L d ) f\in C(L_{d}) f∈C(Ld​)存在一个整数m和一组实数 v i , b i ∈ R v_{i},b_{i}\in \mathbb{R} vi​,bi​∈R以及实数向量 w i ∈ R d \mathrm{w}_{i}\in \mathbb{R}^{d} wi​∈Rd i 1 , ⋯ , m i1,\cdots,m i1,⋯,m以至于我们可以定义函数 F ( x ) ∑ i 1 m v i ϕ ( w T x b i ) , F(\mathrm{x})\sum^{m}_{i1}v_{i}\phi(\mathrm{w}^\mathrm{T}\mathrm{x}b_{i}), F(x)i1∑m​vi​ϕ(wTxbi​), 作为函数 f f f的近似实现即 ∣ F ( x ) − f ( x ) ∣ ϵ , ∀ x ∈ L d |F(\mathrm{x})-f(\mathrm{x})|\lt\epsilon,\forall\mathrm{x}\in L_{d} ∣F(x)−f(x)∣ϵ,∀x∈Ld​ 其中 ϵ 0 \epsilon\gt0 ϵ0是一个很小的正数。 上述定理可以被描述为如果前馈神经网络具有至少一个非线性输出层那么只要有足够数量的隐藏层神经元它就可以以任意精度来近似任何一个有限空间到另一个有限维空间的函数。 故神经网络又被称为 万能函数拟合器universal approximator。 由于其内部参数的不可解释性神经网络又被视作一种黑盒模型故训练神经网络又被称作 “数据炼金术”。 ANN属于机器学习中的监督学习算法机器学习范式的详细内容将在后续小节介绍。 2. 人工神经网络结构 2.1 感知机 感知机Perceptron对所有变量进行加权求和并通过函数最终映射到一个单一输出感知机是多层感知机的基本单元也是学习神经网络需要了解的基本概念。 感知机是多层感知机的 组成单元 / 人工神经元多层感知机通过许多互相连接的感知机形成感知机结构如下图所示。 其中 x n x_n xn​表示输入变量 w n w_n wn​表示连接权重 b b b表示偏置/阈值经 Σ \Sigma Σ求和后得到中间值 o o o再经过激活函数 f f f得到输出结果 y y y。 输入变量 x n x_n xn​感知环境的输入端负责输入各种要素连接权重 w n w_n wn​感知机需要学习的变量负责表明各输入要素对最终结果的“贡献”程度偏置 / 阈值 b b b调节因子 / 激活阈值使得感知机更为灵活增强响应能力达到阈值后神经元激活即神经元的激励程度中间值 o o o经过输入层求和的基础结果激活函数 f f f使得感知机输出适应不同的任务类型输出结果 y y y感知机最终输出结果 感知机输出结果计算公式如下 y f ( ∑ i 0 n w i x i b i ) yf(\sum^{n}_{i0}w_{i}x_{i}b_{i}) yf(i0∑n​wi​xi​bi​) 感知机因结构问题无法解决 异或问题(XOR)而多层感知机则可以解决此问题。 其中 ∑ i 0 n w i x i b i \sum_{i0}^{n}w_ix_ib_i ∑i0n​wi​xi​bi​部分称为 仿射 (Affine)激活函数 f ( ⋅ ) f(\cdot) f(⋅)部分称 非线性变换。 仿射变换为两函数的复合 线性映射 平移。假设某线性映射被表示为矩阵 A A A平移被表示为向量 b ⃗ \vec{b} b 仿射向量 y ⃗ \vec{y} y ​可被表示为 y ⃗ A x ⃗ b ⃗ \vec{y}A\vec{x}\vec{b} y ​Ax b 将其视作向量感知机仿射部分可被表示为 y ⃗ W x ⃗ b ⃗ \vec{y}W\vec{x}\vec{b} y ​Wx b 2.2 多层感知机 多层感知机MLP, Multilayer Perceptron一种前馈人工神经网络模型其将输入的多个数据集映射到单一的输出的数据集上。 MLP的每一层都由多个神经元构成神经元之间通过加权连接相互影响。 MLP能够处理非线性问题通过学习合适的权重和偏差来建立输入与输出的映射关系广泛应用于分类、回归、模式识别等任务 神经网络定义相关概念 超参数神经网络层数、批次大小、迭代次数、学习率、优化器、正则化参数等参数神经网络中的权重和偏置等 多层感知机是所有神经网络的“基础型”神经网络的结构主要包括输入层、隐藏层、输出层。 输入层Input Layer输入层接收原始数据特征作为输入输入层通常是神经网络的前部。隐藏层Hidden Layer隐藏层位于输入层和输出层间由多个神经元组成可具有不同数量的神经元。这些神经元通过权重和激活函数进行信息的处理和传递。输出层Output Layer输出层产生网络的最终结果其神经元数量取决于任务类型。 2.3 全连接神经网络 全连接网络Fully Connected Neural NetworkFCN是一种特殊的神经网络结构其中每一层的每个神经元都与前一层的所有神经元相连接。 这种全连接的特性使得FCN能够学习到输入数据中的复杂特征表示。 非全连接神经网络 全连接神经网络 FCN通常被用作分类任务中的特征提取器也可以与其他类型的网络结合使用以提高整体性能。 2.4 深度神经网络 深度神经网络Deep Neural Network,DNN是指具有多个隐藏层的神经网络。 DNN通过增加隐藏层的数量来增强网络的非线性映射能力从而能够处理更加复杂的数据和任务。 DNN在图像识别、语音识别、自然语言处理等领域取得了显著成果是深度学习技术的重要组成部分。 多层并无严格衡量标准其好处是可以用较少的参数表示复杂的函数。 2. 训练流程 首先定义神经网络结构然后进入训练流程。 基础神经网络的 训练流程 初始化参数初始化神经网络中的权重和偏置参数通常可使用随机初始化的方法前向传播将训练集数据归一化后输入神经网络计算得到最终输出的预测值计算损失将输出的预测值与真实值进行比较通过 损失函数 描述二者间的差距反向传播计算损失函数对于每个参数的梯度以便调整每一层的参数参数更新根据反向传播得到的梯度信息使用优化算法如梯度下降更新神经网络中的参数以降低损失重复迭代重复进行前向传播、计算损失、反向传播和参数更新的过程 直至达到设定条件达到最大迭代次数 / 损失函数收敛模型评估 验证集验证模型是否过拟合的超参数设置是否合理即神经网络层数、批次大小、迭代次数、学习率、优化器、正则化参数设置是否合理。测试集评估神经网络的泛化性能是否良好即神经网络的预测能力是否达标。 模型应用模型性能达到预期可进行实际应用。 相关概念 拟合程度 欠拟合‌模型在训练过程中未能捕捉到数据集中的有效规律或模式导致模型过于简单无法正确预测结果。过拟合模型在训练数据上表现良好但在新数据上表现不佳。 泛化能力模型在训练数据集之外的新数据中的预测和处理能力。一个具有良好泛化能力的模型不仅能够在训练数据上表现出色还能在面对新的数据时保持较好的性能。 以做数学题为例对基础神经网络的训练流程进行口语化描述 初始化参数大脑本身拥有能够快速有效学习知识的能力前向传播第一次计算凭借直觉进行计算得到结果计算损失核对答案发现差距寻找出错步骤反向传播学习这种题型的规律参数更新掌握这种题型的规律重复迭代通过重复刷题、核对答案不断加强巩固题型规律的掌握程度模型评估检验是否能够举一反三解开没见过但具有相同规律的题型模型应用在做卷子的过程中可以解决遇到的新题 神经网络在一次次调整权重和偏置的过程中意味着完成了每层神经元对下层神经元贡献度的调整在不断调整中使得神经网络能够固化各神经元贡献度掌握解决一类问题的规律最终达到任务预期。 相关概念 拟合程度 欠拟合做题数量少或未发现习题规律难以应对这种规律的习题过拟合死记硬背所有做过的习题 泛化能力模型利用所学对相似规律或模式的未知习题“举一反三”的能力 ** ※ 数据预处理 (Data Preprocessing) 在‌数据分析之前对原始数据进行清洗、转换和集成的过程。 目的提高数据的质量使数据更加适合进行分析和建模。‌ 常见数据预处理方式 标签编码将类别标签转化为 one-hot 编码形式这样不仅可以直接用于多分类的损失函数计算也使得模型输出可以直观地表示为概率分布。归一化将输入标准化到 0-1 范围这有助于模型训练过程中的收敛速度并提高最终模型的稳定性适用于图像数据。 3. 常见激活函数 3.1 Sigmoid / Logistic Sigmoid函数又称Logistic函数是使用范围最广的一类函数具有指数函数形状。其接近生物神经元是生物学中常见的S型生长曲线。 Sigmoid函数呈现为S型曲线其值域为(0,1)可将数值挤压至0~1区间内故可表作概率或用于输出归一化其图像如下图所示。 Sigmoid函数公式如下 σ ( x ) S i g m o i d ( x ) 1 1 e − x \sigma(x)Sigmoid(x)\frac{1}{1e^{-x}} σ(x)Sigmoid(x)1e−x1​ Sigmoid函数导数特性 σ ′ ( x ) σ ( x ) ⋅ ( 1 − σ ( x ) ) \sigma(x)\sigma(x)\cdot (1-\sigma(x)) σ′(x)σ(x)⋅(1−σ(x)) 特点 值域(0,1)表作概率、输出归一化输出均值不为0Sigmoid输出均值大于0存在偏移现象。 3.2 ReLU Rectified Linear Unit修正线性单元提供了一种简单的非线性变换仅保留非负元素其图像如下图所示。 ReLU函数公式如下 R e L U ( x ) m a x { 0 , x } ReLU(x)max\{0,x\} ReLU(x)max{0,x} 特点 解决梯度消失问题解决了Sigmoid函数与Tanh函数存在的梯度消失问题。输出均值不为0与Sigmoid相似ReLU输出均值大于0存在偏移现象。神经元死亡现象当x进入到小于0的范围时激活函数输出始终为0权重无法更新出现神经元死亡现象。 3.3 Tanh 双曲正切函数Tanh是双曲正弦函数Sinh与双曲余弦函数Cosh的比值其图像如下图所示。 Tanh函数公式如下 T a n h ( x ) S i n h ( x ) C o s h ( x ) e x − e − x e x e − x 2 σ ( 2 x ) − 1 Tanh(x)\frac{Sinh(x)}{Cosh(x)}\frac{e^{x}-e^{-x}}{e^{x}e^{-x}}2\sigma(2x)-1 Tanh(x)Cosh(x)Sinh(x)​exe−xex−e−x​2σ(2x)−1 特点 存在梯度消失问题函数存在的梯度消失问题。输出均值为0与Sigmoid不同Tanh输出均值为0能够加快网络收敛速度。可看作放大并平移的Sigmoid函数。 3.4 Softmax Softmax函数又称 归一化指数函数用于多分类问题在神经网络的最后一层被使用。 Softmax函数能够将输入信号转换为 0~1 之间的值表示各类别的概率。 它能将一个含任意实数的K维向量z“压缩”到另一个K维实向量σ(z)中使得每一个元素的范围都在(0,1)之间并且所有元素的和为1。 Softmax函数公式如下 p i s o f t m a x ( x ) i e x i ∑ j 1 n e x j p_isoftmax(x)_i\frac{e^{x_i}}{\sum^n_{j1}e^{x_j}} pi​softmax(x)i​∑j1n​exj​exi​​ import torch import torch.nn as nnx torch.Tensor([1,3,2], [1,2,2], [1,1,1]) m0 nn.Softmax(dim0) m1 nn.Softmax(dim1)output0 m0(x) output1 m1(x) print(output0) print(output1)特点 值域(0,1)表作概率、输出归一化多分类问题 3.5 LeakyReLU Leaky ReLU 通过把x的非常小的线性分量 α \alpha α 给予负输入以调整负值的零梯度问题其图像如下图所示。 LeakyReLU函数公式如下 L e a k y R e L U ( x ) { α x , x 0 x , x ≥ 0 LeakyReLU(x)\left\{ \begin{aligned} \begin{matrix} \alpha x , \space x\lt 0 \\ x , \space x\geq 0 \\ \end{matrix} \end{aligned} \right. LeakyReLU(x){αxx​, x0, x≥0​​ 其中 α \alpha α为可学习参数或固定超参数用以调节ReLU负值的零梯度问题通常 α \alpha α的值为0.01左右。 特点 解决神经元死亡现象当 x 0 x\lt0 x0时激活函数输出不再始终为0一定程度上解决了神经元死亡现象。 3.6 Softplus Softplus 激活函数是一种渐进型的非线性激活函数可以看作平滑的ReLU函数其图像如下图所示。 Softplus函数公式如下 S o f t p l u s ( x ) l n ( 1 e x ) Softplus(x) ln (1 e^x) Softplus(x)ln(1ex) 其导数为Sigmoid函数 S o f p l u s ′ ( x ) 1 1 e − x σ ( x ) Sofplus(x)\frac{1}{1e^{-x}}\sigma(x) Sofplus′(x)1e−x1​σ(x) 特点 解决神经元死亡现象当 x 0 x\lt0 x0时激活函数输出不再始终为0一定程度上解决了神经元死亡现象。 3.7 Swish Swish激活函数是一种新型的激活函数全称 自门控 (Self-Gated) 激活函数其图像如下图所示。 Swish函数公式如下 S w i s h ( x ) x ⋅ S i g m o i d ( β x ) Swish(x) x \cdot Sigmoid(\beta x) Swish(x)x⋅Sigmoid(βx) 其中 σ ( ⋅ ) \sigma(\cdot) σ(⋅)为Logistics函数 β \beta β为可学习参数或固定超参数。 σ ( ⋅ ) ∈ ( 0 , 1 ) \sigma(\cdot)\in(0,1) σ(⋅)∈(0,1)可以看作一种软性门控机制这种思想在LSTM中也有应用。 β \beta β 取值 当 β 0 \beta0 β0时Swish函数为 x 2 \frac{x}{2} 2x​。当 β 1 \beta1 β1时Swish函数在 x 0 x \gt 0 x0时近似线性在 x 0 x \lt 0 x0近似饱和。当 β → ∞ \beta \rightarrow \infin β→∞时Swish函数近似ReLU函数其非线性程度由 β \beta β控制。 特点 更好地学习复杂的非线性特征Swish激活函数有助于神经元学习复杂的非线性函数帮助神经元学习复杂的非线性特征。 4. 前向传播 4.1 参数初始化 神经网络参数初始化是深度学习中的关键步骤之一。它涉及设置神经网络中的权重和偏置的初始值。参数初始化的选择和设置对于网络的训练和性能具有重要影响。参数初始化的重要性避免对称性问题、保持梯度稳定性、信号传播的稳定性。 神经网络初始化权重一般采用随机值以打破权重的对称结构。对于参数初始化的对称结构有两个极端的例子。 对称权重对称性问题 全零值权重全部权重设置为0 某层神经元全部丢弃形成阻碍权重无法正常传播神经网络无法正常学习。 同值权重全部权重设置为相同值 所有权重进行相同更新等同于一个巨大的神经元无法实现网络表达能力。 保持梯度稳定性 梯度消失在反向传播中梯度逐渐变小导致网络难以学习。梯度爆炸在反向传播中梯度变得非常大导致权重更新过大网络不稳定。 信号传播的稳定性 每个神经元的输出会作为下一层神经元的输入如果信号传播过程中的方差变化过大可能会导致网络中的信号失真或放大影响网络的性能。 所以良好的参数随机初始化策略可以减轻神经网络的训练压力避免出现梯度消失、梯度爆炸等问题。 常见的参数初始化策略 高斯分布初始化均匀分布初始化Xavier初始化He初始化 4.1.1 基于固定方差 高斯分布初始化高斯分布初始化方法是最简单的初始化方法参数从一个固定均值比如0和固定方差比如0.01的Gaussian分布进行随机初始化。 均匀分布初始化在一个给定区间[-r,r]内采用均匀分布初始化参数超参数r可根据神经元连接数量自适应调节。 初始化一个深层神经网络时一个比较好的初始化策略是保持每个神经元输入和输出的方差一致。 4.1.2 基于方差缩放 Xavier 初始化 适用函数类型Sigmoid / Tanh (S型) Xavier初始化一种为解决梯度消失/梯度爆炸设计的方法。通过初始化权重使得每个神经元的输出方差与输入方差相同。通过从具有零均值和特定方差的分布中设置初始权重来实现这一目标。这个特定方差是根据神经元的输入和输出连接数确定的。 权重从随机均匀分布中初始化确保权重足够小以避免梯度爆炸问题同时足够大以避免梯度消失问题。 Xavier初始化的公式 W ∼ N [ 0 , 2 n i n i 1 ] W\sim N[0,\frac{2}{n_in_{i1}}] W∼N[0,ni​ni1​2​] 优点 可以显著加速学习过程可以帮助网络更快收敛。能帮助防止梯度消失和梯度爆炸问题。通过确保每个神经元的输出方差与输入方差相同它可以确保梯度保持在可控范围内使网络更容易训练。 局限性 它假设激活函数是线性的然而有时激活函数是线性的。这可能导致输出与输入方差不同引发梯度消失或梯度爆炸问题。 其他替代方案LeCun初始化 He初始化 适用函数类型ReLU线性激活函数 He初始化何凯明等提出的一种鲁棒的神经网络参数初始化方法动机同Xaviar初始化基本一致都是为了保证信息在前向传播和反向传播过程中能够有效流动使不同层的输入信号的方差大致相等。 关于参数的大部分假设同Xaviar初始化一致但He初始化对应的是非线性激活函数 (如ReLU) 而Xaviar初始化对应的是线性激活函数。 He初始化的公式 W ∼ U [ − 6 n i n i 1 , 6 n i n i 1 ] W\sim U[-\sqrt{\frac{6}{n_in_{i1}}},\sqrt{\frac{6}{n_in_{i1}}}] W∼U[−ni​ni1​6​ ​,ni​ni1​6​ ​] 4.1.3 正交初始化 用 均值为0 方差为1 的高斯分布初始化一个矩阵将这个矩阵用奇异值分解得到两个正交矩阵并使用其中之一作为权重矩阵 4.2 矩阵表示 神经网络的前向传播实际是逐步输出结果的过程其中包含了上一层激活值对下一层的影响程度这个过程可以看作某些神经元促使另一些神经元的激活。 以识别任务为例直观感受神经网络隐含层权重的意义。 隐含层中的神经元是对上层输入“拆分”提取后的模糊“印象”理解通过叠加“印象”从而完成识别过程不同“印象”不同贡献程度的叠加在输出层输出不同的结果这种模糊“印象”难以被人类直观理解但可通过训练使得神经网络拟合真实映射故神经网络也被视作一种“黑箱”模型简单的识别任务中CNN卷积层提取的“印象”相较于ANN更容易被人类接受比如CNN识别手写数字任务中 提取手写数字的“部件” 这种模糊“印象”也被称作特征。随着网络深度的增加隐含层能够从低级特征中抽象出更高级的特征。 神经网络上下层间传播包含两大数值权重、偏置 权重上层神经元对下层神经元的影响/贡献程度偏置输出信号的阈值代表神经元的敏感程度表示神经元不能随意激活。上层所有神经元的加权和/总贡献大于某值才会有激活值影响后续神经元该神经元才有意义。 这里介绍第 l l l层第 0 0 0个神经元激活值的计算公式。 a 0 ( l ) σ ( w 0 , 0 a 0 ( l − 1 ) w 0 , 1 a 1 ( l − 1 ) ⋯ w 0 , n a n ( l − 1 ) b 0 ) a_0^{(l)}\sigma(w_{0,0} \space a_{0}^{(l-1)} w_{0,1} \space a_{1}^{(l-1)} \cdots w_{0,n} \space a_{n}^{(l-1)} b_0) a0(l)​σ(w0,0​ a0(l−1)​w0,1​ a1(l−1)​⋯w0,n​ an(l−1)​b0​) 其中 a 0 ( l ) a_0^{(l)} a0(l)​表示第 l l l层第0个神经元的激活值 w 0 , 0 w_{0,0} w0,0​表示第 l − 1 l-1 l−1层第0个神经元与第 l l l层第0个神经元间的权重 a i ( l − 1 ) a^{(l-1)}_i ai(l−1)​表示第 l − 1 l-1 l−1层第i个神经元的激活值 b 0 b_0 b0​表示第 l l l层第0个神经元的偏置 σ ( ⋅ ) \sigma(\cdot) σ(⋅)表示激活函数。 至此可通过矩阵简化层间权重、各层激活值与阈值的表示。 权重矩阵 W [ w 0 , 0 w 0 , 1 ⋯ w 0 , n w 1 , 0 w 1 , 1 ⋯ w 1 , n ⋮ ⋮ ⋱ ⋮ w m , 0 w m , 1 ⋯ w m , n ] W \left [ \begin{matrix} w_{0,0} w_{0,1} \cdots w_{0,n} \\ w_{1,0} w_{1,1} \cdots w_{1,n} \\ \vdots \vdots \ddots \vdots \\ w_{m,0} w_{m,1} \cdots w_{m,n} \\ \end{matrix} \right ] W ​w0,0​w1,0​⋮wm,0​​w0,1​w1,1​⋮wm,1​​⋯⋯⋱⋯​w0,n​w1,n​⋮wm,n​​ ​ 其中 w i , j w_{i,j} wi,j​表示前一层第 i i i个神经元与下一层第 j j j个神经元间连接的权重大小。 上一层激活值向量 a ( l − 1 ) [ a 0 ( l − 1 ) a 1 ( l − 1 ) ⋮ a n ( l − 1 ) ] a^{(l-1)} \left [ \begin{matrix} a_{0}^{(l-1)} \\ a_{1}^{(l-1)} \\ \vdots \\ a_{n}^{(l-1)} \\ \end{matrix} \right ] a(l−1) ​a0(l−1)​a1(l−1)​⋮an(l−1)​​ ​ 其中 a i ( l − 1 ) a_{i}^{(l-1)} ai(l−1)​表示第 l − 1 l-1 l−1层第 i i i个神经元的激活值。 偏置向量 b [ a 0 a 1 ⋮ a m ] b \left [ \begin{matrix} a_{0} \\ a_{1} \\ \vdots \\ a_{m} \\ \end{matrix} \right ] b ​a0​a1​⋮am​​ ​ 其中 b j b_{j} bj​表示第 l l l层第 j j j个神经元的偏置。 下一层激活值向量 a ( l ) σ ( [ w 0 , 0 w 0 , 1 ⋯ w 0 , n w 1 , 0 w 1 , 1 ⋯ w 1 , n ⋮ ⋮ ⋱ ⋮ w m , 0 w m , 1 ⋯ w m , n ] [ a 0 ( l − 1 ) a 1 ( l − 1 ) ⋮ a n ( l − 1 ) ] [ a 0 a 1 ⋮ a m ] ) a^{(l)} \sigma \left( \left [ \begin{matrix} w_{0,0} w_{0,1} \cdots w_{0,n} \\ w_{1,0} w_{1,1} \cdots w_{1,n} \\ \vdots \vdots \ddots \vdots \\ w_{m,0} w_{m,1} \cdots w_{m,n} \\ \end{matrix} \right ]\left [ \begin{matrix} a_{0}^{(l-1)} \\ a_{1}^{(l-1)} \\ \vdots \\ a_{n}^{(l-1)} \\ \end{matrix} \right ]\left [ \begin{matrix} a_{0} \\ a_{1} \\ \vdots \\ a_{m} \\ \end{matrix} \right ]\right) a(l)σ ​ ​w0,0​w1,0​⋮wm,0​​w0,1​w1,1​⋮wm,1​​⋯⋯⋱⋯​w0,n​w1,n​⋮wm,n​​ ​ ​a0(l−1)​a1(l−1)​⋮an(l−1)​​ ​ ​a0​a1​⋮am​​ ​ ​ 可简化为如下表示 a ( l ) σ ( W a ( l − 1 ) b ) a^{(l)} \sigma(Wa^{(l-1)}b) a(l)σ(Wa(l−1)b) 其中 a ( l ) a^{(l)} a(l)表示第 l l l层神经元的激活值W表示第 l − 1 l-1 l−1与 l l l层间的权重矩阵 a ( l − 1 ) a^{(l-1)} a(l−1)表示第 l − 1 l-1 l−1层神经元的激活值 b b b表示第 l l l层神经元的偏置 σ ( ⋅ ) \sigma(\cdot) σ(⋅)表示激活函数。 通过以上描述可知每个单独的神经元可以视作参数不同的函数故整个神经网络可视作海量参数的复合函数。 故神经网络的 “学习” 的目的是 找到正确的权重和偏置从而更好地拟合目标映射以完成识别任务这个过程则依靠 反向传播 完成。 5. 常见损失函数 损失函数(Loss Function)是在监督学习任务中用于衡量模型预测结果与真实标签之间的差异的函数。 目标最小化预测结果与真实值之间的差异从而使模型能够更好地拟合训练数据。 5.1 回归问题 5.1.1 平均绝对误差函数 l 1 \mathscr{l_1} l1​ 损失 平均绝对误差(Mean Absolute Error, MAE) 通过计算两点间曼哈顿距离的平方以衡量两个向量间的差距。 MAE假设预估值和真实值的误差服从拉普拉斯分布。 平均绝对误差计算方法是求预测值与真实值之间绝对值之和。其公式如下 M A E ( y , y ^ ) 1 n ∑ i 1 n ∣ y i − y i ^ ∣ MAE(y,\hat{y})\frac{1}{n}\sum_{i1}^{n}|y_{i}-\hat{y_{i}}| MAE(y,y^​)n1​i1∑n​∣yi​−yi​^​∣ 其中 n n n是样本数量 y i y_i yi​是第 i i i 个样本的真实值 y ^ i \hat{y}_i y^​i​是第 i i i个样本的预测值。 曲线分布如下 L1损失函数的导数是常量有着稳定的梯度所以不会有梯度爆炸的问题。对于离群点造成的惩罚是固定的不会被放大。 5.1.2 均方差误差函数 l 2 \mathscr{l_2} l2​ 损失 均方差误差(Mean Square Error, MSE) 通过计算两点间欧氏距离的平方以衡量两个向量间的差距。 MSE假设预估值和真实值的误差服从标准高斯分布大多数变量都可以建模为高斯分布故均方差误差几乎是回归问题最常用的损失函数。 均方差误差计算方法是求预测值与真实值之间距离的平方和。预测值和真实值越接近两者均方差就越小其公式如下 M S E ( y , y ^ ) 1 n ∑ i 1 n ( y i − y i ^ ) 2 MSE(y,\hat{y})\frac{1}{n}\sum_{i1}^{n}(y_{i}-\hat{y_{i}})^{2} MSE(y,y^​)n1​i1∑n​(yi​−yi​^​)2 其中 n n n是样本数量 y i y_i yi​是第 i i i 个样本的真实值 y ^ i \hat{y}_i y^​i​是第 i i i个样本的预测值。 均方差误差函数常用于回归问题 通常分类问题需要最后一层归一化表作概率当Sigmoid / Softmax / Tanh函数和MSE一起使用时会出现梯度消失。 回归问题使用MSE可以保证损失函数为凸函数即可得到最优解。而分类问题使用交叉熵函数可保证区间内单调且运算量小。MSE对于分类问题的二阶导数矩阵即Hessian矩阵不是正定矩阵。 线性回归与欧氏距离相关 (MSE)而分类问题与概率分布有关(CrossEntropy) 平方损失函数意味着模型的输出是以预测值为均值的高斯分布。分类问题中的标签没有连续概念。独热编码作为标签的一种表达方式标签间的距离没有实际意义。 曲线分布如下 函数曲线连续处处可导随着误差值的减小梯度也减小有利于收敛到最小值。 5.1.3 Huber误差函数 Huber误差结合了MAE的稳健性和MSE的稳定性本质上是二者中取其优。 对于大误差它是线性的对于小误差它本质上是二次的。其公式如下 Huber loss L δ ( y , y ^ i ) { 1 2 [ y i − y ^ i ] 2 , i f ∣ y i − y ^ i ∣ ≤ δ δ ∣ y i − y ^ i ∣ − 1 2 δ 2 , i f ∣ y i − y ^ i ∣ δ \text{Huber loss}L_{\delta}(y,\hat{y}_i) \left\{\begin{matrix}\frac12[y_{i} - \hat{y}_{i}]^2 ,\qquad if\space|y_{i} - \hat{y}_{i}| \leq \delta \\ \delta|y_{i} - \hat{y}_{i}| - \frac12\delta^2 , \qquad if\space|y_{i} - \hat{y}_{i}| \delta\end{matrix}\right. Huber lossLδ​(y,y^​i​){21​[yi​−y^​i​]2δ∣yi​−y^​i​∣−21​δ2​,if ∣yi​−y^​i​∣≤δ,if ∣yi​−y^​i​∣δ​ 其中 y i y_i yi​是第 i i i 个样本的真实值 y ^ i \hat{y}_i y^​i​是第 i i i个样本的预测值 δ \delta δ是控制平滑范围的阈值。 5.2 分类问题 5.2.1 交叉熵误差函数 交叉熵是信息论中的一个概念要了解交叉熵的本质需要先从最基本的概念讲起。 5.3.1 信息量 在信息论中事件发生概率越小其所包含的信息量就越大。 这里我们假设两件事仅类比进行直观感受 事件A人类2050年之前载人登录月球再次实现事件B人类2050年之前载人登录开普勒-452b (从未实现 距离地球1400光年) 仅凭直觉便可察觉事件B显然比事件A包含更多的信息量。 事件A 现状其距离相对较近、环境特点相对明确、技术难度相对较低且成本更为可控。实现意义人类充分利用当前多个探测器传回的大量数据深入了解其环境特点、大气条件、地表状况时机成熟便可实现载人登录月球验证目前航空航天技术、发展新技术为探索太阳系及其周边星系奠定基础。 事件B 现状其距离远、环境特点不明确、技术难度及成本远超目前人类极限。实现意义人类在极短内多次技术爆炸掌握包括深空低延时通信、星际旅行、深空探测等多项必备技术并使得其成本降低至与登录月球无异。 月球探测任务的成本虽然高昂但与深空探测相比仍然具有相对的经济性。 从以上举例可以看出越难以发生的事件其所获取到的信息量越大反之越容易发生的事件其所获取到的信息量越小。 信息论中认为信息量与事件发生的概率有关。 假设 X X X是一个离散型随机变量其取值集合为 X \mathcal{X} X概率分布函数 p ( x ) P r ( X x ) , x ∈ X p(x)Pr(Xx),x\in\mathcal{X} p(x)Pr(Xx),x∈X则定义事件 X x 0 Xx_{0} Xx0​的信息量为 I ( x 0 ) − l o g ( p ( x 0 ) ) I(x_0)-log(p(x_0)) I(x0​)−log(p(x0​)) 5.3.2 熵 信息量表示包含信息的多少而信息熵则表示所有信息量的期望用于量化信息的不确定性和信息量其定义为 H ( X ) E [ I ( X ) ] − ∑ i 1 n p ( x i ) l o g ( p ( x i ) ) H(X)E[I(X)]-\sum_{i1}^{n}p(x_i)log(p(x_i)) H(X)E[I(X)]−i1∑n​p(xi​)log(p(xi​)) 对于某个事件有 n n n种可能性每一种可能性都有一个概率 p ( x i ) p(x_i) p(xi​)这样就可以计算出某一种可能性的信息量。 假设小明和小张相约打靶小明和小王打中的先验概率为10%和99.9%打靶结果是0-1事件。熵是信息量的期望通过分别计算二人的信息熵可以得出其打靶结果的不确定度。 小明打靶不确定度 H A ( x ) − [ p ( x A ) l o g ( p ( x A ) ) ( 1 − p ( x A ) ) l o g ( 1 − p ( x A ) ) ] 0.4690 H_A(x)-[p(x_A)log(p(x_A))(1-p(x_A))log(1-p(x_A))]0.4690 HA​(x)−[p(xA​)log(p(xA​))(1−p(xA​))log(1−p(xA​))]0.4690 小王打靶不确定度 H B ( x ) − [ p ( x B ) l o g ( p ( x B ) ) ( 1 − p ( x B ) ) l o g ( 1 − p ( x B ) ) ] 0.0114 H_B(x)-[p(x_B)log(p(x_B))(1-p(x_B))log(1-p(x_B))]0.0114 HB​(x)−[p(xB​)log(p(xB​))(1−p(xB​))log(1−p(xB​))]0.0114 小明打靶结果的不确定度较低十有八九脱靶但小王打靶结果的不确定度更低几乎次次中靶结果相当的确定。 5.3.3 相对熵 - KL散度 相对熵又称KL散度对于同一个随机变量 x x x有两个单独的概率分布 P ( x ) P(x) P(x)和 Q ( x ) Q(x) Q(x)可使用 KL 散度Kullback-Leibler (KL) divergence来衡量这两个分布的差异。 在深度学习中P用以表示样本真实分布Q用以表示模型预测分布。 如果用P来描述目标问题则得到信息增量。例如假设[1, 0, 0]代表真实分布而[0.6, 0.3, 0.1]代表预测分布。P可完美描述样本用Q可大致描述样本但未达完美需要额外的”信息增量“反复训练模型方可使预测分布Q无限接近于P亦可完美描述样本故而Q等价于P。 KL散度的定义为 D K L ( p ∣ ∣ q ) ∑ i 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q)\sum_{i1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)}) DKL​(p∣∣q)i1∑n​p(xi​)log(q(xi​)p(xi​)​) 其中n表示事件的所有可能性。KL散度越小表示q分布与p分布差距越小两者越接近。 5.3.4 交叉熵 系统真实的概率分布称作真实分布。根据真实分布我们能够找到一个最优策略以最小的代价消除系统的不确定性而这个代价大小就是信息熵。 多数情况下我们并不知道系统的真实分布交叉熵 是用来衡量在给定的真实分布下使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力大小。 交叉熵越低意味着非真实分布越接近真实分布。所以在机器学习分类算法中我们总是最小化交叉熵交叉熵越低间接证明算法推算出的非真实分布q越接近真实分布p。 而在公式层面交叉熵是KL散度的变形产物对KL散度公式变形可得 D K L ∑ i 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) ∑ i 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i 1 n p ( x i ) l o g ( q ( x i ) ) H ( p ( x i ) ) [ − ∑ i 1 n p ( x i ) l o g ( q ( x i ) ) ] \begin{equation} \begin{aligned} D_{KL}\sum_{i1}^{n}p(x_i)log(\frac{p(x_i)}{q(x_i)})\\\sum_{i1}^{n}p(x_i)log(p(x_i))-\sum_{i1}^{n}p(x_i)log(q(x_i))\\H(p(x_i))[-\sum_{i1}^{n}p(x_i)log(q(x_i))] \end{aligned} \end{equation} DKL​​i1∑n​p(xi​)log(q(xi​)p(xi​)​)i1∑n​p(xi​)log(p(xi​))−i1∑n​p(xi​)log(q(xi​))H(p(xi​))[−i1∑n​p(xi​)log(q(xi​))]​​​ 等式前半部分是p的熵等式后半部分定义为 交叉熵 H ( p , q ) − ∑ i 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)-\sum_{i1}^{n}p(x_i)log(q(x_i)) H(p,q)−i1∑n​p(xi​)log(q(xi​)) 在深度学习中我们可以使用KL散度评估真实值与预测值间的差距即 D K L ( y ∣ ∣ y ^ ) D_{KL}(y||\hat{y}) DKL​(y∣∣y^​)。由于真实分布不变KL散度公式中第一项 − H ( y ) -H(y) −H(y)为常数项故在优化过程中只需关注第二项交叉熵即可。所以一般在深度学习分类任务中用交叉熵做损失函数用以评估模型。 在分类问题中交叉熵用以衡量两个概率分布之间的差异性。 H ( y , y ^ ) − ∑ i 1 n y i l o g ( y i ^ ) H(y,\hat{y})-\sum_{i1}^{n}{y_{i}}log(\hat{y_{i}}) H(y,y^​)−i1∑n​yi​log(yi​^​) 交叉熵误差函数常用于分类问题 假设分类问题的真实分布为[1, 0, 0]神经网络最终的输出为[a, b, c]下面我们分别计算MSE和CrossEntropy。 MSE y ( a − 1 ) 2 ( b − 0 ) 2 ( c − 0 ) 2 ( a − 1 ) 2 b 2 c 2 y (a-1)^2(b-0)^2(c-0)^2(a-1)^2b^2c^2 y(a−1)2(b−0)2(c−0)2(a−1)2b2c2 CrossEntropy y ( − 1 ) ⋅ l o g ( a ) − 0 ⋅ l o g ( b ) − 0 ⋅ l o g ( c ) − l o g ( a ) y(-1)\cdot log(a)-0\cdot log(b)-0\cdot log(c)-log(a) y(−1)⋅log(a)−0⋅log(b)−0⋅log(c)−log(a) 交叉熵作为损失函数仅与正确结果有关而MSE则与正确错误结果均有关。该损失函数除了让正确的分类尽量变大还会让错误的分类变得平均影响反向传播效率。
http://www.zqtcl.cn/news/718485/

相关文章:

  • 商城手机网站设计网架公司十大排名
  • 在建设主题网站时邯郸房产信息网恋家网
  • 保山做网站建设做网站zwnet
  • 南阳做网站推广自助个人免费网站
  • 企业做网站怎么做高校档案室网站建设
  • 辽宁省建设厅网站升级期货交易软件定制开发
  • 网站建设公司工资设置mufen wordpress
  • 资阳网站网站建设月夜直播免费完整版
  • 自己的网站打不开了网站建设维护成本
  • 最便宜做网站c2c网站建站的标准
  • 家里电脑做网站服务器下载中国移动商旅100最新版本
  • 深圳建站公司开发费用做网站网页的工作怎么样
  • 网站工程师平均工资网站开发合同里的坑
  • 南通公司建站模板品牌网站建设小蝌蚪
  • 网站备案号 有效期微信小程序开发视频完整教程
  • 给公司做网站需要什么信息html制作百度登录页面
  • 济南市建设执业资格注册中心网站小程序源码模板下载
  • 免费做网站怎么做网站网页生成app制作
  • 网站建设中的财务预算广州网站制作
  • 经营范围网站建设wordpress主题去除友情链接
  • ip开源网站FPGA可以做点什么国外购物平台排行榜前十名
  • 温州网站推广优化公司专业做网站建设公司排名
  • 网站广告推广哪家好wordpress漏洞大全
  • 做a小视频免费观看网站视觉传达设计网站
  • 网站建设属于网络还是软件服务器销售网站源码
  • 上海建设工程咨询网 首页郑州seo野狼
  • 建设网站需要注意什么手续禅城网站设计
  • 重庆网站页面优化wordpress fm
  • 淄博网站建设企业做网站原型图
  • 电子商务网站开发视频软件研发过程管理