プロットすると次のような画像が得られます。グラフを出力する部分のコードは省略してあります。興味のある方は、GitHubにおいてあるNotebookか、元の記事をご覧ください。モデルを次のように定義します。このモデルは非常に単純なニューラルネットワークで、可視化すると次のようになります。https://peterroelants.github.io/posts/neural_network_implementation_part01/#Linear-regressionこのモデルと実際の観測値のずれを表すコスト関数には、次の二乗誤差を用います。(Nは観測値の数で、コード上では20となります。見つけるのがゴールとなるので、これから行う最適化は次のように記述できます。上記関数をPythonで定義します。使ってプロットすると次のようになります。(cost_wsをmatplotlibでプロット)最急降下法いよいよコスト関数を最小化することでモデルを最適化していきます。最適化してゆくアルゴリズムです。書くとき、最急降下法は次のように重みを更新していきます。するとき次のように定義されます。連鎖率を用いるととなり、それぞれの微分はとなります。代入して整理すると、となります。バッチ学習する場合は、単純にこの和を取りとします。上記をコードに落とすとこうなります。イテレーションを4回反復して重みを最適化してみます。2に近づいていく様子が観察できます。今回はコスト関数が非常にシンプルな形なので、2次元のグラフで可視化することができます。最初の2回の反復部分を可視化してみると、次のようになります。先ほどは最急降下法のイテレーションを4回だけ回しましたが、次は10回まわしてみます。可視化してみると次のようになります。非常に近いことが確認できます。Notebookは下記においてあります。グラフプロット部分等に興味がある方はご覧ください。github.comまた元の記事にはより詳しい解説もありますので、そちらをご覧になることもお勧めします。PytorchでMNISTをやってみたいと思います。前回の記事の続きです。アーカイブおすすめの本はてなブログをはじめよう!kanohkさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。