1. Taylor展開と関数近似

2020/1/4公開

1.1. Taylor展開と関数の1次近似、2次近似

Taylor 展開による関数近似は直線探索法(line search method)と呼ばれる連続最適化手法を理解する上での基礎になる。

Taylor 展開可能な関数f ⁣:RR ⁣:xf(x)f \colon \mathbb{R} \to \mathbb{R} \colon x \mapsto f(x)の、点x\overline{x}の周りの Taylor 展開は、x=x+Δxx = \overline{x} + \Delta xの変数変換のもとで

f(x)=f(x+Δx)=n=0+1n!dnf(x)dxnΔxn=f(x)+df(x)dxΔx+12d2f(x)dx2Δx2+(1.1.1)\begin{aligned} f(x)= f(\overline{x} + \Delta x) &= \sum _ {n=0} ^ {+\infty} \frac{1}{n!} \frac{d ^ n f (\overline{x})}{dx ^ n} \Delta x ^ n \\ &= f(\overline{x}) + \frac{d f (\overline{x})}{dx} \Delta x + \frac{1}{2} \frac{d ^ 2 f (\overline{x})}{dx ^ 2} \Delta x ^ 2 + \cdots \end{aligned} \tag{1.1.1}

で与えられる。x\overline{x}が定数でΔx\Delta xが新たな変数である。つまり点x\overline{x}からΔx\Delta xだけ移動した点における点x=x+Δxx = \overline{x} + \Delta xにおけるf(x)f(x)の値が (1.1.1) 式によって任意の精度で近似できる。

Taylor 展開をΔxn\Delta x ^ nの項で打ち切った関数

fn(x)=fn(x+Δx)=f(x)+df(x)dxΔx+12d2f(x)dx2Δx2++1n!dnf(x)dxnΔxn(1.1.2)f _ n (x) = f _ n(\overline{x} + \Delta x) = f(\overline{x}) + \frac{d f (\overline{x})}{dx} \Delta x + \frac{1}{2} \frac{d ^ 2 f (\overline{x})}{dx ^ 2} \Delta x ^ 2 + \cdots + \frac{1}{n!}\frac{d ^ n f (\overline{x})}{dx ^ n} \Delta x ^ n \tag{1.1.2}

f(x)f(x)nn次近似という(nn次の Taylor 多項式ともいう)。本書で紹介する連続最適化で使われるのは主に1次近似と2次近似であり、それぞれ

fI(x)=fI(x+Δx)=f(x)+df(x)dxΔxfII(x)=fII(x+Δx)=f(x)+df(x)dxΔx+12d2f(x)dx2Δx2(1.1.3)\begin{aligned} f _ {\rm I} (x) &= f _ {\rm I} (\overline{x} + \Delta x) = f(\overline{x}) + \frac{d f (\overline{x})}{dx} \Delta x \\ f _ {\rm II} (x) &= f _ {\rm II} (\overline{x} + \Delta x) = f(\overline{x}) + \frac{d f (\overline{x})}{dx} \Delta x + \frac{1}{2} \frac{d ^ 2 f (\overline{x})}{dx ^ 2} \Delta x ^ 2 \end{aligned} \tag{1.1.3}

である。3次以上の項に着目することは少ない(c.f. self-concordant function)。

同様に、Taylor 展開可能な関数f ⁣:RnR ⁣:xf(x)f \colon \mathbb{R} ^ n \to \mathbb{R} \colon x \mapsto f(x)の点x\overline{x}の周りの Taylor 展開は、

x=(x1x2xn)=(x1+Δx1x2+Δx2xn+Δxn)=(x1x2xn)+(Δx1Δx2Δxn)=x+Δxx = \left(\begin{matrix} x _ 1 \\ x _ 2 \\ \vdots \\ x _ n \end{matrix} \right) = \left(\begin{matrix} \overline{x} _ 1 + \Delta x _ 1 \\ \overline{x} _ 2 + \Delta x _ 2 \\ \vdots \\ \overline{x} _ n + \Delta x _ n \end{matrix} \right) = \left(\begin{matrix} \overline{x} _ 1 \\ \overline{x} _ 2 \\ \vdots \\ \overline{x} _ n \end{matrix} \right) + \left(\begin{matrix} \Delta x _ 1 \\ \Delta x _ 2 \\ \vdots \\ \Delta x _ n \end{matrix} \right) = \overline{x} + \Delta x

の変数変換のもとで、

f(x)=f(x+Δx)=f(x)+i=1nf(x)xiΔxi+12i=1nj=1n2f(x)xixjΔxiΔxj+(1.1.4)f(x) = f(\overline{x} + \Delta x) = f(\overline{x}) + \sum _ {i=1} ^ n \frac{\partial f (\overline{x})}{\partial x _ i} \Delta x _ i + \frac{1}{2} \sum _ {i=1} ^ n \sum _ {j=1} ^ n \frac{\partial ^ 2 f (\overline{x})}{\partial x _ i \partial x _ j} \Delta x _ i \Delta x _ j+ \cdots \tag{1.1.4}

で与えられる。一般項は表記が面倒な上に、どうせ2次の項までしか使わないので書かなかった。

ここでナブラ演算子\nablaを列ベクトル

=(x1,x2,,xn)T\nabla = \left( \frac{\partial }{\partial x _ 1}, \frac{\partial }{\partial x _ 2}, \cdots , \frac{\partial }{\partial x _ n} \right) ^ \mathrm{T}

として定義すると、

f=(fx1,fx2,,fxn)T\nabla f = \left( \frac{\partial f}{\partial x _ 1}, \frac{\partial f}{\partial x _ 2}, \cdots , \frac{\partial f}{\partial x _ n} \right) ^ \mathrm{T}

であるから、内積

<a,b>=aTb=i=1naibi\left< a , b\right> = a ^ \mathrm{T} b = \sum _ {i = 1} ^ n a _ i b _ i

を用いて、(1.1.4) 式の1次の項は

<f(x),Δx>=i=1nf(x)xiΔxi(1.1.5)\left< \nabla f(\overline{x}), \Delta x \right> = \sum _ {i=1} ^ n \frac{\partial f (\overline{x})}{\partial x _ i} \Delta x _ i \tag{1.1.5}

と書ける。幾何的な意味づけとしてはf(x)\nabla f (\overline{x})は点x\overline{x}における関数f(x)f(x)の勾配だから

gradf=f(1.1.6)\operatorname{grad} f = \nabla f \tag{1.1.6}

である。

2次の項についても同様の行列形式による表記を行いたい。次の

H=(T)f=(2fx1x12fx1x22fx1xn2fx2x12fx2x22fx2xn2fxnx12fxnx22fxnxn)H = (\nabla \nabla ^ \mathrm{T}) f = \left( \begin{matrix} \frac{\partial ^ 2 f}{\partial x _ 1 \partial x _ 1} & \frac{\partial ^ 2 f}{\partial x _ 1 \partial x _ 2} & \cdots & \frac{\partial ^ 2 f}{\partial x _ 1 \partial x _ n} \\ \frac{\partial ^ 2 f}{\partial x _ 2 \partial x _ 1} & \frac{\partial ^ 2 f}{\partial x _ 2 \partial x _ 2} & \cdots & \frac{\partial ^ 2 f}{\partial x _ 2 \partial x _ n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial ^ 2 f}{\partial x _ n \partial x _ 1} & \frac{\partial ^ 2 f}{\partial x _ n \partial x _ 2} & \cdots & \frac{\partial ^ 2 f}{\partial x _ n \partial x _ n} \end{matrix} \right)

で定義されるHHは Hesse 行列と呼ばれる。Hesse 行列を用いれば (1.1.4) 式の2次の項は

<HxΔx,Δx>=i=1nj=1n2f(x)xijΔxiΔxj(1.1.7)\left< H _ {\overline{x}} \Delta x, \Delta x \right> = \sum _ {i=1} ^ n \sum _ {j=1} ^ n \frac{\partial ^ 2 f (\overline{x})}{\partial x _ i \partial _ j} \Delta x _ i \Delta x _ j \tag{1.1.7}

と書ける。ただしHx=(T)f(x)H _ x = (\nabla \nabla ^ \mathrm{T} ) f (x)であり、どの点における Hesse 行列なのかを明記している。書物によってはHxH _ xを単にHHと書いていたりするので注意する。

Hesse 行列はユークリッド空間上での Hessian 演算子 Hessf(x) ⁣:RnRn\operatorname{Hess} f (x) \colon \mathbb{R} ^ n \to \mathbb{R} ^ nの行列表記であり、ユークリッド空間では

Hessf(x)Δx=HxΔx(1.1.8){\rm Hess} f(x) \Delta x = H _ x \Delta x \tag{1.1.8}

である。

(1.1.4) 式に (1.1.5), (1.1.6), (1.1.7), (1.1.8) 式の結果を用いれば、関数f ⁣:RnRf \colon \mathbb{R} ^ n \to \mathbb{R}の1次近似と2次近似はそれぞれ

fI(x)=fI(x+Δx)=f(x)+<f(x),Δx>=f(x)+<gradf(x),Δx>fII(x)=fII(x+Δx)=f(x)+<f(x),Δx>+<ΔxTHx,Δx>=f(x)+<gradf(x),Δx>+<Hessf(x)Δx,Δx>(1.1.9)\begin{aligned} f _ {\rm I} (x) = f _ {\rm I} (\overline{x} + \Delta x) &= f(\overline{x}) + \left< \nabla f(\overline{x}), \Delta x \right> \\ &= f(\overline{x}) + \left< \operatorname{grad} f(\overline{x}), \Delta x \right> \\ f _ {\rm II} (x) = f _ {\rm II} (\overline{x} + \Delta x) &= f(\overline{x}) + \left< \nabla f(\overline{x}), \Delta x \right> + \left< \Delta x ^ \mathrm{T} H _ {\overline{x}}, \Delta x \right> \\ &= f(\overline{x}) + \left< \operatorname{grad} f(\overline{x}), \Delta x \right> + \left< \operatorname{Hess} f(\overline{x}) \Delta x, \Delta x \right> \end{aligned} \tag{1.1.9}

と書ける。grad\operatorname{grad}Hess\operatorname{Hess}を用いた表記は幾何的な意味との対応がついているので、ユークリッド空間以外でもgrad,Hess\operatorname{grad}, \operatorname{Hess}を定義すれば適用できる(本書でも Riemannian 最適化で登場する)。

1.2. 連続最適化との関係

現代科学で扱われる大抵の問題は目的関数の最適解が直接的(代数的)には求まらない。代わりに「関数を近似する\to近似した関数の最適解へ進む」という手順を繰り返して最終的に近似する前のもとの関数の最適解に到達するような手法を構成する(解析的に求める)。

目的関数が複雑な形状をしていても1次近似や2次近似は計算できることが多く、2次近似した関数の最適解は2次関数の頂点を求める問題とほぼ同じなので比較的容易に計算できる。

また連続最適化は、点x(k)x _ {(k)}からある方向m(k)m _ {(k)}α(k)\alpha _ {(k)}だけ進んだ点x(k+1)=x(k)+α(k)m(k)x _ {(k+1)} = x _ {(k)} + \alpha _ {(k)} m _ {(k)}k+k \to +\inftyの極限で最適解(または極値)に収束するような手法として構成されることが多いので、ある点の近傍での関数の形状を近似する Taylor 展開が連続最適化でよく登場するのである。

x(k)x _ {(k)}は探索の起点であり固定するから Taylor 展開におけるx\overline{x}とみなせて、α(k)m(k)\alpha _ {(k)} m _ {(k)}は点x\overline{x}からの変化なのでΔx\Delta xに対応する。つまり

x=x(k),Δx=α(k)m(k)(x(k),m(k)Rn,α(k)R)(1.2.1)\begin{aligned} \overline{x} = x _ {(k)}, \,\, \Delta x = \alpha _ {(k)} m _ {(k)} \quad (x _ {(k)}, m _ {(k)} \in \mathbb{R} ^ n, \alpha _ {(k)} \in \mathbb{R}) \end{aligned} \tag{1.2.1}

であって

x=x+Δxx(k+1)=x(k)+α(k)m(k)(1.2.2)\begin{aligned} x &= \overline{x} + \Delta x \\ x _ {(k+1)} &= x _ {(k)} + \alpha _ {(k)} m _ {(k)} \end{aligned} \tag{1.2.2}

の2式が対応している。今後はx(k)x _ {(k)}などを用いる方の説明がメインになるが、(1.2.1), (1.2.2) 式を用いた式の書き換えは断りなしに行うことがあるので注意してほしい。

Last updated