ディープラーニングのお勉強体験記”30:番外編「XP」の各sin波コード”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

イメージ
「ゼロから作るDeep Learning 2 ―自然言語処理編」のRNNコード、P216、第5章「5.5.3 RNNLMの学習コード」から作ったWindows XPの各sin波コード 前回「Windows xp」でAnacondaを使えるようにしたと紹介しました。でもって、ここではそこで動く「sin波学習コード」紹介します。わざわざ紹介する内容でもないかもしれませんが、、、、、、 「Jupyter Notebook」を使うということと(普段は「Jupyter Lab」を使ってます)、コードの先頭部分に「%matplotlib inline」を追加する、グラフの表示部分をちょっと書き換えるだけ(1波形1コマンドラインにする)と、簡単ですから、、、、、 でもまあ、一応書かせてもらいます!(簡単なことでも、それなりに苦労はしていますので) 目次 1:xp用のRNNのSIN波コード 2:xp用のLSTMのSIN波コード 3:xp用のGRUのSIN波コード 1:xp用のRNNのSIN波コード # 完成版 Windows xp用 RNNコード # ゼロから作る Deep Learning2のP216、第5章「5.5.3 RNNLMの学習コード」でコード全体が見えるようにできるだけ「import」を外した # プログラムの動作検証用にSINカーブを学習させるため変更したコード # coding: utf-8 # import sys # sys.path.append('C:\\kojin\\資料\\AI関連\\ゼロから作る Deep Learning\\ゼロから作る Deep Learning2\\deep-learning-from-scratch-2-master\\') %matplotlib inline import matplotlib.pyplot as plt import numpy as np # from common.optimizer import SGD # from dataset import ptb # このimportを有効にするには上記パス設定「sys.path.append('C:\\kojin\\AI関連\\・・・」が必要! # from simple_r...

ディープラーニングのお勉強体験記”01:きっかけ”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

 「AIを勉強し始めたきっかけ」と「ざっくり経緯」


もう50歳も半ばを過ぎてすっかり老けてしまった、いち会社員ですが、、、、、

2021年の12月の頃です。

ノートパソコンで、アマゾンの書籍コーナーをぼんやり見ていたとき、

「人工知能概論 単行本 – 1992/1/1 荒屋 真二  (著)」

の書籍に出くわしました。

「ふーん、人口知能、、、、、、、最近AIとかよく聞くし、これは古本で、本体は100円もしないし、ちょっとくらい知っておいた方が良いかも、、、、、」

ということで購入しようと思ったのですが、、、、、一瞬

「ちょっと待てよ、購入前に少しネットで調べてみよう」

と思い直して、ネットで情報を調べることにしました。しらべていくと、どうやら

「進歩の著しい分野」 「できるだけ最新情報を入手するべき」 「とくに機械学習が注目されている」 「ディープラーニングが一番ホット」

らしいことが分かってきました。

「中古本の購入は止めておこう、でも、人工知能は気になるし、なるべく新しくて人気のAI関連書籍を買ってみよう」

と考えて、アマゾンをいろいろ見て回った結果、とても人気のあった以下の書籍を購入しました。


注文日       書籍名
著者
2022年1月18日   ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
斎藤 康毅


注文日       書籍名
著者
2022年1月18日   Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
Andreas C. Muller


2冊とも書評もよかったし、とくに「ゼロから作るDeep Learning」はものすごい人気のある書籍なので大いに期待したのですが、、、、、、

届いた書籍の中身を見てびっくり、

「うわー全然分からない!いきなりこんなもの読めない!」

中の体裁が「私好みではない構成」だったのと、「Pythonを知らなかった」ので、買ってから

「しまった!」

という感じでした。でも乗りかかった船だし、なんか面白そうだし、で、


注文日       書籍名
著者
2022年1月21日   スッキリわかるJava入門 第3版 (スッキリわかる入門シリーズ)
中山清喬


注文日       書籍名
著者
2022年1月21日   Python[完全]入門
松浦健一郎

早速こちらをアマゾンで購入、「スッキリわかるJava入門」を購入したのは「オブジェクト指向がやさしく書いてある」というアマゾンコメントを見たためです。

つまり買ってからPythonがオブジェクト指向プログラミングだと知ったわけです。

(一応Basic、Fortran、VBAは経験があって、VBAは今でも時々使います。excelでマクロを組む時がたまーーーにあるので、、、、、、)

「スッキリわかるJava入門」は買って大正解でした。3部構成のうち、第2部がオブジェクト指向プログラミングの解説でしたので、第2部だけを読みました、ほんとにこのシリーズは分かりやすいです。一方「Python[完全」入門」は辞書的に使う書籍ですね。とても読む気にならなくて、いまのところ、ときどき参考書的に見る程度です。


しかし、こんな感じではいつまでたっても

「ディープラーニングにたどり着けないなあ、、、、、よし!取り合えず、こういう時はブルーバックスだ!」

ということで、こちらを購入しました。


注文日       書籍名
著者
2022年1月26日   高校数学からはじめるディープラーニング 初歩からわかる人工知能が働くしくみ (ブルーバックス)
金丸 隆志

これも私にとってはかなり良い書籍でした。Pythonを知らなくてもディープラーニングの概念がざっくり分かったのは大きかったです。

ただ、アマゾンの書評に

「VBAをさわれる人ならどのように計算しているか読み解くこともできます」

と書いてる人がいて、私は多少VBAがいじれるので、それを鵜吞みにして中身を読み解こうとしたのですがさっぱり歯が立ちませんでした。

「だまされた!」

という感じでした。この書籍のVBAのコードは、私にとって、かなり複雑、難解で、とても読めたものではありませんでした、速攻諦めました。


一方で私は、とにかく「スッキリ」シリーズがすっかり気に入ったので、続いて


注文日       書籍名
著者
2022年1月30日   スッキリわかるPython入門 (スッキリわかる入門シリーズ)
国本大悟

を読み始めました、案の定、分かりやすさピカ一でした。

・「スッキリわかるJava入門」のオブジェクト指向プログラミングの説明の分かりやすさ!

・「スッキリわかるPython入門」の説明の分かりやすさ!

・そもそもPythonという言語の「やさしさ」と「可読性」の高さ!

この3拍子が私を救ってくれました。


これでだいぶ勢いづいた私は、


注文日       書籍名
著者
2022年2月17日   スッキリわかるPythonによる機械学習入門 (スッキリわかる入門シリーズ)
須藤秋良

を読破することにしました。案の定というか、やっぱりというか、ほんとに分かり易くて、楽しく学習できました。


続いて


注文日       書籍名
著者
2022年2月1日    ディープラーニングがわかる数学入門
涌井 良幸

前に気になって購入しておいた、こちらを読みました。私にとってこれは貴重な書籍でした、やっぱりエクセルで書いてあると考え方を理解しやすいですねー。

それと、基本的に涌井さんの書籍はポイントが簡潔に書かれているので入門くらいの時はほんとにものすごく助かります!!!

多少読みにくいところもあるのですが、全体的にとてもよかったです。

(うーん、、、なんか悪魔が出てきて、説明するところがあるのですが、これに関しては、「なんの例え」かよくわかりませんでした)


そして続いて読み始めたのが、同じ著者による、こちら、


注文日       書籍名
著者
2022年2月18日   Excelでわかる機械学習超入門
涌井 良幸

「ディープラーニングがわかる数学入門」が良かったので、こちらも読みました、やっぱりよかったですね。

こちらも同じでエクセルで書いてあると「考え方を理解しやすい」、これにつきます!

(こちらも、内容が全部良かったわけではないですが、やはりエクセルの良さが随所にありました

ただ、ちょっと残念だったのが、RNNの中間層の扱い方です、中間層のユニットは2つ(H1とH2)ある設定なのですが、

出力が自分にしか戻らないんですよね。つまりH1の出力はH1にしか戻らない、たぶん一般的なのは、

H1->H1,H2

H2->H1,H2

だと思うんですけど、、、、、そこがちょっと特殊に思えたのがちょっと残念でした。)

*****2023/10/6追記開始部分******

このことはこの「理系ミニマリストのひまつぶしブログ」から頂いた図が分かりやすかと思います。

図をみると、RNNの中間層の再帰的つながりが分かりやすいのではないでしょうか?

この図の意味の詳細は、参考にさせて頂いたブログ

「理系ミニマリストのひまつぶしブログ」

を参照してください

*****2023/10/6追記終了部分******

ここら辺に来て、私もだいぶ自信が付いてきました。

かなりディープラーニングを理解できているつもりになっていました。

「よし!いよいよ”Pythonを使って書かれた”ディープラーニングの書籍に挑戦しよう!」

そこで、次の2冊に絞ってどちらにしようか、ページをパラパラめくりながら、しばらくの間考えました。


注文日       書籍名
著者
2022年1月18日   ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
斎藤 康毅

注文日       書籍名
著者
2022年2月1日    はじめてのディープラーニング -Pythonで学ぶニューラルネットワークとバックプロパゲーション- (Machine Learning)
我妻 幸長

どっちを先に読むかで、だいぶ迷いましたねー、「ゼロから作るDeep Learning」はものすごく人気のある書籍だし、

その前に気になって購入しておいた「はじめてのディープラーニング」もそこそこ人気があったし、、、、、、、

でも「はじめてのディープラーニング」は肯定的な人と、否定的な人と、意見が極端に分かれている印象がありました。

「うーん、、、せっかくやる気が出ているのに、”はじめてのディープラーニング”、が期待外れでモチベーションが下がってしまうと嫌だな、、、、、、」

と、心配になったんですね。でも正直、

「ゼロから作るDeep Learning」・・・・・とにかくパッと中身を見た感じ、なにしろ読みにくそう

「はじめてのディープラーニング」・・・・・・・・・・すごく読みやすそう!

なんですよねー。

ここは自分の直感を信じて「はじめてのディープラーニング」を読むことにしました。

これが大正解!「はじめてのディープラーニング」は私と相性がぴったりでした、ここからかなりディープラーニングの理解が進んだと感じています。


このブログのネタにする予定の「コード」や「数式」は、この「はじめてのディープラーニング」と、この後に読んだ「はじめてのディープラーニング2」よるところがめちゃめちゃ大きいです!

(ライセンスの関係で、実際のブログネタにする「コード」や「数式」自体は、「ゼロから作るDeep Learning2」から持ってくる予定ですが、ほんとはブログを「はじめてのディープラーニング」”1”と”2”のコードを使って書きたいんですよねーーー、、、、、、、ここはほんとに残念です)


でもって、その後に、今言った


注文日       書籍名
著者
2022年4月14日   はじめてのディープラーニング2 Pythonで実装する再帰型ニューラルネットワーク, VAE, GAN (Machine Learning) 
我妻 幸長

を読みました。これは良かったですねー、ホントに良かった!この書籍のおかげで「リカレントニューラルネットワーク」が理解できました!(と、思っている)

今のところ、私が持っているディープラーニング関連書籍でこれが一番のお気に入りです!

ただ、アマゾンの書評をみると何人かの人が言っているように数式に関してはかなり表現が厳しい(難しい?)ので、書籍を読んだだけでは私には理解できませんでした。

そこで、別途改めて式を導くことになってしまい、これはちょっと大変でしたねー。

そうはいっても、「はじめてのディープラーニング2」があったおかげで式が導けたので、この書籍には感謝!感謝!です。


ここへきてようやく(2022年の9月頃)


注文日       書籍名
著者
2022年1月18日   ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
斎藤 康毅


注文日       書籍名
著者
2022年1月26日   ゼロから作るDeep Learning 2 ―自然言語処理編
斎藤 康毅

に挑戦し始めました。

実は「ゼロから作るDeep Learning 3 フレームワーク編」も、持ってはいるのですが、こちらはところどころを拾い読みした程度です。

その3冊のうち、一番良いのが第2巻の「ゼロから作るDeep Learning 2 ―自然言語処理編」でした。

結局、私は、RNNに興味が集中しているので、「はじめてのディープラーニング」も第2巻がものすごくお気に入りになっています。



「ゼロから作るDeep Learning 2 ―自然言語処理編」の良さは、

1:比較的「使いやすく」て、「理解しやすい」コードが載っている。

2:実行結果にグラフや図が出力されるコードが載っている。

3:DNN、RNN、LSTM、GRU、まで私がなんとかいじれそうなレベルで書かれたコードが載っている。

です。(ちなみに「DNN」は一番基本的なディープラーニングを表しているつもりです)


さて、ようやく「ゼロつく」を読むことができたのですが、、、、、、、

巷ではすごい人気ですけど、読んだ感じとしては、第1巻は、正直私にとっては、「第2巻を読むための準備の本」という感じでした。

なので、個人的には第1巻と第2巻が同じくらい人気があれば、私的には納得いくのですけど、、、、、、、、、、

第1巻の方が第2巻より圧倒的な人気がありますよねー?、、、、そこはさっぱり合点がいかない感じですかねー。



以上です。



コメント

このブログの人気の投稿

ディープラーニングのお勉強体験記”17:LSTM数式導出”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

ディープラーニングのお勉強体験記”30:番外編「XP」の各sin波コード”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)

ディープラーニングのお勉強体験記”18:LSTMコードと数式”(リカレントニューラルネットワーク”RNN”を中心にバックプロパゲーション”BPTT”を数式を使って理解したい!)