WIIS

教材一覧
教材一覧
教材検索
OPTIMIZATION OF FUNCTIONS

多変数凸関数・凹関数の無制約最適化

目次

Share on twitter
Twitterで共有
Share on email
メールで共有

2階微分可能な多変数凸関数の最小化

多変数関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)の極小点や最小点が満たす条件(1階および2階の必要条件)を明らかにした上で、最小点を特定する方法について解説しました。特に、関数\(f\)が\(C^{2}\)級である場合、関数の最小点を特定する手順は以下の通りです。

  1. 関数の最小点が存在することを確認する。その際、最大値・最小値の定理などを利用する。
  2. 関数の定義域の内点の中でも、極小点であるための1階および2階の必要条件を満たす点をすべて特定する。
  3. 関数の定義域に含まれる境界点をすべて特定する。
  4. 以上の点の中でも、関数の値を最小化する点が最小点である。

以上の議論は一般の関数\(f\)に関するものですが、関数\(f\)が凸関数である場合には議論がシンプルになることを以下で示します。凸関数の最小点を求めることを凸最適化(convex problem)と呼びます。

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)は凸関数であるものとします。つまり、\(f\)の定義域\(X\)は凸集合であるとともに、\begin{equation*}\forall x_{1},x_{2}\in X,\ \forall \lambda \in \left[ 0,1\right] :\lambda
f\left( x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right) \geq
f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right)
\end{equation*}が成り立つということです。凸関数は偏微分可能であるとは限りませんが、以下では\(C^{2}\)級の凸関数について考えます。この場合、\(f\)が凸関数であることと、以下の条件\begin{equation*}\forall x\in X,\ \forall h\in \mathbb{R} ^{n}\backslash \left\{ 0\right\} :h\cdot \nabla ^{2}f\left( x\right) h\geq 0
\end{equation*}が成り立つことは必要十分です。したがって、2階微分可能な凸関数に関しては、定義域上の任意の点が2階の必要条件を満たします。以上の条件を満たす関数\(f\)が停留点を持つ場合、すなわち、\begin{equation*}\nabla f\left( a\right) =0
\end{equation*}を満たす内点\(a\in I^{i}\)が存在する場合、この点\(a\)は\(f\)の最小点になることが保証されます。つまり、2階微分可能な凸関数に関しては、1階の必要条件が十分条件になるということです。証明ではテイラーの定理を利用します。

命題(2階微分可能な凸関数の最小化)
凸集合上に定義された関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)が\(C^{2}\)級の凸関数であるものとする。定義域の内点\(a\in X^{i}\)について、\begin{equation*}f^{\prime }\left( a\right) =0
\end{equation*}が成り立つ場合、点\(a\)は\(f\)の最小点である。
証明

プレミアム会員専用コンテンツです
ログイン】【会員登録

以上の命題より、2階微分可能な凸関数が停留点を持つ場合には、その点が最小点であることが保証されます。ただし、2階微分可能な凸関数は停留点を持つとは限らないため注意が必要です。以下の例より明らかです。

例(停留点を持たない凸関数)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =x+y
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( 1,1\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
0 & 0 \\
0 & 0\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \mathbb{R} ^{2}\)および\(\left( h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
0 & 0 \\
0 & 0\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&0
\end{eqnarray*}となるため\(f\)は凸関数です。その一方で、\(\left( 1\right) \)より、\begin{equation*}\nabla f\left( x,y\right) =\left( 0,0\right)
\end{equation*}を満たす点\(\left( x,y\right) \in \mathbb{R} ^{2}\)すなわち停留点は存在しません。

凸関数を狭義凸関数に強めた場合も同様です。つまり、\(C^{2}\)級の狭義凸関数は停留点を持つとは限りません。以下の例より明らかです。

例(停留点を持たない狭義凸関数)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =e^{x}+e^{y}
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( e^{x},e^{y}\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
e^{x} & 0 \\
0 & e^{y}\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \mathbb{R} ^{2}\)および\(\left( h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
e^{x} & 0 \\
0 & e^{y}\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&\left( h_{1},h_{2}\right) \cdot \left( e^{x}h_{1},e^{y}h_{2}\right) \\
&=&e^{x}h_{1}^{2}+e^{y}h_{2}^{2} \\
&>&0\quad \because e^{x}>0\text{かつ}e^{y}>0\text{かつ}\left( x,y\right) \not=\left( 0,0\right)
\end{eqnarray*}となるため\(f\)は狭義凸関数です。その一方で、\(\left( 1\right) \)より、\begin{equation*}\nabla f\left( x,y\right) =\left( 0,0\right)
\end{equation*}を満たす点\(\left( x,y\right) \in \mathbb{R} ^{2}\)すなわち停留点は存在しません。

以上の例より、\(C^{2}\)級の凸関数の最小点を特定する際に、停留点だけを候補としていては不十分であることが明らかになりました。関数\(f\)が\(C^{2}\)級の凸関数である場合、最小点を求めるためには以下の手順にしたがう必要があります。

  1. 関数の最小点が存在することを確認する。その際、最大値・最小値の定理などを利用する。
  2. 関数の停留点を求める。停留点が存在する場合、それが最小点である。
  3. 停留点が存在しない場合、関数の定義域に含まれる境界点をすべて特定する。その中でも関数の値を最小化する点が最小点である。
例(2階微分可能な凸関数の最小化)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =x^{2}+y^{2}
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( 2x,2y\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
2 & 0 \\
0 & 2\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \mathbb{R} ^{2}\)および\(\left( h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
2 & 0 \\
0 & 2\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&\left( h_{1},h_{2}\right) \cdot \left( e^{x}h_{1},e^{y}h_{2}\right) \\
&=&2h_{1}^{2}+2h_{2}^{2} \\
&>&0\quad \because e^{x}>0\text{かつ}e^{y}>0\text{かつ}\left( x,y\right) \not=\left( 0,0\right)
\end{eqnarray*}となるため\(f\)は狭義凸関数です。\(f\)の停留点を求めると、\begin{eqnarray*}\nabla f\left( x,y\right) =\left( 0,0\right) &\Leftrightarrow &\left(
2x,2y\right) =\left( 0,0\right) \quad \because \left( 1\right) \\
&\Leftrightarrow &\left( x,y\right) =\left( 0,0\right)
\end{eqnarray*}であるため、停留点における\(f\)の値は、\begin{equation*}f\left( 0,0\right) =0^{2}+0^{2}=0
\end{equation*}となります。\(f\)の定義域\(\mathbb{R} ^{2}\)は開集合であるため境界点を含みません。したがって、\(f\)の最小点は\(\left( 0,0\right) \)であり、最小値は\(0\)であることが明らかになりました。
例(2階微分可能な凸関数の最小化)
関数\(f:\mathbb{R} ^{2}\supset \left[ 0,1\right] \times \left[ 0,1\right] \rightarrow \mathbb{R} \)はそれぞれの\(x\in \left[ 0,1\right]\times \left[ 0,1\right] \)に対して、\begin{equation*}f\left( x,y\right) =e^{x}+e^{y}
\end{equation*}を定めるものとします。\(f\)はコンパクト集合上に定義された連続関数であるため最大値・最小値の定理より最小点を持ちます。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( e^{x},e^{y}\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
e^{x} & 0 \\
0 & e^{y}\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \left[0,1\right] \times \left[ 0,1\right] \)および\(\left(h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
e^{x} & 0 \\
0 & e^{y}\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&\left( h_{1},h_{2}\right) \cdot \left( e^{x}h_{1},e^{y}h_{2}\right) \\
&=&e^{x}h_{1}^{2}+e^{y}h_{2}^{2} \\
&>&0\quad \because e^{x}>0\text{かつ}e^{y}>0\text{かつ}\left( x,y\right) \not=\left( 0,0\right)
\end{eqnarray*}となるため\(f\)は狭義凸関数です。その一方で、\(\left( 1\right) \)より、\begin{equation*}\nabla f\left( x,y\right) =\left( 0,0\right)
\end{equation*}を満たす点\(\left( x,y\right) \in \left[ 0,1\right] \times \left[ 0,1\right] \)すなわち停留点は存在しません。\(f\left( x,y\right) \)は\(x\)と\(y\)に関する狭義単調増加関数であるため、\(f\)の定義域\(\left[ 0,1\right] \times \left[ 0,1\right] \)の境界点を対象とした場合、点\(\left( 0,0\right) \)において\(f\left(x,y\right) \)の値は最小化され、そこでの値は\begin{eqnarray*}f\left( 0,0\right) &=&e^{0}+e^{0} \\
&=&1+1 \\
&=&2
\end{eqnarray*}となります。したがって、\(f\)の最小点は\(\left(0,0\right) \)であり、最小値は\(2\)であることが明らかになりました。
例(2階微分可能な凸関数の最小化)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =x+y
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級の凸関数です。その一方で、\begin{equation*}\lim_{\left( x,y\right) \rightarrow \left( -\infty ,-\infty \right) }f\left(
x,y\right) =-\infty
\end{equation*}であるため\(f\)は最小点を持ちません。

繰り返しになりますが、凸関数は\(C^{2}\)級であるとは限りません。凸関数が\(C^{2}\)級でない場合には停留点を通じて最小点を特定する手法を利用できないため、通常の手法を用いることになります。

例(偏微分可能ではない凸関数の最小化)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =x^{2}+y^{2}+\left\vert x\right\vert +\left\vert
y\right\vert
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:停留点ではない極小点
図:停留点ではない極小点

点\(\left( 0,0\right) \)は\(f\)の定義域の内点であるとともに極小点でもありますが、\(f\)は点\(\left( 0,0\right) \)において偏微分可能ではありません(演習問題)。したがって、点\(\left( 0,0\right) \)は局所最適化のための1階の必要条件を満たしません。

 

2階微分可能な多変数凹関数の最大化

多変数関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)が\(C^{2}\)級である場合、関数の最大点を特定する手順は以下の通りです。

  1. 関数の最大点が存在することを確認する。その際、最大値・最小値の定理などを利用する。
  2. 関数の定義域の内点の中でも、極大点であるための1階および2階の必要条件を満たす点をすべて特定する。
  3. 関数の定義域に含まれる境界点をすべて特定する。
  4. 以上の点の中でも、関数の値を最大化する点が最大点である。

以上の議論は一般の関数\(f\)に関するものですが、関数\(f\)が凹関数である場合には議論がシンプルになることを以下で示します。凹関数の最小点を求めることを凹最適化(concave problem)と呼びます。

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)は凹関数であるものとします。つまり、\(f\)の定義域\(X\)は凸集合であるとともに、\begin{equation*}\forall x_{1},x_{2}\in X,\ \forall \lambda \in \left[ 0,1\right] :\lambda
f\left( x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right) \leq
f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right)
\end{equation*}が成り立つということです。凹関数は偏微分可能可能であるとは限りませんが、以下では\(C^{2}\)級の凹関数について考えます。この場合、\(f\)が凹関数であることと、以下の条件\begin{equation*}\forall x\in X,\ \forall h\in \mathbb{R} ^{n}\backslash \left\{ 0\right\} :h\cdot \nabla ^{2}f\left( x\right) h\leq 0
\end{equation*}が成り立つことは必要十分です。したがって、2階微分可能な凹関数に関しては、定義域上の任意の点が2階の必要条件を満たします。以上の条件を満たす関数\(f\)が停留点を持つ場合、すなわち、\begin{equation*}\nabla f\left( a\right) =0
\end{equation*}を満たす内点\(a\in X^{i}\)が存在する場合、この点\(a\)は\(f\)の最小点になることが保証されます。つまり、2階微分可能な凹関数に関しては、1階の必要条件が十分条件になるということです。証明ではテイラーの定理を利用します。

命題(2階微分可能な凹関数の最大化)
凸集合上に定義された関数\(f:\mathbb{R} \supset X\rightarrow \mathbb{R} \)が\(C^{2}\)級の凹関数であるものとする。定義域の内点\(a\in X^{i}\)について、\begin{equation*}f^{\prime }\left( a\right) =0
\end{equation*}が成り立つ場合、点\(a\)は\(f\)の最大点である。
証明

プレミアム会員専用コンテンツです
ログイン】【会員登録

以上の命題より、2階微分可能な凸関数が停留点を持つ場合には、その点が最小点であることが保証されます。ただし、2階微分可能な凸関数は停留点を持つとは限らないため注意が必要です。以下の例より明らかです。

例(停留点を持たない凸関数)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =-x-y
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( -1,-1\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
0 & 0 \\
0 & 0\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \mathbb{R} ^{2}\)および\(\left( h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
0 & 0 \\
0 & 0\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&0
\end{eqnarray*}となるため\(f\)は凹関数です。その一方で、\(\left( 1\right) \)より、\begin{equation*}\nabla f\left( x,y\right) =\left( 0,0\right)
\end{equation*}を満たす点\(\left( x,y\right) \in \mathbb{R} ^{2}\)すなわち停留点は存在しません。

凹関数を狭義凹関数に強めた場合も同様です。つまり、\(C^{2}\)級の狭義凹関数は停留点を持つとは限りません。以下の例より明らかです。

例(停留点を持たない狭義凹関数)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =-e^{x}-e^{y}
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( -e^{x},-e^{y}\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
-e^{x} & 0 \\
0 & -e^{y}\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \mathbb{R} ^{2}\)および\(\left( h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
-e^{x} & 0 \\
0 & -e^{y}\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&\left( h_{1},h_{2}\right) \cdot \left( e^{x}h_{1},e^{y}h_{2}\right) \\
&=&-\left( e^{x}h_{1}^{2}+e^{y}h_{2}^{2}\right) \\
&<&0\quad \because e^{x}>0\text{かつ}e^{y}>0\text{かつ}\left( x,y\right) \not=\left( 0,0\right)
\end{eqnarray*}となるため\(f\)は狭義凹関数です。その一方で、\(\left( 1\right) \)より、\begin{equation*}\nabla f\left( x,y\right) =\left( 0,0\right)
\end{equation*}を満たす点\(\left( x,y\right) \in \mathbb{R} ^{2}\)すなわち停留点は存在しません。

以上の例より、\(C^{2}\)級の凹関数の最大点を特定する際に、停留点だけを候補としていては不十分であることが明らかになりました。関数\(f\)が\(C^{2}\)級の凹関数である場合、最大点を求めるためには以下の手順にしたがう必要があります。

  1. 関数の最大点が存在することを確認する。その際、最大値・最小値の定理などを利用する。
  2. 関数の停留点を求める。停留点が存在する場合、それが最大点である。
  3. 停留点が存在しない場合、関数の定義域に含まれる境界点をすべて特定する。その中でも関数の値を最大化する点が最大点である。
例(2階微分可能な凹関数の最大化)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =-x^{2}-y^{2}
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( -2x,-2y\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
-2 & 0 \\
0 & -2\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \mathbb{R} ^{2}\)および\(\left( h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
-2 & 0 \\
0 & -2\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&\left( h_{1},h_{2}\right) \cdot \left( -2h_{1},-2h_{2}\right) \\
&=&-2\left( h_{1}^{2}+h_{2}^{2}\right) \\
&<&0\quad \because e^{x}>0\text{かつ}e^{y}>0\text{かつ}\left( x,y\right) \not=\left( 0,0\right)
\end{eqnarray*}となるため\(f\)は狭義凹関数です。\(f\)の停留点を求めると、\begin{eqnarray*}\nabla f\left( x,y\right) =\left( 0,0\right) &\Leftrightarrow &\left(
-2x,-2y\right) =\left( 0,0\right) \quad \because \left( 1\right) \\
&\Leftrightarrow &\left( x,y\right) =\left( 0,0\right)
\end{eqnarray*}であるため、停留点における\(f\)の値は、\begin{equation*}f\left( 0,0\right) =-0^{2}-0^{2}=0
\end{equation*}となります。\(f\)の定義域\(\mathbb{R} ^{2}\)は開集合であるため境界点を含みません。したがって、\(f\)の最大点\(\left( 0,0\right) \)であり、最大値は\(0\)であることが明らかになりました。
例(2階微分可能な凹関数の最大化)
関数\(f:\mathbb{R} ^{2}\supset \left[ 2,3\right] \times \left[ 2,3\right] \rightarrow \mathbb{R} \)はそれぞれの\(x\in \left[ 2,3\right]\times \left[ 2,3\right] \)に対して、\begin{equation*}f\left( x,y\right) =\ln \left( x\right) +\ln \left( y\right)
\end{equation*}を定めるものとします。\(f\)はコンパクト集合上に定義された連続関数であるため最大値・最小値の定理より最小点を持ちます。\(f\)は\(C^{2}\)級であり、勾配ベクトル場は、\begin{equation}\nabla f\left( x,y\right) =\left( \frac{1}{x},\frac{1}{y}\right) \quad \cdots (1)
\end{equation}となり、ヘッセ行列は、\begin{equation}
\nabla ^{2}f\left( x,y\right) =\begin{pmatrix}
-\frac{1}{x^{2}} & 0 \\
0 & -\frac{1}{y^{2}}\end{pmatrix}
\quad \cdots (2)
\end{equation}となります。\(\left( x,y\right) \in \left[2,3\right] \times \left[ 2,3\right] \)および\(\left(h_{1},h_{2}\right) \in \mathbb{R} ^{2}\backslash \left\{ 0,0\right\} \)をそれぞれ任意に選んだとき、\begin{eqnarray*}\left( h_{1},h_{2}\right) \cdot \nabla ^{2}f\left( x,y\right) \left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) &=&\left( h_{1},h_{2}\right) \cdot
\begin{pmatrix}
-\frac{1}{x^{2}} & 0 \\
0 & -\frac{1}{y^{2}}\end{pmatrix}\left(
\begin{array}{c}
h_{1} \\
h_{2}\end{array}\right) \quad \because \left( 2\right) \\
&=&\left( h_{1},h_{2}\right) \cdot \left( -\frac{h_{1}}{x^{2}},-\frac{h_{2}}{y^{2}}\right) \\
&=&-\left( \frac{h_{1}^{2}}{x^{2}}+\frac{h_{2}^{2}}{y^{2}}\right) \\
&<&0
\end{eqnarray*}となるため\(f\)は狭義凹関数です。その一方で、\(\left( 1\right) \)より、\begin{equation*}\nabla f\left( x,y\right) =\left( 0,0\right)
\end{equation*}を満たす点\(\left( x,y\right) \in \left[ 2,3\right] \times \left[ 2,3\right] \)すなわち停留点は存在しません。\(f\left( x,y\right) \)は\(x\)と\(y\)に関する狭義単調増加関数であるため、\(f\)の定義域\(\left[ 2,3\right] \times \left[ 2,3\right] \)の境界点を対象とした場合、点\(\left( 3,3\right) \)において\(f\left(x,y\right) \)の値は最大化され、そこでの値は\(、 \)\begin{eqnarray*}f\left( 3,3\right) &=&\ln \left( 3\right) +\ln \left( 3\right) \\
&=&2\ln \left( 3\right) \\
&=&\ln \left( 9\right)
\end{eqnarray*}となります。したがって、\(f\)の最大点は\(\left(3,3\right) \)であり、最大値は\(\ln \left( 9\right) \)であることが明らかになりました。
例(2階微分可能な凹関数の最大化)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =x+y
\end{equation*}を定めるものとします。\(f\)は\(C^{2}\)級の凹関数です。その一方で、\begin{equation*}\lim_{\left( x,y\right) \rightarrow \left( \infty ,\infty \right) }f\left(
x,y\right) =+\infty
\end{equation*}であるため\(f\)は最大点を持ちません。

繰り返しになりますが、凹関数は\(C^{2}\)級であるとは限りません。凹関数が\(C^{2}\)級でない場合には停留点を通じて最大点を特定する手法を利用できないため、通常の手法を用いることになります。

例(偏微分可能ではない凹関数の最大化)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =-x^{2}-y^{2}-\left\vert x\right\vert -\left\vert
y\right\vert
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:停留点ではない極大点
図:停留点ではない極大点

点\(\left( 0,0\right) \)は\(f\)の定義域の内点であるとともに極大点でもありますが、\(f\)は点\(\left( 0,0\right) \)において偏微分可能ではありません(演習問題)。したがって、点\(\left( 0,0\right) \)は局所最適化のための1階の必要条件を満たしません。

Share on twitter
Twitterで共有
Share on email
メールで共有
DISCUSSION

質問とコメント

プレミアム会員専用コンテンツです
ログイン】【会員登録

RELATED KNOWLEDGE

関連知識

凸関数・凹関数
1変数の凸関数・凹関数

定義域が区間であるとともに、そのグラフが直線もしくは谷型の曲線になるような関数を凸関数と呼び、グラフが直線もしくは山型の曲線になるような関数を凹関数と呼びます。

最大値・最小値
1変数関数の大域的最適解

関数の値を最大化するような点が定義域上に存在する場合、そのような点を最大点や大域的最大点と呼びます。また、関数が最大点に対して定める値を最大値や大域的最大値と呼びます。

凸関数・凹関数
1変数の狭義凸関数・狭義凹関数

定義域が区間であるとともに、そのグラフが谷型の曲線になるような関数を狭義凸関数と呼び、グラフが山型の曲線になるような関数を狭義凹関数と呼びます。

最大値・最小値
1変数関数の局所最適解

関数の値を最大化するような点が定義域上に存在しない場合でも、変数がとり得る値を限定することにより、その範囲内において関数の値を最大化するような点が存在する状況は起こり得ます。そのような点を極大点や局所的最大点と呼びます。また、関数が極大点に対して定める値を極大値や大域的最大値と呼びます。

凸関数・凹関数
微分可能な1変数の凸関数・凹関数

微分可能な関数が凸関数であることは、導関数が単調増加関数であることと必要十分です。また、微分可能な関数が凹関数であることは、導関数が単調減少関数であることと必要十分です。

1階の必要条件
1変数関数の最適化のための1階の必要条件

関数が定義域において局所最適解(極大点・極小点)を持つための1階の必要条件を明らかにするとともに、関数の大域的最適解(最小点・最大点)を具体的に求める方法について解説します。

2階の必要条件
1変数凸関数・凹関数の無制約最適化

1変数の凸関数を目的関数とする制約条件のない最小化問題や、1変数の凹関数を目的関数とする制約条件のない最大化問題を解く方法を解説します。

最大値・最小値
多変数関数の大域的最適解

多変数関数の値を最大化するような点が定義域上に存在する場合、そのような点を最大点や大域的最大点と呼びます。また、多変数関数が最大点に対して定める値を最大値や大域的最大値と呼びます。

凸関数・凹関数
多変数の凸関数・凹関数

定義域がユークリッド空間上の凸集合であるとともに、そのグラフが平面もしくは下に凸であるような関数を凸関数と呼びます。また、グラフが平面もしくは上に凸であるよう関数を凹関数と呼びます。

最大・最小
実数集合の最大値・最小値

実数集合 R の空でない部分集合 A について、そのある要素 a が A の任意の実数以上ならば、a を A の最大値と呼びます。また、a が A の任意の実数以下ならば、a を A の最小値と呼びます。

最大値・最小値
多変数関数の局所最適解

多変数関数の値を最大化するような点が定義域上に存在しない場合でも、変数がとり得る値を限定することにより、その範囲内において関数の値を最大化するような点が存在する状況は起こり得ます。そのような点を極大点や局所的最大点と呼びます。また、関数が極大点に対して定める値を極大値や大域的最大値と呼びます。

凸関数・凹関数
多変数の狭義凸関数・狭義凹関数

定義域がユークリッド空間上の凸集合であるとともに、そのグラフが下に凸であるような関数を狭義凸関数と呼びます。また、グラフが上に凸であるよう関数を狭義凹関数と呼びます。

1階の必要条件
多変数関数の最適化のための1階の必要条件

多変数関数が定義域において局所最適解(極大点・極小点)を持つための1階の必要条件を明らかにするとともに、関数の大域的最適解(最小点・最大点)を具体的に求める方法について解説します。

凸関数・凹関数
連続微分可能な多変数の凸関数・凹関数

定義域がユークリッド空間上の非空な開凸集合であるとともに連続微分可能である場合に、その関数が(狭義)凸関数であることや(狭義)凹関数であることを判定する方法を解説します。