2017年07月21日

しばらくは学習本のサンプルプログラムを実行しその結果とソースコードを紹介していきます

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

deeplearning1.jpg

この本を学習しています。

しばらくの間、この本の中で紹介されているプログラムを実際に実行してその結果とソースコードを紹介していきます。

順番は章に従って、1章からやっていきます。

次回から始めます。

では。
posted by tsurutsuru at 08:27| Comment(0) | 日常茶飯事

回帰直線の傾きは重み、切片はバイアスに相当します・・・ディープラーニングの理解に回帰直線の理解はとても役に立ちます

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

deeplearning1.jpg

この本を学習しています。

私がしばしば回帰直線の求め方に言及しているのは、ニューラルネットワークの理解に役に立つからです。

回帰直線のの傾きは重み、切片はバイアスなんですね。

傾きや切片は損失関数(残差の2乗の総和)を偏微分して求めます。

ですから同じなんです。だから、ニューラルネットワークの理解に役に立つのです。

posted by tsurutsuru at 07:55| Comment(0) | 日常茶飯事

2017年07月20日

簡単なニューラルネットワークの学習を回帰直線でやってみました

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

deeplearning1.jpg

この本を学習しています。

ディープラーニングは深い層を持ったニューラルネットワークです。

ですから、ニューラルネットワークの学習が分かればディープラーニングも分かるわけです。

そこで簡単な回帰分析による回帰直線を求めるのにニューラルネットワークの学習を使ってやってみます。

まず分析するデータです。

表1.jpg

平成22年度に文科省が調査した女子の平均身長です。

明らかに年齢と身長の間に相関関係があることが分かります。

それではExcelを使ってグラフを描いてみます。

図1.jpg
求めたいか回帰直線のグラフも描いてあります。

Excelの分析ツール(回帰分析)によるこのデータの結果は次の通りです。

表2.jpg

さて、Excel VBAでプログラムを書いて1万回ほどニューラルネットワークの学習をやらせて、求める回帰直線の傾きと切片を求めてみました。

初期値はどういう決め方がいいのかまだよく分かっていないのでとりあえず1番目の点と最後の点を結んだ直線の傾きと切片としました。

本当は(各点のx座標の平均、各点のy座標の平均)は求める回帰直線上にあるということを知っているのですが、その知識は使わないことにします。

損失関数は残差の2乗の総和としました。

ハイパーパラメータ(偏微分の学習率)ですが、傾きは0.001(0.01だと発散してしまったのでこの値に)、切片は0.01にしました。

以下が1万回コンピュータに学習させた結果のグラフです。

図2.jpg

図3.jpg

2つのグラフを見てもらうと分かるように確かに学習していますねえ。

最終的に1万回(時間を測れば良かったのですが数分で終了したと思います)で次のようになりました。

傾き 0.7767 ⇒ 0.72077
切片 145.268 ⇒ 146.048

とてもいい結果が出ていると思うのですが、どうでしょうか。

傾きも切片も正解と比べて99.9%一致しています。

ほんと面白いですねえ。

(お断り)
今回だけではありませんが、数学の知識がないとここまで出来ないと思います。
難しいことはやっていませんが、かと言って誰でも出来るかというと難しいと思います。


posted by tsurutsuru at 23:40| Comment(0) | 日常茶飯事