WIIS

凸関数・凹関数

1変数の凸関数・凹関数

目次

前のページ:
Mailで保存
Xで共有

1変数の凸関数

実数空間\(\mathbb{R} \)もしくはその部分集合である区間\(I\)が定義域であるような関数\begin{equation*}f:\mathbb{R} \supset I\rightarrow \mathbb{R} \end{equation*}について以下の条件\begin{equation*}
\forall x_{1},x_{2}\in I,\ \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*}が成り立つ場合、\(f\)を凸関数(convex function)と呼びます。

図:凸関数
図:凸関数

関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)が凸関数であることの意味を視覚的に理解します(上図)。凸関数\(f\)のグラフ上の2つの点\begin{eqnarray*}A &:&\left( x_{1},f\left( x_{1}\right) \right) \\
B &:&\left( x_{2},f\left( x_{2}\right) \right)
\end{eqnarray*}を任意に選びます。この2つの点を結ぶ線分上に存在するそれぞれの点\(P\)の座標は、何らかのスカラー\(\lambda \in \left[ 0,1\right] \)を用いて、\begin{equation*}P:\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2},\lambda f\left(
x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right) \right)
\end{equation*}と表すことができます。一方、点\(P\)と\(x\)座標を共有する関数\(f\)のグラフ上の点\(Q\)の座標は、\begin{equation*}Q:\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2},f\left( \lambda
x_{1}+\left( 1-\lambda \right) x_{2}\right) \right)
\end{equation*}ですが、凸関数の定義より、点\(P\)の\(y\)座標が点\(Q\)の\(y\)座標以上であること、すなわち点\(P\)の位置は点\(Q\)の位置と同じもしくは点\(Q\)より上方であることが保証されます。任意の\(\lambda \)について同様の議論が成り立つため、線分\(AB\)上の任意の点の位置は関数\(f\)のグラフ上もしくはそれより上方であることが保証されます。関数\(f\)のグラフ上の任意の2つの点\(A,B\)について同様の議論が成立するため、結局、\(f\)が凸関数である場合、そのグラフは直線もしくは谷型の曲線になります。このような事情を踏まえた上で、凸関数を下に凸な関数(convex downward function)と呼ぶこともあります。

凸関数の定義域は区間である必要がありますが、その理由は以下の通りです。関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)が凸関数であることとは、定義域上の点\(x_{1},x_{2}\in I\)とスカラー\(\lambda \in \left[0,1\right] \)をそれぞれ任意に選んだとき、不等式\begin{equation*}\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*}が成り立つことを意味しますが、そもそも上の不等式が成立することを検討するためには右辺の値\(f\left(\lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) \)が存在すること、すなわち関数\(f\)が点\(\lambda x_{1}+\left( 1-\lambda \right)x_{2}\)において定義されている必要があります。関数\(f\)の定義域\(I\)が区間であれば、\begin{equation*}\lambda x_{1}+\left( 1-\lambda \right) x_{2}\in I
\end{equation*}であること、すなわち関数\(f\)が点\(\lambda x_{1}+\left( 1-\lambda\right) x_{2}\)において定義されていることが保証されます。逆に、関数\(f\)の定義域\(I\)が区間でない場合、ある\(x_{1},x_{2},\lambda \)に対して\(f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) \)が存在しない事態が起こり得るため、そもそも先の不等式が意味をなさなくなってしまいます。

区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)が凸関数であることは、\begin{equation*}\forall x_{1},x_{2}\in I,\ \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*}が成り立つことを意味しますが、\(x_{1}=x_{2}\)の場合や\(t=0,1\)の場合に上の条件は明らかに成り立つため、凸関数を以下のように定義することもできます。

命題(凸関数の定義)
区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)について、\begin{equation*}\forall x_{1}\in I,\ \forall x_{2}\in I\backslash \left\{ x_{1}\right\} ,\
\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*}が成り立つことは、\(f\)が凸関数であるための必要十分条件である。
証明

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

例(凸関数)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =x^{2}
\end{equation*}を定めるものとします。この関数\(f\)のグラフは以下の通りです。

図:凸関数
図:凸関数

\(f\)の定義域\(\mathbb{R} \)は区間です。\(f\)は2次関数でありそのグラフは下に凸な放物線であるため凸関数であることが予測されます。実際、定義域上の点\(x_{1},x_{2}\in \mathbb{R} \)とスカラー\(\lambda \in \left[ 0,1\right] \)をそれぞれ任意に選んだとき、\begin{eqnarray*}&&\lambda f\left( x_{1}\right) +\left( 1-\lambda \right) f\left(
x_{2}\right) -f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) \\
&=&\lambda x_{1}^{2}+\left( 1-\lambda \right) x_{2}^{2}-\left[ \lambda
x_{1}+\left( 1-\lambda \right) x_{2}\right] ^{2}\quad \because f\text{の定義} \\
&=&\lambda x_{1}^{2}+x_{2}^{2}-\lambda x_{2}^{2}-\lambda
^{2}x_{1}^{2}-2\lambda x_{1}x_{2}+2\lambda ^{2}x_{1}x_{2}-x_{2}^{2}+2\lambda
x_{2}^{2}-\lambda ^{2}x_{2}^{2} \\
&=&\left( \lambda -\lambda ^{2}\right) x_{1}^{2}-2\left( \lambda -\lambda
^{2}\right) x_{1}x_{2}+\left( \lambda -\lambda ^{2}\right) x_{2}^{2} \\
&=&\left( \lambda -\lambda ^{2}\right) \left(
x_{1}^{2}-2x_{1}x_{2}+x_{2}^{2}\right) \\
&=&\lambda \left( 1-\lambda \right) \left( x_{1}-x_{2}\right) ^{2} \\
&\geq &0\quad \because \lambda \in \left[ 0,1\right] \end{eqnarray*}すなわち、\begin{equation*}
\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*}となるため、\(f\)が凸関数であることが示されました。

例(凸関数)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =2x
\end{equation*}を定めるものとします。この関数\(f\)のグラフは以下の通りです。

図:凸関数
図:凸関数

\(f\)の定義域\(\mathbb{R} \)は区間です。\(f\)は1次関数であるためそのグラフは直線です。定義域上の点\(x_{1},x_{2}\in \mathbb{R} \)とスカラー\(\lambda \in \left[ 0,1\right] \)をそれぞれ任意に選んだとき、\begin{eqnarray*}&&\left[ \lambda f\left( x_{1}\right) +\left( 1-\lambda \right) f\left(
x_{2}\right) \right] -f\left( \lambda x_{1}+\left( 1-\lambda \right)
x_{2}\right) \\
&=&\left[ \lambda 2x_{1}+\left( 1-\lambda \right) 2x_{2}\right] -2\left[
\lambda x_{1}+\left( 1-\lambda \right) x_{2}\right] \\
&=&0
\end{eqnarray*}すなわち、\begin{equation*}
\lambda f\left( x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right)
=f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right)
\end{equation*}となるため、\(f\)が凸関数であることが示されました。この例は、グラフが直線であるような関数、もしくはグラフに直線部分が存在するような関数もまた凸関数になり得ることを示唆しています。

これまで提示した例から明らかであるように、定義にもとづいて関数が凸であることを示す作業は煩雑になりがちです。より扱いやすい凸関数の判定条件が存在するため、多くの場合、それらを利用することになります。詳細は場を改めて解説します。

例(微分可能ではない凸関数)
有界閉区間上に定義された関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)のグラフが下図で与えられているものとします。

図:凸関数
図:凸関数

この関数\(f\)は下に凸な形状のグラフを持つため凸関数です。その一方で、この関数\(f\)は点\(c\)において微分可能ではありません。凸関数は微分可能であるとは限らないということです。

 

1変数の凹関数

実数空間\(\mathbb{R} \)もしくはその部分集合である区間\(I\)が定義域であるような関数\begin{equation*}f:\mathbb{R} \supset I\rightarrow \mathbb{R} \end{equation*}について以下の条件\begin{equation*}
\forall x_{1},x_{2}\in I,\ \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*}が成り立つ場合、\(f\)を凹関数(concave function)と呼びます。

図:凹関数
図:凹関数

関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)が凹関数であることの意味を視覚的に理解します(上図)。凹関数\(f\)のグラフ上の2つの点\begin{eqnarray*}A &:&\left( x_{1},f\left( x_{1}\right) \right) \\
B &:&\left( x_{2},f\left( x_{2}\right) \right)
\end{eqnarray*}を任意に選びます。この2つの点を結ぶ線分上に存在するそれぞれの点\(Q\)の座標は、何らかのスカラー\(\lambda \in \left[ 0,1\right] \)を用いて、\begin{equation*}Q:\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2},\lambda f\left(
x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right) \right)
\end{equation*}と表すことができます。一方、点\(Q\)と\(x\)座標を共有する関数\(f\)のグラフ上の点\(P\)の座標は、\begin{equation*}P:\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2},f\left( \lambda
x_{1}+\left( 1-\lambda \right) x_{2}\right) \right)
\end{equation*}ですが、凹関数の定義より、点\(Q\)の\(y\)座標が点\(P\)の\(y\)座標以下であること、すなわち点\(Q\)の位置は点\(P\)の位置と同じもしくは点\(P\)より下方であることが保証されます。任意の\(\lambda \)について同様の議論が成り立つため、線分\(AB\)上の任意の点の位置は関数\(f\)のグラフ上もしくはそれより下方であることが保証されます。関数\(f\)のグラフ上の任意の2つの点\(A,B\)について同様の議論が成立するため、結局、\(f\)が凹関数である場合、そのグラフは直線もしくは山型の曲線になります。このような事情を踏まえた上で、凹関数を上に凸な関数(convex upward function)と呼ぶこともあります。

凹関数\(f\)の定義域\(I\)は区間である必要がありますが、その理由は凸関数の定義域が区間でなければならない理由と同様です。つまり、\(f\)の定義域\(I \)が区間であれば任意の\(x_{1},x_{2},\lambda \)に対して\(f\)が点\(\lambda x_{1}+\left( 1-\lambda \right) x_{2}\)において定義されることが保証されるため、凹関数の定義を構成する不等式が成立するか検討できます。

区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)が凹関数であることは、\begin{equation*}\forall x_{1},x_{2}\in I,\ \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*}が成り立つことを意味しますが、\(x_{1}=x_{2}\)の場合や\(t=0,1\)の場合に上の条件は明らかに成り立つため、凹関数を以下のように定義することもできます。

命題(凹関数の定義)
区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)について、\begin{equation*}\forall x_{1}\in I,\ \forall x_{2}\in I\backslash \left\{ x_{1}\right\} ,\
\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*}が成り立つことは、\(f\)が凹関数であるための必要十分条件である。
証明

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

例(凹関数)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =-x^{2}
\end{equation*}を定めるものとします。この関数\(f\)のグラフは以下の通りです。

図:凹関数
図:凹関数

\(f\)の定義域\(\mathbb{R} \)は区間です。\(f\)は2次関数でありそのグラフは上に凸な放物線であるため凹関数であることが予測されます。実際、定義域上の点\(x_{1},x_{2}\in \mathbb{R} \)とスカラー\(\lambda \in \left[ 0,1\right] \)をそれぞれ任意に選んだとき、\begin{eqnarray*}&&f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) -\left[
\lambda f\left( x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right) \right] \\
&=&-\left[ \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right] ^{2}-\left[
-\lambda x_{1}^{2}-\left( 1-\lambda \right) x_{2}^{2}\right] \\
&=&\lambda x_{1}^{2}+x_{2}^{2}-\lambda x_{2}^{2}-\lambda
^{2}x_{1}^{2}-2\lambda x_{1}x_{2}+2\lambda ^{2}x_{1}x_{2}-x_{2}^{2}+2\lambda
x_{2}^{2}-\lambda ^{2}x_{2}^{2} \\
&=&\left( \lambda -\lambda ^{2}\right) x_{1}^{2}-2\left( \lambda -\lambda
^{2}\right) x_{1}x_{2}+\left( \lambda -\lambda ^{2}\right) x_{2}^{2} \\
&=&\left( \lambda -\lambda ^{2}\right) \left(
x_{1}^{2}-2x_{1}x_{2}+x_{2}^{2}\right) \\
&=&\lambda \left( 1-\lambda \right) \left( x_{1}-x_{2}\right) ^{2} \\
&\geq &0\quad \because \lambda \in \left[ 0,1\right] \end{eqnarray*}すなわち、\begin{equation*}
f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) \geq \lambda
f\left( x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right)
\end{equation*}が成り立つため\(f\)が凹関数であることが示されました。

例(凹関数)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =2x
\end{equation*}を定めるものとします。この関数\(f\)のグラフは以下の通りです。

図:凹関数
図:凹関数

\(f\)の定義域\(\mathbb{R} \)は区間です。\(f\)は1次関数であるためそのグラフは直線です。先ほどこの関数\(f\)が凸関数であることを示しましたが、これは凹関数でもあります。実際、定義域上の点\(x_{1},x_{2}\in \mathbb{R} \)とスカラー\(\lambda \in \left[ 0,1\right] \)をそれぞれ任意に選んだとき、\begin{eqnarray*}&&f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) -\left[
\lambda f\left( x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right) \right] \\
&=&2\left[ \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right] -\left[
\lambda 2x_{1}+\left( 1-\lambda \right) 2x_{2}\right] \\
&=&0
\end{eqnarray*}すなわち、\begin{equation*}
f\left( \lambda x_{1}+\left( 1-\lambda \right) x_{2}\right) =\lambda f\left(
x_{1}\right) +\left( 1-\lambda \right) f\left( x_{2}\right)
\end{equation*}が成り立つからです。この例は、グラフが直線であるような関数、もしくはグラフに直線部分が存在するような関数もまた凹関数になり得ることを示唆しています。また、凸関数かつ凹関数であるような関数が存在することも示唆しています。

例(微分可能ではない凹関数)
有界閉区間上に定義された関数\(f:\mathbb{R} \supset \left[ a,b\right] \rightarrow \mathbb{R} \)のグラフが下図で与えられているものとします。

図:凹関数
図:凹関数

この関数\(f\)は上に凸な形状のグラフを持つため凹関数です。その一方で、この関数\(f\)は点\(c\)において微分可能ではありません。凹関数は微分可能であるとは限らないということです。

これまで提示した例から明らかであるように、定義にもとづいて関数が凹であることを示す作業は煩雑になりがちです。より扱いやすい凹関数の判定条件が存在するため、多くの場合、それらを利用することになります。詳細は場を改めて解説します。

 

凸関数と凹関数の関係

区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)が与えられたとき、それぞれの\(x\in I\)に対して、\begin{equation*}\left( -f\right) \left( x\right) =-f\left( x\right)
\end{equation*}を定める関数\begin{equation*}
-f:\mathbb{R} \supset I\rightarrow \mathbb{R} \end{equation*}が定義可能です。\(f\)が凸関数であることは\(-f\)が凹関数であることと必要十分であり、また、\(f\)が凹関数であることは\(-f\)が凸関数であることと必要十分になります。

命題(凸関数と凹関数の関係)
区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)に関して、\begin{eqnarray*}&&\left( a\right) \ f\text{が凸関数}\Leftrightarrow
-f\text{が凹関数} \\
&&\left( b\right) \ f\text{が凹関数}\Leftrightarrow
-f\text{が凸関数}
\end{eqnarray*}がともに成り立つ。

証明

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

例(凸関数と凹関数の関係)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =x^{2}
\end{equation*}を定めるものとします。先に示したように\(f\)は凸関数です。したがって先の命題より、それぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}-f\left( x\right) =-x^{2}
\end{equation*}を定める関数\(-f:\mathbb{R} \rightarrow \mathbb{R} \)は凹関数ですが、これは先の例と整合的です。
例(凸関数と凹関数の関係)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =2x
\end{equation*}を定めるものとします。先に示したように\(f\)は凸関数です。したがって上の命題より、それぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}-f\left( x\right) =-2x
\end{equation*}を定める関数\(-f:\mathbb{R} \rightarrow \mathbb{R} \)は凹関数です。

 

演習問題

問題(凸関数・凹関数)
区間上に定義された関数\(f:\mathbb{R} \supset I\rightarrow \mathbb{R} \)について以下の問いに答えてください。

  1. \(f\)が凸関数ではないという主張を定式化してください。
  2. \(f\)が凹関数ではないという主張を定式化してください。
  3. \(f\)が凸関数と凹関数のどちらでもないような状況は起こり得るでしょうか。議論してください。
解答を見る

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

問題(凸関数・凹関数)
関数\(f:\mathbb{R} \rightarrow \mathbb{R} \)はそれぞれの\(x\in \mathbb{R} \)に対して、\begin{equation*}f\left( x\right) =e^{x}
\end{equation*}を定めるものとします。\(f\)は凸関数、凹関数、凸関数と凹関数のどちらでもない、のどれでしょうか。議論してください。
解答を見る

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

関連知識

前のページ:
Mailで保存
Xで共有

質問とコメント

プレミアム会員専用コンテンツです

会員登録

有料のプレミアム会員であれば、質問やコメントの投稿と閲覧、プレミアムコンテンツ(命題の証明や演習問題とその解答)へのアクセスなどが可能になります。

ワイズのユーザーは年齢・性別・学歴・社会的立場などとは関係なく「学ぶ人」として対等であり、お互いを人格として尊重することが求められます。ユーザーが快適かつ安心して「学ぶ」ことに集中できる環境を整備するため、広告やスパム投稿、他のユーザーを貶めたり威圧する発言、学んでいる内容とは関係のない不毛な議論などはブロックすることになっています。詳細はガイドラインをご覧ください。

誤字脱字、リンク切れ、内容の誤りを発見した場合にはコメントに投稿するのではなく、以下のフォームからご連絡をお願い致します。

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

凸関数・凹関数