※本記事はアフィリエイト広告を含んでいます
どーも、りけーこっとんです。
「G検定取得してみたい!」「G検定の勉強始めた!」
このような、本格的にデータサイエンティストを目指そうとしている方はいないでしょうか?
また、こんな方はいませんか?
「なるべく費用をかけずにG検定取得したい」「G検定の内容について網羅的にまとまってるサイトが見たい」
今回はG検定の勉強をし始めた方、なるべく費用をかけたくない方にピッタリの内容。
りけーこっとんがG検定を勉強していく中で、新たに学んだ単語、内容をこの記事を通じてシェアしていこうと思います。
結構、文章量・知識量共に多くなっていくことが予想されます。
そこで、超重要項目と重要項目、覚えておきたい項目という形で表記の仕方を変えていきたいと思いますね。
早速G検定の中身について知りたいよ!という方は以下からどうぞ。
具体的にどうやって勉強したらいいの?
G検定ってどんな資格?
そんな方は以下の記事を参考にしてみてください。
なお、りけーこっとんは公式のシラバスを参考に勉強を進めています。
そこで主な勉強法としては
分からない単語出現 ⇒ web検索や参考書を通じて理解 ⇒ 暗記する
この流れです。
皆さんも一緒に頑張りましょう!
※この記事は合格を保証するものではありません
大項目「ディープラーニングの手法」
G検定のシラバスを見てみると、試験内容が「大項目」「中項目」「学習項目」「詳細キーワード」と別れています。
本記事は「大項目」の「ディープラーニングの手法」の内容。
その中でも「畳み込みニューラルネットワーク」というところに焦点を当ててキーワードを解説していきます。
G検定の大項目には以下の8つがあります。
・人工知能とは
・人工知能をめぐる動向
・人工知能分野の問題
・機械学習の具体的な手法
・ディープラーニングの概要
・ディープラーニングの手法
・ディープラーニングの社会実装に向けて
・数理統計
とくに太字にした「機械学習とディープラーニングの手法」が多めに出るようです。
ここを理解していないと、G検定に合格も難しいでしょう。
難しく内容も多い部分ですが、しっかり覚えていきたいですね。
今回は畳み込みニューラルネットワークの主な構造や、基本的な用語を押さえていきたいと思います。
CNN(畳み込みニューラルネットワーク)の基本的な構造
CNN(畳み込みニューラルネットワーク)とは、画像処理に用いられる多層構造を持つニューラルネットワーク。
CNNの正式名称はConvolutional Neural Network。
CNNのイメージは以下の様な感じです。
学習の進み方としては
「畳み込み層」→「プーリング」→「畳み込み層」→「プーリング」→・・・→「全結合層」
という順番で学習が進んでいきます。
画像を見ても、何が何だか分かんないですよね。
この仕組みは理解しにくいところなので、それぞれの層について丁寧に解説していきたいと思います。
畳み込み層
CNNではまず「畳み込み層」と呼ばれるニューラルネットワークに、画像データを入力します。
畳み込み層の目的は、元の画像データの特徴を抽出すること。
この畳み込んだ後のデータを特徴マップといいます。
実際にどういった手順を踏んでいるかというと、
1.まず、以下の図のように元の画像データと「フィルタ(カーネル)」というものを用意します。
2.元データに、以下の図のようにカーネルを重ねて計算。
3.次にカーネルを一個横にずらして、また同じく計算します。
4.3を繰り返す
すると最終的に上図のような、画像データの特徴だけが抽出されたデータを得ることができます。
数字だけの説明だと、画像じゃないので分かりにくいですよね。
感覚的には以下の様に画像が変換されます。
元の画像とは大分異なりますが、これが特徴を抽出している、ということになります。
右の画像はカーネルの種類を変えると、違った特徴が抽出でき、また違う印象の画像になるわけですね。
次からは畳み込み層の基本的なキーワードを解説していきます。
フィルタ(カーネル)
フィルタ(カーネル)とは、n×nのデータで構成される元の画像の特徴を抽出するもののこと。
先ほどの章の1に出てきましたね。
右の元画像データに重ね合わせるn×nのデータのことです。
n×n中の値によって抽出できる特徴が変わり、特徴の種類数はハイパーパラメータ。
今回の例では2×2のカーネルですね。
つまり、何種類の特徴を抽出したいかは分析者自身によるということになります。
なので上図の一番左「Conv_1」で画像が増えているように見えるのは、特徴の種類分だけ増えた特徴マップということになりますね。
カーネルと元画像の計算は、基本的にそれぞれのデータを掛けて足し合わせます。
カーネル幅
カーネル幅とは、カーネルの縦横幅こと。
カーネルの縦と横は何データ分の幅か、という意味ですね。
つまりn×nのnに相当するものになります。
ストライド
ストライドとは、カーネルを一回で何データ分移動させるかということ。
畳み込み層の最初の説明で「3.カーネルを一個横にずらして、また同じく計算」と書きました。
しかし、ずらす個数が一個じゃないこともあります。
一個横にずらすと「ストライド1」
二個横にずらすと「ストライド2」
という風に数えていきます。
パディング
パディングは、画像の回りを何らかの値で埋めること。
イメージは以下の様な感じ。
パディング0であれば、回りを0で埋めます。
パディング1であれば、回りを1で埋めるというような意味ですね。
パディングを行うメリットは画像の端のデータを反映しやすく、画像サイズが小さくなりにくい事です。
プーリング層
畳み込み層では「特徴マップ」を作成して、画像の特徴を抽出できましたね。
次はプーリング層にデータが移っていきます。
プーリング層とは、抽出した特徴から位置に関する情報を上手く、削ぎ落とす処理のこと。
画像を「車」なのか「飛行機」なのかを区別したい時って、車が画像の左に写っていたり、右に写ってたりしてることって関係あるでしょうか。
区別したいだけなら関係ありませんよね。
なので位置に関する情報はいりません。
このように平行移動などが起きても影響がないように行う処理をプーリングといいます。
具体的な手法は主に以下の三種類。
・最大値プーリング
・平均値プーリング
・グローバルアベレージプーリング(GAP)
それぞれ見ていきましょう。
最大値プーリング
最大値プーリングとは、プーリングサイズ内の最大値を取ること。
イメージは以下の様な感じ。
例えば2×2のプーリングサイズであれば、その範囲内で最大値を取っていきます。
「畳み込み」と違って、プーリングサイズが重なるように移動はしないので注意してください。
平均値プーリング
平均値プーリングとは、プーリングサイズ内の平均値を取ること。
イメージは以下の様な感じ。
基本的には最大値プーリングとやることは同じです。
違いは最大値を取るのではなく、平均値を取ることくらいでしょうか。
グローバルアベレージプーリング(GAP)
グローバルアベレージプーリング(GAP)とは、特徴マップ内のデータの平均を使用した全結合層に変わる手法。
通常はプーリングを終えて全結合層に入力する際に、特徴マップの全データを使用します。
これではデータが画像なので、膨大な量になってしまいますよね。
入力層のデータが多いということは、それだけ学習にも時間がかかってしまいます。
なので学習の最適化をするために、全結合層の代わりにグローバルアベレージプーリングを使って計算を速くしようということです。
一般的な全結合層の話は、すぐ後の章で説明します。
説明の順番が逆になっていて分かりにくいかもしれませんが、ご了承ください。
イメージは以下の様な感じ。
具体的には、
1.分類したいクラスと特徴マップが1対1になるように調整。
2.それぞれの特徴マップ内のデータの平均をソフトマックス関数に通す。
となります。
「分類したいクラス」とは例えば、画像を車・飛行機・・・に分類したいときの「車」「飛行機」といった名前のことです。
ソフトマックス関数は多値の分類問題で使用される活性化関数でした。
全結合層というニューラルネットワークを使わなくても、ソフトマックス関数に入力するだけで画像分類を可能にしたわけですね。
全結合層
プーリング層で位置情報を削ぎ落とし、何が写っているかだけのデータが分かるようになりました。
この「畳み込み層」→「プーリング層」の処理を複数回繰り返した後で、データを全結合層に入力します。
全結合層とは、入力値から、画像が何に分類されるかを教師データを元に学習するニューラルネットワーク。
構造は一般的なニューラルネットワークと同じです。
イメージは以下の図。
プーリング層までで2×2の特徴マップができたとします。
この特徴マップデータを一列に並べ直して、全結合層に入力するという流れです。
あとは一般的なニューラルネットワークと同じなので、学習して分類した結果を出力します。
まとめ
今回は大項目「ディープラーニングの手法」の中の一つ「畳み込みニューラルネットワーク」についての解説第一弾でした。
本記事のキーワードをまとめると以下の通り。
・CNN(畳み込みニューラルネットワーク)
・畳み込み層
・フィルタ(カーネル)
・カーネル幅
・ストライド
・パディング
・プーリング層
・最大値プーリング
・平均値プーリング
・グローバルアベレージプーリング(GAP)
・全結合層
以上が大項目「ディープラーニングの手法」の中の一つ「畳み込みニューラルネットワーク」の内容でした。
ディープラーニングに関しても、細かく学習しようとするとキリがありませんし、専門的過ぎて難しくなってきます。
そこで、強化学習と同じように「そこそこ」で理解し、あとは「そういうのもあるのね」くらいで理解するのがいいでしょう。
そこで以下のようなことが重要になってくるのではないかと。
・ディープラーニングの特徴(それぞれの手法はどんな特徴があるのか)
・それぞれの手法のアルゴリズム(数式を覚えるのではなく、何が行われているか)
・何に使用されているのか(有名なもののみ)
ディープラーニングは様々な手法があるので、この三つだけでも非常に大変です。
しかし、学習を進めていると有名なものは、何度も出てくるので覚えられるようになります。
後は、新しい技術を知っているかどうかになりますが、シラバスに載っているものを押さえておけば問題ないかと。
次回は「ディープラーニングの手法」の「畳み込みニューラルネットワーク」の解説第二弾。
覚える内容が多いですが、りけーこっとんも頑張ります!
ではまた~
続きは以下のページからどうぞ!
コメント