MML
  • 数学プログラミング置き場
  • 数学記号記法一覧
  • 機械学習のための数学
    • 確率論
  • 機械学習・データサイエンス
    • 1. 機械学習・データサイエンス(概要)
    • 2. 機械学習
      • 2.1. 機械学習をこれから始める人へ
      • 2.2. 回帰問題
        • 2.2.1. 線形回帰の基礎
        • 2.2.2. 線形回帰モデルと正則化
        • 2.2.3. 線形基底関数モデル
          • いろいろな基底関数
        • 2.2.4. ベイズ線形回帰モデル
        • 2.2.5. カーネル回帰
        • 2.2.6. ガウス過程回帰
        • 2.2.7. 一般化線形モデル
        • 2.2.8. 一般化加法モデル
        • 2.2.9. 分位点回帰
        • 2.2.10. 3層ニューラルネットワーク
        • 2.2.11. 深層学習
        • 2.2.12. 深層学習とガウス過程
      • 分類問題
        • 線形判別分析
        • SVM
        • カーネルSVM
      • 強化学習
    • 3. データサイエンス
      • 主成分分析
      • 白色化
      • 低ランク行列近似
      • 行列補完
      • NMF
      • スパースモデリング
        • LASSO
          • FISTA
          • ADMM
        • 全状態探索法
    • 4. ニューラルネットワーク
      • CNN
      • GAN
      • VAE
      • GNN
      • word2vec
    • 5. ベイズ推論
      • 確率
      • 確率分布
      • ちょっとだけ振り返って
      • MCMC
      • ギブスサンプリング
      • 変分推論
  • 連続最適化
    • 1. Taylor展開と関数近似
    • 2. Taylorの定理と誤差の評価
    • 3. 最適化問題
    • 4. 直線探索法
      • 4.1. 最急降下法
      • 4.2. Armijo条件・Wolfe条件
      • 4.3. ニュートン法
      • 4.4. 共役勾配法
        • 4.4.1. 原始的な共役勾配法
        • 4.4.2. PRP法
        • 4.4.3. HS法
      • 4.5. 準ニュートン法
        • 4.5.1. DFP法
        • 4.5.2. BFGS法
        • 4.5.3. L-BFGS法
        • 4.5.4. Bryoden family of methods
        • 4.5.5. Broyden法
    • 5. 確率的最適化
      • 5.1. 確率的勾配降下法(SGD)
      • 5.2. 確率的準ニュートン法(SQN)
  • 行列計算
    • QR分解
    • コレスキー分解
    • 一般化コレスキー分解
    • 固有値分解
    • 一般化固有値問題
    • 特異値分解
  • その他
    • 位相限定相関法
  • カーネル法
    • カーネル法(概要)
  • Riemannian最適化
    • Riemann多様体って?
    • Riemannian最適化(概要)
    • 概説
    • 詳説
      • 解析学
      • 線形代数学(反変性・共変性・不変量)
      • テンソル解析
      • リーマン積分と微分形式
      • 位相空間論
      • 多様体論(解析幾何学)
      • Riemann多様体
  • プログラミングサイドブック
    • はじめに
    • Step 0. 勉強の仕方
      • いつ始める?どれくらい勉強する?
      • どうやって勉強する?
      • どこから手をつけたらいい?
    • Step 1. インターネットで調べる
    • Step 2. コンピュータの仕組みを学ぶ
    • Step 3. 開発環境を整える
    • Step 4. プログラミング言語を学ぶ
    • Step 5. 次のステップへ進むには
    • Step 6. 情報科学を学ぶ
  • プログラミング
    • プログラミング(概要)
    • システムの構成
    • サーバーのセットアップ
      • OSセットアップ
        • ユーザの作成
        • SSHの設定
        • ファイアウォールの設定
      • ドメインの取得と設定(Google domain)
    • Dockerによる仮想化
    • サーバーサイド(golang/gin)
    • リバースプロキシの設置(nginx)
    • SSL/TLS(Let's Encrypt)
    • フロントエンド(Elm)
    • Authentication(Firebase)
    • DB(MySQL)
    • KVS(Redis)
  • 数学勉強ノート
    • 0. 数学勉強ノート(概要)
    • 1. 第1群(基礎1)
      • 1.1. 集合
      • 1.2. ファジィ集合
      • 1.3. 論理学
      • 1.4. 位相
      • 1.5. 代数学
        • 1.5.1. 群
        • 1.5.2. 環
        • 1.5.3. 体
      • 1.6. 多様体論
    • 2. 第2群(基礎2)
      • 2.1. 線形代数学
      • 2.2. 解析学
        • 2.2.1. 常微分
        • 2.2.2. 全微分/偏微分
        • 2.2.3. 反変・共変と不変量
        • 2.2.4. リーマン積分
        • 2.2.5. 外微分
        • 2.2.6. ベクトル解析
      • 2.3. 複素解析学
      • 2.4. 圏論
      • 2.5. 測度論
      • 2.6. 確率論
    • 3. 第3群(情報科学)
      • 3.1. 情報理論
      • 3.2. 通信符号理論
      • 3.3. 暗号理論
      • 3.4. グラフ理論
    • 4. 第4群(基礎3)
      • 4.1. 位相幾何学
      • 4.2. 微分幾何学
      • 4.3. 関数解析学
      • 4.4. 偏微分方程式論
      • 4.5. 数値解析学
        • 4.5.1. 常微分方程式
        • 4.5.2. 偏微分方程式
        • 4.5.3. 固有値問題/特異値分解
      • 4.6. 数理統計学
    • 5. 第5群(物理学)
      • 5.1. 古典力学
      • 5.2. 剛体力学
      • 5.3. 流体力学
      • 5.4. 解析力学
      • 5.5. 電磁気学
      • 5.6. 相対性理論
      • 5.7. 熱力学
      • 5.8. 統計力学
      • 5.9. 量子力学
    • 6. 第6群(電気・機械工学)
      • 6.1. 電気回路学
      • 6.2. システム制御理論
    • 7. 第7群(基礎4)
      • 7.1. 情報幾何学
      • 7.2. 確率解析
  • 書籍メモ
    • 書籍メモ(概要)
  • 論文メモ
    • 論文メモ(概要)
    • 線形代数
      • The Matrix Cookbook
      • ON THE EARLY HISTORY OF THE SINGULAR VALUE DECOMPOSITION
      • The tensor rank decomposition
    • 行列分解
      • Probabilistic Matrix Factorization
      • Probabilistic Matrix Factorization with Non-random Missing Data
      • Graph Regularized Non-negative Matrix Factorization for Data Representation
      • Alternating least squares for personalized ranking
    • 連続最適化
      • Quasi-Newton Methods: Superlinear Convergence Without Line Searches for Self-Concordant Functions
    • 確率・統計
      • Statistical inference of Langevin distributionfor directional data
      • Bayesian Inference over the Stiefel Manifold via the Givens Representation
      • あとで読む(Langevin distribution)
    • Riemannian最適化
      • A Broyden Class of Quasi-Newton Methods for Riemannian Optimization
      • Riemannian stochastic quasi-Newton algorithm with variance reduction and its convergence analysis
      • Primal-Dual Optimization Algorithms over Riemannian Manifolds: an Iteration Complexity Analysis
      • Extending FISTA to Riemannian Optimization for Sparse PCA
    • RCD空間
      • On the geometry of metric measure spaces. I
      • On the geometry of metric measure spaces. II
      • Cohomology and other analyticalaspects of RCD spaces
      • Untitled
  • 雑記帳
    • 球面幾何(楕円幾何)
    • 双曲幾何
  • なんかの部屋
    • データの表現について
Powered by GitBook
On this page
  • 導入
  • 問題
  • モデリング
  • 最適化問題を解く

Was this helpful?

  1. 機械学習・データサイエンス
  2. 2. 機械学習
  3. 2.2. 回帰問題

2.2.1. 線形回帰の基礎

2020/3/25公開

導入

ここではまず簡単な例として1次元の線形回帰について解説する。扱う問題自体は中学校で習うような簡単なものだが、モデリングや数式の表記は手加減せずに論文で使われているレベルのものを用いるので、機械学習の難しい数式に慣れることに集中できるだろう。

流れとしては直線y=axy=axy=axによる回帰を生成モデルによって捉え直し、最尤推定を行うことで最小二乗法を導出する。今後の議論の基礎になるので、ぜひ時間をかけて取り組んでみてほしい。

問題

中学校でオームの法則を習ったことを覚えているだろうか。物体の電気抵抗RRRと物体にかける電圧VVV、流れる電流IIIの間には

V=RI(2.2.1.1)V=RI \tag{2.2.1.1}V=RI(2.2.1.1)

の関係が成り立つ。この法則を利用すれば物体の電気抵抗を測定でき、物体に所望の電圧をかけたり、電流を流したりできるようになる。

より一般化して(2.2.1.1)(2.2.1.1)(2.2.1.1)式を直線の方程式で書き直せば

y=ax(2.2.1.2)y=ax \tag{2.2.1.2}y=ax(2.2.1.2)

となる。電圧、電気抵抗、電流をそれぞれy,a,xy,a,xy,a,xで置いただけである。機械学習の文化ではxxxを入力(input)、yyyを出力(output)またはラベル(label)という。またaaaは重み(weight)と呼ばれ、本来ならwwwで表記することが多い。

(2.2.1.2)(2.2.1.2)(2.2.1.2)式のような関係性を持つことがわかっている、またはそのような関係性を持ちそうだと思われる現象は、重みaaaさえ求めれば入力から出力を予測できる。いまの状況ではどれくらいの電流を流したときにどれくらいの電圧がかかっているかが推測できる。

中学校や高校の範囲では、適当に1点(x,y)(x,y)(x,y)を測定してそれを代表とし、

a=yx(2.2.1.3)a = \frac{y}{x} \tag{2.2.1.3}a=xy​(2.2.1.3)

とすれば求まるということになっていた。しかし電気抵抗を実際に何回か測定してみると、どの点を代表とするかによって求まるaaaの値は若干変わり、毎回同じ値になるとは限らない。これは物体の電気抵抗が温度に依存することや電気回路の接触などに起因するが、何が原因かはよくわからないことがほとんどだろう。

こういった「よくわからない観測値の揺らぎ」の扱いを得意とするのが確率論である。中学高校の範囲でならいくつかの観測点について求めたaaaを平均する、大学の学部教養レベルであれば最小二乗法を用いてaaaを求める、といった方法がある。

どちらも十分に実用的な方法であり、実際それで片付いてしまうことも多いが、いまは機械学習への導入に適した形で問題を解き直そう。

モデリング

出力yyyと入力xxxの間には以下の関係があると仮定する。

y=ax+ε(2.2.1.4)y = a x + \varepsilon \tag{2.2.1.4}y=ax+ε(2.2.1.4)

この式は「yyyは基本的にaxaxaxで求まるが、よくわからない誤差ε\varepsilonεを含む」という意味であり、理論値からのズレをε\varepsilonεという補正項に吸収させたことになる。ここでε\varepsilonεは平均000、分散σ2\sigma ^ 2σ2のガウス分布に従うものとする。

ε∼N(ε∣0,σ2)(2.2.1.5)\varepsilon \sim \mathcal{N} (\varepsilon | 0, \sigma ^ 2) \tag{2.2.1.5}ε∼N(ε∣0,σ2)(2.2.1.5)

この段階はモデリング(modeling)といって、現象に対して人間が勝手に仮定を置くことであり、誤差が本当にガウス分布に従うかどうかはわからない。しかし人間は現象に何かしら仮定を置かなければ対象を数学的に扱うことはできないし、また仮定の置き方に自由度があることで、人間やコンピュータが計算しやすい形の数式が導出されることもある。仮定がどれだけ正しそうかは、得られた結果を見てから考えればよく、もし満足いかない結果なら満足いくまで仮定を変更すればよい。

ガウス分布(Gaussian distribution)または正規分布(normal distribution)は以下の式で定義される連続確率分布である。

N(x∣μ,σ2)=12πσ2exp⁡(−(x−μ)22σ2)(2.2.1.6)\mathcal{N} (x | \mu, \sigma ^ 2) = \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(x - \mu) ^ 2}{2 \sigma ^ 2} \right) \tag{2.2.1.6}N(x∣μ,σ2)=2πσ2​1​exp(−2σ2(x−μ)2​)(2.2.1.6)

出力yyyはaxaxaxにε\varepsilonεを足したものなので、平均axaxax、分散σ2\sigma ^ 2σ2のガウス分布にしたがうものとみなせるから、その確率分布は

p(y∣x,a)=N(y∣ax,σ2)(2.2.1.7)p(y | x, a) = \mathcal{N} (y | ax, \sigma ^ 2) \tag{2.2.1.7}p(y∣x,a)=N(y∣ax,σ2)(2.2.1.7)

と表せる。最初なので一応丁寧に書いておくと、

p(y∣x,a)=12πσ2exp⁡(−(y−ax)22σ2)(2.2.1.8)p(y | x , a) = \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(y - ax) ^ 2}{2 \sigma ^ 2} \right) \tag{2.2.1.8}p(y∣x,a)=2πσ2​1​exp(−2σ2(y−ax)2​)(2.2.1.8)

である。パラメータσ2\sigma ^ 2σ2は今後の計算にはあまり関わってこないので、議論の簡略化のため既知の定数とした。ちなみに、今回のように出力yyyがある確率分布から生成されるモデルを生成モデル(generative model)という。

観測したNNN個のデータ点の集合を

D={(x(1),y(1)),(x(2),y(2)),…,(x(N),y(N))}(2.2.1.9)\mathcal{D} = \left\{ (x ^ {(1)}, y ^ {(1)}), (x ^ {(2)}, y ^ {(2)}), \ldots, (x ^ {(N)}, y ^ {(N)}) \right \} \tag{2.2.1.9}D={(x(1),y(1)),(x(2),y(2)),…,(x(N),y(N))}(2.2.1.9)

とおく。D(i)=(x(i),y(i))\mathcal{D} ^ {(i)} = (x ^ {(i)}, y ^ {(i)})D(i)=(x(i),y(i))はiii番目に観測されたデータ点を表す。また出力と入力を分けるときは

Dy={y(1),y(2),…,y(N)}Dx={x(1),x(2),…,x(N)}(2.2.1.10)\begin{aligned} \mathcal{D}_y = \left\{ y ^ {(1)}, y ^ {(2)}, \ldots, y ^ {(N)} \right \} \\ \mathcal{D}_x = \left\{ x ^ {(1)}, x ^ {(2)}, \ldots, x ^ {(N)}\right \} \end{aligned} \tag{2.2.1.10}Dy​={y(1),y(2),…,y(N)}Dx​={x(1),x(2),…,x(N)}​(2.2.1.10)

と書くことにする。

いま、簡単のために1番目のデータD(1)=(x(1),y(1))\mathcal{D} ^ {(1)} = (x ^ {(1)}, y ^ {(1)})D(1)=(x(1),y(1))のみが観測されたとしてaaaを求めてみよう。(2.2.1.8)(2.2.1.8)(2.2.1.8)式ではyyyが確率変数、xxxは確率変数だが観測されて(今回は人間が勝手に定めたことで)実現値となっており、aaaはとりあえず与えられた固定値とみなしていた。しかしいまはaaaを求めたいのでaaaが変数であり、またyyyは観測されたことで実現値(固定値)となっている。そこで以下の尤度関数(likelihood function)を定義する。

L(a∣D(1))=L(a∣(x(1),y(1)))=12πσ2exp⁡(−(y(1)−ax(1))22σ2)(2.2.1.11)\begin{aligned} \mathcal{L}(a|\mathcal{D} ^ {(1)}) &= \mathcal{L}(a | (x ^ {(1)}, y ^ {(1)})) \\ &= \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(y ^ {(1)} - ax ^ {(1)}) ^ 2}{2 \sigma ^ 2} \right) \end{aligned} \tag{2.2.1.11}L(a∣D(1))​=L(a∣(x(1),y(1)))=2πσ2​1​exp(−2σ2(y(1)−ax(1))2​)​(2.2.1.11)

尤度関数とは確率分布のパラメータを変数とみなし、確率変数を定数とみなした関数である。「尤度」は「ゆうど」と読み「尤もらしい」と書いて「もっともらしい」と読むので、尤度は「もっともらしさ」という意味である。

尤度関数は確率分布から生成したデータのもっともらしさを表す指標のひとつである。尤度関数を最大化するaaaを求める、つまり最も尤もらしいaaaの値を求める手法を最尤推定(さいゆうすいてい:maximum likelihood estimation)という。

(2.2.1.10)(2.2.1.10)(2.2.1.10)式が最大となるのはexp⁡\expexpの中が 0 になるときであるから、y(1)−ax(1)=0y ^ {(1)} - a x ^ {(1)} = 0y(1)−ax(1)=0、すなわち

a=y(1)x(1)(2.2.1.11)a = \frac{y ^ {(1)}}{x ^ {(1)}} \tag{2.2.1.11}a=x(1)y(1)​(2.2.1.11)

のときである。これは原点と観測した1点を正確に通る直線を引くときの(2.2.1.3)(2.2.1.3)(2.2.1.3)式と一致している。

注意点は尤度関数は確率分布ではないということである。つまり一般には

L(a∣D(1))≠p(a∣D(1))(2.2.1.12)\mathcal{L}(a|\mathcal{D} ^ {(1)}) \neq p(a | \mathcal{D} ^ {(1)}) \tag{2.2.1.12}L(a∣D(1))=p(a∣D(1))(2.2.1.12)

である。なぜならばいま、そもそもaaaは確率変数ではないとみなしているし、仮に確率変数とみなしても、ベイズの定理により

p(a∣D(1))=p(a∣y,x)=p(y∣x,a)p(a)p(y)(2.2.1.13)p(a | \mathcal{D} ^ {(1)}) = p(a| y , x) = \frac{p(y|x,a)p(a)}{p(y)} \tag{2.2.1.13}p(a∣D(1))=p(a∣y,x)=p(y)p(y∣x,a)p(a)​(2.2.1.13)

となるので、(2.2.1.12)(2.2.1.12)(2.2.1.12)式の両辺が形式的にでも等号で結ばれるのはp(y)=p(a)=const.p(y) = p(a) = {\rm const.}p(y)=p(a)=const.という特殊な状況だけだからである。

ではNNN個のデータ点を観測した場合に話を戻そう。各データ点の観測が独立で、同じ確率分布からのサンプリングであると仮定する。このときNNN個のデータの確率分布は

p(Dy∣Dx,a)=p(y(1)∣x(1),a)×⋯×p(y(N)∣x(N),a)=∏i=1Np(y(i)∣x(i),a)=∏i=1N12πσ2exp⁡(−(y(i)−ax(i))22σ2)(2.2.1.14)\begin{aligned} p(\mathcal{D} _ y | \mathcal{D} _ x, a) &= p(y ^ {(1)}| x ^ {(1)}, a) \times \cdots \times p(y^{(N)}|x^{(N)}, a) \\ &= \prod _ {i=1} ^ N p(y ^ {(i)}| x ^ {(i)}, a) \\ &= \prod _ {i=1} ^ N \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(y ^ {(i)} - ax ^ {(i)}) ^ 2}{2 \sigma ^ 2} \right) \end{aligned} \tag{2.2.1.14}p(Dy​∣Dx​,a)​=p(y(1)∣x(1),a)×⋯×p(y(N)∣x(N),a)=i=1∏N​p(y(i)∣x(i),a)=i=1∏N​2πσ2​1​exp(−2σ2(y(i)−ax(i))2​)​(2.2.1.14)

と表せる。具体的な状況としては、入力x(1),x(2),…,x(N)x ^ {(1)}, x^{(2)}, \ldots, x ^ {(N)}x(1),x(2),…,x(N)のときの出力を観測する、と決めたがまだ実際には出力y(1),y(2),…,y(N)y ^ {(1)}, y ^ {(2)}, \ldots, y ^ {(N)}y(1),y(2),…,y(N)の観測を行っていない状態(まだ確率変数)である。

出力y(1),y(2),…,y(N)y ^ {(1)}, y ^ {(2)}, \ldots, y ^ {(N)}y(1),y(2),…,y(N)を観測する(実現値を代入して定数とみなす)ことで再び尤度関数が定義できる。すなわち

L(a∣D)=∏i=1N12πσ2exp⁡(−(y(i)−ax(i))22σ2)(2.2.1.15)\mathcal{L}(a|\mathcal{D}) = \prod _ {i=1} ^ N \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(y ^ {(i)} - ax ^ {(i)}) ^ 2}{2 \sigma ^ 2} \right) \tag{2.2.1.15}L(a∣D)=i=1∏N​2πσ2​1​exp(−2σ2(y(i)−ax(i))2​)(2.2.1.15)

である。この尤度関数を最大化することでaaaを求めるから、この最適化問題は

arg⁡max⁡a∈R L(a∣D)(2.2.1.16)\underset{a \in \mathbb{R}}{\operatorname{arg}\operatorname{max}} \,\mathcal{L}(a | \mathcal{D}) \tag{2.2.1.16}a∈Rargmax​L(a∣D)(2.2.1.16)

と書ける。

(2.2.1.16)(2.2.1.16)(2.2.1.16)式のような最適化問題の表記は論文や書籍でよく用いられるので覚えておくとよい。最大化問題(maximization problem)に使われるarg⁡max⁡\operatorname{arg} \operatorname{max}argmaxは argument of the maximum の略で日本語に訳すと「関数の最大値を与える引数」の意味だ。arg⁡max⁡\operatorname{arg} \operatorname{max}argmaxの下についているa∈Ra \in \mathbb{R}a∈Rは「実数全体の範囲で」の意味であり、(2.2.1.16)(2.2.1.16)(2.2.1.16)式は「関数L(a∣D)\mathcal{L}(a|\mathcal{D})L(a∣D)の値を最大化するaaaを実数全体の範囲で求めよ」という意味になる。この問題の最適解a∗a ^ \asta∗は

a∗=arg⁡max⁡a∈R  L(a∣D)(2.2.1.17)a ^ \ast = \underset{a \in \mathbb{R}}{\operatorname{arg} \operatorname{max}} \,\, \mathcal{L}(a|\mathcal{D})\tag{2.2.1.17}a∗=a∈Rargmax​L(a∣D)(2.2.1.17)

のように表記される(a∗a ^ \asta∗はaopt.a _ {\rm opt.}aopt.​などの表記も好まれる)。厳密には最大値を与えるaaaはひとつとは限らず右辺は集合を表しているものと解釈されるため、左辺が実数であるという意図と矛盾するので、上式のような表記は本来であれば好ましくないのだが、論文や書籍ではよく用いられる。

同様に最小化問題(minimization problem)ではarg⁡min⁡\operatorname{arg} \operatorname{min}argminを用い、これは argument of the minimum の略である。また、最大化問題や最小化問題の対象となる関数、ここではL(a∣D)\mathcal{L}(a | \mathcal{D})L(a∣D)のことを目的関数(objective function)という。

最適化問題を解く

最適化問題(optimization problem)が解けるかどうかは異なるし、またその解き方にもバリエーションがあるものだが、(2.2.1.16)(2.2.1.16)(2.2.1.16)式は対数尤度関数の最大化というよく使われる方法で解ける。

対数尤度関数とは尤度関数の対数をとったもの、すなわち

ln⁡L(a∣D)(2.2.1.18)\ln \mathcal{L}(a|\mathcal{D}) \tag{2.2.1.18}lnL(a∣D)(2.2.1.18)

のことである。対数変換は単調変換であるから、対数変換した関数の最大化問題ともとの関数の最大化問題の最適解は一致する。したがって

arg⁡max⁡a∈R  ln⁡L(a∣D)=arg⁡max⁡a∈R  L(a∣D)(2.2.1.19)\underset{a \in \mathbb{R}}{\operatorname{arg} \operatorname{max}} \,\, \ln \mathcal{L}(a|\mathcal{D}) = \underset{a \in \mathbb{R}}{\operatorname{arg} \operatorname{max}} \,\, \mathcal{L} (a|\mathcal{D}) \tag{2.2.1.19}a∈Rargmax​lnL(a∣D)=a∈Rargmax​L(a∣D)(2.2.1.19)

であり、解きやすい左辺のほうを右辺の代わりに解いてもよいことになる。

(2.2.1.19)(2.2.1.19)(2.2.1.19)式の左辺のln⁡L(a∣D)\ln \mathcal{L}(a | \mathcal{D})lnL(a∣D)を変形していこう。対数を取ると掛け算が足し算になり、さらにexp⁡\expexpも外れるという部分がミソだ。式変形に使った式番号も書いておくので、少し大変だが追ってみてほしい。

ln⁡L(a∣D)=ln⁡∏i=1N12πσ2exp⁡(−(y(i)−ax(i))22σ2)←(2.2.1.15)=∑i=1Nln⁡{12πσ2exp⁡(−(y(i)−ax(i))22σ2)}=∑i=1N[ln⁡{12πσ2}+ln⁡{exp⁡(−(y(i)−ax(i))22σ2)}]=∑i=1N(−(y(i)−ax(i))22σ2)+∑i=1Nln⁡{12πσ2}=−12σ2∑i=1N(y(i)−ax(i))2+N⋅ln⁡{12πσ2}\begin{aligned} \ln \mathcal{L}(a|\mathcal{D}) &= \ln \prod _ {i=1} ^ N \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(y ^ {(i)} - ax ^ {(i)}) ^ 2}{2 \sigma ^ 2} \right) \quad \leftarrow (2.2.1.15) \\ &= \sum _ {i = 1} ^ N \ln \left\{ \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \exp \left(- \frac{(y ^ {(i)}- ax^{(i)}) ^ 2}{2 \sigma ^ 2} \right) \right\} \\ &= \sum _ {i = 1} ^ N \left[ \ln \left\{ \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \right\} +\ln \left\{ \exp \left(- \frac{(y ^ {(i)}- ax^{(i)}) ^ 2}{2 \sigma ^ 2} \right) \right\} \right] \\ &= \sum _ {i=1} ^ N \left(- \frac{(y ^ {(i)}- ax^{(i)}) ^ 2}{2 \sigma ^ 2} \right) + \sum _ {i = 1} ^ N \ln \left\{ \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \right\} \\ &= - \frac{1}{2 \sigma ^ 2} \sum _ {i=1} ^ N (y ^ {(i)}- ax^{(i)}) ^ 2 + N \cdot \ln \left\{ \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \right\} \end{aligned}lnL(a∣D)​=lni=1∏N​2πσ2​1​exp(−2σ2(y(i)−ax(i))2​)←(2.2.1.15)=i=1∑N​ln{2πσ2​1​exp(−2σ2(y(i)−ax(i))2​)}=i=1∑N​[ln{2πσ2​1​}+ln{exp(−2σ2(y(i)−ax(i))2​)}]=i=1∑N​(−2σ2(y(i)−ax(i))2​)+i=1∑N​ln{2πσ2​1​}=−2σ21​i=1∑N​(y(i)−ax(i))2+N⋅ln{2πσ2​1​}​

したがって

ln⁡L(a∣D)=−12σ2∑i=1N(y(i)−ax(i))2+N⋅ln⁡{12πσ2}(2.2.1.20) \ln \mathcal{L}(a|\mathcal{D}) = - \frac{1}{2 \sigma ^ 2} \sum _ {i=1} ^ N (y ^ {(i)}- ax^{(i)}) ^ 2 + N \cdot \ln \left\{ \frac{1}{\sqrt{2 \pi \sigma ^ 2}} \right\} \tag{2.2.1.20}lnL(a∣D)=−2σ21​i=1∑N​(y(i)−ax(i))2+N⋅ln{2πσ2​1​}(2.2.1.20)

が求まった。aaaに関する最大化問題なので、第1項に関する正数倍、およびaaaに関係ない第2項は問題の解に影響しないから、

arg⁡max⁡a∈R  ln⁡L(a∣D)=arg⁡max⁡a∈R  {−∑i=1N(y(i)−ax(i))2}=arg⁡min⁡a∈R  {∑i=1N(y(i)−ax(i))2}(2.2.1.21)\begin{aligned} \underset{a \in \mathbb{R}}{\operatorname{arg} \operatorname{max}} \,\, \ln \mathcal{L}(a|\mathcal{D}) &= \underset{a \in \mathbb{R}}{\operatorname{arg} \operatorname{max}} \,\, \left\{ -\sum _ {i=1} ^ N (y ^ {(i)}- ax^{(i)}) ^ 2 \right\} \\ &=\underset{a \in \mathbb{R}}{\operatorname{arg} \operatorname{min}} \,\, \left\{ \sum _ {i=1} ^ N (y ^ {(i)}- ax^{(i)}) ^ 2 \right\} \end{aligned} \tag{2.2.1.21}a∈Rargmax​lnL(a∣D)​=a∈Rargmax​{−i=1∑N​(y(i)−ax(i))2}=a∈Rargmin​{i=1∑N​(y(i)−ax(i))2}​(2.2.1.21)

である。(2.2.1.21)(2.2.1.21)(2.2.1.21)式は最小二乗法(least squares method)の式そのものである。

あとはaaaに関して整理して

∑i=1N(y(i)−ax(i))2=(∑i=1N(x(i))2)a2−2(∑i=1Nx(i)y(i))a+(y(i))2\sum _ {i=1} ^ N (y ^ {(i)}- ax^{(i)}) ^ 2 = \left( \sum _ {i=1} ^ N \left(x ^ {(i)}\right) ^ 2 \right) a ^ 2 - 2 \left( \sum _ {i=1} ^ N x ^ {(i)} y ^ {(i)}\right) a + \left(y ^ {(i)}\right) ^ 2i=1∑N​(y(i)−ax(i))2=(i=1∑N​(x(i))2)a2−2(i=1∑N​x(i)y(i))a+(y(i))2

であり、また二次関数の最小値を取る点は微分して000になる点だから、

dda∑i=1N(y(i)−ax(i))2=2(∑i=1N(x(i))2)a−2(∑i=1Nx(i)y(i))=0\frac{d}{da} \sum _ {i=1} ^ N (y ^ {(i)}- ax^{(i)}) ^ 2 = 2\left( \sum _ {i=1} ^ N \left(x ^ {(i)}\right) ^ 2 \right) a - 2 \left( \sum _ {i=1} ^ N x ^ {(i)} y ^ {(i)}\right) = 0dad​i=1∑N​(y(i)−ax(i))2=2(i=1∑N​(x(i))2)a−2(i=1∑N​x(i)y(i))=0

より、

a=∑i=1Nx(i)y(i)∑i=1N(x(i))2(2.2.1.22)a = \frac{ \sum _ {i=1} ^ N x ^ {(i)} y ^ {(i)}}{\sum _ {i=1} ^ N \left(x ^ {(i)}\right) ^ 2} \tag{2.2.1.22}a=∑i=1N​(x(i))2∑i=1N​x(i)y(i)​(2.2.1.22)

が解となる。データ点をひとつだけ用いるとき、すなわちN=1N=1N=1のとき

a=x(1)y(1)(x(1))2=y(1)x(1)(2.2.1.23)a = \frac{x ^ {(1)} y ^ {(1)}}{\left(x ^ {(1)}\right) ^ 2} = \frac{y ^ {(1)}}{x ^ {(1)}} \tag{2.2.1.23}a=(x(1))2x(1)y(1)​=x(1)y(1)​(2.2.1.23)

であり、この結果は(2.2.1.22)(2.2.1.22)(2.2.1.22)式が、代表点をひとつ決めてaaaを求める方法の一般化になっていることを示している。

これで私たちは最小二乗法の裏にあるモデルとその数理を理解したことになる。これから登場する回帰モデルはほとんど今回の議論の拡張に過ぎないので、ここまでの話を理解できたのであればあとはぐっと楽になるであろう。

Previous2.2. 回帰問題Next2.2.2. 線形回帰モデルと正則化

Last updated 5 years ago

Was this helpful?