※当サイトの記事には、広告・プロモーションが含まれます。

パターン認識と機械学習 を読み解くには「微積分」「線形代数」「確率論」が必須らしい...

f:id:ts0818:20200212204739j:plain

Of course, researchers didn't go out and test everyone for clinical depression; rather, they used preexisting data. That means we're not looking at rates of clinical depression, exactly, so much as the rate at which people are diagnosed with clinical depression. People who live in countries with greater awareness of and easier access to mental health services, then, are naturally going to be diagnosed at a higher rate. That may help explain the unusually low rate in Iraq, for example, where public health services are poor. Taboos against mental health disorders may also drive down diagnosis rates, for example in East Asia, artificially lowering the study's measure of clinical depression's prevalence in that region.

https://www.washingtonpost.com/news/worldviews/wp/2013/11/07/a-stunning-map-of-depression-rates-around-the-world/

ワシントンポストの2013年の記事で「鬱病」の世界ランキングみたいなのやってたんですね。分布図によると、「東アジア」が最も軽度、それに続く感じで「東南アジア」も「鬱病」の割合は低いですと、つまり「鬱病」が少ないと...そんな馬鹿な!

まぁ、2020年の今実施したら、「東南アジア」がぶっちぎりで「鬱病大国」と言えそうですが...どうもボクです。

 

そんなわけで、 

playground-tus.connpass.com

⇧  参加して参りました~。いや~、サッパリ理解できなかったけども...

というわけで、自分の至らなさを反省し、


パターン認識と機械学習 上


パターン認識と機械学習 下 (ベイズ理論による統計的予測)


パターン認識と機械学習の学習―ベイズ理論に負けないための数学

⇧  購入いたしました~。¥ 16,342 という大出費(涙)。

んで、読み始めたけど...む、難イ!否、激難イ!!ウリイイイイイイ!


こうしてみてみると、原作に忠実に考えるならば波紋をブチ食らうまでの初期のディオのセリフとして表現したいなら「URYYY」、それ以降ならば「WRYYY」と書くのが正しそうですが、原作にカタカナ表記まで混じっているくらいだし正直その辺はもうフィーリングで良いよーな気も。

『ジョジョ』における「URYYY」「WRYYY」「ウリイイイ」の違いについて - 大須は萌えているか?

⇧  ってな感じで、「URYYY」「WRYYY」「ウリイイイ」の違い並みに良く分からんです...

パターン認識機械学習」の本が、めちゃくちゃ難解ってことを言いたかったわけですけど...。

 

wafdata.hatenablog.com

⇧  上記サイト様で紹介されてたスライドが、なかなか胸熱です。

そんなこんなで、数学の勉強にレッツトライ~。 

 

微積

例のごとく、Wikipedia さんに頼ってみる。

微分積分学(びぶんせきぶんがく, calculus)とは、解析学の基本的な部分を形成する数学の分野の一つである。微分積分学は、局所的な変化を捉える微分と局所的な量の大域的な集積を扱う積分の二本の柱からなり、分野としての範囲を確定するのは難しいが、大体多変数実数関数微分積分に関わる事柄(逆関数定理やベクトル解析も)を含んでいる。

微分積分学 - Wikipedia

⇧ う、う~ん...分野の範囲が明確に定まってないってことなんかな?

微分は、ある関数のある点での接線、或いは接平面を考える演算である。数学的に別の言い方をすると、基本的には複雑な関数を線型近似して捉えようとする考え方である。従って、微分線型写像になる。但し、多変数関数の微分線型写像として捉える考え方は 20世紀に入ってからのものである。微分方程式はこの考え方の自然な延長にある。

微分積分学 - Wikipedia

⇧ 『「微分」は「線形写像」になる』って言われてもね...

数学の特に線型代数学における線型変換(せんけいへんかん、linear transformation一次変換)あるいは線型写像(せんけいしゃぞう、linear mapping)は、ベクトルの加法スカラー乗法を保つ特別の写像である。特に任意の(零写像でない)線型写像は「直線を直線に移す」。

線型写像 - Wikipedia

⇧ わ、分からん...

 

linear-algebra.com

⇧  上記サイト様が分かりやすいです。

ここで、上記サイト様の説明で「行列」とか出てくるんですが、「行列」と「ベクトル」の違いって何ぞや?な情弱な私ですので、ググってみました。

www.snap-tck.com

共通の要因を持つひとまとまりの数字を縦か横に並べ、括弧で囲んだものをベクトル(vector)といいます。

ベクトルと行列 ベクトルと行列の定義 

列ベクトルを横に、あるいは行ベクトルを縦にいくつか並べたものを行列(matrix)といい、縦の成分数nと横の成分数pによって(n,p)型の行列または(n×p)の行列と表現します。 ベクトルを共通の要因を持つ一連のデータの集まりとすれば、行列は一連のデータを一定の規則に従って並べた一覧表ととらえることができます。

ベクトルと行列 ベクトルと行列の定義

⇧ 「ベクトル」をまとめたものが「行列」ってことみたい。

列ベクトル 

\begin{bmatrix} x_0 \\ x_1 \\ ... \\ x_n \end{bmatrix}

行ベクトル

\begin{bmatrix} x_0, x_1,...x_n \end{bmatrix}

行列

\begin{bmatrix} x_{01} & x_{02} & \ldots & x_{0n} \cr x_{11} & x_{12} & \ldots & x_{1n} \cr \vdots & \vdots & \ddots & \vdots \cr x_{m1} & x_{m2} & \ldots & x_{mn} \cr \end{bmatrix}

 

ちなみに、「パターン認識機械学習」でも「転置」って操作が行われているんだけど、イメージ図としては、 

www.sist.ac.jp

⇧ 上記サイト様が分かりやすいかと。

 

脱線しましたが、 「積分」はというと、

対して積分は、幾何学的には、曲線、あるいは曲面座標軸とに挟まれた領域の面積(体積)を求めることに相当している。ベルンハルト・リーマンは(一変数の)定積分の値を、長方形近似の極限として直接的に定義し、連続関数積分を有することなどを証明した。彼の定義による積分リーマン積分と呼んでいる。

微分積分学 - Wikipedia

⇧ 「座標軸」と「曲線」乃至は「曲面」に囲まれた「面積」とか「体積」を求めるんだと。

なんか、「微分」「積分」は、

微分積分はまったく別の概念でありながら密接な関連性を持ち、一変数の場合、互いに他の逆演算としての意味を持っている(微分積分学の基本定理)。微分は傾き、積分は面積を表す。

微分積分学 - Wikipedia

⇧ 互いに関連し合っていますと。

 

「理論から理解する機械学習 feat.PRML #1」の復習

基本的には、「パターン認識機械学習 上(著:C.M.ビショップ)」 の内容を嚙み砕いて説明してくれているんだと思う。

私は、完全な文系なので、高校数学とかもよく分かってないんで、高校数学から学習せんといかんのだけどね...

それはさておき、PRMLって?

『Pattern Recognition and Machine Learning』の略だそうです。

どうやら、「パターン認識」と「機械学習」は、

取り扱う内容 学術の分野
パターン認識(Pattern Recognition) 工学
機械学習(Machine Learning) 計算機科学

⇧  それぞれ「学術の分野」 が異なっていたそうですね。

 

パターン認識」は、

パターン認識には、音声データから人間の声を認識して取り出して命令として解釈する音声認識、画像データの中から文字を認識してテキストデータに変換する光学文字認識(OCR)、大量の文書情報の中から、特定のキーワードを認識して文書の検索を実施する全文検索システム、などの技術が含まれる。

パターン認識 - Wikipedia

⇧ 「パターン」を利用して「認識」処理をするってことですかね。膨大な情報をすべて処理していたら、膨大な時間がかかってしまうので、「情報」の中で「認識」に必要なものだけを抽出していこうってことですかね。

 

機械学習」は、

機械学習きかいがくしゅうMachine learning、略称: ML)は、明示的な指示を用いることなく、その代わりにパターンと推論に依存して、特定の課題を効率的に実行するためにコンピュータシステムが使用するアルゴリズムおよび統計モデルの科学研究である。

機械学習 - Wikipedia

⇧ 「パターン」と「推論」を駆使して、自立して処理を行いますと。

 

どちらも「パターン」が出てきましたと。

まぁ、「パターン」ってのが具体的にどんなことかっていうのはよく分からんのですが、「機械学習」というものはWikipediaさんによりますと主に、

アルゴリズム 内容
教師あり学習 入力とそれに対応すべき出力(人間の専門家が訓練例にラベル付けすることで提供されることが多いのでラベルとも呼ばれる)を写像する関数を生成する。例えば、分類問題では入力ベクトルと出力に対応する分類で示される例を与えられ、それらを写像する関数を近似的に求める。
教師なし学習 入力のみ(ラベルなしの例)からモデルを構築する。データマイニングも参照。
半教師あり学習 ラベルありの例とラベルなしの例をどちらも扱えるようにしたもので、それによって近似関数または分類器を生成する。
強化学習 周囲の環境を観測することでどう行動すべきかを学習する。行動によって必ず環境に影響を及ぼし、環境から報酬という形でフィードバックを得ることで学習アルゴリズムのガイドとする。例えばQ学習がある。
トランスダクション 観測された具体的な(訓練)例から具体的かつ固定の(テスト)例の新たな出力を予測しようとする。
マルチタスク学習 関連する複数の問題について同時に学習させ、主要な問題の予測精度を向上させる。

⇧  2020年2月11日(火)現在で、6種類ほど存在するそうな。

パターン認識機械学習 上(著:C.M.ビショップ)」だと、 

アルゴリズム 代表的な例
教師あり学習
(supervised learning)
クラス分類(classfication)、回帰(regression)

教師なし学習
(unsupervised learning)

クラスタリング(clustering)、密度推定(density estimation)
強化学習
(reinforcement learning)
 特に紹介なし

⇧  ってな説明が出てくる感じ。 

んで、参加したセミナーだと、「回帰(regression)」ってものに焦点を当ててたようです。

ちなみに、「クラス分類(classfication)」の例は、

f:id:ts0818:20200211153458p:plain

bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf

⇧ 「手書き数字の認識」のように、『「入力ベクトル」を「有限個の離散カテゴリ」の1つに割り当てる』ってことらしい。

あらかじめ用意しておいた「集合」に対して、「入力ベクトル」を当てはめてみて「出力」を算出するってことらしく、求める「出力」が1つに絞り込めるってことみたい。

それに対して、「回帰(regression)」ってのは、『「入力ベクトル」に対して、「出力」が、「1つないしそれ以上の連続変数」となる』ってことで、1つに絞り込めないらしい。

そんなこと言っても、未知の「入力」があったとして、それにマッチする「出力」ってものを知りたいのが人情。

そのため、「回帰(regression)」の目標というのが、「入力」に対して「出力」を導出してくれる「関数」を決めて上げることらしい。

回帰(かいき、regression)とは、統計学において、Y が連続値の時にデータに Y = f(X) というモデル(「定量的な関係の構造」)を当てはめる事。

回帰分析 - Wikipedia

Wikipedia さんでも「 Y = f(X) というモデル(「定量的な関係の構造」)を当てはめる事」って仰ってますね。

回帰で使われる、最も基本的なモデルは Y = AX + B という形式の線形回帰である。

回帰分析 - Wikipedia

⇧ 基本は、「線形回帰モデル」ってことらしい。

パターン認識機械学習 上(著:C.M.ビショップ)」だと、「線形モデル(linear model)」ってなってるけど。

なんか、

種類があって混乱するんですが...、まぁ、今回は「Linear model」ってことなのだとは思うけども。 

んで、「線形モデル」ってのは、あくまで特定の「分布」に依存するってことかと。

⇧ 上図のような「分布」でないと「Y = AX + B 」っていう「直線」で表せないものね。「データ」が大事よね。

ただ、Wikipedia さんの説明だと、図が「直線」のものの例しか無いんだけど、「多項式曲線フィッティング」ってのを実装すると、「曲線」ってものが表現できるらしい。

Curve fitting is the process of constructing a curve, or mathematical function, that has the best fit to a series of data pointspossibly subject to constraints. 

 Curve fitting can involve either interpolation, where an exact fit to the data is required, or smoothing, in which a "smooth" function is constructed that approximately fits the data. A related topic is regression analysis, which focuses more on questions of statistical inference such as how much uncertainty is present in a curve that is fit to data observed with random errors. Fitted curves can be used as an aid for data visualization, to infer values of a function where no data are available, and to summarize the relationships among two or more variables.

 Extrapolation refers to the use of a fitted curve beyond the range of the observed data, and is subject to a degree of uncertainty since it may reflect the method used to construct the curve as much as it reflects the observed data.

Curve fitting - Wikipedia

⇧ ただし、「不確実性」があるから注意が必要らしい。

多項式曲線フィッティング」、日本語だと「曲線あてはめ」 ってものを利用すると、

f:id:ts0818:20200211175135p:plain

bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf

⇧ 赤い線のように、「曲線」が表現可能なのだけど、これは、「M」が、「x」の次数になっているからというらしい。

式で表すと、

\begin{eqnarray} y(x, w) = w_0 + w_1{x} + w_2{x^2} + ... + w_M{x^M} = \sum_{ j = 0 }^{ M } w_j{x^2} \end{eqnarray}

ってな具合になるらしいですと。

え? 「Y = AX + B」じゃないじゃん?って思った貴方!素晴らしい!私も思いました、これって「線形モデル」って言えるんかいな?

線形回帰が「線形」であるのは、目的変数 Y が説明変数 X の係数 β に対して線形であるためである。たとえば

という回帰は x に対して明らかに線形ではないが、係数 β に対して線形であるから、線形回帰の問題に分類される。

線形回帰 - Wikipedia

⇧ ってことらしい。つまり、「 w 」に着目する限りは、「線形」と言えるんだと。

まぁ、そういうことらしい。

「関数」が決められたとして、まだ、問題はありますと。それは、「分布」のどこに「線」を引いたら、「データ」との誤差を最小化ができるのかってことですかね。

それを解決するのが、「最小二乗法」ってものらしい。

最小二乗法(さいしょうにじょうほう、さいしょうじじょうほう;最小自乗法とも書く、least squares method)は、測定で得られた数値の組を、適当なモデルから想定される1次関数対数曲線など特定の関数を用いて近似するときに、想定する関数が測定値に対してよい近似となるように、残差の二乗和を最小とするような係数を決定する方法、あるいはそのような方法によって近似を行うことである。

最小二乗法 - Wikipedia

 

「目標値」を「t」とすると、

\begin{eqnarray} E(w) = \frac{ 1 }{ 2 }\sum_{ n = 1 }^{ N } \{y(x_n, w) -t_n\}^2 \end{eqnarray}

⇧ 上記のような式になるらしい。この式の値が最小になるような「x」を求めていくことになるらしい。(「w」は任意の固定値を決め打ちしておくらしいので。)

んで、この「最小二乗法」の式が「数学的に正当性がある」と言えるのかどうかっていう証明を、セミナーでしてくれたんですが、それは、また時間のある時に追記したいと思います。

2020年2月23日(日)追記:↓ ここから

「最小二乗法」の妥当性を確認するには、「ガウス分布」の考えと「最尤推定法」の考えを利用するとのこと。

ガウス分布」とは?

確率論統計学で用いられる正規分布(せいきぶんぷ、normal distribution)またはガウス分布Gaussian distribution)は、平均値の付近に集積するようなデータの分布を表した連続的な変数に関する確率分布である。中心極限定理により、独立な多数の因子の和として表される確率変数正規分布に従う。

正規分布 - Wikipedia

⇧ ってことらしく、一般的には、

平均を μ分散を σ2 > 0 とする(1次元)正規分布とは、確率密度関数が次の形(ガウス関数と呼ばれる)

で与えられる確率分布のことである。この分布を N(μσ2) と表す。(N は「正規分布」を表す英語 "normal distribution" の頭文字から取られている)。

正規分布 - Wikipedia

⇧ ってな書きっぷりらしい。

ですが、「パターン認識機械学習 上(著:C.M.ビショップ)」とセミナーだと、

\begin{eqnarray}  \mathcal{N}(変数名 | 平均, 分散) \end{eqnarray}

って書きっぷりなんですけど、この統一の無さは何なんだろう...何が正しいのか分からんくなるから統一して欲しい...

なので、

 \begin{eqnarray}  \mathcal{N}(x \mid \mu, \sigma^2) = \frac{1}{(2 \pi \sigma^2)^{\frac{1}{2}}} \exp \left\{-\frac{1}{2 \sigma^2}(x - \mu^2) \right\} \end{eqnarray}

⇧ ってな感じで、「ガウス分布」= 「確立密度関数」という形で表現されてて、

 

f:id:ts0818:20200223162101p:plain

Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf

⇧ 上図みたいな分布のイメージらしい。

んで、「ガウス分布」の x についての積分は、1 になるらしい。

 \begin{eqnarray} \int_{ - \infty }^{ \infty } \mathcal{N}(x \mid \mu, \sigma^2) dx = 1 \end{eqnarray}

ガウス分布」が上記のようなものだとすると、「最尤推定法」で考えると、「目標変数」である「t」は、

\begin{eqnarray} t = y(x, w) + \varepsilon \end{eqnarray}

⇧ 上記のような形になるのだと。

ただし、

\begin{eqnarray} \varepsilon \sim \mathcal{N}(0, \beta^{-1}) \end{eqnarray}

 \begin{eqnarray} \beta^{-1} = \sigma^2 \end{eqnarray}

であると。

ここで出てきた、β は「精度パラメータ」、ε は「ガウスノイズ」というものらしい。

ガウス雑音ガウスざつおん)は正規分布ガウス分布ともいう)と等しい確率密度関数を持つ統計的雑音。言い換えると、ノイズがとる値がガウス分布であるということである。

ガウス確率変数を  とする確率密度関数  は以下のようになる。

 は階調レベルを、 は平均値を、 は標準偏差を表す

ガウス雑音 - Wikipedia

⇧ 要するに、「ガウス分布」と同じものってことらしい。

 ただ、セミナーの説明だと、「ほぼ等しい」と言っているので、厳密には等しいとは言い切れないってことですかね?

ここで、「目標変数」である「t」の「確率分布」は、

 \begin{eqnarray} p(t \mid x, w, \beta) =  \mathcal{N}(t \mid y(x, w), \beta^{-1}) \end{eqnarray}

と表せて、

ここで入力ベクトルXを、

\begin{eqnarray} X = \left\{x_1, ... ,x_N \right\} \end{eqnarray}

目標ベクトルt を、

\begin{eqnarray} \mathbf{t} = \left\{t_1, ... ,t_N \right\} \end{eqnarray}

とし、

入力データは独立同一分布に従って生成されていると仮定すると、「尤度関数」は以下のようになるらしい。

\begin{eqnarray} p(t \mid x, w, \beta) = \prod_{ n = 1 }^N \mathcal{N}(t_n \mid w^T \phi (x_n), \beta^{-1}) \end{eqnarray}

ここで、M < N を前提として、上記は「総乗」の形になっているので、「総和」の形にするために、両辺の「対数」を取ると、

\begin{align} \ln p(t \mid x, w, \beta) &= \sum_{ n = 1 }^{ N } \ln \mathcal{N}(t_n \mid w^T \phi (x_n), \beta^{-1}) \\ &= \frac{N}{2}\ln \beta - \frac{N}{2}\ln (2 \pi) - \frac{\beta}{2}\sum_{n=1}^{N} \left\{ t_n - w^T \phi (x_n) \right\}^2 \\
\end{align}

となり、w で積分すると、以下のような形に持っていけるらしい。

\begin{eqnarray} \frac{\delta \ln p(t \mid x, w, \beta)}{\delta w^T} = \beta \sum_{n=1}^{N} \left\{ t_n - w^T \phi (x_n) \right\} \frac{\delta}{\delta w^T}(w^T \phi(x_n)) \end{eqnarray} 

ちなみに、「総乗」は、

butsuri.fun

⇧ 上記サイト様によりますと、すべての項を掛け算するということのようです。

ここで、

\begin{align} w^T \phi (x_n) &= (w_1, ..., w_N)(\phi (x_1), ..., \phi (x_n))^T \\
&= (w_1 \phi (x_1), ..., w_N \phi (x_n)) \end{align} 

から、

\begin{align} \frac{\delta}{\delta w^T}(w^T \phi(x_n)) &= (\phi (x_1), ..., \phi (x_n)) \\ &= \phi (x_n)^T \end{align} 

と表せるらしいので、「平均」が 0 であるとして、

\begin{eqnarray} \frac{\delta \ln p(t \mid x, w, \beta)}{\delta w^T} = \beta \sum_{n=1}^{N} \left\{ t_n - w^T \phi (x_n) \right\} \phi(x_n)^T = 0 \end{eqnarray} 

となり、

\begin{eqnarray} \sum_{n=1}^{N} t_n \phi (x_n)^T = \sum_{n=1}^{N} w^T \phi (x_n) \phi (x_n)^T \end{eqnarray} 

となる。

ここで、以下のような

\begin{eqnarray} \phi = \left( \begin{array}{c}
\phi(x_1)^T \\
\vdots \\
\phi(x_N)^T
\end{array} \right) = \left( \begin{array}{ccc}
\phi_{0}(x_1) & \ldots & \phi_{M - 1}(x_1) \\
\vdots & \ddots & \vdots \\
\phi_{0}(x_N) & \ldots & \phi_{M - 1}(x_N)
\end{array} \right) \end{eqnarray}

N×Mの計画行列φを導入すると、
\begin{eqnarray} t^T \phi = w^T \phi^T \phi \end{eqnarray}

となり、両辺の転置を取ると、

\begin{eqnarray} \phi^{T}t = \phi^T {\phi}w \end{eqnarray}

となり、

\begin{eqnarray} \phi^T {\phi} \end{eqnarray}

が「正則」の時、wについて解くと、

\begin{eqnarray} w_ML = (\phi^{T}\phi)^{-1}\phi^{T}t = \phi^{\dagger}t \end{eqnarray}

となり、

\begin{eqnarray}  \phi^{\dagger} \end{eqnarray}

は、

\begin{eqnarray} \phi^{\dagger} \equiv (\phi^{T}\phi)^{-1}\phi^{T} \qquad (\therefore M \lt N) \end{eqnarray}

と定義され、ムーアペンローズ擬似逆行列(Moore-Penrose pseudo-inverse matrix)と呼ぶ形になるため、

\begin{eqnarray} 平均が 0 で、分散 \beta^{-1} の確率変数 \varepsilon を想定するとき、\end{eqnarray}

最尤推定法によって最小二乗法は数学的に正当性をもつと言えるようです。

 

2020年2月23日(日)追記:↑ ここまで

 

「Hatenaブログ」での「MathJax.js」の書きっぷりを調べるのに時間がかかってしまった...

easy-copy-mathjax.xxxx7.com

⇧  上記サイト様でいろいろ載ってますかね。

MathJax.js を読み込む方法なんかは、

www.mathjax.org

github.com

https://readthedocs.org/projects/mathjax/downloads/pdf/latest/

docs.mathjax.org

⇧  とかに載ってるんだけど、設定をしようとすると、自分の環境だとどうしてもエラー出ちゃうんよね...

どういうことかと言うと、

<script>
MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']]
  }
};
</script>

⇧ みたいな設定をしようとすると、Javascriptのエラーが出るのよね...

う~ん、「Hatenaブログ」のJavaScript とバッティングしてんのかな?分からんです...

 

それにしても、数学の知識が無いのはキツイっすね...

今回はこのへんで。