俵言スマートフォン用の表示で見る俵言しがない社会人が書く、勉強とかのこと。第1回:パーセプトロンはじめにこのブログ、一応勉強するためと銘打っているものの、すっかりたまに競プロの話を書くだけの場になってしまいました。本を読むモチベーションにしようとしてたんですけどねえ..(ただし一日坊主)これはアカンということで、久々に本を勉強しながらブログ書くことにしました。自然消滅するって?いや、今度こそはやり遂げてみせる..!と、いうわけで題材はコイツです。実は一月ほど前に買ったのに積んだままなんでいい加減勉強したい。見る今まで深層学習に興味があって「勉強したい!」と思って本を買ったりもしたんですが、その前のニューラルネット自体の知識がイマイチで二の足踏んでました。「伝播していくとかイメージはわかるけど、実際にどう動くんかとか学習とかするんかよくわからん!」って状態がずっと続いていた感じ。そんなときに出たこの本は、僕の好きなpythonで本当に初歩の初歩から実装して学んでいくということで、絶対いい勉強になるってことで読むことにしました。使って習熟するのも目的です。タイトルには入れてるけど記事に出てくるかは微妙かも..。notebook上でやりつつ勉強しています。learningが出てくるのは一番最後の章です。パーセプトロン「あれ?1章は?」pythonの話書いてるだけなのでパス。pythonの基本の基本に加えて、Numpy(数値計算ライブラリ)やmatplotlib(可視化ライブラリ)が紹介されてました。windowsにpython入れるなら本にも書かれているAnacondaがめっちゃ楽ですね。2章はパーセプトロンの話。ぶっちゃけ本当に初歩的なところなので飛ばしても良いところです。概要を言うと、以下のような流れ。パーセプトロンで単純な論理回路を作るパーセプトロンの仕組みは、入力の線形和が閾値を超えれば発火する(ここでは出力が1となる)という単純な仕組みです。)を使って以下のようにも書ける。いうわけでコレをなぞって実際に論理関数を作る。本では一個一個関数を作ってますが、せっかくなので二入力の単層Perceptronクラスを作ります。yとか要らんけど見やすさのためにこう書いてみました。yさて、このクラスでAND、OR、NANDを作ります。0確かにちゃんと結果が出てます。パーセプトロンの限界これはSVMとか習ったことあるなら何遍も聞いた話だと思うんですが、パーセプトロンは線形和が閾値より高いか低いか、すなわち座標平面(空間)上で直線(平面)の上にあるか下にあるか、で発火が決まります。直線(平面)で分割できないような場合はうまく行きません。論理演算の中だとXORは表現できないよねって話になります。練習も兼ねて、実際に平面上に描画してみます。ax_xor.set_ylabel("x2")ax_xor.legend()##保存figure.savefig("and_or_xor.png")で、and_or_xor.pngの中身がこちら。)を分離できていることがわかります。XORについては、どう直線を引っ張っても赤〇と青×を分離できない。これらを分離するためには非線形に分離する必要があるので、パーセプトロンは早速限界を迎えちゃいました。多層にすることでの表現力アップ2.で早くも限界を迎えたパーセプトロンですが、実は層を増やすことでXORを認識できます。AND,OR,NANDを組み合わせてXORを作っています。0確かに表現できました!..とは言うものの、これだけじゃなんなので何故出来るのかってのを考えます。XOR(x1,x2)が1になるものと0になるものを直線で分離することはできません。上に示した(s1,s2)の組み合わせなら直線で分離が可能です。実際に図に描画すると以下の通り。(コードは省略)つまるところ第一層のORとNANDによって(x1,x2)を変換し、直線(第二層のAND)で分離できる(s1,s2)にしてます。線形分離できないのを分離できるようにするって聞くとカーネルトリックを思い出しますね。現在の形で識別できないのなら識別できる形に変換してすりゃいいって話。いたずらに層や入力数を増やすのも駄目だと思うので、それについては色々研究されているのでしょう(多分)。おわりに2章さくっと終わらせるつもりが、描画してみたりして遊んでたらやたら時間かかりました。使い方の記事になってた気がする...先が思いやられますが頑張ります。実装がメインなのでコードとかたくさん載せるんですけど、それをするとやたらと文章が長くなるしどうしよっかなあという感じです。僕が一番知りたいのは学習の話なので、できるだけさらっと行きたいのですが結構長いです。したら分割するかもしれないですが、とりあえず今週中には絶対第二回を上げようと思います。第4回:3章(その3)ニューラルネットワークを試してみる今回も引き続き3章です。俵言は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。はてなブログをはじめよう!Tawaraさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。