エンジニア始めました

未経験、知識0からエンジニアになったらどうなるのか

ゼロから作るDeep Learning 読んでます。 パート1

かなり久しぶりの更新になりましたが、サボってたのには理由があります。

仕事がかなり忙しかったです。

コーディング→バグる→ググる→直す→後出しで要件追加される→コーディング

の繰り返しで1日終わってる感じでした。

 

来週からはしっかりやっていきます。

早速、週末に読んだゼロから作るDeep Learningのまとめを

www.oreilly.co.jp

 

まずは、1章 Python入門 ですが飛ばします。笑

ここは自分でネットで調べて環境構築した方が後々いいと思うので、各々自分に合うサイトを見つけてやるってことで。(というか自分が説明できないだけ笑)

 

なので、2章 パーセプトロン からです。

 

2章 パーセプトロン

パーセプトロンとは、簡単に言うと多入力1出力のアルゴリズムのことです。様々な呼び方があるそうで、人工ニューロンや単純パーセプトロンと呼ばれているそうです。(自分は大学院時代マカロピッツモデルと呼んでました)

ディープラーニングの概要図(ニューラルネットワーク)でよく丸いのが線でたくさん繋がっているものを見かけると思いますが

f:id:oneandonly1:20181104235137p:plainこういうやつ

この丸と線で表されるアルゴリズムのことです。ちなみに丸はノードとかユニットとか呼んでます。線の部分は重みと呼ぶことが多いです。(グラフ理論知ってる人はリンクって呼ぶのかな?)

入力が入ってきて、出力を出すことはわかった。でどういう処理してんのってのが自然な流れです。数式を使うと簡単に表現できますが、なるべく使わない方向でいきます。まず、重みってのはノードへの入力のしやすさを表します。重み✖️入力が実際に入ってくる入力になります。(これは単純パーセプトロンの場合の表現かな、図のような多層になると出力✖️重みのが実際に入ってくる入力と考えた方が良いかも)

これでノードに入ってくる入力が決まりました。でノードではそれらの入力を足し算してその値が決められたある一定値を越えると出力を出す。というアルゴリズムになります。ある一定値のことを閾値と呼びます。

こんなもんです。結構単純です。でこいつら何ができんの?ってことです。

すごい単純なパターンを考えます。入力は1か0か、出力も1か0かとします。でノードは一つ、入力は二つとします。すると入力をA,B、出力をCとするとA,Bのパターンとしては(A,B)=(0,0),(1,0),(0,1),(1,1)の4パターン、Cは0か1の2パターンです。これは単純な論理回路として使えそうですよね。論理回路の説明はしませんが、ちょっとググれば分かると思います。で、このアルゴリズムいじれるパラメータは3つあります。Aの重み、Bの重み、ノードの閾値です。実はこのパラメータの組み合わせでANDゲートとNANDゲートとORゲートを作ることができます。3つのゲートが一つのアルゴリズムのパラメータをいじることで再現できるところに凄さがあります。一人三役できるってことです。

しかし、XORゲートは再現できません。線形と非線形の話になってきます。ここは図を見て理解した方が良いので本を読みましょう。(図描くのがめんどいだけ笑)なので、できない体で話を進めます。じゃあ、どうやったらXORゲートを表現できるの?ってとこですが、普通の論理回路でXORゲートを表現することを考えるとわかります。AND,OR,NANDの3つ素子を組み合わせて作ります。なので3つノードを用意すればいいのです。と言うことはノードからノードへ接続がある。イメージとしては直列につなぐ、そして何列になるかを層と言う言葉で表すと層を増やすと言う作業になります。一つ層を増やすだけで今までできなかったことができるようになりました。この時点で層を増やせばできることが増える感じがすると思います。これがディープの所以です。これを多層パーセプトロンと呼びます。図のやつは多層パーセプトロンです。(2層のパーセプトロン)

ってのが2章のまとめです。

最後に実装面での注意として今まで閾値というパラメータを使ってましたが、閾値を越えるかどうかの判断は入力の和から閾値の数値を引いたものが0を越えるかどうかで表すことができます。なので、この閾値の符合が逆になったものをバイアスと呼びます。このパラメータを使う方が実装が楽になります。

かなり適当に書いたので意味のわからないところが多いと思いますが、実際に本を読むとしっくりくると思います。わかりやすいので本当の初心者にはかなりおすすめです。が、ちょっと勉強してる人には完全に物足りない内容だと思います。

 

それでは(^^)/~~~