#応用数学
###1 線形代数学
スカラーとベクトルの違い
スカラー:数、演算が可能。
ベクトル:大きさと向き、スカラー(数)との組み合わせで表現して演算が可能。
行列とは
スカラーを表にしたもの。
ベクトルを表現したもの。
ベクトルの変換に使用する。
連立方程式を解くために使用する。
行列とベクトルの積
行と列を掛け合わせて合計する。
連立1次方程式の解き方
解法のひとつ加減法は行列で解法することができる。
逆行列とは
内積すると単位行列(対角が1でその他がゼロの行列)になる行列を逆行列という
加減法による解法は、逆行列を掛けることということができる
逆行列のことをインバースという。
単位行列とは
単位行列は左掛けでも右掛けでも同じ。
行列Aに行列Aの逆行列を掛けると単位行列になる。
行列Aの逆行列に行列Aを掛けると単位行列になる。
行列式とは
ベクトル的な考えにおいて、平行四辺形の面積と考える式(両側を縦線で囲む)を行列式と呼ぶ(行列の大きさを求めるもの)。
n次元のベクトルの特徴
同じ行ベクトルが含まれている場合は、ゼロになる。
1つのベクトルがλ倍されていると、行列式はλ倍される。
他の成分が全部同じでi番目のベクトルだけが違った場合、行列式の足し合わせになる。
行を入れ替えると符号が変わる。
特異値分解
正方行列ではない長方形の行列の分解
Tは転置(行列反転)のこと
Uはベクトルuの集合行列
Vはベクトルvの集合行列
Sはσの集合行列
特異値分解の利用例
画像の縮小。データ量の削減。
特異値の数を制限することにデータ量を減らす。
プログラム言語Rに特異値分解の関数がある。
和集合と共通部分
和集合⋃(「かっぷ」という)
共通部分⋂(「きゃっぷ」という)
確率の大別
客観確率(頻度確率):測定した結果や全数による計算の数値。
主観確率(ベイズ確率):結果ではなく、全数もわからない場合での、信念の度合いによる数値。
P(A⋂B)
P(B|A)は、条件付き確率(Aの条件下でのB)。
AとBが同時に発生することとは違う。
独立な事象の同時確率
お互いが独立な事象(お互いの発生に因果関係がない)の場合の理論的な確率
記述統計と推測統計
記述統計とは、平均などによる母集団の統計を要約する。ビッグデータからの主な統計方法である。
推測統計とは、一部の標本による統計から母集団の統計を推測する。
分散と標準偏差
分散は2乗しているので、単位が違ってしまう。
平方根をとることで単位を戻すことができる。
これが標準偏差σになる。
様々な確率分布
ベルヌーイ分布:特殊なコインのコイントスで、表と裏の出る確率が等しくない時でも扱える。
マルチヌーイ(カテゴリカル)分布:特殊なサイコロで、各面の出る確率が等しくない時でも扱える。
2項分布:ベルヌーイ分布の多試行版。
ガウス分布(釣鐘型の連続分布):サンプルが多ければ正規分布に近づく。
###3 情報科学
(ここでは、機械学習の誤差関数としてよく使用される交差エントロピーの概念の段階的な説明である)
情報科学
変化する情報の数が同じでも、全体の情報の数に対する比率が違うと、感じる変化(めずらしさ)が違う。
自己情報量
自己情報量とは、その情報の持つめずらしさ。
確率1/Wを積分するとlog(w)となる。
単位(nat)は、natural。
シャノンエントロピー
シャノンエントロピーとは、自己情報量の期待値(その情報のめずらしさの平均値)
グラフの例は、コイントスの例
コインを投げることによりどれだけ情報量があるか。
0.5の場合(表裏の確率が等しい)に情報量が一番多い。
0または1の場合(表裏の確率が偏っている)は、表か裏か決まっているので情報量がない。
現実の確率がわからない場合、シャノンエントロピーが最大になる場合の確率が現実の確率だと想定する。
誤差関数の代わりにシャノンエントロピーが最大になる場合を機械学習させて、現実の問題を解決する場合もある。
ダイバージェンス
KLダイバージェンス(カルバック・ライブラー ダイバージェンス)
同じ事象・確率変数における異なる確率分布P、Qの違いを表す」とは、
予想されていた元の確率Qと後でわかった実際の確率Pの分布の違い。
「ダイバージェンス」とは、情報量というよりは、距離の概念に近い。
しかし、数学的な距離には適合しない。
Eは期待値(平均値)
I(x) = ー(log(p(x))なので、シャノンエントロピーに似ている。
よって、次の交差エントロピーの考えになる。
交差エントロピー
KLダイバージェンスから考えられたというよりは、Qについての自己情報量をPの分布で平均するために考えられた。
なぜ、そう考えたのか?
実用的な面があった。情報を送る場合は、想定していた情報量よりも多くの情報を送る必要が生じたため。
交差エントロピーの「交差」とは、普通のシャノンエントロピーは、logの中と外で変数が同じ(交差していない)だが、交差エントロピーは、logの中と外で変数が違う(交差している)ということ。
#機械学習
###1 線形回帰モデル
機械学習とは
Ian Goodfellow著の「深層学習」の中のトム・ミッチェルの機械学習の定義
線形回帰モデル
ある離散(あるいは連続)データから直線で予測する。
教師あり学習である。
慣例的に予測値には「^」(ハット)を付ける。
線形結合とは、入力とパラメータの内積(説明変数と重みの内積)
パラメータを増減することで予測値への影響力を増減する。
データ分割、学習
全てのデータを学習用と検証用に分けておく。
学習用データ:機械学習モデルの学習に利用するデータ
検証用データ:学習済みモデルの精度を検証するためのデータ
求められるのは、学習によるデータへの当てはまりの良さではなく、未知のデータに対する精度である。
平均二乗誤差を最小とするもの ⇒ 微分したものがゼロ
###2 非線形回帰モデル
複雑なデータに対して精度上げるには、線形より表現力の高い(柔軟に対応できる)非線形が必要となる。
基底展開法
基底とは、XY座標などで表現できる関数やベクトルというような意味。
関数とパラメータを組み合わせた線形結合を使用する。
パラメータは最小2乗法や最尤法により推定する。
未学習:誤差が大きすぎる。
過学習:誤差が小さすぎる。
過学習の対策としての2つ方法
①正則化法
②不要な基底関数(変数)の削除
Ridge推定量(縮小推定):パラメータ全体をゼロに近づける。
Lasso推定量(スパース推定):いくつかのパラメータのみをゼロをする。
汎化性能:学習に使用した入力だけでなく、これまで見たことのない新たな入力に対する予測性能
汎化性能を向上させる2つの方法
①ホールドアウト法
データが少ないと良い汎化性能が出ない。
②クロスバリデーション(CV)(交差検証法)
汎化性能がホールドアウト法より低い場合でも、クロスバリデーションを採用すること。
###3 ロジスティック回帰モデル
ロジスティック回帰
ロジスティクス回帰は、回帰となっているが、予測問題ではなく、分類問題(クラス分類)に使用する。
入力データ(説明変数)は、m次元のベクトル。
出力データ(目的変数)は、0or1。
シグモイド関数の出力は0~1の値。分類の確率を表現している。
確率が0.5以上なら、1。0.5未満なら0と判定する。
シグモイド関数の微分はシグモイド関数で表現されるため、計算が容易になるのでよく利用される。
尤度関数とは、データは固定し、パラメータを変化させること。
最尤推定とは、尤度関数を最大化するようなパラメータ選ぶ推定方法。
尤度関数の最大と対数尤度関数の最大は一致することは、数学的に証明されている。
勾配降下法
η学習率とは、パラメータを収束させる際の調整の大きさ。
線形回帰モデルでは、最小2乗法を使用して微分がゼロになる値を求めることは容易であるが、ロジスティック回帰モデルでは、最尤推定法を使用して微分がゼロになる値を求めることが困難である。
そこで勾配降下法を利用する。
勾配降下法では、パラメータを更新するのにN個全てのデータに対する和を求める必要があるが、必要となるメモリ容量や計算時間が膨大になる。
そこで、確率的勾配降下法を利用する。
確率的勾配降下法
ランダムにデータを選んでパラメータを更新する。
モデル評価
学習済みモデルの評価方法
混合行列:各検証データに対するモデルの予測結果を4つの観点で分類したもの(それぞれの個数をまとめた表)。
4つ分類
・予測がポジティブ、結果がポジティブ(TP)
・予測がポジティブ、結果がネガティブ(FP)
・予測がネガティブ、結果がポジティブ(FN)
・予測がネガティブ、結果がネガティブ(TN)
単純な正解率:(TP+TN)/(TP+FP+FN+TN)
たとえば、スパムメールが80件、普通のメールが20件あった場合、すべてをスパムと判定すれば、正解率は80%となる。
このような正解率はあまり意味がない。
再現率(Recall):TP/(TP+FN)
誤り(FP)が多少多くても抜け漏れは少ない予測をしたい場合
たとえば、病気の検診で陽性であるものを陰性と判定しまうのを避けたい場合
適合率(Precision):TP/(TP+FP)
見逃しが多くてもより正確な予測をしたい場合
たとえば、重要なメールをスパムメールと判定されるより確実にスパムメールを判定した方が良い場合
F値:(2×再現率×適合率)/(再現率+適合率)
再現率と適合率のどちらも高い方が良いが、トレードオフの関係があるので調和平均で判定したい場合
###4 主成分分析
主成分分析
情報の損失なるべく小さくして次元圧縮する。
2次元を1次元に圧縮する例
損失なるべく小さくなるように圧縮する。 ⇒ 分散が最大になる射影軸にする。
上の式で、一か所転置のT記号が抜けているとのこと。
制約を入れないと無限に解が出るので、ノルムが1となる制約を入れる。
###5 アルゴリズム
k近傍法(KNN)
最近傍のデータをK個取ってきて、それらがもっとも多く所属するクラスに識別する。
k平均法(k-means)
特徴の似ているもの同士をグループ化する。
クラスタの数Kは決めておかないといけない。
①K個のクラスタの中心を仮定する。
初期値が離れている場合はうまくクラスタリングできるが、
初期値が近い場合はうまくクラスタリングできないので注意。
k-means++とは
初期値の設定方法を統計手法など使用して最適化するk-means++という手法がある。
処理には時間がかかる。
試験に出る可能性がある。
###6 サポートベクターマシン(SVM)
線形モデルで2値分類する。
マージン:線形判別関数ともっとも近いデータ点の距離。
マージンが最大となる線形判別関数を求める。
主問題の目的関数と制約条件
最適化問題をラグランジュ未定乗数法およびKKT条件を用いることによりで解くことができる。
ソフトマージンSVM
誤差を許容し、誤差に対してペナルティを与える。
#深層学習
###1 入力層~中間層
「u=Wx+b」の計算をPythonでプログラミングすると、
u1 = np.dot(x,W1) + b1
となる。
xの列とW1の行の次元をそろえる必要があるので注意。
中間層の出力を定義しているソースは、
z = functions.relu(u)
である。
JupterNotebookの使い方がよくわからなかった。
commonモジュールがエラーになった。
調べてみるとcommonフォルダーを参照しているようなので、
データファイルをcommonフォルダーごと移動させたら解決した。
###2 活性化関数
ニューラルネットワークにおける次の層への出力の大きさを決める非線形の関数。
入力値の値によって、次の層への信号のON/OFFや強弱を定める働きをもつ。
中間層用の活性化関数
ステップ関数:
パーセプトロン(ニューラルネットワークの前身)で利用された関数。
線形分離可能のものしか学習できなかった。
ディープラーニングでは使用されていない。
シグモイド関数(ロジスティク関数):
非線形分離可能。ニューラルネットワークが予想解析などに普及するきっかけとなった。
大きな値では出力の変化が微小なため、勾配消失問題を引き起こすことがあった。
完全にゼロにはならないので、計算リソースの消費が多いことが問題である。
ReLU関数:
勾配消失問題の回避とスパース化による計算リソースの消費に対して、良い成果をもたらした。
(スパース化とは、元のベクトルや行列の性質を残しつつ、値のほとんどを0にしてしまうこと。)
よく使用されている。これが一番よいわけではない。解決したい課題によっては、シグモイド関数の方が良い場合もある。
出力層用の活性化関数
ソフトマックス関数
恒等写像
シグモイド関数(ロジスティク関数)
全結合NN - 単層・複数ノード
ノードが多ければ多いほど精度が上がるというわけでもない。
z=f(u)を定義しているソース
z = functions.sigmoid(u)
###3 出力層
中間層は人間にはわかにくいが、出力層で人間にわかりやすいようにしている。
確率で示される。100%になることはほとんどない。
誤差関数
正解との誤差。誤差を最小にすることが目的。
なぜ、2乗にするのか? ⇒ 値を正にするため。
1/2はどういう意味か? ⇒ 微分をした際に計算を簡単にするため。
出力層の活性化関数
中間層と出力層との違い
中間層はしきい値の前後で信号の強弱を調整する。
出力層は信号の大きさ(比率)そのままの値である。
分類問題の場合は、出力層の値は0~1の範囲に限定し、総和を1とする必要がある。
タスクによる活性化関数と誤差関数の組合せ
なぜこの組み合わせになるのか?→計算の相性が良いから。
<交差エントロピー>
動画の中のソースコードは、インデントが違うがこちらのソースコードが正しいのだろう。
「1e-7」は分子がゼロにならないように足している。
###4 勾配降下法
勾配降下法(バッチ勾配降下法)
深層学習の目的
誤差を最小にするニューラルネットワークを作成すること。
誤差を最小化するパラメータwの組合せを発見すること。
パラメータの最適化に勾配降下法を利用する。
パラメータから∇E(なぶらE)に学習率εを掛けたものを引いていく。
∇Eとは誤差をパラメータで微分したもの。
上記公式に該当するソースコードは?
該当するソースコードは? ⇒ network[key] -= learning_rate * grad[key]
学習率ε
誤差をどんどん収束させる大きさ。
学習率が大きすぎる場合のデメリットは、最小値にいつまでもたどり着かない。
学習率が小さすぎる場合のデメリットは、最小値にたどり着くまでに時間がかかる。
また、いくつかの谷がある場合、大域的極小にたどり着かない場合がある。
学習率の決定方法、収束性向上のためのアルゴリズム
数多く公開されている。たとえば、
Momentum
AdaGrad
Adadelta
Adam
RMSprop
学習の概念
誤差関数の値をより小さくする方向に重みWおよびバイアスbを更新し、次の周(エポック)に反映する。
エポックとは語源は時代と言う意味だが「学習回数」と思ってよい。
確率的勾配降下法(SGD)
普通の勾配降下法での誤差は、全サンプルの平均誤差だが、確率的勾配降下法では、ランダムに抽出したサンプルのみの誤差。
確率的勾配降下法のメリットは、
・データが冗長な場合(無駄に多い場合)の計算コストの軽減。
・望まない局所極小解に収束するリスクの軽減。
・オンライン学習ができる。
オンライン学習とは常に更新されるユーザーのデータで随時学習することのようだ。
ミニバッチ勾配降下法
普通の勾配降下法での誤差は、全サンプルの平均誤差だが、ミニバッチ勾配降下法では、ランダムに分割したデータの集合サンプルの平均誤差
ミニバッチ勾配降下法のメリットは、
・確率的勾配降下法のメリットを損なわず、計算機の計算資源を有効利用できる。
・CPUを利用したスレッド並列化やGPUを利用したSIMD並列化ができる。
誤差勾配の計算
数値微分(微小な数値を生成し疑似的に微分を計算する手法)では、順伝播の計算を繰り返し行う必要があるので計算付加が大きいというデメリットがある。
よって、誤差逆伝播を利用する。
###5 誤差逆伝播法
計算結果(=誤差)から微分を逆算することで、不要な再帰的計算を避けて微分を算出できる。
既に行った計算結果を保持しているソースコードは?
b2の勾配のところでは、ソースの都合上、sumでベクトル化している。
誤差逆伝播法の数式
誤差関数は、理解しやすいように二乗誤差関数している。
出力層の出力化関数は、理解しやすいように恒等写像にしている。
最終的には、簡単な式になる。
バナーの設定方法がよくわからなかった
⇒ バナー画像を張り付けて生成されるコードを[ ]で囲み、そのあとに、リンク先URLを( )で囲んだものを加える。
※2021/01/11:ここに掲載したバナー広告は利用規約違反のため削除しました。