【E資格不合格から学ぶ】深層学習の概要を解説!

  • 「深層学習(Deep Learning)」について学びたいけど理解できるか不安・・・
  • 「深層学習(Deep Learning)」についてどこから学んでいいか分からない?
  • 「深層学習(Deep Learning)」の全体像を分かりやすく教えて!

 「深層学習(Deep Learning)」は既に様々な商品・サービスに組み込まれて利活用が始まっている注目の技術ですが、興味があっても難しそうで何から学んだらよいか分からず、勉強のやる気を失うケースは非常に多いです。

 私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、また2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。しかし「E資格」を受験し3回不合格になった苦い経験があります。この経験より不合格になった原因を追究し学習すべき要点を整理しました。 

 そこでこの記事では、「深層学習(Deep Learning)」の概要について解説します。

 この記事を参考にして「深層学習」の概要を理解できれば、E資格に合格できるはずです。

<<「深層学習」の概要について今すぐ知りたい方はこちら

目次

0.プロローグ

  • 識別と生成
    機械学習(深層学習)モデルを入力・出力の目的で分類したもの
識別と生成の概要
識別と生成の概要
生成モデル・識別モデル・識別関数の概要
生成モデル・識別モデル・識別関数の概要

P(Ck|x)・・・入力データxに対するクラスCkの条件付き確率(事後確率)

引用元:【機械学習】統計学(条件付き確率とベイズ則)とは?

ベイズの定理とは・・・

ベイズの定理
ベイズの定理

P(A):事象Aが起きる確率
P(B):事象Bが起きる確率
P(B|A)ある事象Aが与えられた下で、Bとなる確率
P(A|B)ある事象Bが与えられた下で、Aとなる確率 


引用元:【機械学習】統計学(条件付き確率とベイズ則)とは?

0.1 識別モデルと識別関数

識別モデルとは?
  • 特徴
    ・確率に基づいた識別境界を設定
     ⇒ 最大値<識別境界の場合は回答しないモデルとすることが可能
    高次元→低次元、学習データ少ない
  • 識別の計算:P(Ck|x)を推定 ※閾値に基ずく決定など ← 条件付き確率 
  • モデル化の対象:データがクラスに属する確率
  • 特徴:確率的な識別
  • 学習コスト:中
  • 具体例:ニューラルネットワーク
識別関数とは?
  • 識別の計算
    入力値xを直接クラスに写像(変換)する関数(x)を推定 
  • モデル化の対象
    ・データに属するクラスの情報のみ 
    確率は計算されない
  • 特徴: 
    ・学習量が少ない
    ・決定的な識別  
  • 学習コスト
  • 具体例:
    決定木、ロジスティック回帰サポートベクターマシン(SVM)

0.2 「生成モデル」の開発アプローチ

生成モデルとは?
  • 識別の計算
    P(x|Ck)・p(Ck)を推定 ← ベイズの定理 
  • モデル化の対象
    ・各クラスの生起確率
    ・データのクラス条件付き密度
  • 特徴
    ・特定のクラスに属する人工的なデータを作成できる
    ・応用例・・・データ拡張、異常検知、欠損値の補完
    ・確率的な識別
  • 学習コスト
  • 例題:生成モデルではあるデータxについて、各Ciにおけるxとなる確率すなわちP(x|Ci)と、Ciが出現する確率P(Ci)を求めることでxがあるCiに分類される確率を求める。ある学生の性別データから学校Aか学校Bかを判別するモデルを考える。
     学校Aの男女比は7:3で生徒数は1000人,学校Bの男女比は2:8で生徒数は250人であるとする。ある入力データxiについて性別が女子であった時、学校Aに属する確率を求めよ。ただし、ここで性別は男子もしくは女子しか考えないものとする。
  • 回答
学校A
(C1)
学校B
(C2)
男子70050750
女子(x)300200500
1,0002501,250
各学校A・Bにおける男子生徒及び女子生徒の人数
ベイズ則に用いる各確率の値
ベイズ則に用いる各確率の値
性別が女子であった時、学校Aに属する確率の計算例
性別が女子であった時、学校Aに属する確率の計算例
  • 例題:識別モデルでは直接、事後確率p(Ck|x)を決める推論問題を解く。複数の球が入った箱があり、球の色が白か赤、大きさは大きいものと小さいものがある。球の数の分布が次のような表の様になっていることが分かっている。
     このときp(Ck=白|x=大)を求めよ。ただし、Ckは白か赤の二値、xは”大”と”小”の二値しかとらないものとする。
12個28個40個
18個4個22個
30個32個62個
球の数の分布
  • 回答
識別モデルの例題に対する回答
識別モデルの例題に対する回答

0.3 識別器における生成モデルと識別モデル

生成モデルとは・・・
  • データの分布は分類結果より複雑なことがある。
  • データの分布を推定
生成モデルと識別モデルが学習する内容
生成モデルと識別モデルが学習する内容
データのクラス条件付き密度
(上図左)
データがクラスに属する確率
(上図右)
・分類結果より複雑
・生成モデルはこの分布を推定
計算量が多い
分類結果を得る
分類モデルのアプローチ
データのクラス条件付き密度とデータがクラスに属する確率

0.4 識別器における識別モデルと識別関数

識別モデル識別結果の確率が得られる。
識別関数:識別結果のみ。

識別モデルと識別関数の違い
識別モデルと識別関数の違い
識別モデル
(確率的識別モデル)
識別関数
(決定的識別モデル)
仕組み推論:入力データを基に事後確率を求める。
決定:事後確率p(Ck|x)を基に識別結果を得る。
入力データから識別結果を一気に得る。
特 徴間違いの程度を測ることが出来る。推論結果の取り扱いを決められる(棄却など)。
⇒確率に基づいた識別境界を設定し、最大値が識別境界を下回った場合は回答しないモデルとすることができる。
間違いの程度を測ることができない。
具体例
(犬と猫の2値分類の場合)
出力値は「犬:0.93、猫:0.07」や「犬:0.55、猫:0.41」のようにその予測の確率も把握が可能
∴「1つのカテゴリが0.7以上の場合に回答する」のように、識別境界を設定が可能
直接クラスの番号を出力すると、出力値は「犬」または「猫」となる。
識別モデルと識別関数の違い

0.5 万能近似定理と深さ

ノーフリーランチ定理とは・・・

 あらゆる問題で性能の良い汎用的な最適化戦略は理論上不可能であり、ある戦略が他の戦略より性能がよいのは、現に解こうとしている特定の問題に対して特殊化(専門化)されている場合のみである。
 この定理は、問題領域に関する知識を使わずに遺伝的アルゴリズムや焼きなまし法などの汎用探索アルゴリズムを使うことに反対する論拠として使われる。
引用元:Wikipedia

「ニューラルネットワーク」はどんな関数でも近似できる(=万能近似定理)

0.6 ニューラルネットワーク全体像

①ニューラルネットワーク(NN)でできること
区分できること具体例
回帰結果予想売上予想
株価予想
ランキング競馬予想順位
人気予想順位
分類分類猫写真の判別
手書き文字認識
花の種類分類
ニューラルネットワーク(NN)ができること一覧
②ニューラルネットワーク:回帰
  • 連続する実数値を取る関数の近似
  • 回帰分析
    線形回帰
    ・回帰木
    ・ランダムフォレスト
    ニューラルネットワーク(NN) ←  万能近似定理
③ニューラルネットワーク:分類
  • 性別(男あるいは女)や動物の種類など離散的な結果を予想するための分析
  • 【分類分析】
    ・ベイズ分類
    ロジスティック回帰
    ・決定木
    ・ランダムフォレスト
    ニューラルネットワーク(NN) ←  万能近似定理
④深層学習の実用例
  • 深層学習:中間層が4つ以上
    ・自動売買(トレード) 全銘柄の平均株価→ある1社の株価を予測
    ・チャットボット    質問の文章→回答の文章
    ・翻訳         翻訳したい文章→翻訳した文章
    ・音声解釈       空気の振動数→文字の出力
    ・囲碁(AlphaGo)、将棋AI  

0.7 確認テスト

問題1
  • Q1.ディープラーニングは何をしようとしているのか?
  • A1.明示的なプログラムの代わりに多数の中間層を持つニューラルネットワークを用いて、入力値から目的とする出力値に変換する数学モデルを構築すること。
問題2
  • Q2.何を最適化するのか?
  • A2.③重み(W)、④バイアス(b)
問題3

Q3.次のネットワークを紙に書け。
   入力層:2ノード1層
   中間層:3ノード2層
   出力層:1ノード1層

A3.

入力層が2ノード1層、中間層が3ノード2層、出力層が1ノード1層のニューラルネットワーク
入力層が2ノード1層、中間層が3ノード2層、出力層が1ノード1層のニューラルネットワーク

  

1.入力層~中間層  

ノード4の入力層と1層の中間層の例
ノード4の入力層と1層の中間層の例

1.1 確認テスト

問題1
  • Q.上図式に動物分類の実例を入れてみよう。
  • A.動物種類分類ネットワーク
    x1=10 体長  
    x2=30 体重
    x3=300 ひげの本数
    x4=15  毛の平均長
    X5=50  耳の大きさ
    x6=1.8 眉間/目 鼻 距離比
    x7=20  足の長さ
問題2
  • Q.下記の数式をPythonで書け。
    u=w1x1+w2x2+w3x3+w4x4+b
     =Wx+b・・・(1.2)
  • A.# 1層の総入力    
    u1=np.dot(x, W1) + b1
問題3

Q.1-1のファイルから中間層の出力を定義しているソースを抜き出せ。
A.# 2層の総入力    
 u2 = np.dot(z1, W2) + b2        

 # 2層の総出力    
 z2 = functions.relu(u2)

2.活性化関数

活性化関数とは・・・
  • ニューラルネットワークにおいて、次の層への出力の大きさを決める非線形の関数
  • 入力値の値によって、次の層への信号のON/OFFや強弱を定める働きをもつ。
活性化関数の定義式
活性化関数の定義式

 

2.1 中間層の活性化関数

ステップ関数
  • 閾(しきい)値を超えたら発火する関数であり、出力は常に1か0。
  • パーセプロトン(ニューラルネットワークの前身)で利用された関数。
  • 【課題】0~1間の間を表現できず、線形分離可能なものしか学習できなかった。
ステップ関数の描画
ステップ関数の描画
シグモイド(ロジスティック)関数
  • 0~1の間を緩やかに変化する関数
    ステップ関数ではON/OFFしかない状態に対し、信号の強弱で伝えられるようになる
  • 予想ニューラルネットワーク普及のきっかけとなった。
  • シグモイド関数の微分 ⇒ f(x)’ = (1ーf(x))・f(x)
  • 【課題大きな値では出力の変化が微小なため勾配消失問題を引き起こすことがあった。
シグモイド関数の描画
シグモイド関数の描画
ReLU関数
  • 今最も使われている活性化関数
  • シグモイド関数の勾配消失問題を解消
  • 勾配消失問題の回避とスパース化に貢献することで良い成果をもたらしている。
ReLU関数の描画
ReLU関数の描画
ソフトプラス関数
  • log(1+exp(x))
  • ReLU関数に似ている。xが小さい時にはy=0、xが大きい時にはy=x
  • 全区間で微分可能
    (ReLU関数はx=0で非連続で微分不可)

2.2 確認テスト

問題1

Q1.線形と非線形の違いを図に書いて簡易に説明せよ。

A1.

線形関数と非線形関数の図
線形関数と非線形関数の図
線形な関数非線形な関数
入力と出力の関係が比例
加法性:f(x+y)=f(x)+f(y)
斉次性:f(kx)=kf(x)
満たす
入力と出力の関係が比例ではない。
・加法性・斉次性を満たさない
線形な関数と非線形な関数の比較

3.出力層

出力層の役割とは・・・
  • 誤差関数
  • 出力層の活性化関数
    各クラスの確率を出す

3.1 誤差関数

誤差の計算
  • 誤差関数が二乗誤差の場合
誤差関数が2乗誤差の場合の数式
誤差関数が2乗誤差の場合の数式
学生
学生
  • ①誤差関数はなぜ、引き算ではなく二乗するの?
  • ②上式の1/2はどういう意味を持つの?
著者
著者
  • ①引き算を行うだけでは、正負両方の値が発生してしまうからだよ!!
  • 誤差関数の微分を簡単にするためだよ!!(本質的な意味はないよ。)
学生
学生

誤差関数はなぜ、四乗ではいけないの?

四乗なら二乗と同じように正負両方の値が発生しないよ!

著者
著者

四乗と二乗は同じような特徴になるから、わざわざ面倒な四乗の計算をする必要はないんだよ!!

二乗誤差の「数式とコード」

loss = functions.mean_squared_error(d, y)

※本来ならば分類問題の場合
 誤差関数にクロスエントロピー誤差を用いるのでコードは
 loss = cross_entropy_error(d, y)
 となる。

3.2 出力層の活性化関数

3.2.1 出力層の中間層との違い

出力層中間層
値の強弱信号の大きさ(比率)はそのままに変換閾(しきい)値の前後で信号の強弱を調整
確率出力分類問題の場合、出力層の出力は0~1の範囲に限定し、総和を1とする必要がある。分類問題の場合、出力層の出力は0~1の範囲に限定する必要はない。
出力層と中間層の活性化関数の違い

3.3.2 出力層用の活性化関数

全結合ニューラルネットワークで用いる出力層の種類
全結合ニューラルネットワークで用いる出力層の種類
ソフトマックス関数
softmax関数
softmax関数
恒等関数
恒等関数
恒等関数
  • シグモイド(ロジスティック)関数
著者

上図の組合せを間違えなければある程度の精度が得られるニューラルネットワークを作ることができるよ!!

        

バイナリクロスエントロピー損失データのクラスが2クラスの場合に使用。

 2クラスというのはデータの種類が2つであることを意味する。

 バイナリクロスエントロピー損失は一種の距離を表すような指標で、ニューラルネットワークの出力と正解との間にどの程度の差があるのかを示す尺度

数式とコード

・数式とコード  
 シグモイド関数 f(u) = 1/(1+e-u)
 def sigmoid(x): return 1/(1 + np.exp(x))

シグモイド関数の描画
シグモイド関数の描画
平均二乗誤差の「数式とコード」

・数式とコード
 誤差関数

二乗誤差の数式
二乗誤差の数式

def mean_squared_error(d, y):
return np.mean(np.square(d – y)) / 2 ←平均二乗誤差

3.3. 確認テスト

問題1
  • Q1.・下式はなぜ、引き算ではなく2乗するか述べよ。
      ・下式の1/2はどういう意味を持つか述べよ。
誤差関数が2乗誤差の場合の数式
誤差関数が2乗誤差の場合の数式
  • A1.
    ・2乗する理由
     引き算を行うだけでは、各ラベルでの誤差で正負両方の値が発生し、全体の誤差を正しくあらわすのに都合が悪い。2乗してそれぞれのラベルでの誤差を正の値になるようにする。
    ・1/2する理由
     実際にネットワークを学習する時に行う誤差逆伝播の計算で、誤差関数の微分を用いるが、その際の計算式を簡単にするため。本質的な意味はない。
問題2
  • Q2.①~③の数式に該当するソースコードを示し、一行づつ処理の説明をせよ。
ソフトマックス関数の数式
ソフトマックス関数の数式
  • A2.def softmax(x):
      if x.ndim == 2:
       x = x.T
       x = x – np.max(x, axis=0)
       y = np.exp(x) / np.sum(np.exp(x), axis=0)
       return y.T
      x = x – np.max(x) #オーバーフロー対策
      return np.exp(x) / np.sum(np.exp(x))
問題3
  • Q3.
交差エントロピーの数式
交差エントロピーの数式

   ①~②の数式に該当するソースコードを示し、一行ずつ処理を説明せよ。

  • A3.
     def cross_entropy_error(d, y):
      if y.ndim == 1:
       d = d.reshape(1, d.size)
       y = y.reshape(1, y.size)

# 教師データがone-hot-vectorの場合、正解ラベルのインデックスに変換
if d.size == y.size:
d = d.argmax(axis=1)

  batch_size = y.shape[0]
return -np.sum(np.log(y[np.arange(batch_size), d] + 1e-7)) /batch_size

4.勾配降下法

深層学習の目的

学習を通して誤差を最小にするネットワークを作成すること

→ 誤差E(w)を最小化するパラメータwを発見すること

勾配降下法を利用してパラメータを最適化

勾配降下法の種類
  • 勾配降下法
  • 確率的勾配降下法
  • ミニバッチ勾配降下法

4.1 勾配降下法(Gradient Descent

勾配降下法とは・・・

E(誤差関数)の値をより小さくする方向にw(重み)及びb(バイアス)を更新し次の周(エポック)に反映

勾配降下法の説明図
勾配降下法の説明図
勾配降下法の定義式
勾配降下法の定義式
学習率
  • 大きすぎた場合:最小値にいつまでも辿り着かず発散
  • 小さすぎた場合:収束するまでに時間がかかる
  • 勾配降下法の工夫(例)
    学習率を最初は大きくし、学習が進むにつれて小さくする。
学習率の最適化手法

 勾配降下法の「学習率」の決定、収束性向上のためのアルゴリズムの代表例は下記のとおり。
詳細は「【深層学習】性能向上の方法とは?」を参照

4.2 確率的勾配降下法(SGD:Stochastic Gradient Descent)

確率的勾配降下法と勾配降下法の比較
確率的勾配降下法と勾配降下法の比較
メリットデメリット
確率的勾配降下法・データが冗長な場合の計算コストの軽減
・望まない局所極小解に収束するリスクの軽減
・オンライン学習ができる。
パラメータの更新量は初期値に依存しない
・結果は学習率に依存する。
・訓練データの順番を変えると
結果も変わる可能性がある。
確率的勾配降下法のメリット・デメリット
学生

「オンライン学習」とはどういう意味?

著者
  • オンライン学習とは学習データが入ってくる度に都度パラメータを更新し、学習を進めていく方法のことだよ!!
  • バッチ学習とは一度に全ての学習データを使ってパラメータ更新を行う方法だよ!!
    ちなみにバッチ(batch)とは「束」とか「群」という意味だよ。

【勾配降下法と比べた時の確率的勾配降下法の特徴】

ホールドアウト法確率的勾配降下法
計算コスト
(1度のパラメータ更新)
大きい小さい
計算コスト
(大規模データ)
大きい小さい
精度
(1度のパラメータ更新)
高い低い
学習中における新しいデータの利用不可
勾配降下法と確率的勾配降下法の比較

【例題】

Q1.以下の訓練データが与えられたとする。

xy
-1.01.0
0.00.6
3.0ー0.8
訓練データ

y=ax+bと仮定し、そのパラメータa,bを求める。このとき訓練データとy=ax+bの誤差を最小化する目的関数E(a,b)は下式とする。

最小化する目的関数E(a,b)
最小化する目的関数E(a,b)

目的関数のa,bに関する偏微分∂E/∂a、∂E/∂bはどのように表せるか?

A1.

偏微分∂E/∂a、∂E/∂bを表す式
偏微分∂E/∂a、∂E/∂bを表す式

Q2.確率的勾配降下法で目的関数E(a,b)を最小化すると1回目のパラメータa,bの更新量は各々いくらになるか。ただしa,bの初期値をそれぞれ1.0,0.0、学習率μ=0.1,1回目の訓練サンプルをx=-1.0とする。

A2.確率的勾配降下法(SDG)は下式①②で表現できる。

Q2の解答例
Q2の解答例

4.3 ミニバッチ勾配降下法

ミニバッチ勾配降下法とは・・・
  • 現在、ディープニューラルネットワークで使用される一般的な手法
ミニバッチ勾配降下法と確率的勾配降下法の比較
ミニバッチ勾配降下法と確率的勾配降下法の比較
ミニバッチ勾配降下法のメリット
  • 確率的勾配降下法のメリットを損なわず、計算機の計算資源を有効利用できる→ CPUを利用したスレッド並列化やGPUを利用したSIMD並列化
  • 補足1)スレッド並列化:複数の演算器を起き、各演算器は一つのスレッドを実行する。つまり各スレッドが一つの仕事を担当し、複数のスレッドを並列に実行する方法。現在の多くのGPUが採用しているSIMT方式は、スレッド並列の実行を行う。
  • 補足2)SIMD(Single Instruction Multiple Data):コンピュータやマイクロプロセッサで並列処理を行なうための設計様式の一つで、一つの命令を同時に複数のデータに適用し、並列に処理する方式。そのような処理方式をベクトル演算、ベクトル処理などと呼ぶことがある。

4.4 Pythonコード

ミニバッチ学習で用いられるPythonコード

(編集中)

4.5 確認テスト

問題1
  • Q1.該当するソースコードを探してみよう。
  • A1. w(t+1) = w(t) – εΔE
        ΔE = δE/δw=[δE/δw1・・・δE/δwM]
問題2
  • Q2.オンライン学習とは何か2行でまとめよ。
  • A2.オンライン学習とは学習データが入ってくる度に都度パラメータを更新し、学習を進めていく方法。
     一方、バッチ学習では一度に全ての学習データを使ってパラメータ更新を行う。
問題3
  • Q3. w(t+1) = w(t) – εΔEt
       上式の意味を図に書いて説明せよ。
  • A3.
数式w(t+1) = w(t) - εΔEt のイメージ図
数式w(t+1) = w(t) – εΔEt のイメージ図

    

5.誤差逆伝播法 

5.1 誤差勾配の計算

誤差勾配の数式
誤差勾配の数式
学生
学生

上式の誤差勾配はどう計算するの?

著者
著者

下のように数値微分するよ

数値微分とは・・・
  • プログラムで微小な数値を生成し疑似的に微分を計算する一般的な手法
数値微分の数式
数値微分の数式


m番目のwを微小変化させた状態で誤差Eを全てのwについて計算

  • 数値微分のデメリット
     各パラメータwmそれぞれについてE(wm +h)やE(wm – h)を計算するために、順伝播の計算を繰り返し行う必要があり負荷が大きい
                    
                 誤差逆伝播法を利用
誤差逆伝播法とは・・・
  • 算出された誤差を、出力層側から順に微分し、前の層前の層へと伝播。 最小限の計算で各パラメータでの微分値を解析的に計算する手法
誤差逆伝播法の概略図
誤差逆伝播法の概略図
誤差逆伝播法のフロー図
誤差逆伝播法のフロー

 上図より、誤差逆伝播法を用いて計算結果(=誤差)から微分を逆算することで、不要な再帰的計算を避けて微分算出できる。

誤差逆伝播法の計算その1
誤差逆伝播法の計算その1
誤差逆伝播法の計算その2
誤差逆伝播法の計算その2

   

5.2 確認テスト

確認テスト
  • Q1.誤差逆伝播法では不要な再帰的処理を避ける事が出来る。
       既に行った計算結果を保持しているソースコードを抽出せよ。
    A1.# 出力層でのデルタdelta2 = functions.d_mean_squared_error(d, y)
    ## 試してみようdelta1 = np.dot(delta2, W2.T) * functions.d_sigmoid(z1)
  • Q2.下記のソースコードを探せ 
Eをyで微分
Eをyで
微分


delta2 = functions.d_mean_squared_error(d, y)

(Eをyで微分)×(yをuで微分)
(Eをyで微分)×(yをuで微分)


delta2 = functions.d_mean_squared_error(d, y)

(Eをyで微分)×(yをuで微分)×(uをwで微分)
(Eをyで微分)×(yをuで微分)×(uをwで微分)


grad[‘W1’] = np.dot(x.T, delta1)

6.ディープラーニングの開発環境

6.1 ローカルな開発環境(家にあるパソコン)

CPUとは・・・
  • どんなPCにも入っている→どんな処理にも使える
  • 複数命令列・複数データ(MIMD:Multiple Instraction, Multiple Data)
  • マルチコアCPU・・・複数のCPUをもつ。かつては1つのコアが一般的であったが、2007年頃から2つのコアが普及。4つのコアを持つものもある。
GPUとは・・・
  • 用途:ゲームPC
    単一命令列・複数データ(SIMD:Single Instraction, Multiple Data)
    の処理の性能を追求
    当初はグラフィックを表示 ⇒ 汎用的な科学計算
  • メモリにデータとプログラムを内蔵しメモリから命令を逐次取り出し
    実行する ⇒ノイマン型プロセッサの一種
    ハイエンドモデルは数千個の演算コアを持つ
  • Tensorflow PyTorch にサポートされている。
FPGAとは・・・
  • Field Programmable Gate Array・・・自分でプログラムできる計算機
    ディープラーニングにおける行列演算を論理回路によって物理的に実装
    処理速度の高速化、低消費電力化
  • 製造後に内部の論理回路の構成を書き換えることができる。
    柔軟な開発ができる
  • C/C++Python などの高級言語により回路を記述する。
    ⇒ その動作を実装するデジタルハードウェアを作成する
      高位合成ツールを利用して開発を進める。
ASICとは・・・
  • プログラムできない計算機
    ディープラーニングの演算に適した新しいプロセッサ
    行列演算に特化
  • 数千の積和演算器が配置され、それらが直接接続されている。
    ⇒ このアーキテクチャ(=システムの概略構造あるいは基本的な骨組み)をシストリックアレイという。
  • 演算結果を次の乗算器に渡す(メモリではない)
    メモリアクセスの必要を無くし、スループットを向上
    演算器の計算精度を 8 bit や 16 bit のみにする
    スループットを向上、低消費電力化
  • 例:TPUなど・・・
    TPU・・・Googleが開発したディープラーニング専用(行列演算)の計算処理装置
計算速度

 CPU < GPU < FPGA < ASIC(TPU)

 (遅い) ←ーーーーーーーーーーーー→(速い) 
    


6.2 クラウド

クラウドとは・・・

7.入力層の設計

入力として取り得るデータとは・・・
  • 連続する実数
  • 確率
  • フラグ値
    例)[0, 0, 1] ← このような表現をoneーhotベクトル
    犬 犬 猫
入力層として取るべきではないデータとは・・・
  • 欠損値が多いデータ
  • 誤差の大きいデータ
  • 出力そのもの、出力を加工した情報
  • 連続性の無いデータ(背番号とか)
  • 無意味な数が割り当てられているデータ
    ・悪い例 Yes:1,No:0, どちらでもない:-1, 無回答:-1
    ・良い例 Yes:1,No:-1, どちらでもない:0, 無回答:なし
      ↑  one-hotベクトルで表現した方がよい
上記以外
  • 欠損値の扱い
    ゼロで詰める(ただし・・・)
    欠損値を含む集合を除く
    入力として採用しない
  • データの結合
  • 数値の正規化・正則化

8.過学習

過学習とは・・・
  • 訓練誤差とテスト誤差の差が大きくなる。
        ↓
  • 過学習を防ぐ手法
    ・ドロップアウト
    ・正則化

ランダムにノードを削除して学習させる。

正則化とは・・・
  • 学習の過程において、大きな重みを持つことにペナルティを課すことで、過学習を抑制する。
     L = E + 1/2 λ Σk(wk)2
     L:損失関数
     E:誤差関数
     λ:正則化パラメータ
     W:重み
  • L2正則化の場合 ← 荷重減衰(weight decay)という
    dL/dw=dE/dwi+λwi ← 損失関数Lをパラメータwで偏微分
  • L1正則化の場合
    dL/dw=dE/dwi+λsgn(wi) ← 損失関数Lをパラメータwで偏微分

9.データ集合の拡張

  • 学習データが不足するときに人工的にデータを作り水増しする手法
  • 適性
    分類タスク(画像認識)に効果が高い。
  • 手法
    ・画像でのデータ拡張手法は様々なものが存在
     例)オフセット、ノイズ、ぼかし、回転
    ・様々な変換を組み合わせて水増しデータを生成
  • 注意点
    データ拡張の結果、データセット内で混同するデータが発生しないよう注意
    例)6と9など
ノイズ注入によるデータ拡張
  • ノイズ注入によるデータ拡張
    中間層へのノイズ注入で様々な抽象化レベルでのデータ拡張が可能
  • データ拡張の適用
    データ拡張の効果とモデル性能かの見極めが重要
  • データ拡張の効果と性能評価
    ・データ拡張を行うとしばしば劇的に汎化性能が向上する。
    ・ランダムなデータ拡張を行う時は学習データが毎度異なるため再現性に注意。
データ拡張とモデルの捉え方
  • 一般的に適用可能なデータ拡張(ノイズ付加など)はモデルの一部として捉える(ドロップアウトなど)。
  • 特定の作業に対してのみ適用可能なデータ拡張(Crop(クロップ)など)は入力データの事前加工として捉える。
    補足)Crop(クロップ)とは画像の一部を取り出すこと
    例:不良品検知の画像識別モデルに製品の一部だけが拡大された画像は入力されない。

10.転移学習(特徴量の転移)

深層学習モデル構築の流れ
深層学習モデルの構造
深層学習モデルの構造

プリトレーニング:教師なし学習で行う。

著者
著者

「プレトレーニング」は非常に重要だよ!!

  

学習コストと必要なデータの関係
学習コストと必要なデータ
学習コストと必要なデータ

ファインチューニングの活用例:Wide ResNet(画像処理)BERT(自然言語処理)
転移学習の活用例:VGG(画像処理)GPT(自然言語処理)

転移学習の種類
  • ワンショット学習
    1つの事例(データ)しか見ずに学習を行う(新たなデータに対して適切に分類できるようにする)ことである。
    ⇒ 他の転移学習と比較して大量の訓練データを必要としない。
  • ドメイン適応
    対応ドメインの汎化性能を向上させる
    事前訓練済みパラメータ+対象ドメインの訓練データ

11.機械学習モデルのデバッグ

機械学習モデルをデバッグ
 ⇒ 定量的な評価値を確認 + 画像の出力データを可視化して確認

12.ドメインシフト

「ドメインシフト」とは・・・
  • 機械学習の開発環境において、訓練データの分布とテストデータの分布が異なる現象
  • 機械学習モデルが未見のデータに対して期待通りの性能を示さなくなる主要な原因の一つ
「ドメインシフト」の原因
  • 時間的変動
  • 地域的変動
  • 機械的変動
  • 操作的変動
「ドメインシフト」の対処方法
  • データの再収集
    テストデータの分布に合うようなデータを定期的に収集し、モデルを更新
  • データ拡張
    データの多様性を増やすために、画像の回転、反転、及び色などを変更
  • 転移学習
    大量のデータで訓練したモデルを、新しいタスクに転移
  • ドメイン適応
    訓練データとテストデータのドメインの違いを考慮しながらモデルを学習
  • 不変表現学習
    異なるドメインのデータでも共通の特徴表現を学習

13.模擬演習問題

問題1
  • Q1.以下の【図1】のような掛け算ユニットがある計算グラフで逆伝播を行ったとき、赤枠に当てはまる数字はどれか。次の選択肢の中から選びなさい。 なお、計算グラフは、計算の過程をグラフによって表したものであり、×は乗算を、+は加算を表している。
    1.60
    2.600
    3.100
    4.30000
図1(Q1誤差逆伝播法の問題)
図1(Q1誤差逆伝播法の問題)
  • A1.
問題Q1(誤差逆伝播法)の回答
問題Q1(誤差逆伝播法)の回答
問題2
  • Q2.クラス分類とは、与えられた入力空間を相違なるK個の空間に分割し、それぞれの空間をクラスCkとラベルを付けることである。訓練データxが与えられた時に、推論段階と決定段階を経て各クラスに割り当てる。訓練データからどのようにして分類するかによって、生成モデル・識別モデル・識別関数に分けられる。
     生成モデルではあるデータxについて、各Ciにおけるxとなる確率、すなわちp(x|Ci)とCiが出現する確率p(Ci)を求めることで、xがあるCiに分類される確率を求める。あるxiについて3つのクラスに分けたい。
     P(xi|C0)=0.1、p(xi|C1)=0.3、p(xi|C2)=0.2、p(C0)=0.7、p(C1)=0.2、p(C2)=0.1であるときにxiがC1に属する確率を求めよ。
  • A2.
Q2に対する回答(ベイズの定理)
Q2に対する回答(ベイズの定理)
問題3
  • Q3.識別モデルでは直接、事後確率p(Ck|x)を決める推論問題を解く。複数の球が入った箱があり、球の色が白か赤、大きさは大きいものと小さいものがある。球の数の分布が次のような表の様になっていることが分かっている。
     このときp(Ck=白|x=大)を求めよ。ただし、Ckは白か赤の二値、xは”大”と”小”の二値しかとらないものとする。
12個28個40個
18個4個22個
30個32個62個
球の数の分布
  • A3.条件付確率の問題。p(Ck=白|x=大)は球の大きさが大きい時に色が白である確率である。 球が大きい場合、白が12個、赤が18個であることが分かっているので求める確率は、12/(12+18)=0.4である。
問題4
  • Q4.未知のデータに対する性能(汎化性能)を評価することで、モデルの性能を正しく検証することができる。kー分割検証法でモデルの性能を検証したい。「データをk個に分割し、分割したk個の各データセットを学習に回す(k回学習を繰り返す)」という手順を1回行うことを1epochとする。
     k=10、epoch=10のとき、評価の計算を行う回数は何回か。
     ただし、1回の学習で1回の評価を行うものとする。
  • A4.10[k]×10[epoch]=100
問題5
  • Q5.以下の文章を読み、次の問題に答えよ。未知のデータに対する性能(汎化性能)を評価する事で、モデルの性能を正しく検証する事が出来る。検証法には様々な種類があるが、kー分割検証法の利点は何か。
     適当なものを選択肢の中から1つ選びなさい。
    1.計算時間が比較的短い。
    2.他の手法と比べて、とても優れた性能を発揮するモデルの学習を行うのに有効な手法である。
    3.サイズの小さいデータセットを活用して、繰り返し学習と評価を行うことで、過学習を防ぐ。
    4.データセットのサイズが大きいとき、効率よく学習を行う。
  • A5.正解は3である。 kー分割検証法はサイズの小さいデータセットの場合に、精度を高めることのできる手法である。
     ただし、繰り返し学習と評価を行うため、計算時間がかかるという欠点がある。
問題6
  • Q6.確率は身の回りの様々な場所で用いられている。例えば、自動運転の分野では自分の位置を推定するために用いられている。確率の計算を行うにあたって、基になっているものにベイズの定理がある。 ベイズの定理を構成する要素として誤っているものはどれか。選択肢の中から1つ選びなさい。
     なお、Aは事象aの確率変数を、Bは事象bの確率変数を表す。
     1.p(A)は事象aが起こる確率を表す。
     2.p(B)は事象bが起こる確率を表す。
     3.p(A|B)は事象aが起こるという条件のもとで事象bが起こる確率を表す。
     4.p(B|A)は事象aが起こるという条件のもとで事象bが起こる確率を表す。
  • A6.正解は3である。
       p(A|B)は事象bが起こるという条件のもとで事象aが起こる確率を表す。

14.まとめ

【まとめ】
  • 識別モデル
    確率に基づいた識別境界を設定 ⇒ 最大値<識別境界の場合は回答しないモデルとすることが可能
  • 生成モデル
    特定のクラスに属する人工的なデータを作成できる。
  • ホールドアウト法
  • 確率的勾配降下法
    結果は学習率に依存する。
  • 誤差逆伝搬法
    最小限の計算で各パラメータでの微分値を解析的に計算する手法
  • ミニバッチ学習
  • 転移学習
    ・ワンショット学習
    ・ドメイン適応
     対応ドメインの汎化性能を向上させるため
     ⇒事前訓練済みパラメータ+対象ドメインの訓練データ
  • 機械学習のデバッグ
  • ドメインシフト
    機械学習の開発環境において、訓練データの分布とテストデータの分布が異なる現象
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次