0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

2021年2月実施の「E資格(2021 #1)」受験資格である
JDLA認定プログラム「3カ月で現場で潰しが効くディープラーニング講座」に挑戦中。

本記事では、JDLA認定プログラム「3カ月で現場で潰しが効くディープラーニング講座」の課題であり、
「深層学習:Day1」実装演習結果をまとめる。

◆DL0001深層学習 識別モデルと生成モデル

〇識別モデル
・データを目的のクラスに分類するモデル
・データからクラスを想定する
・p(Ck/x)
・x(入力値)のもとでCk(何かしらのクラス)が現れる確率は?
・決定木、サポートベクトルマシン。ロジスティック回帰等々
・高次元⇒低次元
・必要な学習データ量…少ない
・応用例は、画像認識、など

〇生成モデル
・特定のクラスのデータから生成する
・p(x/Ck)
・GAN、VAE、隠れマルコフモデル。ベイジアンネットワーク
・低次元⇒高次元
・必要な学習データ量…多い
・応用例は、画像の超解像(Zoomでの解像度が悪い時の画質の向上)

◆DL0002深層学習 識別器(クラシファイヤ)の開発アプローチ

〇識別器の開発には3つのアプローチが存在
・生成モデル
 …ベイズの定理
 …確率的な識別
 …データ量 大
・識別モデル
 …アウトプットとしては、確率を出してくれるだけ
 …自信があるかどうかまで、確率的に算出することが可能
 …確率的な識別
 …データ量 中
・識別関数
 …1か0かを判定するもの。確率的な識別はない。
 …決定的な識別
 …データ量 小

◆DL0003深層学習 識別機における生成モデルと識別モデル

〇識別モデルの限界

〇生成モデルで出来ること(識別モデルとの違い)
・データのクラス条件付密度、までを覚えておくことが出来る。

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

◆DL000_4_万能近似定理と深さ

〇万能近似定理と深さ
・ニューラルネットワークのような活性化関数をもつ関数であれば、どんなものも数式化出来るんじゃないのか、という推定

◆DL001_ニューラルネットワークの全体像

〇ニューラルネットワークの全体像
・W:重み、B:バイアスを使って、数値の変換を行う作業。
・このWとBを適切な値にするのがNNの目標。
・NNは結局、何かしらの数値を入力して、何かしらの数値を出力する変換器でしかない。
・入力値の数:ノード数、中間の数:ノード数
・入力層:2ノード1層、中間層:3ノード2層、出力層:1ノード1層 など

〇NNの対象の種類
・回帰…結果予測、ランキング
・分類…画像判定、手書き文字認識、花の種類分類

〇回帰分析
・線形回帰、回帰気
・NN

〇分類分析
・ベイズ分類
・ロジスティック回帰
・NN
・決定木
・ランダムフォレスト

〇NNが回帰でも分類でも使用でいる理由
・NNが万能近似定理と呼ばれる所以
・何かしらの数値を入力して、何かしらの数値を出力する

〇深層学習の実用例
・トレードの自動売買
・チャットボット⇒文字列を数値として入力する
・音声解釈⇒音声データを数値と入力する
・囲碁、将棋⇒囲碁などの配置を数値化して入力する

◆DL002_入力層〜中間層

〇NNで使用される記号
・x:入力値、w:重み(=傾きの度合い)、b:バイアス(=切片の値)、総入力:u、出力:z、活性化関数:f
・入力層のインデックス:i
・u=Wx+b
・W=(w1, w2, w3・・・・・・,wi)
・x=(x1, x2, x3・・・・・・・xi)

☆ディープラーニングはなにをしようとしているか。
・プログラムの代わりにニューラルネットワークを利用し、入力値から目的値を求めるモデルを作成する

☆のネットワークを紙にかけ
・入力層: 2ノード1層、中間層: 3ノード2層、出力層: 1ノード1層
・紙に記載のため省略

☆確認テスト(動物分類の図示)
・紙に記載したため割愛

☆確認テスト(総入力値のpythonでの表現)
・u1 = np.dot(x, W1) + b1
・np.dot関数は、ドット積を算出する関数

☆確認テスト(中間の出力を定義しているソースとは)
・u2 = np.dot(z1, W2) + b2

◆DL003_活性化関数

☆復習テスト(線形と非線形の図の違い)
・紙に記載したため割愛
・文字通り、まっすな関数とぐにゃっとした関数
・加法性(たしても同じ)、斉次性(かけても同じ)を満たすのが線形、そうでないのが非線形

〇活性化関数
・NNであれば、線形な関数に対して非線形な活性化関数を活用することで、より多様な表現を出すことが出来るようになっている。

〇中間層用の活性化関数
・ステップ関数(今はあまり使われていない過去のもの、線形の活性化関数)
 …def step_function(x):
If x > 0:
Return 1
Else:
Return o
 …1か0かのやつ。

・シグモイド関数(非線形の活性化関数)
 …def sigmoid(x):
Return 1/(1 + np.exp(-X))
 …pHのデータみたいなやつ。滑らかな値。
…勾配消失問題が発生することが判明してしまった。

・ReLU関数(線形関数)
 …def relu(x):
Retrun np.maximum(0, x)
 …xが0未満は0、それ以上はY=Xの線形関数
 …勾配消失問題を解決してくれる。
 …スパース化(課題をシンプル化)してくれる。

☆確認テスト(活性化関数を使用しているコードを捜索)
・z1 = functions.relu(u1)
・from common import functions でfunctions を読み込んでいる

◆DL004_出力層_誤差関数

〇訓練データ
・入力データと出力データをセットにしたデータ

〇誤差関数=どのくらいあっていたかを示すもの
・2乗和誤差、漸差関数などを用いる。
・各項目の差を二乗して2で割った値。
・誤差関数が小さいほど、正しい予想が出来ていたことを表すため、誤差関数を小さくするwとdを求めるのがNNの目的

☆確認テスト(なぜ平均二乗誤差では二乗するのか、2で割るのか)
・プラスとマイナスが相殺されるのを防ぐため
・実際にNNの学習をする際には微分の計算を行うため、計算が簡単になるため。

〇分類問題=誤差関数として、クロスエントロピーを用いることが多い
 Loss = cross_entropy_error(d,y)

〇平均二乗誤差を求める際のコードは
 Loss = functions.mean_suared_error(d,y)

◆DL005_出力層_活性化関数

〇中間層の活性化関数と、出力層の活性化関数の違い
・中間層:入力値のデータをいい感じに出力するため、比率が変わらないように伝えるため
・出力層:我々のわかりやすい数値に変換するため
:0~1の範囲に比率を保ったまま変換し、全体を足したら1になるような関数

〇出力層の活性化関数

☆確認テスト(ソフトマックス関数のコードを書け)

Def softmax(x):
Return np.exp(x) / np.sum(np.exp(x))
プログラムを安定させるためのコード等も含めることも。

☆確認テスト(交差(クロス)エントロピー)=万能薬としてよく使う
Def cross_entropy_error(d, y):
Retrun -np.sum(np.log(y[np.arange(batch_sie), d] + 1e-7)) / batch_size
・1e-7 は、logがマイナス無限大に行かないようにするために入れている。

◆DL006_勾配降下法

〇勾配降下法の式
・w(t+1) = w(t) – ε▽E
・w:重み、t:層の数、ε:誤差関数、E:誤差関数
〇学習率(ε)が大きすぎる場合
・最小値を通り過ぎて、発散してしまう。

〇学習率(ε)が小さすぎる場合
・局所極小解に収束してしまうことがある。(1次方程式ではないことが多いので、したに凸な箇所が多数あるため)

〇エポックとは…
・1回のサイクルを回すこと

◆DL007_確率的勾配降下法

〇確率的勾配降下法
・ランダムに抽出したサンプルの誤差から学習を進めること
・毎回異なるデータを使ってモデルが作れるので局所極小解に収束しにくい
・オンライン学習が出来る(最初に全てのデータを準備する必要がない)
 ⇔バッチ学習(最初に全てのデータを集める必要があるもの9

☆確認テスト(オンライン学習とは何)
・学習データが入ってくる度に、バイアス値(重みw、バイアスb)を都度、更新しながら学習を実施すること。
・バッチ学習は、すべてのデータをまとめて使ってパラメーター更新を行う手法。
 …バッチ学習では、データ量が多くなるので、メモリーに保管できるデータの容量があふれてしまう。
・(参考)実際に機械学習で活用するデータ容量は、通常のスマホなどに保管されているデータよりも10倍~100倍に増加している。

◆DL008_ミニバッチ勾配降下法

〇ミニバッチ勾配降下法
・100万枚の画像を学習させたい場合に、それを小分けにすることを「ミニバッチ」という。
・分割した回数に応じて、誤差を割ってあげることで、平均をとる。
・Et = 1/Nt(∑En)

〇ミニバッチ勾配降下法のメリット
・確率的勾配降下法と比べて、同時に1エポックの学習を並行して実施することが出来る。
・同時に計算を並行して行うことを、SIMD並列化という(Single Instruction Multi Data)
・バイアス値は毎回更新は実施しない。

☆確認テスト(w(t+1) = w(t) – ε▽Etの表現する意味は?)
・1度学習した際の誤差を、次の学習の際に、重みに反映させることで、精度を向上させる取り組み。
・上記作業を何度も繰り替える作業。
・t -> t+1 -> t+2
重みが −ϵ∇En−ϵ∇Enずつ加えられていくイメージ

◆DL009_誤差勾配の計算

〇誤差関数の求め方
・数値微分を行うことで計算が可能となる。
・数値微分とは、プログラムで微小な数値を生成し、疑似的に微分を計算する一般的な手法。
・問題点としては、計算量が非常に大きくなってしまう点。

◆DL010_誤差逆伝播法_誤差勾配の計算

〇誤差順伝播よりも、誤差逆伝播の方が、データの処理が早い
・計算結果(誤差)から微分を逆算することで、不要な再帰的計算を避けることが出来る。

〇微分の連鎖率を使用
・たすき掛け、みたいな計算手法で、計算量自体を減らすことが可能となる。

☆確認テスト(不要な再帰的処理を避けることが出来るが、そのソースコードを探せ)
・delta2 = functions.d_mean_squared_error(d, y)
・delta1 = np.dot(delta2, w2.t)* functions.d_sigmid(z1)

〇誤差逆伝播で最終的に求めたいものは
・誤差Eを重みwで微分した時の、最小となるwを求めたい。(Eの値自体が求めたい値ではない)

☆確認テスト(空欄に入るソースコードを探せ)

◆DL011_ディープラーニングの開発環境

〇CPU,GPU、FPGA、ASIC(有名なのがTPU) 右のほうが計算速度が速くなる
・CPU…どんなPCにもついている
・GPU…げーむPCなどに
・FPGA…自分でプログラムが出来る計算器
・ASIC…プログラムが出来ない計算器(オーダーで計算の手法が決められたもの)

◆DL012_入力層の設計

〇入力値として取りえるデータ
・連続する実数、確率、フラグ値(=[0, 0, 1]フラグ立てなど、ワンホットラベルという)

〇使い物にならないデータ
・欠損値が多いデータ
・誤差の多いデータ
・連続性のないデータ
・出力そのもの、出力を加工した情報

◆DL013_過学習

〇パラメータ数が非常に多い、巨大なNNで発生しがち。

〇過学習を見分ける方法
・異なるデータセットを活用して、実際にテストを実施してみる

◆DL014_データ集合の拡張

〇データの水増し(data augmentation)
・学習データが十分に集まらない時に、データを水増ししてあげる手法。
・分類タスク(画像認識)の際によく使われる。数値のデータを増やしたい場合にはあまりあわない、つまり身長のデータを集計する際など。
・画像の明るさを変えたり、ノイズを入れたり、ドロップアウト(画像の一部を隠す)等々
〇データ拡張する際に注意すべき点
・数字のデータなどを回転させると、6と9が見分けがつかなくなる、などなど
・行ってはいけない変換も存在するため、その点は認識が必要

〇ノイズ注入によるデータ拡張
・NNの内部でデータにノイズを加える方法は?
・中間層が100層などの深いNNでは、入力層に近い部分では、細かいパーツなどデータの基本的な特徴が認識されており、出力層に近づくにつれて、全体的な(顔全体など)が認識されている。そこで、入力層に近い部分でノイズを入れると、基本的な特徴を、出力層に近い場所でじゃ、全体的な特徴に対するノイズを出来る。

〇データ拡張の効果と性能評価
・データ拡張により、劇的に汎用性能が高まることが多い。
・ランダムなデータ拡張を行う場合には、楽手データが毎度更新されるため、再現性がない場合も多い。
・求めたい条件に合った「ノイズ」を用いないと意味がないこともある。

◆DL015_CNNで扱えるデータの種類

〇CNNでは次元間でつながりのあるデータを扱える。
・次元間で連続性のあるデータ=時系列、画像の場所ごとの次元など

◆DL016_特徴量の転移

〇転移学習
・入力層に近い側では、基本的な部分を学習する。特徴量の抽出については、最終的に実施したい目的が異なっていても、同じアルゴリズムを用いるため、そのまま転用することを言う。

〇学習済みの「重み」
・転移学習…初めの特徴量の抽出については、勉強させないのが
・ファインチューニング…特徴量の抽出についても元々のものを用いつつ、さらにPUさせる・
・特徴量の抽出には多くのコストがかかるため、金の削減になる。
Something went wrong

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?