とあるエンジニアの作業ブログ

Analytics Python 機械学習

「詳解 ディープラーニング 第2版」を読んで ~単純パーセプトロンの実装~

投稿日:

ニューラルネットワークとディープラーニング

    • ニューラルネットワーク ··· 脳がニューロンとそのネットーワークで情報処理する構造を模した人工知能分野のアルゴリズムの一つ
    • ディープラーニング ··· (深い)階層構造をモデル化したニューラルネットーワークのこと
    • り訂正学習法 ··· パラメータ\((w_1,w_2,\theta)\)の組み合わせである入力を試し、出力が間違っていたらパラメータを修正することで徐々に正しい状態に近づけていく方法。この修正の過程こそネットワークの”学習”

単純パーセプトロンの実装

どんなものか

単純パーセプトロン
参考一番簡単な単純パーセプトロンについて
参考ニューラルネットワークを用いた手書き文字認識

パーセプトロンは入力にニューロンが発火すべきかどうかを判別し0 or 1を出力する。よって、単純な分類器として利用できる。

定式化

パーセプトロンの出力をyとすると、表す式は
$$y=\begin{cases}1(w_1x_1+w_2x_2+ \cdots w_nx_n\text{≧} \theta)\\0(w_1x_1+w_2x_2+\cdots w_nx_n<\theta)\end{cases}$$

ステップ関数
$$f(x)=\begin{cases}1(x \text{≧} 0)\\0(x<0)\end{cases}$$

ステップ関数を使うと出力yは
$$y = f(w_1x_1+w_2x_2+ \cdots w_nx_n-\theta)$$

数式を和で表すために\(-\theta = b\)とし、ベクトルで表すと出力は、
$$
\vec{x}=\boldsymbol{x}=
\left(
\begin{array}{c}
x_1 \\
x_2 \\
\vdots \\
x_n
\end{array}
\right),
\vec{w}=\boldsymbol{w}=
\left(
\begin{array}{c}
w_1 \\
w_2 \\
\vdots \\
w_n
\end{array}
\right)
$$

$$y=f(\boldsymbol{w}^T\boldsymbol{x}+b)$$
という形にまとまる。

ニューロンの出力がこの式の形で表されるモデルをパーセプトロンといい、入力がすぐ出力に伝播(入力層と出力層しかない)するもっとも単純な形式を単純パーセプトロンという。

また、重み\(\boldsymbol{w}\)と閾値(バイアス)\(b\)を、k+1回目の学習で更新する時の更新式(誤り訂正学習法の更新式)は、正解の値を\(t\)とすると以下のようになる。
$$
\Delta\boldsymbol{w} = (y-t)\boldsymbol{x} \\
\Delta b = (y-t)
$$

$$
\boldsymbol{w}^{(k+1)} = \boldsymbol{w}^{(k)}-\Delta\boldsymbol{w} \\
b^{(k+1)}= b^{(k)}-\Delta b
$$

実装

本書のgithubで公開されているコードをcolaboratoryで実装し、自分の理解促進のために注釈やデバッグログをつけたもの。

学習家庭の出力例。

-Analytics, Python, 機械学習
-, , , ,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

中心極点定理ぃぃぃ????

【備忘】中心極限定理に関する自分なりの解釈

中心極限定理を自分なりに腹落ちするためのメモ。 要するにの中心極限定理の理解は、 元データが正規分布に従ってなくても、そのデータをサンプル抽出していくつか足し合わせたものはたいてい正規分布に従う とい …

様々な言語モデルを箇条書きで解説

本やWebで調べた自然言語処理における言語モデルやアルゴリズムに関する知識を箇条書きまとめ。 文章の確からしさ 5-gram言語モデル(n-gram言語モデル) n-gram言語モデルは単語の出現確率 …

【初心者向け】Pythonで初めてのスクレイピング

Python学習中のためスクレイピングをやってみる。 すでに山ほど参考サイトがあるが、以下がソースも短くライトそうなので拝借し、本家はBeautifulSoupを使っているところをpyqueryに改造 …

Python3.7.1で文章間の類似度判定

python3.7.1でMeCabとWord2Vecを使い文章間の類似度判定を行います。 結構類似の記事があったんですが、pythonのバージョン互換の問題かなんかでそのままだと動かなかったので自分な …

『統計学が最強の学問である』を読んで自分用メモ

西内啓さんの「統計学が最強の学問である」を読んで自分用のメモ。 自分用なのでかなり偏ってます。 目次 データをビジネスで使うための「3つの問い」 サンプリング収集したデータが十分であるかどうかを検証す …