深層学習DAY2 確認テスト
Section1勾配消失問題
dz/dx = dz/dt *dt/dy=2t * 1 = 2(x+y)
y(1-y)と表すことができるので、(2)0.25が正解
確認テスト:重みの初期値に0を設定すると、どのような問題が発生するか。
すべての重みが同じ値に設定されていると、複数のニューロンが存在する意味がなくなってしまう。すべての重みが0であるなら1個のニューロンでも表現することができてしまうため、重みの偏りは表現力の制限の点で問題になる。
確認テスト:一般的に考えられるバッチ正規化の効果を2点あげよ
・学習を早く進行させることができる
・初期値への依存性が少なくなる。
Section2:学習率最適化手法
確認テスト:モメンタム、AdaGrad、RMSpropの特徴をそれぞれ簡潔に説明せよ
モメンタム:前の勾配の値を引き継ぐので、勾配値が小さくても同じ方向に勾配が続くと、更新値が大きくなる。そのため振動するような動きに強い。
AdaGrad:繰り返し数が増えると勾配の更新値が小さくなるため、最初は大きく学習し、時間が経つと小さく学習することが可能になっている
RMSprop:学習率を移動平均によって求めるため、学習がある程度進んだ後に勾配が急激に変化しても、対応することができる
Section3:過学習について
(a)
右
Section4畳み込みニューラルネットワークの概念
OH =6+2×1−2+1=7
OW=6+2×1−2+1=7
7×7となる。
Seciton5 最新のCNN
確認テストなし
深層学習DAY1確認テスト
Section1:入力層〜中間層
確認テスト:動物分類の実例を入れてみよう。
確認テスト:この数式をPythonでかけ。
u1 = np.dot(x,W1) + b
確認テスト:1−1のがいるから中間層の出力を定義しているソースを抜き出せ。
# 2層の総入力
u2 = np.dot(z1, W2) + b2
# 2層の総出力
z2 = functions.relu(u2)
u1 = np.dot(x,W1) + b
u1 = np.dot(x,W1) + b
Section2 活性化関数
確認テスト:線形と非線形の違いを図に書いて簡易に説明せよ。
左図が線形、右図が非線形関数である。
一般に
f(x+y) = f(x) + f(y)
f(kx) = kf(x)
が成り立つものを線形関数という。
確認テスト
z1 = function.relu(u1)
z2 = function.relu(u2)
Section3 出力層確認テスト
・引き算だと予測値が負の値を取ると、正確な値が測れないため。
・二乗誤差を微分した時に、係数をキャンセルするため。
y = np.exp(x)/np.(np.exp(x),axis = 0)
xは行ベクトルであるので、Axis=0で行方向の和をとっている。
-np.sum(np.log(y[np.arange(batch_size),d] +1e-7))/batch_size
対数関数は入力が0の時に–∞に発散してしまうので、それを避けるために微小な値を足している。
Section4 勾配降下法
network[key] -= learning_rate * grad[key]
grad = backward(x, d, z1, y)
# 勾配降下の繰り返し for dataset in random_datasets: x, d = dataset['x'], dataset['d'] z1, y = forward(network, x) grad = backward(x, d, z1, y) # パラメータに勾配適用 for key in ('W1', 'W2', 'b1', 'b2'): network[key] -= learning_rate * grad[key] # 誤差 loss = functions.mean_squared_error(d, y) losses.append(loss) print("##### 結果表示 #####") lists = range(epoch)
確認テスト:オンライン学習について2行でまとめなさい
オンライン学習はデータが入ってくる都度、学習を行いパラメータを更新する方法。
各点の勾配を算出し、パラメータの値を勾配の値を更新する手法
Section5:誤差逆伝播法
# 出力層でのデルタ delta2 = functions.d_mean_squared_error(d, y)
上delta1 = np.dot(delta2, W2.T) * functions.d_sigmoid(z1)
下grad['W1'] = np.dot(x.T, delta1)
深層学習DAY1要約
Section1 入力層〜中間層
・入力を受け取る場所をノードと呼ぶ
・入力に対し、それぞれ重みを乗算し、線型結合する。それにより重要な情報は値を大きく、関係のないものは値を小さくすることができる。
・バイアスは一次関数でいうと、切片にあたる。
・入力と重みの線型結合とバイアスを足したものを活性化関数に入れることで出力を得られる。
Section2 活性化関数
・活性化関数とは、ニューラルネットワークにおいて、次の層への出力の大きさを決める非線形の関数。入力値の値によって、次の層への信号のON/OFFや強弱を定める働きを持つ。
・ステップ関数:入力がある閾値を超えると、出力値が1となる関数。入力値が閾値以下だと0を出力するので出力値は常に1か0。0−1の間が表現できず、線形分離可能なものしか学習できない
・シグモイド関数:0〜1の間を緩やかに変化する関数。0〜1の間も表現することができ、更にすべての場所で微分可能。課題は大きな値では出力の変化が微小なため、勾配消失問題を引き起こすことがある。
・ReLU関数:勾配消失問題の回避と、スパース化に貢献する事で良い成果をもたらしている。
Section3) 出力層
・誤差関数:ニューラルネットワークの学習に用いられる。訓練データによって得られる出力と正解ラベルとの差異を表す。この誤差関数を最小化するようなパラメータを学習によって求める。一般的に分類問題では誤差関数として、クロスエントロピー関数が用いられる。
出力層の活性化関数:中間層と出力層では目的が異なる為、異なる活性化関数が用いられる。中間層の活性化関数は閾値の前後での信号の強弱を調整するのに対し、分類問題では出力層の出力を0〜1の範囲に限定し、総和を1とする確率分布として出力する。
恒等写像関数:入力をそのまま出力として返す関数。誤差関数は二乗誤差関数が用いられる。
シグモイド関数:二値分類に用いられる。誤差関数は交差エントロピーが用いられる。
ソフトマックス関数:多クラス分類に用いられる。すべての出力の総和は1となる。誤差関数は交差エントロピーが用いられる。
Section4 勾配降下法
・深層学習の目的は、学習を通して誤差を最小にするネットワークを作成する事である。そこで黄梅降下法を利用してパラメータを最適化する。
勾配降下法:誤差関数の最小値を探すために、
学習率:勾配に対して、どれくらい値を学習させるか(パラメータの値を変更するか)を決めるハイパーパラメータ。学習率が大きすぎると、解が発散する可能性がある。一方小さすぎると発散はしづらいが、更新値が小さすぎて学習が進まないデメリットがある。
確率的勾配降下法:全データからランダムに抽出したサンプルを学習に使用する。
毎回データが異なるので、局所極小解に陥りにくい、オンライン学習ができるというメリットがある。
※オンライン学習とは学習データが入ってくる度にパラメータを更新し、学習を進めていく手法。
ミニバッチ勾配降下法:バッチ学習では一度にすべてのデータを学習させていたが、
ランダムに分割したデータの集合に対して学習を行う。メリットとして、確率的降下法のメリットを損なわずに計算機の計算資源を有効活用できる。
Section5 誤差逆伝播法
数値微分のデメリットとして、各パラメータに対して微小量変化させた際の順伝播計算を繰り返し行う必要がある。そのため計算負荷が大きくなるデメリットがある。
そのデメリットを解決するために、NNの微分計算には誤差逆伝播法が用いられる。数値微分によって勾配を算出するのではなく、解析的に勾配を計算する手法である。
微分を計算結果の出力と正解ラベルから逆算することができ、不要な再起的計算を避けて微分を算出できる。
機械学習
機械学習とは
タスクT(アプリケーションにさせたいこと)を性能指標Pで測定し、その性能が経験E(データ)により改善される場合、タスクTおよび性能指標Pに関して経験Eから学習すると言われている。
■線形回帰モデル
タスクT:回帰問題
経験E:教師あり学習
性能指標P:平均二乗誤差(MSE)など
・入力とm次元パラメータの線型結合を出力するモデル・回帰問題を解くためのモデルの一つ
・線型結合とは入力ベクトルと未知のパラメーターの各要素を掛け算し足し合わせたもの(行列表現をすると、入力とパラメータの内積で表される)
・入力のベクトルが多次元でも、出力は一次元(スカラ)となる
・入力ベクトルに対応するパラメータの値が大きいほど、その特徴量は予測値に大きな影響を与える。
・パラメータは最小二乗法、最尤法にて決定する
■非線形回帰モデル
タスクT:回帰問題
経験E:教師あり学習
性能指標P:平均二乗誤差(MSE)など
・非線形構造を内在する構造に対して使用する。
・回帰関数として、基底関数と呼ばれる基地の非線形関数とパラメータベクトルの線型結合を使用する
・よく使われる基底関数として、多項式関数、ガウス型基底関数、スプライン関数がある
・線形回帰と異なる点として、基底関数の数、位置やバンド幅によってモデルの複雑さが変化する。そのため、過学習と未学習に注意を払わねばならない
・過学習対策としてL1ノルム、L2ノルムに罰則を与える正則化が有効
・学習に使用した入力だけでなく、これまでみたことの無い新たな入力に対する予測性能のことを「汎化性能」という
・テストデータと訓練データを分ける方法として、ホールドアウト法とクロスバリデーション法がある。
■ロジスティック回帰
タスクT:分類問題
経験E:教師あり学習
性能指標P:正解率がよく用いられる
・入力とm次元パラメータの線型結合をシグモイド関数に入力することにより、0〜1の範囲の出力を得る。
・出力が0.5以上の場合Y=1、0.5未満の場合0と予測することにより二値分類に適用できる。
■主成分分析
タスクT:次元圧縮
経験E:教師なし学習
性能指標P:MSEなど
・データに対して線形変換を行い、次元削減をする技術
・データの分散共分散行列の固有ベクトルを基底ベクトルとし、その固有値の大きさが全体への寄与率を表す。
■k近傍法
タスクT:分類問題
経験E:教師あり学習
性能指標P:正解率など
・最近傍のデータをk個とってきて、それらが最も多く所属するクラスに識別する。
・kを変化させると結果が変わり、kを大きくすると決定境界が滑らかになる
■k-means
タスクT:クラスタリング
経験E:教師なし学習
性能指標P:正解率など
・与えられたデータから距離や類似度を計算し、最も距離が近いクラスタを割り当てる
・各クラスタの平均ベクトルを計算する
・クラスタの再割り当てと、中心の更新を繰り返す。
■サポートベクトルマシン
タスクT:二値分類
経験E:教師あり学習
性能指標P:正解率など
・「データ点と識別境界面との最小距離」を最大化にする、マージン最大化を行う。
・写像関数により、元の特徴空間を高次元空間に社憎悪する事で、線形分離の可能性を高めるカーネルトリックと呼ばれる手法を用いることがある。
情報理論
■自己情報量
事象Aの起こる確率がP(A)である時、事象Aが起こることの自己情報量は、I(A)=-log2P(A)によって定義される
確率変数Xにおいて、X=xとなる確率がP(x)で与えられている時、確率変数Xのエントロピーは以下で与えられる。
エントロピーは情報量の期待値であり、確率変数のランダム性の指標としてよく用いられる。
■カルバックライブラーダイバージェンス
2つの確率分布の近さを表現する最も基本的な量である。
2つの確率分布p(x)とq(x)に対して、以下の式で表される。
■クロスエントロピー
二つの確率分布P(x)とQ(x)に対するクロスエントロピーは以下のように定義される。
このクロスエントロピーは分類問題を解くときの損失関数として使用される。
ソフトマックス関数と組み合わせると逆伝播が簡単に表せることがメリット。