CNNのハイパーパラメータ「dilation」とは何でしょうか?
CONV2Dのdilationとは【PyTorch】
畳み込みニューラルネットワーク(CNN)の勉強をしているときに、「dilation」というパラメータがでてきました。
直訳すると「拡張、膨張」ですが、どのような処理が行われるのでしょうか。
この記事では、「dilation」とは何か、どんな効果があるかをまとめていきます。
ズバリ
DilationとはCNNのカーネル(フィルタ)のセル間隔を指定するハイパーパラメータです。
Dilationの可視化
カーネルサイズ3x3のCNNの例を示します。
Dilation = 1
Dilation = 2
Dilationの効果
Dilated convolutionsを使うと「effective receptive field」をより早く拡大させることができます。
Effective receptive fieldとは
Effective receptive fieldとは、ニューロンに対して影響を与えているオリジナルセルの領域のことです。
3x3の例
上図の例における、DilationとEffective receptive fieldの関係を見ていきます。
Dilation=1のときは、3x3(図中緑枠)の出力先が持つEffective receptive fieldは5x5(図中緑枠)、Dilation=2のときは、3x3(図中緑枠)の出力先が持つEffective receptive fieldは7x7(図中緑枠)です。
このように、Dilated convolutionsを用いることで、より広範囲のセルの影響を持たせることができます。
PyTorchでは
公式ドキュメンテーション
dilation controls the spacing between the kernel points; also known as the à trous algorithm. It is harder to describe, but this link has a nice visualization of what dilation does.
▶PyTorch documentation: torch.nn.Conv2d
日本語訳
「dilation」はカーネルポイント間のスペースを調整します。これは「à trous algorithm」としても知られています。これを説明するのは難しいですが、このリンクで、「dilation」がどう機能するか分かりやすく可視化しています。
実装例
import torch conv2d = nn.Conv2d(512, 1024, kernel_size=3, padding=6, dilation=6)
参考(英語)
- ▶Convolutional Neural Networks (CNNs / ConvNets)
- ▶arXiv: Multi-Scale Context Aggregation by Dilated Convolutions
- ▶What is a CNN’s receptive field?
さいごに
CNNの「dilation」は、フィルタのセル間隔を調整するハイパーパラメータでした。参考になれば幸いです。
以上です。
コメント