DeepLearning

PyTorchで活性化関数「Mish」を実装してみる

サンプルコード

import torch
import torch.nn.functional as F

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

MNISTのサンプルのReLU関数を上記のmishで置き換える。

x = mish(x) #x = F.relu(x) 

実行結果(例)

ちょっとした違いですが精度が上がったことが確認できました。

# ReLU関数
epoch:14, Test set: Average loss: 0.0265, Accuracy: 9911/10000 (99%)

# Mish関数
epoch:14, Test set: Average loss: 0.0258, Accuracy: 9922/10000 (99%)

活性化関数は様々な種類がありますが、その特性とタスクや適用するデータの組み合わせ次第で精度が変わるため、組み合わせに合わせて良いものを探す必要がありそうです。こちらのQiitaの記事が多くの活性化関数をまとめています。