考研数学


1 高等数学

    1.1  函数的发展史

    1.2  大数定理

    1.3  欧拉的贡献

    1.4  伯努利试验

    1.5  Mish函数介绍

2 概率与统计

Mish函数介绍

创建时间:2024-11-14 | 更新时间:2024-11-14 | 阅读次数:1137 次

Mish是一种用于深度学习模型的激活函数,它被设计来替代传统的激活函数如ReLU和Swish。根据其论文实验,该函数在最终准确度上比Swish(+0.494%)和ReLU(+ 1.671%)都有提高。

Mish函数公式

$$ f(x) = x * tanh(ln(1 + e^x)) $$

Mish函数图像

这个函数是非单调的,它的特点是在负值区域有一个小的非零斜率,这有助于在训练过程中保持梯度的流动,避免了ReLU中的“死亡神经元”问题。

Mish函数的代码实现

Mish函数的代码实现有两种方法,其中第二种实现利用了PyTorch的自动微分功能,可以方便地集成到任何模型中,具体代码如下所示。

import torch
import torch.nn.functional as F

def mish(x):
    return x * torch.tanh(F.softplus(x))


class Mish(torch.nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, x):
        return x * torch.tanh(F.softplus(x))

Mish函数的优势

Mish函数在多个方面优于其他激活函数:

平滑性:Mish是一个平滑的函数,这意味着它可以更好地传播信息,有助于提高神经网络的准确性和泛化能力。

性能提升:在多个测试中,Mish在准确度上超过了Swish和ReLU,例如,在CIFAR-100分类中,使用Mish的网络比使用Swish的网络Top-1测试准确率提高了0.494%,比使用ReLU的网络提高了1.671%

理论支持:Mish函数的设计考虑了理想激活函数的多个特性,如处理负值和平滑性,这些都是基于深度学习理论的。

Mish与其他激活函数的比较

Mish与其他常用激活函数相比,如ReLU和Swish,它提供了更平滑的输出,这有助于改善模型的学习和泛化。此外,Mish在处理负值时不会完全抑制梯度,这有助于避免梯度消失的问题,从而提高了模型的训练稳定性。

总的来说,Mish激活函数是深度学习领域的一个重要进展,它在理论和实践中都显示出了对模型性能的显著提升。