ogidowの日記スマートフォン用の表示で見るogidowの日記この広告は、90日以上更新していないブログに表示しています。機械学習を勉強するにあたって単純パーセプトロンから入るのは通説らしいので、僕も単純パーセプトロンから機械学習を入門します。理論を勉強しつつ、実際に実装してみることで理解を深めることが目的です。学習中であるため、この記事に書かれている内容の正しさは保証しません。間違っている箇所を見つけたら指摘していただけると幸いです。何らかのデータを特定のクラスタに識別する関数です。次のようなデータを考えます。青色のデータと赤色のデータの間に直線を引くことでデータを識別できそうです。実際に直線を引いてみます。直線より上側にあるデータが青色のデータ、下側にあるデータが赤色のデータと識別することができました。これを式で表してみます。直線を式で表すとになります。直線より上側は青色のデータ、下側は赤色のデータなので青色のデータはとなり、赤色のデータはとなります。直線の傾きや切片を決定するが決まれば直線が一意に決まります。今回はこの直線が識別関数となります。単純パーセプトロンではこのを学習によって求めます。単純パーセプトロンについてのおさらいです。単純パーセプトロンは複数の入力を受け取り、値が何らかの値に達すると発火する識別器です。雑に図で表すとこんな感じです。この図に先ほどの識別関数を当てはめてみます。この図を式で表します。次に実際に学習方法を考えます。学習データを読み込み出力結果が間違っていれば重みの更新を行います。重みの更新は、正しい結果を出しそうな方向に少しづつずらしていきます。いうものを定義します。誤差関数とは、「予測した結果が実際の結果とどのくらいずれているか」を出力する関数です。単純パーセプトロンの場合、誤差関数はと定義する場合が多いようです。この誤差関数をグラフで表してみます。誤差関数は「正解とのズレが大きいほど大きな値を返す」という特性から、2次関数のようなグラフを描きます。重みの更新は最終的にこのグラフでいう極小値を目指します。すれば極小値に近づくように重みを更新でききるのでしょうか。重みを極小値へ近づけていけそうです。これを式で表してみます。この式を展開していきます。よって更新式はとなります。理解を深めるためにrubyで実装しました。グラフの描画はgnuplotを使っています。以下コードと実行結果となります。機械学習を勉強する入り口には立つことができたかなと思います。これを機に機械学習と仲良くなっていきたいです。jobの性能Elasticsearchでtoo_many_clauseに遭遇した時のメモsearchkickのコードリーディングコンソールで動くインベーダーゲームっぽいやつ作った月別アーカイブ参加グループプログラミングはてなブログをはじめよう!ogidowさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。