こんにちは。株式会社マックスネット 人工知能・AI開発チームのIsoです。
まず1回目は、深層学習・ディープラーニングを実際に動かしながら、話を進めていきます。
**********
さて、いきなり実装ありなのかと言う声も聞こえてきそうだが、プログラマー的発想で言えば、手を動かしながら解説された方が理解も深まりやすいのではないかと。
あーだ、こーだと理屈を言われるよりも、コードを見せられた方がシックリくるというか。
なので、動かしながら解説していきますね。
まず、ディープラーニングをchainerやTensorFlowなんかのフレームワークから入った人も多いと思います。
その方が楽ですよね。細かい記述をしなくても、簡潔なコードでいろんな処理をできますから、当然です。
しかし、ここは入門編ですから、pythonコードでじっくりと書いていきましょう。
python初心者でも大丈夫でしょう。なんらかのプログラミングコードが書ける人ならへっちゃらです。
但し、全くプログラミングはできないって方は、コードの部分は軽く読み流してください。
まず、ディープラーニングを語る上で大事なのが、「パーセプトロン」と呼ばれるものです。
パーセプトロンとは、「複数の信号を入力し、ひとつの信号を出力する仕組み」といったものです。
図に書くとこんなイメージです。
手書きアプリで書きましたから、なかなか味がありますね。
この時、x1、x2は入力信号。
w1、w2は重みを表しています。
yは出力信号。ここでは0か1を出力させます。
図の丸の部分はニューロンと呼ばれます。
このニューロンでは送られてきた信号の総和が計算され、ある限界値を超えると1を出力します。
単純な仕組みですね。
ここで大事なのが「重み」です。
図ではw1とw2の重みがありますが、この重みが大きいほど、そこの信号が重要になってくるという仕掛けになっています。
これらを踏まえた上で、AND演算と呼ばれるものを実装してみましょう。
おっと、ここでくじけないでください。なんてことないです。0と1をそれぞれ入力して、0か1のどっちかを出力させるだけですから。
まずは表です。真理値表ってやつです。
入力 x1 | 入力 x2 | 出力 y |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
1と1が入力されると1ですが、あとのパターンは全て0が出ますね。
入力のx1とx2に、それぞれの値を入れて、計算した結果が出力yのようになれば正解ってことです。
それでは、いよいよpythonで上記のAND演算の実装です。
まずコードです。
1 2 3 4 5 6 7 |
def AND(x1, x2): w1, w2, zzz = 0.5, 0.5, 0.7 tmp = x1*w1 + x2*w2 if tmp <= zzz: return 0 elif tmp > zzz: return 1 |
w1、w2の重みにそれぞれ数値を入れます。zzzは限界値ですね。
上記をpythonのインタプリタで実行すると、下記のような結果になります。
1 2 3 4 5 6 7 8 |
>>> AND(0,0) 0 >>> AND(1,1) 1 >>> AND(1,0) 0 >>> AND(0,1) 0 |
真理値表通りですね。
まずは大元になるコードからでした。
パーセプトロンはディープラーニングの根っこの部分なので、この辺をじっくりと理解しながら、徐々に本格的な実装に入りましょぅ。
今回はここまで。
追記
アマゾンのAWS EC2のdeep learningバージョンでGPUを使ってモデルを適合させてみました。
写真はteraterm上でkerasからの操作。バックはTensorFlowです。
やっぱり、GPUは早いですねえ。