Processing math: 5%
スキップしてメイン コンテンツに移動

テイラー展開

Introduction

今日はテイラー展開について紹介します。
ここでは、一変数関数だけでなく、多変数関数のテイラー展開も紹介します。

一変数関数のテイラー展開

f(X) は区間(a,b)で連続であり、また、n回微分可能とします。
すると、f(x) は以下のように表せます。
\exists c ~~s.t~~ f(b) = \sum_{k=0}^{n-1} f^{(k)}(a)\frac{(b-a)^k}{k!} + f^{(n)}(c) \frac{(b-a)^n}{n!}, c \in (a,b)
このf(x)を多項式で表したものをテイラー展開といいます。
最後の項は、剰余項と呼ばれます。

多変数関数のテイラー展開

多変数関数のテイラー展開はかなり複雑な形をしています。
fは多変数関数とします。
さらに、m回微分可能な連続関数とします。
この時、 f(x_1+h_1,x_2+h_2,.....,x_n+h_n) は次のように表せます。
\exists \theta ~~s.t~~
f(x_1+h_1,x_2+h_2,...,x_n+h_n)=f(x_1,x_2,...,x_n) +
\sum_{m=0}^{n-1} \frac{1}{m-1} \sum_{k_1=1}^{n} \sum{k_2=1}^{n} ... \sum{k_{m-1}=1}^{n} \frac{\partial^{m-1} f}{\partial x_{k_1} \partial x_{k_2} .... \partial x_{k_{m-1}} }(x_1,x_2,..,x_n)h_{k_1}h_{k_2} ..... h_{k_m-1}
+ \frac{1}{m} \sum_{k_1=1}^{n} \sum_{k_2=1}^{n} ... \sum_{k_m=1}^{n} \frac{\partial^{m} f}{\partial x_{k_1} \partial x_{k_2} ... \partial x_{k_m} }(x_1 + \theta h_1, x_2 + \theta h_2,...., x_n + \theta h_n) h_k{k_1}h_{k_2}....h_{k_n}
最後の項は一変数の時と同様に剰余項と呼ばれます。

Proof

ここでは、一変数のテイラー展開の証明をします・
この証明にはロルの定理を用いています。ロルの定理については以下の投稿を参考にしてください。

ロルの定理の投稿はこちら

f(x)を区間(a,b)で連続で、n回微分可能な関数とします。
この定理の証明は次を示すことで達成されます。
f(b) = \sum_{k=}^{n-1} f^{(k)} (a) \frac{(b-a)^k}{k!} + A \frac{(b-a)^n}{n!}
新しく、次のような関数を定義します。
g(x) = f(b) - \sum_{k=0}^{n-1} f^{(k)}(x) \frac{(b-a)^k}{k!} - A \frac{(b-x)^n}{n!}
g(x)は次のことを満たすことがすぐにわかります。
  • g(a) = 0
  • g(b) = 0
よって、ロルの定理より、
\exists c \in (a,b) ~~s.t~~ g'(c) = 0
\begin{eqnarray*} g'(x) &=& - \sum_{k=0} ^{n-1} f^{(k+1)} (x) \frac{(b-x)^k}{k!} + \sum_{k=1}^{n-1} f^{(k)} (x) \frac{(b-x)^{k-1}}{(k-1)!} + A \frac{(b-x)^{n-1}}{(n-1)!} \\ &=& -\sum_{k=1}^{n} f^{(k)} (x) \frac{(b-x)^{n-1}}{(k-1)!} + \sum_{k=1}^{n-1} f^{(k)} (x) \frac{(b-x)^{k-1}}{(k-1)!} + A \frac{(b-x)^{n-1}}{(n-1)!}\\ &=& -f^n (x) \frac{(b-x)^{n-1}}{(n-1)!} + A \frac{(b-x)^{n-1}}{(n-1)!} \end{eqnarray*}
cをxに代入することで
g'(c) = \frac{(b-x)^{n-1}}{(n-1)!} (A - f^{(n)}(x))
A = f^{(n)}(x)
Q.E.D

Reference
https://mathtrain.jp/taylortheorem
http://www.ne.jp/asahi/search-center/internationalrelation/mathWeb/Differentiation/TheoremsDffrntlNvarFnctn/TaylorTheorem.htm

コメント

このブログの人気の投稿

カーネルk-meansの実装

Introduction   English ver 今日はカーネルk-meansの実装をしました。k-menasアルゴリズムはクラスタリングのためのアルゴリズムです。僕がカーネルk-meansを実装しようと思ったのには一つ理由があります。それは僕の友人がk-meansのプレゼンを、僕がカーネルのプレゼンをしていた時に、k-meansにカーネルを適応できないかと思ったからです。そこで、カーネルk-meansについての論文を探しました。 ここのpdf を主に参考にさせていただきました。うまくカーネルk-meansを実装できたと思います。ここでは、普通のk-meansとカーネルを用いた,kernel k-meansについての実装の結果を紹介します。 また、この記事では実装結果のみ書きますが、理論のほうも別の記事で書くつもりです。書き終えたらリンクをこの記事にも貼っておきます。 #  理論編書きました。K-means 理論編 概要 dataset   ちょっとだけ理論の説明  k-means    kernel k-means   Dataset   English ver 今回使うのは二つのデータセットです。一つ目は、普通のk-means用のデータです。二つ目はkernel k-means用のデータセットです。 一つ目のデータは、三つのグループで構成されており、次元は2で、サンプル数は300です。以下のような分布になっています。 二つ目のデータは二つのグループで構成されており、次元は2でサンプル数は300です。   this page にデータセットを作ったコードを載せています。 ちょっとだけ理論の説明 k-meansとは、k-平均法とも呼ばれています。初めに、適当なクラスに分け、各クラスの中で平均となるベクトルを求めます。そして、各データに対して、すべての平均ベクトルとの距離を求めます。そして、最小となる距離になるクラスに改めて、そのデータをクラスタリングします。そして、新たに得られたクラスの中でそれぞれ平均ベクトルを求め、これを繰り返し、平均ベクトルが動かな...

ダイクストラ法

Introduction English ver 今日は、ダイクストラ法について書きます。ダイクストラ法とは最短距離を求めるアルゴリズムです。地図はグラフで表されます。もし、まだ this page を見ていない方は先にこちらをご覧ください。今回はこの記事を前提としています。このページでは、グラフの定義と、ヒープ構造について書いています。ダイクストラ法ではヒープ構造を使って、かなりの計算量を落とします。 この スライド はダイクストラ法を説明したスライドです。 Overview アルゴリズム 実装 アルゴリズム このアルゴリズムは スタート始点のノードを決める。そして、それをAと名付ける。 各ノードにd=\inftyを割り当てる。ただし、スタート地点はd=0 Aの隣接ノードのリストをadj_listと名付ける。  For adj in adj_list:  If d of adj > d of A + weight to adj -> d = A + weight to adj. グラフnetworkからAを取り除く グラフnetworkの中で最初のdを持っているノードをAとし、4に戻る。 となっています。 このアルゴリズムを図を用いて説明します。  このグラフを使って説明します。  初めに、スタート地点を決めます。そして、各ノードにd=\inftyを割り当てます。  Aから始まります。Aの隣接ノードであるBのdを更新します。もし、現在のBよりもAのdとA->Bへの重みを足したもののほうが小さいならdをその値に更新します。同じようにCnのdを更新します。 次にAを取り除きます。  次はBから始まります。Aと同じことをやります。 このダイクストラ法では今のような操作をグラフの全てのノードに×がつくまで続きます。 実装 このアルゴリズムではO(log(|V|^2))という計算量を持っています。最小のdを持つノードを探すのに時間がかかります。 しかし、ヒープ構造を使えばO((E+V)log(V))に減らせます。ヒープ構造で現時点での...

ヘッセ行列

Introduction English ver 今日は、ヘッセ行列を用いたテイラー展開について書こうと思います。 これは最適化を勉強するにあたって、とても大事になってくるので自分でまとめて残しておくことにしました。とくに、機械学習では最適化を必ず行うため、このブログのタイトルにもマッチした内容だと思います。 . 概要 ヘッセ行列の定義 ベクトルを用いたテイラー展開 関数の最適性 ヘッセ行列の定義 仮定 f は次のような条件を満たす関数です。. f はn次元ベクトルから実数値を出力します。 このベクトルは次のように表せます。 x = [x_1,x_2,,,,x_n] \forall x_i , i \in {1,2,,,n}, f は二回偏微分可能です。 定義 ヘッセ行列は \frac{\partial^2}{\partial x_i \partial x_j}を (i,j)要素に持ちます。 よってヘッセ行列は次のように表せます。 \[ H(f) = \left( \begin{array}{cccc} \frac{\partial^ 2}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & &\ldots \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^ 2 f}{\partial x_1 \partial x_2} & \frac{\partial^ 2 f}{\partial x_2^ 2} & \ldots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^ 2 f}{\partial x_n \partial x_2} & \frac{\partial^ 2 f}{\partial x_n \partial x_2} & \ldo...