"0"からAI~ふらっとどうぞ~

自分は独学でゼロからAIについて学んでいる学生です。このブログは主にAIやネットワークの基本を理解できるようにブログという形で分かりやすくアウトプットしたものです。AIについて学びたいなと思っている方。ぜひこのブログで勉強して見てください!またある程度AIについて知識がある方も何かをを得るヒントにしてくてくれれば幸いです。Twitterアカウントもあるので是非フォローお願いします!

発表します。ディープラーニングについて

こんにちは!今日も張り切って行きましょう。

 

前回は「機械学習ディープラーニングの違い」についてお話ししました。

 

まだ見ていない人はリンク下に貼っとくので是非ご覧ください。

  

今日はディープラーニングについてできるだけもう少し掘り下げてOutPutします。

 

1「ディープラーニングの構造」ついて

まずは構造についてOutPutしていきますね。

ディープラーニングの構造は・・

 

生物の脳におけるニューラルネットワークをモデル化

 

してできたものです。早速小難しい言葉が出てきました。

 

ニューラルネットワーク

 

これは直訳すると「神経ネットワーク」となります。

生物の情報伝達には神経細胞であるニューロンによって処理されています。

このニューロンが他のニューロンシナプスと呼ばれるところで結合しており、

複雑な神経回路(ニューラルネットワーク)が出来ています。

信号がある一定値を超えることでシナプスを介してその電気信号が

他のニューロンに伝達して高度な処理をすることができるのです。 

f:id:zawapython:20180906120306p:plain

(神経伝達の図)

つまりディープラーニングは生物における情報処理の仕方をモデル化したもの

ということになります。

 

ディープラーニングではニューロンの役割をノードといい

シナプスの役割をエッジと呼んでいて、

ノード間がエッジで接続されて構成されています。

 

 

ディープラーニングの学習方法

 

それではディープラーニングの学習方法について学んでいきましょう。

 

ところで皆さんは「おいしいパン」ってどんなものだと思いますか?

 

「おいしいパンの定義は〜〜です。」とはっきりとは断言できないかと思います。笑

 

けどこれをディープラーニングでやるにはどのようなアプローチで考えるのか?

「おいしいパン」を例にしてOutPutしていきます。

 

主なアプローチ方法

  1. アルゴリズムを作る特徴量の入力。
  2. 特徴量から新たな特徴量を作り複雑にする。
  3. データと出力値の誤差を小さくして最適化。

 

アルゴリズムを作る特徴量

ではおいしいパンを作るにはどうしたら良いと思いますか? 例えば・・

  • 新鮮な水
  • 良質な小麦粉
  • 天気?
  • 焼き方・料理方法 などなど

様々な要素が考えられますね。これらを特徴量と呼びます。特徴量は

アルゴリズム=おいしいパンかを判別する式・考え方の要素のことです。

 

f:id:zawapython:20180906233302p:plain

(アルゴリズムは多くの特徴量で作られる。)

 

特徴量に重みをかけて和をとり新しい特徴量を作って求める

様々な特徴量が出揃いましたね。

でもこの特徴量が直接おいしいパンに関係しているかどうかもわからないし

どう関連しているかも分かりませんよね・・

 

そこでディープラーニングでは特徴量からさらに新しい特徴量をつくり

それらを組み合わせておいしいパンのアルゴリズムを考えていきます。

 

ではどのようにつくるのでしょうか?

 

(特徴量 X   重み)の和

 

重みの値は自由に設定できて様々な特徴量を作ることができます。

f:id:zawapython:20180906233741p:plain

(重みを色々変えてそれぞれの特徴量の和から新たな特徴量をつくる)

 

 

 

ここで一工夫。非線形変換して特徴量を複雑化。

なるべく少ない特徴量の組み合わせで判別できれば良いのですが

実際には出力とデータとの誤差が大きかったりしてそれは難しい。

もっと複雑に特徴量を組み合わせることで誤差が小さくなるアルゴリズム

作ることが可能です。

 

「また特徴量に重みをかけてまた和をとって新たな特徴量を作れば

複雑化してアルゴリズムが完成するんだな。」と思った方。

掛け算と足し算だけでは特徴量は複雑化しないのです・・。

 

例えばですが

水の特徴量を・・X

小麦粉の特徴量を・・Yとします。

重みをかけて和を取り2つ特徴量を作ってみましょう。

 

 

特徴量A 2X+3Y

特徴量B 3X+2Y   これらの和をとり新たな特徴量をつくるとします。

すると5X+5Yになりますね。

XとYの重みを5倍にすれば一回で完結してしまいますね・・。

 

ですので特徴量の複雑化には活性化関数というものを用いて非線形変換させます

こうすることで複雑化して特徴量を複雑にします。

 

最後に出力値を出すときそれらに重みをかけて足してあげるのです。

 

 

出力値とデータの誤差を小さくして最適化。逆誤差伝播法

実際に求めた値とデータを比較して出力値に近い特徴量の重みを変えていって誤差を少なくしていきます。これを逆誤差伝播法と言います。

 

ここで疑問が湧くかと思います。

 

「なぜ出力値に近い特徴量の重みから変えて行くのか??」

 

値が出るまでにいろんな特徴量が非線形変換などしてごちゃごちゃしてます

それは入力層=最初の特徴量の方に行けば行くほど複雑化してますよね?

なのでごちゃごちゃしてないところから修正したほうが効率がいいからです。

 

 

 

これらの手順を踏むことでおいしいパンを判別するアルゴリズムが誕生します。

 

 

このブログでは自分の今持っている知識でできるだけわかりやすくディープラーニングについて説明しました。説明不十分な点などが多くあったかもしれません。

 

ディープラーニングについてほんの僅かでも皆様の理解の手助けになれば幸いです。

 

今回も見ていただいてありがとうございました。

 

参考文献:

 

ディープラーニング やさしく知りたい先端科学シリーズ

ディープラーニング やさしく知りたい先端科学シリーズ

 

 

 

機械学習入門 ボルツマン機械学習から深層学習まで

機械学習入門 ボルツマン機械学習から深層学習まで

 

 

参考サイト:

フリー素材いらすとや

 

 

zawapython.hatenablog.com

 

 

 

 

 

 

 

 

 

 

当ブログはAmazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。