唐山网站制作方案怎么让网站绑定域名访问

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

唐山网站制作方案,怎么让网站绑定域名访问,上海企业网站排名优化,国内互联网大厂有哪些在当今的AI开发中#xff0c;人工智能模型正迅速增加。这些模型使用数学函数来执行和学习#xff0c;以便在传播时优化最佳结果#xff0c;或在反向传播时选择最佳解决方案。其中之一就是激活函数。也称为转移函数或阈值函数#xff0c;它决定了神经元的激活值作为输出人工智能模型正迅速增加。这些模型使用数学函数来执行和学习以便在传播时优化最佳结果或在反向传播时选择最佳解决方案。其中之一就是激活函数。也称为转移函数或阈值函数它决定了神经元的激活值作为输出这个值是通过输入的加权值之和计算得出的。在这篇文章中我们将描述当今最常用的激活函数并展示如何在C中使用它们。 目录 什么是AI激活函数我们如何在AI中开发特别的激活函数 恒等函数yx二进制步函数Heaviside步函数逻辑函数Logistic曲线和Sigmoid函数双曲正切函数tanh指数线性单元ELU缩放指数线性单元SELU修正线性单元ReLU高斯误差线性单元GELUSoftPlus激活函数自我规则非单调Mish激活函数Softmax函数 什么是AI激活函数 激活函数phi()也称为转移函数或阈值函数。它从净输入函数的给定值sum中确定激活值a phi(sum)。在净输入函数中sum是它们权重中的信号之和。激活函数是这个和的新值具有给定的函数或条件。激活函数是一种将所有加权信号的和转换为该信号的新激活值的方法。有不同的激活函数一些常见的有线性恒等、双极性和逻辑sigmoid。 在C中你可以创建自己的AI激活函数。注意“sum”是净输入函数的结果它计算所有加权信号的和。我们将使用sum作为输入函数的结果。在这里人工神经元输出值的激活值可以通过激活函数如下所示写出 通过使用这个sum净输入函数值和phi()激活函数我们可以计算输出。 我们如何在AI中开发特别的激活函数 在AI开发中有不同类型的激活函数用于不同的目的。我们可以使用它们或者我们可以开发一个特别的激活函数。现在让我们看看AI开发中的激活函数类型。

  1. 恒等函数yx 恒等函数也称为恒等关系或恒等映射或恒等变换是数学中的一个函数它总是返回用作其参数的相同值。我们可以简单地说它是yx函数或f(x)x函数。这个函数也可以作为一些AI应用中的激活函数。 这是一个非常简单的激活函数也是恒等函数 float phi(float sum) {return sum; // 恒等函数线性转移函数 f(sum)sum } 这个函数的返回值应该是浮点数float, double, long double因为权重通常在0和1.0之间。
  2. 二进制步函数Heaviside步函数 二进制步函数或Heaviside步函数或单位步函数是一个步函数以奥利弗·海维赛德1850-1925命名其值对于负参数为零对于正参数为一。这意味着它作为布尔值结果为0或1。这个函数是步函数的一般类别的例子所有这些都可以表示为这种函数的平移的线性组合。 因此我们的二进制步函数应该如下所示。 bool phi(float sum) {return (sum 0); // 二进制步函数Heaviside步函数单位步函数 } 这个激活函数如果sum0则返回1true否则返回0false。
  3. 逻辑函数Logistic曲线和Sigmoid函数 逻辑函数或Logistic曲线是一个常见的S形曲线sigmoid曲线其方程如下。 ​ 在这里 L是曲线的最大值 x0是曲线中点的值 k是逻辑增长率或曲线的陡峭程度 最常用的逻辑函数是标准逻辑函数也称为Sigmoid函数其中L和k为1x00。因此我们的函数可以写成以下任一术语 ​ 在C中Sigmoid激活函数可以写成如下 double phi(double sum) {return (1/(1std::exp(-1sum))); // 标准逻辑函数Sigmoid函数 } 注意这里的除法比乘法消耗更多的CPU因为在上面给出的函数中我们可以使用带有tanh()的版本如下 double phi(double sum) {return (0.5(1std::tanh(0.5*sum))); // 标准逻辑函数Sigmoid函数 } 如你所见我们这里只有乘法和加法以及tanh()函数。如果网络的sum值在范围内例如在0-10之间为了获得更快的近似结果可以使用数组结果。可能有一个包含10000个成员的y数组例如y[1001]可以持有phi(1.0001)的预计算值。这将使你的神经网络更快但也可能引起更多错误或难以达到期望的迭代次数。它应该与上面的一个标准sigmoid函数版本一起测试。
  4. 双曲正切函数tanh 双曲正切是一个三角函数tanh()如下 ​ 这个函数有唯一的解到微分方程f 1 - f^2, with f(0) 0。 一个激活函数可以作为双曲正切函数使用如下 double phi(double sum) {return (std::tanh(sum)); // 双曲正切函数 } 5. 指数线性单元ELU 指数线性单元ELU是另一种激活函数由Djork-Arne Clevert, Thomas Unterthiner Sepp Hochreiter开发并发表标题为“FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS (ELUS)”。你可以通过点击这里找到论文的文本。 根据他们的研究他们引入了“指数线性单元”ELU它加快了深度神经网络中的学习速度并导致了更高的分类准确率。ELU激活函数通过对于正值的身份缓解了消失梯度问题如修正线性单元ReLUs泄漏ReLUsLReLUs和参数化ReLUsPReLUs。他们还证明了与其他激活函数的单元相比ELUs具有改进的学习特性。与ReLUs相比 指数线性单元ELU可以写成如下。 ​ 这个函数的导数可以写成 ​ 在C和C编程语言中简单的指数线性单元函数可以写成如下 double alpha 0.1; // 范围从0到1.0 double phi(double sum) {return (sum 0 ? sum : alpha*(std::exp(sum) - 1)); // ELU函数 } 6. 缩放指数线性单元SELU 缩放指数线性单元是另一种激活函数它是通过使用λ参数的ELU的缩放版本。缩放指数线性单元由Günter Klambauer, Thomas Unterthiner, Andreas Mayr在2017年开发并发布他们介绍了自归一化神经网络SNNs以实现高级抽象表示。SNNs的神经元激活自动收敛到零均值和单位方差而批量归一化需要显式归一化。 SELU是ELU激活函数的缩放版本通过乘以λ参数所以我们可以简单地说这个 SELU激活函数可以写成如下 他们为α和λ求解并得到解α01 ≈ 1.6733和λ01 ≈ 1.0507其中下标01表示这些是固定点0, 1的参数。根据这个解释每个节点可能有不同的α和λ参数。所以我们可以定义神经元结构中的alfa和lambda参数我们可以计算SELU如下。 double phi(double sum) {return (sum 0 ? lambda * sum : lambda * alpha * (std::exp(sum) - 1)); // SELU函数 }
  5. 修正线性单元ReLU 在人工神经网络中修正线性单元函数或ReLU激活函数定义为其参数的正部分。可以写成f(x) max(0, x)其中x是输入信号的加权和。ReLU函数也称为Ramp函数类似于电气工程中的半波整流。 这个函数称为参数化ReLU函数。如果Beta是0.01它被称为Leaky ReLU函数。 这是max-out ReLU函数 如果Beta是0那么f(x) max(x, 0)。这个函数将总是返回正数。让我们用C编程语言编写maxout ReLU函数 这里是一个例子 double phi(double sum) {return (std::max(0, sum)); // ReLU函数 }
  6. 高斯误差线性单元GELU 高斯误差线性单元是ReLU、ELU函数的替代品由Dan Hendrycks和Kevin Gimpel在2016年定义和发布。它用于平滑ReLU和ELU激活全文可以在这里找到 高斯误差线性单元GELU是一种高性能的神经网络激活函数。GELU激活函数是xΦ(x)其中Φ(x)是标准高斯累积分布函数。GELU非线性通过它们的值加权输入而不是像ReLUsx0那样通过它们的符号门控输入。对GELU非线性与ReLU和ELU激活的实证评估已应用于所有考虑的计算机视觉、自然语言处理和语音任务并有性能提升。 GELU函数可以写成 我们可以用以下方式近似GELU 或者如果更大的前馈速度值得牺牲精确性我们可以使用以下近似 我们可以使用不同的CDFs即我们可以使用逻辑函数累积分布函数CDF σ(x)来获得激活值这称为Sigmoid Linear Unit(SiLU) xσ(x)。 根据第二个公式我们可以用GELU编写我们的phi()激活函数如下 double sqrt_2divPI std::sqrt(2.0/M_PI); double phi(double sum) {return (0.5 * sum * (1 std::tanh(sqrt_2divPI * (sum 0.044715 * std::pow(sum, 3))))); // GeLU函数 }
  7. SoftPlus激活函数 SoftPlus激活函数由Dugas等人在2001年开发和发布。全文可以在这里找到。简单来说Softplus函数可以写成如下 f(x) log(1exp(x)); 根据他们的论文他们提出的函数类别的基本思想是他们用Softplus或sigmoid函数替换了求和的sigmoid每个维度上都有一个使用Softplus在凸维度上sigmoid在其他维度上。他们引入了类似于多层神经网络的新函数类别具有这些属性的概念。 另一项由Xavier Glorot、Antoine Bordes、Yoshua Bengio发表的研究全文标题为“Deep Sparse Rectifier Neural Networks”可以在这里找到。根据这项研究在人工神经网络中虽然逻辑sigmoid神经元比双曲正切神经元更符合生物学但后者在训练多层神经网络时效果更好。 SoftPlus激活函数在C中可以写成如下 double phi(double sum) {return (std::log(1 exp(sum))); // SoftPlus函数 }
  8. 自我规则非单调Mish激活函数 自我规则非单调Mish激活函数受到Swish激活函数的启发。它是一个平滑、连续、自我规则、非单调的激活函数。这个函数由Diganta Misra在2019年发表的“Mish: A Self Regularized Non-Monotonic Activation Function”中发布。 根据这项研究“Mish使用自门控属性其中非调制输入与输入的非线性函数的输出相乘。由于保留了少量的负信息Mish通过设计消除了Dying ReLU现象所需的先决条件。这种属性有助于更好的表达性和信息流动。由于Mish无界它避免了饱和这通常会因为梯度接近零而导致训练速度减慢。在下方有界也是有利的因为它会产生强烈的规则效应。与ReLU不同Mish是连续可微的这是一个可取的属性因为它避免了奇异性因此在执行基于梯度的优化时避免了不希望的副作用。” 我们之前解释了softplus()激活函数。Mish激活函数可以使用softplus()定义如下 因此Mish激活函数可以数学定义如下 作者比较了Mish、ReLU、SoftPlus和Swish激活函数的输出并比较了Mish和Swish的第一和第二导数。 Mish函数可以在C中编码如下 double phi(double sum) {return (sum * std::tanh(std::log(1 std::exp(sum)))); // Mish函数 }
  9. Softmax函数 在神经网络中SoftMax函数通常用于基于神经网络的分类器的最后一层。这些网络通常在对数损失或交叉熵方法下进行训练这些方法是多项式逻辑回归的非线性变体。Softmax函数用于软化输出在0和1之间它也可以用作激活函数。 对于一个有n个成员的x向量或数组每个成员的Softmax可以写成如下 这个函数可能会因为无限结果而溢出。为了避免这个我们可以通过减去最大值m来调制x值。