347

勉強のこと、酒のことを書いていく

機械学習についての勉強 3日目

3日目はニューラルネットワークの構築例について学んだ

前日に学んだシグモイド関数を利用し、ニューラルネットワーク

実例を使った分類を行う

 

学んだ内容

 

ニューラルネットワークの段階的な構築

段階は以下の流れで進んだ

  1. ニューロンへの入力
  2. ニューロンからの出力
  3. 出力に対しシグモイド関数を導入(実用例があるとさらに(なんとなく)シグモイド関数について理解が深まった気がした)
  4. 重みの概念の導入
  5. 外部データの導入/表示(今回は東京と神奈川の実データ(動画中で説明はなかったが、おそらく市区町村の緯度経度)を利用して県境を設定(分類)する)
  6. バイアスの導入
  7. ニューラルネットワークの構築

 

各段階で動画を止めつつ、なぜ動画中のプログラムとなるのかを考えながら学んだ

途中変に躓いたのはPythonにおけるselfという引数の考え方

以下が参考になった(Javaで言うthisね…)

Python基礎講座(13 クラス) - Qiita

 

Pythonではメソッドが最低1つの引数を持っている、その最初の引数をselfという名前にする慣例らしい

まぁそんなもんかと納得する

 

今回構築したニューラルネットワークは教師なし学習のもので、教師なし学習とは出力値と教師となる値との誤差がニューラルネットワークに反映されないものを指す

確かに出力値を出したら終わりになっていたので、これが教師ありになると誤差の計算やニューロンに対する重みに反映したりするんだろう、きっと

 

所感

なんだか突然難しくなったようにも感じたが、手を動かして結果がグラフで出力されるとプログラムの内容が理解できた

 

プログラムの内容は理解できたものの、機械学習について学べているかは怪しい

なぜニューロンシグモイド関数を使うのか、重みの値をどのように設定するのか(今回の東京神奈川の県境での分類を、どのように重みを調整するとよいのか、等)、中間層の層をいくつにするのか、などなど

 

こういった内容は入門編でのこの講座では扱わないのかも

まずは機械学習Pythonで実現すると、の雰囲気を掴むことが目的なのかもしれない

 

明日は教師ありモデルをやりそうな目次