📙

ニューラルネットワークとDL(超基礎)

2023/05/22に公開

ニューラルネットワークとディープラーニング

今回は基礎部分としてディープラーニングを学んでいきます
そのため、まずはニューラルネットワークという重要な概念を学びます!

ニューラルネットワーク

ニューラルネットワーク
人間の脳内にある神経細胞(ニューロン)と神経細胞同士のつながり、
つまり神経回路網を数理的なモデルで表現したもの

そもそもニューロンとは
ニューロンとは脳の神経細胞のこと
細胞体と呼ばれる本体があり、
樹状突起と呼ばれる他のニューロンから信号を受け取る部分、
シナプスと呼ばれる他のニューロンへ信号を送る部分の2つが生えている
入力された様々な信号の合計がとある閾値を超えたら、何かしらの信号を出力する

樹状突起が入力端子の役割、シナプスが出力端子の役割のイメージで、
ニューラルネットワークはこの仕組みをベースにしたモデルのこと!

形式ニューロン
ニューロンをモデル化したもの
・各入力には「どの入力信号を重視するかという重みというものが掛け合わされる
・各入力×重みの挿話がとある閾値を超えたら発火する
・入力/出力ともに二値(0or1)である
この0か1を出力する関数をヘヴィサイドの階段関数という
ニューラルネットワークでは活性化関数ともいう

人間と同じようなことができるAIを実現しようとするから、
ニューロンをもとにした形式ニューロンが誕生したということ!!

パーセプトロン

形式ニューロンを元に作られた、脳の機能をモデル化したもの
シンプルなモデルでありながら学習能力を持っている
形式ニューロンとの差は・・・

  • 実数地を入力できる(二値でなくてもよい)
  • 実数地を出力できる(二値でなくてもよい)
  • 学習を通じて重みや閾値を探索し、最適解を設定できる
    単純なものと、多層でエッジに重みがつくものがある
    多層パーセプトロン
    3層以上のパーセプトロン、入力層・出力層の間に中間層が用いられ、
    単純パーセプトロンでは解けなかった難しいタスクも扱うことができるようになる

ディープラーニング

4層以上の多層パーセプトロン(ディープニューラルネットワーク)を用いた機械学習手法
中間層を2層以上にすることでより高度なタスクを解くことが可能!
ディープニューラルネットワーク...DNN

様々な活性化関数

中間層に用いる活性化関数によって、ディープラーニングの精度が変わることがある
また、タスクの種類によって出力層で用いる活性化関数も変わる

活性化関数

おさらい…1つ以上の入力を受け取り、それらの挿話から何かしらの出力を生成する関数

  • ヘヴィサイドの階段関数
    入力値の総和が0以下の時0になり、0より大きい時に1になる関数
    ※ステップ関数ともいう
  • ReLU関数
    入力値の総和が0以下の時0になり、0より大きい時入力をそのまま出力する関数
  • シグモイド関数
    入力値の総和が大きければ大きいほど1に近づき、小さければ小さいほど0に近づく関数
  • ソフトマックス関数
    入力値の各要素を確立値に相当する出力値に変換する関数、0-1の値をとる
  • 恒等関数
    入力した値と同じ値を常にそのまま返す関数

中間層では主にステップ関数ReLU関数シグモイド関数
出力層では主にシグモイド関数、、ソフトマックス関数恒等関数
がそれぞれ用いられる!

出力関数

・シグモイド関数...一般的に二値分類のタスクに用いられる
例:画像が犬か、犬じゃないかの判定
・ソフトマックス関数...一般的に多クラス分類のタスクに用いられる
例:手書きの数字を0~9のどれかに判定
・恒等関数...一般的に回帰分析のタスクに用いられる
例:身長165㎝なら体重65㎏と判定

重みの最適化

損失関数

出力された予測値と正解ラベルの誤差を計算する関数である(誤差関数ともいう)
損失関数が出力した値を損失値(Loss score)という
損失値が小さいほうがモデルの精度がよいため、小さくなるよう重みを更新していく
主な損失関数は
・平均二乗誤差…回帰タスクで利用
・交差エントロピー…分類タスクで利用

オプティマイザ

損失地をできるだけ小さくする重みを見つけることを最適化といい、
その手法のことをオプティマイザという
損失値への影響を調べ、逐次的に損失値が小さくなるように重みを更新していく!
主なオプティマイザは
・SGD
・RMSRrop

実装に関して

Keras…Pythonで書かれたニューラルネットワークライブラリ
このライブラリでの実装を目標とし、学習を進めていきます。
残りCNN、RNNについてある程度学習できたら実践していきます!

所感

DLについて、ニューラルネットワークの知識から学習しました。
単語が多いですね、、また数学の知識も多く必要としそうです。
プログラムの知識だけではなく、幅広い知識の学習が必要なので
まだまだ一部なのだという印象が強いです、頑張ります!

Discussion