メインコンテンツへスキップ

極値(最小値・最大値):見つけ方と意味の読み解き方

最小値と最大値の定義、局所極値と大域極値の違い、臨界点・一階/二階導関数検定・閉区間法による見つけ方を学びます。
更新 2026年8月13日  · 11 分 読む

AIで探索

ChatGPTClaudePerplexity

企業が利益率を最大化する価格を設定するときも、モデルが予測誤差を小さくするために重みを調整するときも、根底では同じ微積分の課題が動いています。すなわち、関数の値が最も高い(または低い)ところを見つけるという問題です。これが最小値と最大値の話であり、関数が極端な値に達する山と谷を特定することにほかなりません。

本記事では、まず極値の意味を確認し、局所的なふるまいと大域的なふるまいを区別し、導関数を使った見つけ方を順にたどったうえで、これが最適化やデータサイエンスでなぜ重要なのかをつなぎ直します。これらの概念を手を動かして深めたい場合は、Introduction to Optimization in Python コースで計算的な側面を学べます。

最小値と最大値とは?

ある関数がとる最も低い値を最小値、最も高い値を最大値と呼びます。これらをまとめて極値(単数形:extremum)といいます。グラフ上では、ちょうど想像どおり、谷の底と山の頂にあたります。

最初に明確にしておきたい重要な点が一つあります。極値とは関数の値(y 座標)であり、それが生じる場所はx の値です。「最大値は x = 3 にある」は「最大値は f(3) = 10 である」とは別物です。この区別は意外と多くの人がつまずく点で、試験問題や面接でもよく問われます。

すべての関数が最小値と最大値を両方持つわけではありません。直線にはどちらもありません。上に開く放物線は最小値を持ちますが最大値はありません。開区間上で定義された関数は、極端な値に近づいても実際には到達しない場合があります。極値の有無は自明ではなく、関数の形状と扱う定義域に依存します。

局所極値と大域極値

極値を見つける前に、以降ずっと関わってくる区別をはっきりさせておきましょう。すなわち、局所的に意味のある極値と、大域的に意味のある極値の違いです。これは最適化で最も実践的に重要な考え方の一つであり、同時に多くの人が混乱しがちな部分でもあります。

違いはスコープにあります。局所極値はある点のごく近傍だけを見ますが、大域極値は定義域全体を見渡します。

局所最小・局所最大

ある点で関数の値がその近傍のどの値よりも小さければ、そこは局所最小です。グラフのどこかにもっと深い谷があっても、いまいるのは谷の底です。近傍より高ければ局所最大、遠くにもっと高い頂があっても、いまは近傍で最も高い山頂ということです。

なだらかな丘が続くハイキングコースを思い浮かべてください。各丘の頂は局所最大で、丘と丘の間のくぼみは局所最小です。コース全体を見渡さなくても、すぐ周りと比べれば判別できます。

大域最小・大域最大

ある関数が定義域全体でとる単一の最小の値が大域最小絶対最小とも)で、単一の最大の値が大域最大絶対最大とも)です。大域極値は必ず局所極値でもありますが、その逆は成り立ちません。

同じハイキングコースでいえば、大域最大はコース全体で最も高い地点のことです。関数は多くの局所極値を持つことがありますが、大域最小値と大域最大値はそれぞれ高々一つ(ただし、その値が複数の点で達成されることはあります)。

この局所対大域の区別は机上の空論ではありません。機械学習では、勾配降下法が大域最小ではなく局所最小に捕まることがあり、まさに現場の課題として現れます。これについては後ほど触れます。

最小値・最大値の見つけ方

極値を見つける手順は一貫しています。要は、関数が増加から減少へ、あるいはその逆へ切り替わる場所はどこか、という問いです。導関数を使えば、それを厳密に判定できます。

一般的な手順は次のとおりです。

  1. 一階導関数 f'(x) を求める。
  2. f'(x) = 0 または f'(x) が存在しない点(臨界点)を見つける。
  3. 各臨界点が局所最小・局所最大・いずれでもない、のどれかを分類する。
  4. 閉区間での問題なら、端点も確認する。
  5. 候補の値を比較して、絶対極値を特定する。

具体的にするため、以降は f(x) = 2x³ − 9x² + 12x − 4(区間 [0, 4] 上で定義)を使います。

臨界点と極値

関数 f(x) の臨界点とは、定義域内の x のうち f'(x) = 0 となる点、または f'(x) が未定義の点のことです。関数が向きを変えるかもしれない場所であり、極値の候補になります。

なぜ極値は臨界点に現れるのでしょうか。滑らかな山や谷の頂・底では接線が水平で、導関数は 0 になるからです。ただし、すべての臨界点が極値とは限らない点が重要です。典型的な反例は f(x) = x³ の x = 0 で、導関数は 0 ですが向きは変わりません。わずかに平らになってから上昇を続けます。導関数が存在しない点にも注意が必要です。f(x) = |x| の x = 0 のような鋭い角は導関数を持ちませんが、まさにそこで最小値になります。

この例では f'(x) = 6x² − 18x + 12 = 6(x² − 3x + 2) = 6(x − 1)(x − 2)。これを 0 にすると臨界点は x = 1 と x = 2。各点で何が起きているかを見極めます。

一階導関数検定の使い方

一階導関数検定は、f'(x) の符号が変化するかどうかで臨界点を分類します。増加から減少に変われば山の頂、減少から増加に変われば谷の底です。

正から負へ

臨界点をまたいで f'(x) が正から負に変わると、その点は局所最大です。関数はそこまで上り、そこから下ります。

負から正へ

f'(x) が負から正に変わるなら、落ちていた関数が上昇に転じたことを意味します。その臨界点は局所最小です。

符号変化なし

f'(x) が両側でずっと正(またはずっと負)なら、その臨界点は極値ではないということです。f(x) = x³ の x = 0 のように、いったん立ち止まったように見えても向きを変えていません。

この関数について、x = 1 と x = 2 の周りの区間を調べます。テスト点を取ると、f'(0.5) = 6(0.5 − 1)(0.5 − 2) = 6(−0.5)(−1.5) = 4.5 > 0、f'(1.5) = 6(0.5)(−0.5) = −1.5 < 0、f'(3) = 6(2)(1) = 12 > 0。x = 1 では導関数が正から負へ:局所最大。x = 2 では負から正へ:局所最小。関数値は f(1) = 1、f(2) = 0 です。

一階導関数検定は常に機能しますが、各区間でテスト点を選ぶ必要があり、手間がかかります。条件が整えばもっと手早い方法があります。

二階導関数検定の使い方

二階導関数検定は、臨界点で f''(x) ≠ 0 のときに使えます。区間ごとの符号変化を調べる代わりに、臨界点で二階導関数を直接評価します。

考え方は凹凸に結びつきます。f''(c) > 0 なら c で上に凸(お椀型)なので、臨界点は底:すなわち局所最小。f''(c) < 0 なら下に凸(丘型)なので、臨界点は頂:局所最大。f''(c) = 0 の場合、この検定は何も示しません。そのときは一階導関数検定に戻ります。

この関数では f''(x) = 12x − 18。x = 1 では f''(1) = 12 − 18 = −6 < 0 で局所最大を確認。x = 2 では f''(2) = 24 − 18 = 6 > 0 で局所最小を確認。先ほどと同じ結論ですが、より迅速です。二階導関数検定は常に使えるわけではありません(変曲点や退化した臨界点では失敗します)が、使えるときは時間を節約できます。

区間上の絶対最小・絶対最大の求め方

連続関数を閉区間 [a, b] 上で扱うとき、極値定理が絶対最大と絶対最小の両方の存在を保証します。空振りにはなりません。

方法は閉区間法と呼ばれます。

  1. 区間 (a, b) 内のすべての臨界点を見つける。
  2. 各臨界点で f(x) を評価する。
  3. 端点 a と b でも f(x) を評価する。
  4. 最大の値が絶対最大、最小の値が絶対最小。

f(x) = 2x³ − 9x² + 12x − 4([0, 4])では、臨界点が x = 1 と x = 2 であることは既に分かっています。必要な点で評価すると:

f(0) = -4

f(1) = 2 - 9 + 12 - 4 = 1

f(2) = 16 - 36 + 24 - 4 = 0

f(4) = 128 - 144 + 48 - 4 = 28

絶対最小は f(0) = −4、絶対最大は f(4) = 28 です。絶対最大が臨界点ではなく端点に現れている点に注意してください。だからこそ端点の確認を省略できず、ここが最もよく犯されるミスでもあります。エラーの節で改めて触れます。

ここまでの話は一変数関数に当てはまります。実世界の問題の多くは多変数を含むため、その拡張も見ておきましょう。

多変数関数の最小値・最大値

関数 f(x, y) では、両方の偏導関数を 0 にして ∂f/∂x = 0、∂f/∂y = 0 を解くことで臨界点を求めます。臨界点は一つの値ではなく (x, y) の組になります。分類は一段と難しくなります。なぜなら、新たに鞍点という可能性が生じるからです。ある方向には上に曲がり、別の方向には下に曲がります。プリングルスの中央部分を思い浮かべてください。

多変数の臨界点を分類するには、二階の偏導関数からなる正方行列であるヘッセ行列を用います。その行列式や符号から、局所最小・局所最大・鞍点のいずれかを判定します。詳しくはHessian Matrixのチュートリアルで、計算手順や高次元での曲率との関係を解説しています。

最小値・最大値の最適化と機械学習への応用

機械学習に触れたことがあるなら、すでに最小化問題を解いてきたはずです。モデルの学習とは損失関数を最小化することであり、損失関数もまた最小値や最大値を持つ関数です。

勾配降下法がここでの主役です。現在のパラメータにおける損失関数の導関数(多変量なら勾配)を計算し、損失が減る方向へ一歩進みます。損失の地形を下るようにして最小値を探します。アルゴリズムの全体像はGradient Descent in Machine Learning のチュートリアルで扱っています。

ここで局所対大域の違いがエンジニアリング課題として立ちはだかります。非凸な損失関数(多くのニューラルネットが該当)では、勾配降下法が大域最小ではなく局所最小に捕まることがあります。学習率スケジュール、モメンタム、確率的勾配降下法などの手法は、浅い局所最小からの脱出を助けますが、非凸問題で大域最小を保証することは依然として難題です。目的関数の設計と形状の重要性は、Cost Functions のチュートリアルで解説しています。

極値探索でよくあるミス

すべての臨界点が極値だと思い込む

すべての臨界点が最小値や最大値を生むわけではありません。f(x) = x³ の x = 0 のような変曲点は f'(x) = 0 ですが、向きは変わりません。必ず導関数による検定で確認してください。

局所極値と大域極値を取り違える

局所最小は近傍で最も低いだけです。大域最小は全く別の場所や端点にあるかもしれません。局所極値を一つ見つけたところで止まらないでください。

端点を忘れる

閉区間では、絶対極値が境界で起こることがあります。本例の絶対最大は臨界点ではなく x = 4 にありました。端点を無視するのは最適化問題で最も一般的なエラーの一つで、概念的な誤解以上に多くの失点を招くと言ってよいでしょう。

二階導関数が 0 なら極値でないと決めつける

f''(c) = 0 のとき、二階導関数検定は判定不能です。だからといって極値でないとは限りません。たとえば f(x) = x⁴ の x = 0 は f''(0) = 0 ですが明らかに最小です。二階導関数検定が使えないときは一階導関数検定を使ってください。

極値の場所とその値を混同する

極値のは c ではなく f(c) です。「最小は x = 2」と言うべきところで「最小値は f(2) = 0」と言うべきなのに取り違えると、入力と出力を混同しています。レポートや試験の解答では、場所だけでなく関数値が求められます。

まとめ

「導関数が 0 になるところを見つける」で話を終えるバージョンの解説もあります。多くの入門コースがまさにそこで止まり、実務で本当に重要な部分、すなわち見つけたのが局所最小か大域最小か、そして目的によってその違いがどれほど大きいか、という理解が十分に身につかないままになります。

微積分の手続き自体は簡潔です。臨界点、導関数による検定、端点の確認。ただ、背後にある幾何的な直観――なぜ凹凸が最小の形を決めるのか、なぜ端点が臨界点より優先されることがあるのか、なぜニューラルネットの勾配降下は無数の局所最小があるかもしれない地形で最小を探していると言えるのか――を腹落ちさせるには少し時間がかかります。

実装面では、Introduction to Optimization in Python コースで、SciPy と SymPy を使ってこれらの課題を計算的に扱います。微積分とコードの接点が具体化するのはこの段階です。


Vinod Chugani's photo
Author
Vinod Chugani
LinkedIn

Vinod Chuganiは、東京でJPMorgan最年少のヘッジファンド・セールスデスク責任者としてキャリアをスタートし、その後Lehman Brothersで個人売上記録を樹立、さらに30か国に展開するエレクトロニクス流通事業を売上SG$1億を超える規模へと成長させたのち、データ分野へ転身しました。Duke大学で経済学を専攻し、NYC Data Science Academyを修了。MavenのHugo Bowne-Andersonによる「Building AI Applications」コースでは、100名超の応募者の中から3名の奨学生の一人に選出されました。現在は、DataCamp、KDnuggets、Machine Learning Mastery、Statologyにて統計からエージェント型AIまで幅広いテーマで執筆し、NYC Data Science Academyでは1,000回以上の1対1セッションを通じてデータ分野のプロフェッショナルをメンターしています。

 

FAQs

最小値と最大値の違いは何ですか?

最小値は関数がある点でとる最も低い値、最大値は最も高い値です。これらを合わせて極値と呼びます。関数は複数の局所最小・局所最大を持ちえますが、大域(絶対)最小は定義域全体でただ一つの最小の値であり、大域最大も同様にただ一つの最大の値です。

関数の最小値・最大値はどうやって見つけますか?

まず一階導関数を求めて 0 とおき、x を解いて臨界点を見つけます。次に、一階導関数検定(符号変化の確認)か二階導関数検定(各臨界点で f''(x) を評価)で、それぞれが最小か最大か、またはどちらでもないかを分類します。閉区間では端点でも関数を評価してください。

局所極値と大域極値の違いは何ですか?

局所極値は、ある点のごく近傍での最大または最小の値です。大域(絶対)極値は、関数の定義域全体での最大または最小の値です。すべての大域極値は局所極値でもありますが、多くの局所極値は大域極値ではありません。

大域最小は複数ありえますか?

関数は大域最小のを一つしか持てませんが、その値が達成される点は複数ありえます。たとえば f(x) = cos(x) の大域最小値は −1 で、x = π, x = 3π, x = −π など複数点で達成されます。最小値(値自体)は一意ですが、その発生場所は一意とは限りません。

臨界点とは何ですか?常に極値になりますか?

臨界点とは f'(x) = 0 か f'(x) が未定義の点です。極値の候補ではありますが、必ず極値とは限りません。たとえば f(x) = x³ は x = 0 が臨界点(f'(0) = 0)ですが、そこは極値ではなく変曲点で、関数はそこで向きを変えません。

二階導関数検定はいつ失敗しますか?

二階導関数検定は、臨界点 c で f''(c) = 0 のとき判定不能です。その場合は一階導関数検定を使うか、高次の導関数を解析します。古典的な例は f(x) = x⁴ で、f'(0) = 0 かつ f''(0) = 0 ですが、x = 0 は最小です。

絶対極値を求めるとき、端点が重要なのはなぜですか?

閉区間 [a, b] では、連続関数に絶対最大と絶対最小が存在することを極値定理が保証します。これらは臨界点または端点で達成されます。端点を無視すると本当の絶対極値を見落とす可能性があり、これはこの種の問題で最も一般的なミスの一つです。

機械学習で最小値・最大値はどのように使われますか?

機械学習モデルの学習は最適化問題であり、損失関数を最小化(あるいは同等に、性能指標を最大化)します。勾配降下法とその変種は、負の勾配に従って反復的に進むことで損失関数の最小値を見つけます。局所最小と大域最小の課題は直結しており、非凸な損失関数では最適化アルゴリズムが局所最小にとらわれることがあります。

トピック

DataCamp で学ぶ

Courses

データサイエンスを理解する

2時間
866K
コーディングなしで学ぶデータサイエンス入門。
詳細を見るRight Arrow
コースを開始
もっと見るRight Arrow