質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

315閲覧

最急降下法のアルゴリズムのコード表現

saitani96

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/08/11 04:45

前提

下記の手順で最急降下法のアルゴリズムをコード化したいのですが、コードの書き方ができません。どのようにコードを書けばよろしいでしょうか?

  1. 更新幅 𝛼 ,最大ステップ数 𝑘max ,初期点 𝑥(0) を与える。 𝑘=0 として,手順2に進む。
  2. 次式にしたがって,探索点 𝑥 を更新する。

𝑥𝑛(𝑘+1)=𝑥𝑛(𝑘)−𝛼∂𝑓(𝑥(𝑘))/∂𝑥𝑛, 𝑛=1,…,𝑁
3. 𝑘=𝑘max であれば終了する。そうでなければ, 𝑘←𝑘+1 として,手順2に戻る。

初期点は (−2,−1) 各パラメータの推奨値は, 𝛼=0.01 , 𝑘max=400 とする。

実現したいこと

最急降下法のアルゴリズムをコード化

該当のソースコード

python

1x1 = -2; x2 = -1 2α = 0.01 3gradient = 0 4k = 0 5 6for k in range(0, 400): 7 gradient = -α * (2 * x1 + 3 * x2) 8 9 if np.abs (gradient) > 400: 10 break 11 k = k + α * gradient -1

試したこと

上記コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/08/11 11:42

fについてはどうなっていますでしょうか?
saitani96

2022/08/12 01:02

𝑓(𝑥)=∑𝑛=12𝑥4𝑛−16𝑥2𝑛+5𝑥𝑛 で コードとしては、 def f(x): return x[0] ** 4 - 16 * x[0] ** 2 + 5 * x[0] + x[1] ** 4 - 16 * x[1] ** 2 + 5 * x[1] 情報が不足してしていて申し訳ありません。
meg_

2022/08/12 08:03

変数が2つなんですか?3次元のグラフの話ですか?
saitani96

2022/08/12 08:14

変数が2つで3次元のグラフだと思います。 (この問題の目的関数は,後で示す等高線のように非線形性が強いために凹凸状で, 𝑥1 , 𝑥2 軸対称に位置する6個の局所的最適解(コブ:hump)が存在し,このうち 𝑥𝑜≈(±0.08984 , ∓0.71266) (符号同順)が大域的最適解であり,その目的関数値は 𝑓(𝑥𝑜)≈−1.03163 である。)説明が足りず申し訳ありません。
meg_

2022/08/12 10:15

確認ですが、もっと簡単な関数(y = x^2 とか)の場合の最急降下法のコードは書けますか?
saitani96

2022/08/12 10:44

import numpy as np import matplotlib.pyplot as plt def func(x): return x**2 def dfunc(x): df = 2*x df_abs = np.abs(df) return df, df_abs x = 2 alpha = 0.01 k_max = 400 for k in range(1, k_max): x -= alpha * dfunc(x)[0] result = np.array([x, dfunc(x)[1]]) print(result) あってますでしょうか?
meg_

2022/08/12 11:09

> あってますでしょうか? 確認してませんが考え方は合っていると思います。 質問のコードにも上記dfuncのような関数を書けば良いのではないでしょうか?(関数でなくても良いですが)
saitani96

2022/08/12 11:44

ご助言いただき、大変ありがとうございます。 上記の関数を参考にやってみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問