オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【機械学習】線形基底関数モデル / Liner Basis Function Models

「これから、機械学習ディープラーニングの学習をしたいから、その基本となる線形回帰モデルの理解を深めたい」という方に向けた記事.

キーワード・知ってると理解がしやすい

  • 線形回帰モデル
  • 行列

Index

線形基底関数モデルとは

一般的なデータ解析のモデルの1つである線形回帰モデルを一般化して、どのような関数でも適用できるような形式.

基底関数線形に結合しているだけ、最終的な関数 (回帰方程式) が、線形になるわけではない.

非線形への拡張もあり得る.

線形回帰モデル

単変数の線形回帰モデル

データ解析で基本的なモデルである線形回帰モデルは以下のように定式化できる.

\displaystyle{
y\ =\ ax\ +\ b}



  •  x : 入力(説明変数)
  •  y : 出力(目的変数)
  •  a,\ b : パラメータ

散布されたデータに対して、線形回帰モデルを適用したイメージ図.



多変数の線形回帰モデル

単変数の線形回帰モデルを多変数の線形回帰モデルに一般化した場合も考える.

実際にデータ解析をするときに入力(説明変数)が1種類(1次元)である場合は少なく、 多変量になるとことが多い.


\displaystyle{
y\ =\ w_{0}\ +\ w_{1} x_{1}\ +\ \cdots +\ w_{D} x_{D}
}



  • D : 説明変数の次元(種類)
  • x_{n}\ (n:\ 1,\ \cdots\ ,\ D) : 入力(説明変数)
  • y : 出力(目的変数)
  • w_{n}\ (n:\ 0,\ \cdots\ ,\ D) : パラメータ

単変数のモデルも a\ =\ w_1\ ,b\ =\ w_0 とすると上の式の D\ =\ 1の式と同様になる.




\displaystyle{
y\ =\ w_1x_1\ +\ w_0
}



線形基底関数モデル

さらに変数への写像関数を一般化(拡張)する.

写像関数を一般化するために、基底関数を導入する.


\displaystyle{
y\ =\ w_{0}\ +\ w_{1} \phi_{1}(\mathbb{x})\ +\ \cdots +\ w_{D} \phi_{D}(\mathbb{x})
}



  • D : 説明変数の次元(種類)
  • \mathbb{x} : 入力ベクトル(説明変数)
    • \mathbb{x}\ =\ (x_1,\ \cdots,\ x_D)
  • y : 出力(目的変数)
  • w_{n}\ (n:\ 0,\ \cdots\ ,\ D) : パラメータ
  • \phi_{n}\ (n:\ 1,\ \cdots\ ,\ D): 基底関数

基底関数 \phi_n\phi_n(\mathbb{x})\ =\ x_n\ \ (n\ :\ 1,\ \cdots,\ D)とすることで、 多変量の線形回帰モデルの式になる.

そして、さらに数式をコンパクトにするために以下のように数式を解釈する.


\displaystyle{
y\ =\ w_{0}\ +\ w_{1} \phi_{1}(\mathbb{x})\ +\ \cdots +\ w_{D} \phi_{D}(\mathbb{x}) \\
\ \ \ =\ w_{0} \cdot\ 1\ +\ w_{1} \phi_{1}(\mathbb{x})\ +\ \cdots +\ w_{D} \phi_{D}(\mathbb{x}) \\
\ \ \ \ \ \ \ \ \ (\phi_{0}(\mathbb{x})\ =\ 1) \\
\ \ \ =\ w_{0} \cdot\ \phi_{0}(\mathbb{x})\ +\ w_{1} \phi_{1}(\mathbb{x})\ +\ \cdots +\ w_{D} \phi_{D}(\mathbb{x}) \\
\ \ \ =\ \sum_{j=0}^{D}w_{j}\phi_{j}(\mathbb{x}) \\
\ \ \ =\ \mathbb{w}^{T} \mathbb{\phi} (\mathbb{x})
}



  • \mathbb{w} : パラメータベクトル
    • \mathbb{w}\ =\ (w_0,\ \cdots,\ w_D)
  • \mathbb{\phi}: 基底関数ベクトル (特徴ベクトルと呼ぶ)
    • \mathbb{\phi}\ =\ (\phi_0(\mathbb{x}),\ \cdots,\ \phi_D(\mathbb{x}))

パターン認識機械学習の応用場面では、元のデータに対して何らかの前処理・特徴量抽出の処理をすることが多い.

それらの処理の出力を特徴ベクトル\mathbb{\phi}と考えられる.

パラメータ w_{n}\ (n:\ 0,\ \cdots\ ,\ D) に関しては、線形なので「線形モデル」という.

基底関数

さらなる応用としては基底関数に非線形な関数を用いることで、関数の表現の幅を豊かにする.

基底関数として使われる関数.

参考

【統計学】期待値と分散

Index

期待値

確率分布  p(x) (  f(x) と表現されることも )

確率変数  f(x) (  X と表現されることも )

定義

確率変数 f(x) の、確率分布  p(x) の下での、平均値を  f(x)

期待値(Expectation)と呼び、E[f] ( もしくは、 E[X] )と書く.



確率分布 p(x) が離散分布のときは、以下で与えられる.

\begin{align}
E[f] &= \displaystyle \sum_{x} p(x)\ f(x) \\
(E[X] &=\ )
\end{align}



確率分布 p(x) が連続分布のときは、以下で与えられる.

\begin{align}
E[f] &= \displaystyle \int p(x)\ f(x)\ dx \\
(E[X] &=\ )
\end{align}



どちらの場合も、確率分布や確率密度から得られた有限個の  N 点を用いて、

期待値はこれらの点での有限和で近似できる.

\begin{align}
E[f] &\simeq \displaystyle \frac{1}{N} \sum_{n=1}^{N} f(x_n) \\
(E[X] &=\ )
\end{align}



これは、

\begin{align}
E[f] &\simeq \displaystyle \frac{1}{N} \sum_{n=1}^{N} f(x_n) \\
&= \displaystyle \sum_{n=1}^{N} \frac{1}{N}\ f(x_n)
\end{align}


と変形でき、この式から、 p(x)\ =\ \displaystyle \frac{1}{N} を前提にしている.

つまり、どの確率変数も同様に発生する確率を持つことを前提にしているのである.



多変数関数の期待値を考える.

この場合は、どの変数について平均をとるかを示す添字をつける.

 E_{x}[ f(x, y) ]

条件付き期待値

条件付き確率 (分布) についても 条件付き期待値 を考えることができる.

 E_{x}[ f | y ]\ =\ \displaystyle \sum_{x} p(x | y)\ f(x)


計算例

サイコロを例とする.

サイコロを転がすと以下の表に応じた金額が貰える.

しかし、サイコロには特殊な細工がされて出る確率が操作されている.(下表)

サイコロ目 1 2 3 4 5 6
金額 100万 200万 300万 300万 200万 100万
確率 1/12 2/12 3/12 3/12 2/12 1/12



貰える金額の期待値を算出するために、このサイコロの確率分布 p(x) を考える.



確率分布は離散分布ということが分かる.

また、サイコロの出目をx としたときの貰える金額の関数 f(x)は以下のように表せる.


f(x)\ =
  \left\{
    \begin{array}{l}
      100万\ (x=1のとき) \\
      200万\ (x=2のとき) \\
      300万\ (x=3のとき) \\
      300万\ (x=4のとき) \\
      200万\ (x=5のとき) \\
      100万\ (x=6のとき)
    \end{array}
  \right.



貰える金額の期待値E[f]は


\displaystyle{
E[f]\ = \sum_{x} p(x)\ f(x)\ (x=1,2, \cdots ,6) \\
\ \\
\ \ \ \ \ \ \ \ = p(1) \times f(1) + p(2) \times f(2) + p(3) \times f(3) + \\
\ \ \ \ \ \ \ \ \ \ \ \ \ p(4) \times f(4) + p(5) \times f(5) + p(6) \times f(6) \\
\ \\
\ \\
\ \ \ \ \ \ \ \ = 1/12 \times 100万 + 2/12 \times 200万 + 3/12 \times 300万 + \\
\ \ \ \ \ \ \ \ \ \ \ \ \ 3/12 \times 300万 + 2/12 \times 200万 + 1/12 \times 100万 \\
\ \\
\ \\
\ \ \ \ \ \ \ \ = 233.3333333万
}



と計算できる.

つまり、このサイコロを1回振ったときに貰える金額の期待値は233万になる.

もしこのサイコロを1回振るのに200万を払わなければならないのだとすると、確率的には得になるし、300万だとすると損になる.

このような計算で宝くじの期待値も計算できる.

分散

定義

確率変数 f(x)分散(Variance)は、期待値が E[f] のとき、以下のように定義される.

\begin{align}
var[f] &= E\ [\ (\ f(x) - E[\ f(x)\ ]\ )^{2}\ ] \\
(\ V(X)\ &=\ )
\end{align}



と定義され、 f(x) がその平均値  E[ f(x) ] の周りでどれくらいばらつくかの尺度となる.

2 乗を展開すると、分散は  f(x) と、 f(x)^{2} を使って、

 var[f]\ =\ E[f(x)^{2}]\ -\ E[f(x)]^{2}



と書くこともできる.

共分散

2 つの確率変数  x y の共分散は、

\begin{align}
cov [x,\ y]\ &=\ E_{x,\ y} [ \{ x\ -\ E[x] \}\{ \{ y\ -\ E[y] \} ] \\
&= E_{x,\ y} [ xy ]\ -\ E[x]E[y]
\end{align}



と定義され、 x y が同時に変動する度合いを表している.

 x y が独立なら共分散は 0 になる.

参考

opencv ノイズ除去

  • 2020/08/30

参考

アルゴリズム

  • Non-local Means Denoising
    • 画像中の小領域(例えば5x5) を設定
    • 画像中の別の場所に同じようなパッチ(小領域)が存在する可能性は高いということを前提とする(注目画素の周辺にある可能性が高い)
    • これらの似ているパッチ(小領域)を使って画素の平均をとる
    • ある画素に対して周囲に小さな小領域を定義し,画像中から似ているパッチを見つけ,似ているパッチの平均値を出力画像の対応する画素の画素値とします
    • カラー画像のノイズ除去を行う場合は,画像をCIELAB色空間へと変換してからL成分とAB成分に対して独立してノイズ除去を適用します

パラメータ

  • opencv (cv2.fastNlMeansDenoisingColored)
    • h : フィルタの強さを決定するパラメータ.hの値が大きいとノイズをより消せますが,画像の詳細な部分も失ってしまいます(10であればOK).
    • hForColorComponents : カラー画像用のフィルタの強さを決定するパラメータ(hと同様10はOK).
    • templateWindowSize : テンプレートとなるウィンドウの大きさ.奇数でなければならない(7が推奨されている).
    • searchWindowSize : 探索ウィンドウの大きさ.奇数でなければならない(21が推奨されている).

「最近のポケモンはデジモンっぽいのか、ディープラーニングに聞いてみた」をよんで

  • 2020/08/23

参考

モチベーション

  • 画像系 / スコアリング タスク / 表現学習 まわりで同様のタスクをやっていた
  • 重要な項目を抽出して、理解をまとめたい

key-word

内容

「Grad-CAM」

Edge Detection の学習(U-Net)にopen data を使用したい

  • 2020/08/24

「edge detection document dataset」

  • MIDV-500: a dataset for identity document analysis and recognition on mobile devices in video stream
    • paper
    • dataset 「MIDV-500」についての説明
  • DeepDeSRT: Deep Learning for Detection and Structure Recognition of Tables in Document Images
    • paper
    • 文書画像の表の認識 について
    • データセット ICDAR 2013 を使用

「MIDV-500」

「midv-2019」

  • MIDV-2019: Challenges of the modern mobile-based document OCR
    • paper
    • dataset 「MIDV-2019」についての説明
      • MIDV-500 の強化版
      • 身分証明書のデータセット
      • 高画質になり、証明などの環境もバリエーションを持たせた

「edge detection table dataset」

「ICDAR 2013」

「ICDAR 2013 table competition dataset」

python ICDAR 2013 Table Competition xml

  • xml データのパースを誰かやってないかと思ってみてみた
  • TableBank: Table Benchmark for Image-based Table Detection and Recognition
    • paper
    • テーブルの検出 / 認識
    • 2020

ICDAR 2013 Table Competition

  • 2020/08/26

モチベーション

  • table のデータセットを使いたかったが、 仕様や種類があったのでまとめたい

サイト

データセット

「OpenCVでかすんでる文字をクッキリさせる方法」をよんで

  • 2020/08/23

URL

OpenCVでかすんでる文字をクッキリさせる方法

モチベーション

  • 画像処理を行う前に、画像のノイズを除去しておきたい
  • いくつかの手法を試せるようにしておきたい
  • できれば理論もこの記事を、皮切りに確認したい

手法

「ガンマ補正」

Note

  • 全体的に色彩を明るく or 暗くする
  • ピクセル値の計算方法に対数関数を利用
  • その関数内のパラメータガンマを調整する

「adaptiveThreshold」

Note

  • 単純なしきい値処理
    • あるガ画素値がしきい値が大きければ、ある値(白)を割り当て、そうでなければ別の値(黒)を割り当てる
  • 適応的しきい値処理
    • 画像中の小領域ごとにしきい値の値を計算する
    • そのため領域ごとに光源環境が変わってしまうような画像に対して,単純なしきい値処理より良い結果が得らる

opencv Laplacian」

Note

  • 二次微分を利用して画像から輪郭を抽出する空間フィルタ
  • ラプラシアンフィルタのカーネルで畳み込み演算することで、2次微分計算を行い、エッジを抽出する