1
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.

レポート1

Last updated at Posted at 2019-12-15

#応用数学
###1 線形代数学
 スカラーとベクトルの違い
  スカラー:数、演算が可能。
  ベクトル:大きさと向き、スカラー(数)との組み合わせで表現して演算が可能。

 行列とは
  スカラーを表にしたもの。
  ベクトルを表現したもの。
  ベクトルの変換に使用する。
  連立方程式を解くために使用する。

 行列とベクトルの積
  行と列を掛け合わせて合計する。

 連立1次方程式の解き方
  解法のひとつ加減法は行列で解法することができる。
  image.png

 逆行列とは
  内積すると単位行列(対角が1でその他がゼロの行列)になる行列を逆行列という
  加減法による解法は、逆行列を掛けることということができる
  逆行列のことをインバースという。

 単位行列とは
  単位行列は左掛けでも右掛けでも同じ。
  行列Aに行列Aの逆行列を掛けると単位行列になる。
  行列Aの逆行列に行列Aを掛けると単位行列になる。

 逆行列の求め方
  掃き出し法
  image.png

 逆行列が存在しない条件
  ad-bc=0
  image.png

 行列式とは
  ベクトル的な考えにおいて、平行四辺形の面積と考える式(両側を縦線で囲む)を行列式と呼ぶ(行列の大きさを求めるもの)。

 n次元のベクトルの特徴
  同じ行ベクトルが含まれている場合は、ゼロになる。
  1つのベクトルがλ倍されていると、行列式はλ倍される。
  他の成分が全部同じでi番目のベクトルだけが違った場合、行列式の足し合わせになる。
  行を入れ替えると符号が変わる。

 行列式の求め方
  image.png

 固有値と固有ベクトルとは
  image.png

 固有値と固有ベクトルの求め方
  image.png

 固有値分解
  image.png

 特異値分解
  正方行列ではない長方形の行列の分解
  image.png
  Tは転置(行列反転)のこと
  Uはベクトルuの集合行列
  Vはベクトルvの集合行列
  Sはσの集合行列

 特異値の求め方
  image.png

 特異値分解の利用例
  画像の縮小。データ量の削減。
  特異値の数を制限することにデータ量を減らす。
  プログラム言語Rに特異値分解の関数がある。

###2 統計学
 集合とは
  要素(元)の集まり
  image.png

 和集合と共通部分
  image.png
  和集合⋃(「かっぷ」という)
  共通部分⋂(「きゃっぷ」という)

 絶対補と相対補
  image.png

 確率の大別
  客観確率(頻度確率):測定した結果や全数による計算の数値。
  主観確率(ベイズ確率):結果ではなく、全数もわからない場合での、信念の度合いによる数値。

 確率の定義
  image.png
  Pは「プロパビリティー」のP

 P(A⋂B)
  image.png
  P(B|A)は、条件付き確率(Aの条件下でのB)。
   AとBが同時に発生することとは違う。

 独立な事象の同時確率
  お互いが独立な事象(お互いの発生に因果関係がない)の場合の理論的な確率
  image.png

 P(A⋃B)
  image.png

 ベイズ則とは
  AとBを入れ替えても同じになるという法則
  image.png

 ベイズ則の利用
  image.png

 記述統計と推測統計
  記述統計とは、平均などによる母集団の統計を要約する。ビッグデータからの主な統計方法である。
  推測統計とは、一部の標本による統計から母集団の統計を推測する。
  image.png

 *確率変数と確率分布
  image.png
  離散値とは飛び飛びの値のこと。

 期待値
  image.png

 分散と共分散
  image.png

 分散と標準偏差
  image.png
  分散は2乗しているので、単位が違ってしまう。
  平方根をとることで単位を戻すことができる。
  これが標準偏差σになる。

 様々な確率分布
  ベルヌーイ分布:特殊なコインのコイントスで、表と裏の出る確率が等しくない時でも扱える。
  マルチヌーイ(カテゴリカル)分布:特殊なサイコロで、各面の出る確率が等しくない時でも扱える。
  2項分布:ベルヌーイ分布の多試行版。
  ガウス分布(釣鐘型の連続分布):サンプルが多ければ正規分布に近づく。

 推定
  image.png

 推定量と推定値
  image.png

 標本平均
  image.png
  不偏性とは偏ってないという意味。

 標本分散
  image.png
  ⇒ 小数のデータのばらつきの方が小さくなる。

 不偏分散
  image.png
  ⇒ ばらつきの偏りを考慮して少し大きく修正する。

###3 情報科学
 (ここでは、機械学習の誤差関数としてよく使用される交差エントロピーの概念の段階的な説明である)

 情報科学
  変化する情報の数が同じでも、全体の情報の数に対する比率が違うと、感じる変化(めずらしさ)が違う。

 自己情報量
  自己情報量とは、その情報の持つめずらしさ。
  確率1/Wを積分するとlog(w)となる。
  image.png
   単位(nat)は、natural。

 シャノンエントロピー
  シャノンエントロピーとは、自己情報量の期待値(その情報のめずらしさの平均値)
  image.png
  グラフの例は、コイントスの例
   コインを投げることによりどれだけ情報量があるか。
   0.5の場合(表裏の確率が等しい)に情報量が一番多い。
   0または1の場合(表裏の確率が偏っている)は、表か裏か決まっているので情報量がない。
  現実の確率がわからない場合、シャノンエントロピーが最大になる場合の確率が現実の確率だと想定する。
  誤差関数の代わりにシャノンエントロピーが最大になる場合を機械学習させて、現実の問題を解決する場合もある。

 ダイバージェンス
  KLダイバージェンス(カルバック・ライブラー ダイバージェンス)
  同じ事象・確率変数における異なる確率分布P、Qの違いを表す」とは、
   予想されていた元の確率Qと後でわかった実際の確率Pの分布の違い。
  「ダイバージェンス」とは、情報量というよりは、距離の概念に近い。
  しかし、数学的な距離には適合しない。
  image.png
  Eは期待値(平均値)
  I(x) = ー(log(p(x))なので、シャノンエントロピーに似ている。
  よって、次の交差エントロピーの考えになる。

 交差エントロピー
  KLダイバージェンスから考えられたというよりは、Qについての自己情報量をPの分布で平均するために考えられた。
  なぜ、そう考えたのか?
  実用的な面があった。情報を送る場合は、想定していた情報量よりも多くの情報を送る必要が生じたため。
  image.png
  交差エントロピーの「交差」とは、普通のシャノンエントロピーは、logの中と外で変数が同じ(交差していない)だが、交差エントロピーは、logの中と外で変数が違う(交差している)ということ。

#機械学習
###1 線形回帰モデル
 機械学習とは
  Ian Goodfellow著の「深層学習」の中のトム・ミッチェルの機械学習の定義
  image.png

 線形回帰モデル
  ある離散(あるいは連続)データから直線で予測する。
  教師あり学習である。
  慣例的に予測値には「^」(ハット)を付ける。
  線形結合とは、入力とパラメータの内積(説明変数と重みの内積)
  image.png
  パラメータを増減することで予測値への影響力を増減する。
  image.png
  image.png

 データ分割、学習
  全てのデータを学習用と検証用に分けておく。
   学習用データ:機械学習モデルの学習に利用するデータ
   検証用データ:学習済みモデルの精度を検証するためのデータ
  求められるのは、学習によるデータへの当てはまりの良さではなく、未知のデータに対する精度である。

  平均二乗誤差を最小とするもの ⇒ 微分したものがゼロ

 ハンズオン(線形回帰)
  ボストン市の住宅価格査定
  image.png
  image.png

###2 非線形回帰モデル
 複雑なデータに対して精度上げるには、線形より表現力の高い(柔軟に対応できる)非線形が必要となる。

 基底展開法
  基底とは、XY座標などで表現できる関数やベクトルというような意味。
  関数とパラメータを組み合わせた線形結合を使用する。
  パラメータは最小2乗法や最尤法により推定する。
   image.png
  未学習:誤差が大きすぎる。
  過学習:誤差が小さすぎる。

  過学習の対策としての2つ方法
   ①正則化法
   ②不要な基底関数(変数)の削除

 正則化法
  image.png
  γは複雑化を抑える(制約する)程度を決定する

  image.png
  Ridge推定量(縮小推定):パラメータ全体をゼロに近づける。
  Lasso推定量(スパース推定):いくつかのパラメータのみをゼロをする。

 不要な基底関数を削除
  image.png

 モデル選択
  image.png

  汎化性能:学習に使用した入力だけでなく、これまで見たことのない新たな入力に対する予測性能

  汎化性能を向上させる2つの方法
   ①ホールドアウト法
   image.png
   データが少ないと良い汎化性能が出ない。

   ②クロスバリデーション(CV)(交差検証法)
   image.png
   image.png
   汎化性能がホールドアウト法より低い場合でも、クロスバリデーションを採用すること。

###3 ロジスティック回帰モデル
 ロジスティック回帰
  ロジスティクス回帰は、回帰となっているが、予測問題ではなく、分類問題(クラス分類)に使用する。
  入力データ(説明変数)は、m次元のベクトル。
  出力データ(目的変数)は、0or1。

  image.png
  シグモイド関数の出力は0~1の値。分類の確率を表現している。
  確率が0.5以上なら、1。0.5未満なら0と判定する。
  シグモイド関数の微分はシグモイド関数で表現されるため、計算が容易になるのでよく利用される。

  image.png
  パラメータを最尤推定を使用して求める。

 最尤推定
  ベルヌーイ分布を使用して最尤推定をする。
  image.png

  尤度関数とは、データは固定し、パラメータを変化させること。
  最尤推定とは、尤度関数を最大化するようなパラメータ選ぶ推定方法。
  image.png

  image.png
  image.png
  image.png
 尤度関数の最大と対数尤度関数の最大は一致することは、数学的に証明されている。

 勾配降下法
  image.png
  η学習率とは、パラメータを収束させる際の調整の大きさ。

  線形回帰モデルでは、最小2乗法を使用して微分がゼロになる値を求めることは容易であるが、ロジスティック回帰モデルでは、最尤推定法を使用して微分がゼロになる値を求めることが困難である。
  そこで勾配降下法を利用する。
  勾配降下法では、パラメータを更新するのにN個全てのデータに対する和を求める必要があるが、必要となるメモリ容量や計算時間が膨大になる。
  そこで、確率的勾配降下法を利用する。

 確率的勾配降下法
  ランダムにデータを選んでパラメータを更新する。
  image.png

 モデル評価
  学習済みモデルの評価方法

  混合行列:各検証データに対するモデルの予測結果を4つの観点で分類したもの(それぞれの個数をまとめた表)。
  image.png
  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×再現率×適合率)/(再現率+適合率)
   再現率と適合率のどちらも高い方が良いが、トレードオフの関係があるので調和平均で判定したい場合

 ハンズオン(タイタニックデータ解析)
  image.png
  image.png

###4 主成分分析
 主成分分析
  情報の損失なるべく小さくして次元圧縮する。

  2次元を1次元に圧縮する例
   損失なるべく小さくなるように圧縮する。 ⇒ 分散が最大になる射影軸にする。
   image.png
   上の式で、一か所転置のT記号が抜けているとのこと。

  制約を入れないと無限に解が出るので、ノルムが1となる制約を入れる。
  image.png

  aは、元のデータの分散共分散行列の固有値と固有ベクトル
  image.png

 寄与率で、圧縮した時の情報損失量がわかる。
image.png

 ハンズオン(乳がんデータ分析)
  image.png
  image.png

###5 アルゴリズム
 k近傍法(KNN)
  最近傍のデータをK個取ってきて、それらがもっとも多く所属するクラスに識別する。

  Kの数を変化させると結果も変わるので注意。
  image.png

  Kの数を大きくすると決定境界は滑らかになる。
  image.png

 k平均法(k-means)
  特徴の似ているもの同士をグループ化する。
  image.png
  image.png

  クラスタの数Kは決めておかないといけない。
  ①K個のクラスタの中心を仮定する。
  image.png

  ②仮定したクラスタの中心で、クラスタ分けをする。
  image.png

  ③クラスタ中心を計算する。
  image.png

  ④再度クラスタ分けと中心の計算を繰り返す。
  image.png

  初期値が離れている場合はうまくクラスタリングできるが、
  初期値が近い場合はうまくクラスタリングできないので注意。
  image.png

  Kの数によって、結果も変わるので、最初の設定も重要である。
  image.png

 k-means++とは
  初期値の設定方法を統計手法など使用して最適化するk-means++という手法がある。
  処理には時間がかかる。
  試験に出る可能性がある。

###6 サポートベクターマシン(SVM)
 線形モデルで2値分類する。
 image.png

 マージン:線形判別関数ともっとも近いデータ点の距離。
 マージンが最大となる線形判別関数を求める。
 image.png

 目的関数の式
 image.png

 主問題の目的関数と制約条件
  最適化問題をラグランジュ未定乗数法およびKKT条件を用いることによりで解くことができる。
 image.png

 相対問題の目的関数と制約条件
 image.png

 主問題の最適解と双対問題の最適解は一対一対応
 image.png

 SVMの決定関数
 image.png

 サポートベクター:本当に予測に必要となる一部のデータ
 image.png

 ソフトマージンSVM
  誤差を許容し、誤差に対してペナルティを与える。
 image.png

 ソフトマージンSVMの目的関数と制約条件
 image.png

 カーネルトリック
 image.png

#深層学習
###1 入力層~中間層
 「u=Wx+b」の計算をPythonでプログラミングすると、
  u1 = np.dot(x,W1) + b1
 となる。
  xの列とW1の行の次元をそろえる必要があるので注意。

 image.png
 image.png
 中間層の出力を定義しているソースは、
  z = functions.relu(u)
 である。

 JupterNotebookの使い方がよくわからなかった。
  commonモジュールがエラーになった。
  調べてみるとcommonフォルダーを参照しているようなので、
  データファイルをcommonフォルダーごと移動させたら解決した。

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

 中間層用の活性化関数
  ステップ関数:
   パーセプトロン(ニューラルネットワークの前身)で利用された関数。
   線形分離可能のものしか学習できなかった。
   ディープラーニングでは使用されていない。

  シグモイド関数(ロジスティク関数):
   非線形分離可能。ニューラルネットワークが予想解析などに普及するきっかけとなった。
   大きな値では出力の変化が微小なため、勾配消失問題を引き起こすことがあった。
   完全にゼロにはならないので、計算リソースの消費が多いことが問題である。

  ReLU関数:
   勾配消失問題の回避とスパース化による計算リソースの消費に対して、良い成果をもたらした。
    (スパース化とは、元のベクトルや行列の性質を残しつつ、値のほとんどを0にしてしまうこと。)
   よく使用されている。これが一番よいわけではない。解決したい課題によっては、シグモイド関数の方が良い場合もある。

 出力層用の活性化関数
  ソフトマックス関数
  恒等写像
  シグモイド関数(ロジスティク関数)

 全結合NN - 単層・複数ノード
 ノードが多ければ多いほど精度が上がるというわけでもない。

 z=f(u)を定義しているソース
 image.png
  z = functions.sigmoid(u)

###3 出力層
  中間層は人間にはわかにくいが、出力層で人間にわかりやすいようにしている。
  確率で示される。100%になることはほとんどない。

 誤差関数
  正解との誤差。誤差を最小にすることが目的。
  なぜ、2乗にするのか? ⇒ 値を正にするため。
  1/2はどういう意味か? ⇒ 微分をした際に計算を簡単にするため。

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

 タスクによる活性化関数と誤差関数の組合せ
 image.png
  なぜこの組み合わせになるのか?→計算の相性が良いから。

 数式とコード
  <シグモイド関数>
  image.png
  image.png

  <ソフトマックス関数>
  image.png
  image.png
   「.T」は転置

  <二乗誤差>
  image.png
  image.png

  <交差エントロピー>
  image.png
  image.png
  動画の中のソースコードは、インデントが違うがこちらのソースコードが正しいのだろう。
  「1e-7」は分子がゼロにならないように足している。

###4 勾配降下法
 勾配降下法(バッチ勾配降下法)
  深層学習の目的
   誤差を最小にするニューラルネットワークを作成すること。
   誤差を最小化するパラメータwの組合せを発見すること。

  パラメータの最適化に勾配降下法を利用する。
   パラメータから∇E(なぶらE)に学習率εを掛けたものを引いていく。
   ∇Eとは誤差をパラメータで微分したもの。
 image.png
   上記公式に該当するソースコードは?
 image.png
 image.png
 image.png
 image.png
   該当するソースコードは? ⇒ network[key] -= learning_rate * grad[key]

  学習率ε
   誤差をどんどん収束させる大きさ。
   学習率が大きすぎる場合のデメリットは、最小値にいつまでもたどり着かない。
   学習率が小さすぎる場合のデメリットは、最小値にたどり着くまでに時間がかかる。
    また、いくつかの谷がある場合、大域的極小にたどり着かない場合がある。

  学習率の決定方法、収束性向上のためのアルゴリズム
   数多く公開されている。たとえば、
    Momentum
    AdaGrad
    Adadelta
    Adam
    RMSprop

  学習の概念
   誤差関数の値をより小さくする方向に重みWおよびバイアスbを更新し、次の周(エポック)に反映する。
   エポックとは語源は時代と言う意味だが「学習回数」と思ってよい。

 確率的勾配降下法(SGD)
  普通の勾配降下法での誤差は、全サンプルの平均誤差だが、確率的勾配降下法では、ランダムに抽出したサンプルのみの誤差。
  確率的勾配降下法のメリットは、
   ・データが冗長な場合(無駄に多い場合)の計算コストの軽減。
   ・望まない局所極小解に収束するリスクの軽減。
   ・オンライン学習ができる。
     オンライン学習とは常に更新されるユーザーのデータで随時学習することのようだ。

 ミニバッチ勾配降下法
  普通の勾配降下法での誤差は、全サンプルの平均誤差だが、ミニバッチ勾配降下法では、ランダムに分割したデータの集合サンプルの平均誤差
  ミニバッチ勾配降下法のメリットは、
   ・確率的勾配降下法のメリットを損なわず、計算機の計算資源を有効利用できる。
   ・CPUを利用したスレッド並列化やGPUを利用したSIMD並列化ができる。

 誤差勾配の計算
  image.png
  数値微分(微小な数値を生成し疑似的に微分を計算する手法)では、順伝播の計算を繰り返し行う必要があるので計算付加が大きいというデメリットがある。
  よって、誤差逆伝播を利用する。

###5 誤差逆伝播法
 計算結果(=誤差)から微分を逆算することで、不要な再帰的計算を避けて微分を算出できる。
 既に行った計算結果を保持しているソースコードは?
 image.png
  b2の勾配のところでは、ソースの都合上、sumでベクトル化している。

 誤差逆伝播法の数式
 image.png
  誤差関数は、理解しやすいように二乗誤差関数している。
  出力層の出力化関数は、理解しやすいように恒等写像にしている。
 image.png
 image.png
  最終的には、簡単な式になる。

 yの値を予想するAIのソースコードの解説
 image.png
 image.png
 image.png
 image.png

 式に該当するソースコードは? 
 image.png
 ⇒ image.png

 image.png
 ⇒ uをuで微分した値は1なので同上

 image.png
 ⇒ image.png

バナーの設定方法がよくわからなかった
 ⇒ バナー画像を張り付けて生成されるコードを[ ]で囲み、そのあとに、リンク先URLを( )で囲んだものを加える。

 ※2021/01/11:ここに掲載したバナー広告は利用規約違反のため削除しました。

1
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
1
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?