1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python素人の自分が、「ゼロから作るDeep Learning」を読みながらDeep Learningに触れるの巻 その1

Posted at

#まえがき
最近巷で流行っている人工知能だのAIなるものを、素人の自分もしてみむとしてするなり

ということで、1冊本を買ってきて、それの実装をやってみるという流れを記録することにしました。
対象の本は以下の通り。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

自分の目標として、書いたものを人に見せることで、発信したいという思いもあるので、
アウトプットの訓練も兼ねて、Qiitaに投稿することにしました。
生暖かい目で見守ってやってくださればと思います。

5/5現在、3章の途中まで執筆中。さいごまで心折れないようにがんばる。

筆者レベル

  • 業務としては4年ほどASP.NET MVCを触って開発しています。Windowsプログラマです。
  • 業務で触る言語は上記以外だとC#がメインで、少しだけC++を触ります。
  • またWebフロントエンドも触るのでHTML/Javascript(jQuery含む)の知識はすこしあります。
  • なお、業務ではPythonは全く出てきませんし、ほとんど触ったことはありません
  • 況や人工知能をや。(大学の授業で習ったけれども、身についている感はないです)

というわけで、プログラミングはできるけど、Pythonや人工知能はよーわからん、という人向けのお話になります。

とはいえ、本の内容そのままのコードをここに記載することは無いと思います(本に書いてあるままですし)

実装に入る前に

※ 今後、この記事ではWindows 10 Pro(x64)を使用することとします。

個人的に、ちゃんとしたIDE(統合開発環境)は欲しい。
Visual Studioに慣らされた体の自分にとって、IDEがないのはとんでもない苦痛です。
ということで、本の中では特に触れられていませんが、統合開発環境を入れることにしました。
入れたのはこちら → PyCharm
とりあえず、FreeのCommunity版を入れることにします。
ついでに、1章で言及されているAnacondaディストリビューションから、Python 3.6を入れます。 → Anaconda

使っているうちに嫌になったら、お気に入りのエディタを探す旅に出ることにしますが、今の時点ではこれでいきます。

本題

1章 Python入門

1章はサクッと。メソッド名定義はdef、コンストラクタは__init__で定義するのね。
自分のインスタンスをselfで明示するのは変な感じするけど、こういうものなんですね

と思ったら、そのままではPyCharmがnumpyを引いてくれない事案発生。検索して以下の方法で解消する
PyCharmでNumPyを使うためのメモ書き
実行用の仮想環境にnumpyやらmatplotlibを明示的にinstall packageしないといけないらしい

plotまで試して終了。

2章 パーセプトロン

いよいよ人工知能らしいワードが。入力値に重みをかけたものを足し合わせて、一定値Θを超えたかどうかで0/1を決めるのがパーセプトロン。
原理はわかりやすい。これでAND/NAND/ORを作るということね。

線形関数を使ってパーセプトロンを作る = 座標面のあらゆる点を直線で2つに識別する
だが、点の分布によっては直線で分けられないことがある。まぁそうだよね
ということで、曲線もOKにする = 非線形関数を使って識別する ということだが、
「非線形に識別する」ということを、パーセプトロンを多層にする(2層以上)にすることで実現できる。
この「多層に出来る」ことがパーセプトロンの強みだそう。

3章 ニューラルネットワーク

ニューラルネットワークは多層にしたパーセプトロンと同じつながり方で実現出来る。
すなわち、
 入力層(第0層) → 中間層(第1層) → 出力層(第2層)
の構造。

入力層 → 中間層 を 活性化関数h(x)を使って表す。
活性化関数はステップ関数やシグモイド関数など、いくつか種類があるが、コレがいずれも非線形関数であることが重要。
なぜなら、非線形関数でないと多層にするメリットがなくなってしまうから。
線形関数を何層に重ねても意味が無い(何層にも重ねたものも、1層で表現できてしまう)から、とのことだ

とりあえずここまで。また読み進めたら先に行きます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?