目次
初めに
こんにちは。将棋と筋トレが好きな、情報系大学生のゆうき(@engieerblog_Yu)です。
今回から、畳み込みニューラルネットワーク(CNN)の畳み込み演算・パディング・ストライドについてまとめていきたいと思います。
畳み込みニューラルネットワークについて
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/cbaa4da30bf662cc7ba73da06e4b7db1-1024x437.jpg)
前回の記事で、畳み込みニューラルネットワーク(CNN)は、Convolution層とPooling層を用いることで、入力データが一次元でなくても対応することができるという内容がありました。
今回は、Convolution層でどのような処理が行われているのかについて、まとめていきたいと思います。
Convolution層で行われている処理
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/66ac578df5013fc6c9560156abb79921-1024x543.jpg)
Convolution層で行われている処理は大きく分けて三つあります。
畳み込み演算
パディング
ストライド
の三つです。
一つ一つ解説していきたいと思います。
畳み込み演算
畳み込み演算では、ニューラルネットワークでいうところの重みを掛け合わせてバイアスを足すという処理が行われています。
0~255の値で表される画像データが入力データであったとします。
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/229e8126bae5240ea5614c301c36a109-1024x319.jpg)
入力データに、カーネルという重みに相当する値を掛け合わせて、最後にバイアスを足し合わせたものを出力データとします。
具体的な計算についてです。
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/65af998ae64f35cb4053a8a76c8bb395-1024x286.jpg)
上記の青く囲った部分とカーネルを掛け合わせます。
(2×2)+(3×4)+(12×3)+(4×8)+(2×6)+(16×5)+(1×3)+(16×9)+(1×2)=325
のようにそれぞれの値を掛け合わせて足します。
最後にバイアスを足して、327が出力データの左上の値になります。
同様の処理を行っていきます。
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/4afd33d8ae129cc870eafccbeee9d0fe-1024x311.jpg)
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/f3a0cc511cdf1db31a5cda36cbc8a3de-1024x267.jpg)
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/3865dc5f46bf680b7abff3f90bd4250a-1024x312.jpg)
このようにして入力データに重みとバイアスを掛け合わせたものが、畳み込み演算です。
畳み込み演算は、ニューラルネットワークの重みとバイアスの演算を多次元に置き換えたようなもの
パディング
パディングとは、入力データの周りを一定の値で埋める操作です。
例えば0で埋めた場合はこのようになります。
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/70a0427dd904b2a5a3ab948de94fbc10-1024x995.jpg)
パディングを行うことで出力データのサイズを大きくすることができます。
これは畳み込み層を繰り返し通すことで、出力データのサイズが小さくなりすぎてしまうことを防ぐことができます。
パディングとは入力データの周りを一定の値で埋める操作
出力データのサイズが小さくなりすぎてしまうことを防ぐ
ストライド
ストライドとは、カーネルと掛け合わせる青枠の部分の間隔のことです。
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/ec05b33fee375dc9f6b7b666e1b44cda-1-1024x321.jpg)
今回は間隔が1なのでストライドは1となります。
![](https://prog-you.com/syohyou/wp-content/uploads/2022/09/c1eede75106e9a560785a57dc3c14814-1024x517.jpg)
パディングとは反対に、ストライドは大きくなればなるほど、データサイズが小さくなります。
データサイズを小さくしたい場合はストライドの間隔を大きくして、データサイズを大きくしたい場合にはパディングの幅を大きくすることが有効的です。
ストライドとはカーネルを掛け合わせる部分の間隔のこと
ストライドを大きくすればするほど出力データサイズが小さくなる
まとめ
畳み込み演算は、ニューラルネットワークの重みとバイアスの演算を多次元に置き換えたようなもの
パディングとは入力データの周りを一定の値で埋める操作
ストライドとはカーネルを掛け合わせる部分の間隔のこと
今回は畳み込みニューラルネットワーク(CNN)の畳み込み演算・パディング・ストライドについてまとめました。
機械学習、ディープラーニングを学びたい方におすすめの入門書籍です。
ディープラーニングの理論が分かりやすくまとめられていて、力を身につけたい方におすすめです。
![ゆうき](https://prog-you.com/syohyou/wp-content/uploads/2022/04/d160a53f71104dc4e5ed3c300ba3ba79-1.png)
最後まで読んでいただきありがとうございました。
![ねこすけ](https://prog-you.com/syohyou/wp-content/uploads/2022/04/fcedeb3e47d759777985cdd471841cd1-1.png)
他にもいろんな記事があるにゃ。
ChatGPT技術に興味がある方
完全版noteで、ChatGPTのおすすめChrom拡張機能5つと収益化方法について解説しています。
完全版noteでは、以下について解説しています。
Googleスプレッドシートやドキュメントの自動入力
ツイートの自動返信
Youtube動画の自動要約
Gmailの自動返信
検索画面にChatGPTの結果表示
AI美女生成に興味がある方
Stable Diffusionを使ってAI美女を生成する方法についてもnoteで解説しています。
![](https://prog-you.com/syohyou/wp-content/uploads/2023/05/e6ced08204e7563e5ad424b2cd4a2820.jpg)
コメント