こんにちは。管理人のピヨ猫でーす。
日本ディープラーニング協会(JDLA)が実施している機械学習の認定試験のG検定って何かすごいらしいねー。この前、機械学習のセミナーでG検定に合格したという方が講師していて、みんな「おっ!」てしていたよ。僕も機械学習の仕事に就きたいからG検定取りたいけど、機械学習って分野が広すぎて何をどう勉強して良いかわからないんだー。
日本ディープラーニング協会(JDLA)がG検定の推薦図書を出してくれているから、これに従って勉強すれば良いんだよ。すごく分かり易く書かれているから、今まで理解できないと思っていたこともすんなり理解できるようになるよ。これから詳しく勉強方法を説明するね。
1.日本ディープラーニング協会(JDLA)のG検定とは
日本ディープラーニング協会(JDLA)とは
日本ディープラーニング協会(JDLA)は、ディープラーニングを中心とする技術による日本の産業競争力の向上を目指し、2017年6月1日設立日された一般社団法人です。
詳しくは以下の記事を参照ください。
日本ディプラーニング協会のG検定とは?
G検定とは
G検定は日本ディープラーニング協会(JDLA)が実施している機械学習の検定試験です。
『ディープラーニングの基礎知識を有し、適切な活用方針を決定して事業応用する能力を持つ人材であることを測る検定』です。
2.G検定の勉強方法
日本ディープラーニング協会(JDLA)の推薦書籍
G検定の勉強方法は至ってシンプルです。
日本ディープラーニング協会(JDLA)が「G検定の問題はここから出す」と言っている、日本ディープラーニング協会(JDLA)が推薦する書籍があります。
日本ディープラーニング協会(JDLA)のG検定の問題はここからでる!!
![]() |
深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト (EXAMPRESS) [ 一般社団法人日本ディープラーニング協会 ] 価格:3,024円 |
なので、基本的にはこの本を読んで書いてあることが分かればG検定に合格できます。
この本はG検定の合格目的でなくてもとても良い本です。
機械学習を始める上での入門書と言った感じで、とても分かり易く順序立てて機械学習を行う上で必要なことが書かれています。機械学習を始める方は絶対に読んだ方が良いでしょう。
G検定の勉強のコツ
理解度を深めるコツとしては、
本を読む → キーワードを抑える → キーワードを見て意味が分かる程度になるまで、また本を読む
を繰り返すのが良いと思います。人それぞれですので、これが必ずしも良いということはありませんので、自分に合った勉強法があれば、自分に合った方法で勉強するのが良いかと思います。どうすれば良いかわからないという方は、上記の方法を試してみて下さい。
本記事で『深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト』の第六章のキーワードを纏めましたので、良ければ利用して下さい。
第六章~ディープラーニングの手法~のキーワード
6-1.活性化関数
1.tahnh関数
- ディープラーニングは層が深いほど複雑な関数を近似できる
- 層が深いと誤差逆伝播がうまくいかず学習精度が低くなる
- シグモイド関数の微分が問題
- 出力層を確率で表現するため最後はシグモイド関数かソフトマックス関数が必須
- 隠れ層は任意の実数を非線形に変換できれば、特にどんな関数でも良い
- 活性化関数が微分出来ないと誤差逆伝播法が使えないが、それ以外の制約はない
- tanh(ハイボリックタンジェント)関数
- tanhは-1~1の値を取る
- tanhは微分の最大値が1なので勾配が消失し辛い
- 但し-1、1より小さい微分の時は勾配が消失すら
2.ReLU関数
- 最も良く使われている関数
- y=max(0,x )
- xが0より大きい場合、微分値は常に1
- 誤差逆伝播で勾配が消失し辛い
- xが0以下の時は微分値が0になる
- 学習が上手くいかないこともある
- ReLu関数の派生系Leaky ReLu関数
- x < 0の時、僅な傾きを持っている
- ReLuより精度が良いときとそうでない時がある - Parametric ReLu
- Randomized ReLu
6-2.学習率の最適化
1.勾配下降法
- モデルの予測値と実際の値の誤差を無くすこと
- 誤差関数
- 関数の最小化問題
- 微分
- それぞれの層の重みで誤差関数を微分した値が0になるような重みを求める
- 偏微分
- 変数が多いと人が解析するのは困難
- アルゴリズムで最小化問題を解く
- 勾配下降法
- 勾配に沿って降りていくことで解を見つける
- 勾配とは微分値
- x(k+1)=x(k)-af'(x(k))
- 勾配に沿って繰り返し計算した数(k)をエポックと呼ぶ
- a=学習率
- 勾配に沿って一度にどれだけ降りていくか
- 学習率の設定次第では最適解が得られない
- ニューラルネットワークの学習とは勾配降下法を繰り返し行うこと
2.勾配下降法の問題と改善
- 適切な解が得られないケースが多々ある
- 勾配下降法は見せかけの最適解が見抜けない
- 局所最適解
- 大域最適解
- 学習率の値を大きく設定する
- 適切なタイミングで学習率を小さくしていく
- 鞍点
- ある次元では極小である次元では極大の点
- プラトー(鞍点問題)
- どの勾配に進んでいるときに学習率を小さく(大きく)するかを考える
プラトー(鞍点問題)の解決方
- モーメンタム
- Adagrad
- Adadelta
- RMSprop
- Adam
6-3.更なるテクニック
1.ドロップアウト
- オーバーフィッティング
- 訓練データに過敏に反応する
- ドロップアウト
- 学習の際にランダムにニューロンをドロップアウトさせる
- 形の異なる複数のネットワークを学習すればオーバーフィッティングのリスクが減る
- ドロップアウトはアンサンブル学習を行っている
- の予測値と実際の値の誤差を無くすこと
2.early stopping
- 訓練データにオーバーフィッティングするのは避けられない
- 誤差関数のあたいはエポックが進むにつれて訓練データに対しては小さくなる
- 誤差関数のあたいはエポックが進むにつれてテストデータに対しては緩やかに大きくなる
→ オーバーフィッティングしている - early stopping
→ 学習を早めに打ち切るもの - ノーフリーランチ定理
3.データの正規化・重みの初期化
- 入力データの処理は機械学習の処理全般でやった方が良い
- スケールを調整するなどの正規化を施す
- 各特徴量を0~1の値に変換する
- 標準化
各特徴量を標準正規分布に従うように変換する - 白色化
各特徴量を無相関化した上で標準化する - 正規化はディープラーニングでは効果が薄い場合がある
- 重みの初期値を工夫する
- ネットワークの大きさに応じた係数をかける
- シグモイド関数に対してはXavierの初期値
- ReLU関数に対してはHeの初期値
4.バッチ正規化
- 各層に伝わってきたデータを正規化する
- バッチ正規化(batch normalization)
- 各層において活性化関数をかける前に伝播してきたデータを正規化する
- オーバーフィッティングしにくくなる
6-4.CNN:畳み込みニューラルネットワーク
1.画像データの扱い
- 画像は縦横の二次元
- 色情報を持つので画像は三次元
- 画像を三次元から一列に変換すると位置情報が落ちるので精度が下がる。三次元のまま学習するのが望ましい
- 畳み込みニューラルネットネットワーク(Convolution Neural Network)
- 画像をそのまま2次元で用いることができるモデル
2.CNNの基本形
◆ 人間が持つ視覚野の神経細胞の2つの働きを模している
- 単純型細胞(S細胞)
画像の濃淡パターンを検出 - 複雑型細胞(C細胞)
物体の位置が変わっても同じ物体と見なす - 福島邦彦のネオコグニトロン
- ヤン・ルカンのLeNet
畳込層とプーリング層(サブサンプリング層)の2種類の層を交互に組み合わせ。誤差逆伝播方で学習
3.畳み込み
- カーネルと呼ばれるフィルターを用いて特徴を抽出する
- フィルターを画像の端から順番に重ね合わせていき、画像とフィルターの総和を求めていく処理
- フィルターを重ね合わせて作られた2次元配列を特徴マップと呼ぶ
- フィルターは複数用意する
- フィルターによって結果が変わる
- フィルターの値を学習させる
- フィルターがニューラルネットワークで言うところの重み
- 位置のずれに強いモデル
4.プーリング
- プーリングは決められた演算だけを行うためのもの
- ダウンサンプリング
- サブサンプリング
- 画像サイズを決められたルールに従い小さくする
- maxプーリング
画像(特徴マップ)の最大値を抽出 - avgプーリング
画像(特徴マップ)の平均値を取る - プーリングは処理が決まっているので畳み込みと違い学習は不要
5.全結合層
- 出力の次元を一次元にする
- 最終的に畳み込み・プーリング層を全結合する
- 全結合は普通のニューラルネットワーク
- (全結合層の入力データが)特徴量が分解されてるので高い精度が出る
- 最近は全結合しないGlobal Average Pooling
6.データ拡張
◆ 画像認識の課題
- 同じ物体でも角度で見え方が違う
- 同じ物体でも拡大縮小によって見え方が違う
- 同じ物体でも光のあたり方で見え方が違う
- あらゆるパターンのデータを集めるのは不可能
- 擬似的にデータを増やす → データ拡張(data augmentation)
- データの水増し
- 手元にあるデータにランダムに幾つかの処理を施す
◆ 画像に施す処理
- 上下左右にずらす
- 上下左右を反転する
- 拡大・縮小をする
- 回転をする
- 斜めに歪める
- 一部を切り取る
- コントラストを変える
- 闇雲に全ての処理を施さないこと
いいねを反転したら真逆の意味になる
7.CNNの発展形
- AlexNet(アレックスネット)
- VGG
- GoogLeNet
- 小さなサイズの畳み込みフィルターを差し込んで次元(計算量)を削減する
- Inceptionモジュール
- Skip connection(層を飛び越えた結合)
- ResNet
層が深くなっても層を飛び越える部分は伝播がし易い
様々な形のネットワークのアンサンブル学習になっている
8.転移学習
- 層を深く出来るようになった
- 計算に費やす時間が膨大
- ImageNetで学習済みのネットが公開されている
- 学習済みのモデルに何層か追加しファインチューニングする
- 転移学習
6-5.RNN:リカレントニューラルネットワーク
1.時系列データの扱い
- 時間軸に対して何かパターンを持っている
- CNNは時間軸の重みが消える
- データは時間軸に沿って入力すべき
- ネットワーク自体に時間情報を反映する仕組みが必要
- リカレントニューラルネット(Recurent Neural Network)
2.RNNの基本形
- 過去の隠れ層を追加
- 通常のニューラルネットワーク同様、入力層から隠れ層に情報が伝播
- 加えて過去の隠れ層からも過去データの重みが隠れ層に伝播
- 勾配下降法で時間軸にそって誤差を逆伝播
- BackPropagation Through-Time(BPTT)
3.LSTM
- RNNには勾配消失問題がある
- 時系列データの重み付けの問題
今は関係ないけど将来関係あるデータが入力された時の重みはどうするの? - 上↑の問題を「出力重み衝突」と言う
- LSTM(Long Short-Term Memory)
◆ LSTMブロック
- LSTMブロックはネットワーク全体ではなくネットワークの1つの層を成す部品
- 誤差を内部に留まらせるセルと
- 必要な情報を必要な時に保持・消失させるゲートを持つ
- セルはCEC(Constant Error Carousel)と呼ばれる
- 誤差を内部に止め勾配消失を防げる
- ゲートは入力、出力、忘却ゲートから成る
- 入力重み衝突、出力重み衝突を防ぐ
- LSTMは回帰のデファクトスタンダード
- 但し重いので、GRUを用いることがある
4.RNNの発展形
4.1.Bidirectional RNN
- 時間情報の途中が欠けている時、欠けている情報を予想
- 過去→未来、未来→過去の二つのLSTMを組み合わせる
4.2.RNN Encoder-Decoder
- 入力はEncoderで処理
- 出力はDecoderで処理
- Decoderは自身の出力を次のステップで入力として受けとることで時系列の出力を作る
4.3.Attention
- 時間の重みを埋め込んだRNN
6-6.深層強化学習
1.強化学習
- 行動を学習する仕組み
- ある環境下で報酬(スコア)を最大にする方法を学習
- 教師あり学習と混同しないこと
- 一連の行動系列の結果としての報酬が最大になるように学習
- 強化学習で教師あり学習でやりたいことも出来る
- 但し、強化学習は学習したいことの状態の表現が凄く難しい
- また、時間内に答を出すのが難しい
- 1990年は研究が盛んに行われた
- 2000年に上述の問題で下火に
2.深層強化学習
- 状態や行動の表現にディープラーニングを使用
- Q学習(Q learning)
- DQN(Deep Q-Network)
- Double DQN
- Dueling Network
- Categorical DQN
- Rainbow
- AlphaGo(アルファ碁)
AlphaGo(アルファ碁)
- ディープマインド社
- 行動、状態評価にCNN
- 行動の探索はモンテカルロ法
- 棋譜を学習に利用
- 棋譜を必要としないAlphaGo Zero誕生
6-7.深層生成モデル
1.生成タスクへのアプローチ
- 認識・識別タスク以外に生成タスクにも利用
- 画像データの生成、時系列データの生成が活発に研究されている
- 生成タスクは大きく2つに分かれる
データを元に、新しい何かを生成する
- 識別モデルの延長と言える。
- 結果を予想し続ければ新しい何かが作れる。
- WaveNet (音声生成モデル)
データそのものを生成する
- 本当の生成モデル
-- データの分布を解析し新しいデータを作る - ディープラーニングを取り入れた生成モデルを深層生成モデルと言う
2.画像生成モデル
- 変分オートエンコーダー(Varialation AutoEncoder VAE)
- 敵対的生成ネットワーク(Generative Adversarial Network GNA)
VAE (変分オートエンコーダー)
- オートエンコーダーを活用
- VAEは入力を統計分布に変換する
- 平均と分散を表現する
- 画像は何らかの分布によって生成されると解釈
- エンコーダーで統計分布へ変換し、
- デコーダーが分布から新しいデータを生成する
GAN (敵対的生成ネットワーク)
- ジェネレーター (generator)
入力として潜在空間のランダムベクトルを受け取り、画像を生成して出力する。
ディスクリミネータが偽物と見抜けない様に学習。 - ディスクリミネータ (discriminator)
入力として画像を受け取る。その画像が本物か(ジェネレーターによって生成された)偽物かを予想して出力する。
ジェネレーターが生成したものを偽物と見抜けるように学習 - ディープラーニングを用いたGANをDCGAN(Deep Convolution GAN)と言う。
第六章~ディープラーニングの手法
6-4.CNN:畳み込みニューラルネットワーク
- 畳み込み層、プーリング層を組み合わせ行い、最後に全結合層を通す
- 畳み込み層(Convolution)
カーネルと呼ばれるフィルターを用いて特徴を抽出する - プーリング層
プーリングは決められた演算だけを行うためのもの - 全結合層
全結合は普通のニューラルネットワーク
畳み込み層、プーリング層を通して特徴量が分解された入力データをニューラルネットワークに通すので高い精度が出る
もう一つのポイントは、データの準備についてでしょう。
画像解析は機械学習をする前にデータの準備を工夫する必要があるということです。
同じ物体でも、角度や光のあたり具合などで見え方が違うので、訓練データも色々なパターンを用意する必要があります。全てのパターンを用意するのは極めて難しいので、手持ちのデータの形をかえるなどしてデータを水増しするのが一般的ということを抑えておきましょう。
6-5.RNN:リカレントニューラルネットワーク
RNNはディープラーニングの醍醐味の一つである回帰を行うための仕組みなので、RNNの基本的な構成は押さえておいた方が良いと思います。
時系列データを扱うにはRNNを使う。
RNNは出力を入力層に戻すことで、時系列の重み付けを行う。
RNNの発展系がLSTMで現在はLSTMが主流。LSTMはRNNの勾配消失問題を防ぐために、RNNに誤差を内部に留まらせるセルと、必要な情報を必要な時に保持・消失させるゲートを持たせている。ということを押さえて起きましょう。
6-6.深層強化学習
強化学習の基本的な考え方は絶対に押さえておきましょう。
【強化学習の概念】
- ある環境下で報酬(スコア)を最大にする方法を学習すること
また、強化学習は教師あり学習の目的(分類、回帰)を実現出来て、教師(答え)を用意しなくても学習してくれるけれど、強化学習は状態を作るのが難しく、また、コストもかかるので、教師あり学習と強化学習のどちらを使うかは状況によって決めるということが一つのポイントだと思います。
また、強化学習と言えばDQNくらい、DQNの記事が出てるので、DQN(Deep Q-Network)というキーワードは覚えておいた方が良いと思います。
6-7.深層生成モデル
生成モデルにはVAEとGANがあることと、それぞれの特長は抑えておきましょう。
- VAE : 変分オートエンコーダー
エンコーダーで統計分布へ変換し、デコーダーが分布から新しいデータを生成する。 - GAN : 敵対的生成ネットワーク
ジェネレーターが本物と見分けがつかないデータを生成する様に学習し、ディスクリミネータが本物と偽物を見分ける様に学習することを繰り返し、結果、本物に近いものを生成する。
第六章はこれで終了です。次章も頑張りましょー
(参考)日本ディープラーニング協会(JDLA)のその他の推薦図書
![]() |
◆◆AI白書 2019 / 情報処理推進機構AI白書編集委員会/編 / 角川アスキー総合研究所 価格:3,888円 |
![]() |
人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書) [ 松尾豊 ] 価格:1,512円 |