
ちょいと気を許すと妄想、幻覚、偏見に引き込まれそうになる年寄です。算術のみが引き込まれないためのアンカーであると。前回鑑賞のScilabデモはバナナ関数の最適化でした。今回は直訳にて「出力」の最適化です。Scilabのoptim関数を使って「非線形な」目的関数(コスト関数)を最適化するやつ。前回以上に地味なデモっす。
※「手習ひデジタル信号処理」投稿順 Indexはこちら
※Windows11上の Scilab2024.0.0を使用させていただいております。(Scilabについては御本家 Scilab 様へ)
「出力」
今回「鑑賞」させていただくScilabのデモは、「出力」です。以下のデモ選択画面から起動できます。
余りに茫漠としたタイトルですが、以下のデモ・スクリプトのタイトル見ると「直訳」の理由がほの見えます(モロみえか?)
optim_output.sce
前回も登場したoptim関数は、Scilabにおける「非線形最適化問題(主に非制約最小化問題)」を解くための関数です。解を求めるのに複雑な制約条件が課されていない場合に使いやすい関数みたいデス。ScilabのHelpページが以下に。
optim — non-linear optimization – find minimum of f(x)
optim関数は、デフォルトで ”Quasi-Newton with BFGS” つかって目的関数の最小化を行うみたいです。今回のデモはデフォルトのままね。
実行結果
まず赤矢印のところで、3次元空間の中の初期値が与えられ、黄矢印でその時の目的関数(コスト関数)の実際の値とピンク矢印で初期値と目標値の差が表示されてます。まあ、デモということで正解(目標値)は分かっており、またコスト関数も目標値をアカラサマに含んでいるので黄やピンクが計算できるのは、デバッグというかデモのために「近づく」様子を表示したかったんだと思います。
何度か繰り返し、一番下の緑矢印のところで解(正解と一致)にたどりついてます。また、その時の停止条件「直訳」も書かれてます。ちょっと何言っているか分からない日本語ですけど、まあ勾配が限りなく0に近付いてそれ以上の繰り返しができへん、ここが答えじゃ、ということなんだと思います。
