【研究】機械学習で使われたりする最適化手法の最急降下法ってなんだ!?
Youtubeで解説動画出しました.
AIとか機械学習とかが流行っていますが、実際にその内側のアルゴリズムを知っている人はそんなに多くはないのでは?と思い、今回はスライドを使って、最急降下法についてご紹介します。
このような目的とアウトラインで説明していきます。
まあ、例えば、イスを作りしたい!という場合を例にとりましょう。
目的関数を定めるのですが、ここでは「なるべく安く、頑丈に!」としておきましょう(ザックリですいません(笑))。
その時に、この目的関数の点数をもっとも大きくするために、
使う材料は、木製か金属製か?
イスの足の太さはどのくらいにするのか?
足の数をどうするのか?
などの、いわゆるパラメータを決めていくわけです。なるべく安く、頑丈につくるために!
こういうパラメータをコンピュータ上でいろいろ変更しながら、最適化をしていくわけです。
パラメータの変更の際、これまでの値を参考に学習して次のパラメータを決める時には、機械学習なんて呼ばれたりします。
どうでしょうか?
イメージが少しでもわきましたか?
今回は、そのアルゴリズムの一つである最急降下法という最適化手法の話です。
実際にスライドのように、例題を用いて説明していきます。
①の関数を最小にするxとyを決めます。
最急降下法とは、関数の勾配(微分)が最も急な方向に設計変数を移動させて探索するといった方法です。
関数の微分っていうのは、変化率を表すので、微分した時にそれが0になると、関数の最小値である可能性があるのです。なので、最急降下法は、関数の微分値をその都度計算しまくって、微分値が0になるようにしていくんですね!
以降で実際にグラフや図を用いて説明していきます。
どうでしょうか?
実際に今回の例題のプログラムもC++で組んだのでご紹介します。
みえますかね(笑)下は出力結果です
とりあえず、以上のプログラムを回すと最適値であるx=1, y=2が出力されます!間違えていたらごめんさない!(笑)
みんなもぜひやってみてね!
よろしければサポートお願いします! 研究資金に使用させていただきます。