【NumPy・Python3で】ゼロから作るニューラルネットワーク

Python 3とNumPyで単層・多層ニューラルネットワークを自作して、機械学習の仕組みを理解しよう。バックプロパゲーションの仕組みをスクラッチで理解することで、ディープラーニングのライブラリを使いこなせるようになります。

4.40 (687 reviews)
Udemy
platform
日本語
language
Programming Languages
category
6,940
students
4 hours
content
Jul 2022
last update
$19.99
regular price

What you will learn

パーセプトロンによる学習について手動計算をして仕組みを理解できます。

勾配降下法の仕組みを数式解説を見たり、コードを書いて理解できます

ゼロからニューラルネットワークを書いて仕組みを理解できます

逆伝播(バックプロパゲーション)が機能する仕組みをデータの流れを確認して理解できます

TensorFlowやScikit-learn, chainer, Caffe 2などでブラックボックス化されている仕組みを理解し、より効果的な設計や最適化ができるようになります。

Description

*2017/8/14 最終課題のサンプルコード(Jupyter Notebook形式)を掲載しました。

*2017/6/2 バックプロパゲーションのレクチャーを追加しました。

*2017/5/17 多層ニューラルネットワークでの出力計算を掲載しました。

ニューラルネットワークを多層化したディープラーニングは、画期的な精度向上を実現し、大変注目を集めています。そして、TensorFlow, Chainer, Caffe 2などさまざまなライブラリが登場して、以前より手軽にディープラーニングを実装できるようになりました。

しかし、こうしたライブラリを使いこなすためにも、ブラックボックス化されている最適化の手法を理解しておくと、学習の精度を向上させるためのパラメーター最適化などに役立ちます。

この講座では、上記のような各種ライブラリを使用せず、NumPyやPandasなど行列計算やデータ入出力ライブラリだけを使用してニューラルネットワークを作成し、誤差の逆伝播(バックプロパゲーション)による重みの最適化や、勾配降下法の原理についての理解を目指します。

これにより学習率や隠し層の数などのパラメーターを変化させると、結果にどのような影響があるのか、を体験を通じて理解できます。

レクチャーでは数学的な処理についても逐一解説をしていきます。中学レベルの数学的知識があれば理解できるように指数対数や、微分、合成関数の微分(チェインルール)などについて解説をしますので、高校数学に自信がない方でもチャレンジできます。

数学的な解説・理解が不要な方、映像による学習は好きではない方には受講をお勧めしませんので、十分ご注意ください。

それでは一緒に学びましょう!

Content

イントロ(狙いと概要)

このコースの概要と狙い
機械学習のいろいろなパターン

第1日:機械学習を体験してみよう

Anaconda最新版のインストール
はじめての機械学習体験(線形回帰とグラフのプロット)改変中
データのダウンロードURL
GitHubからのパラメーターファイルのダウンロード方法
練習課題:線形回帰を実行してみよう
notebookを保存して終了しよう
練習課題:Notebookの保存と再読み込み
線形回帰(その2 Bostonデータ)
線形回帰2(データの読み込み)
線形回帰を実行する(部屋数と価格の関係)
線形回帰の結果をグラフにしてみよう
練習課題: 部屋数から価格の推定をしてみよう
練習課題: 他の変数と住宅価格の関係性を調べよう
ディープラーニングを体験してみよう(1/2)
ディープラーニングを体験してみよう(2/2)
moviepyでエラーが出る場合の対処方法
補足:チェックポイントファイルの保存手順
練習課題: スタイルトランスファーを実行してみよう
イントロのまとめ

第2日:Pythonによるデータの扱い

さまざまなデータ形式とテンソル
確認テスト
行列の扱い(NumPy)
ベクトルデータ
練習課題: ベクトルデータの生成と掛け算
行列の扱い
練習課題: 2次元行列をNumPyで扱ってみよう
レクチャーノート

第3日:パーセプトロン

形式ニューロン
練習課題:形式ニューロン
単層パーセプトロン
練習課題:AND回路
解答例: AND回路
練習課題:NAND回路
練習課題: OR回路
練習課題: XOR回路を考えてみよう
ニューラルネットワークへ

第4日:ニューラルネットワークによる出力計算

活性化関数
GeoGebraをインストールしてグラフを描こう
GeoGebraについての注意
(オプション)指数対数の復習
練習課題:指数関数と対数関数のグラフを描いてみよう
練習課題: シグモイド関数をPythonで描いてみよう
解答例: シグモイド関数をプロットする
練習課題: ReLU関数をPythonで描いてみよう
解答例: ReLU関数のグラフを描いてみよう
シンプルなニューラルネットワークによる出力計算
練習課題: アウトプットを計算してみよう
解答例: アウトプットの計算
練習課題:行列の積として書き直す
解答例: 行列のドット積として計算
レクチャーノート

第5日:勾配降下法による重みの逆伝播

このセクションの概要
誤差関数の導入
微分と学習率の導入
連鎖律(チェインルール)その1
連鎖律による微分(その2)
シグモイド関数の微分
練習課題: 勾配から新しい重みを計算してみよう
解答例: 単層NNにおける逆伝播による重みの更新
サンプルコード
発展課題: 重みの更新を繰り返して推定値の変化を確認しよう
レクチャーノート

第6日:多層ニューラルネットワーク(*追加中*)

隠れ層の導入(非線形分離問題を解く)
隠れ層の出力を計算してみよう
練習課題: 出力を計算してみよう
解答例: 多層NNの出力
重みの更新手順のレビュー
多層ネットワークにおけるバックプロパゲーション
練習課題:バックプロパゲーションの計算
このセクションのレクチャーノート(更新中)
最終プロジェクト: ニューラルネットワークを自作
レンタルバイク問題のコードサンプル

Screenshots

【NumPy・Python3で】ゼロから作るニューラルネットワーク - Screenshot_01【NumPy・Python3で】ゼロから作るニューラルネットワーク - Screenshot_02【NumPy・Python3で】ゼロから作るニューラルネットワーク - Screenshot_03【NumPy・Python3で】ゼロから作るニューラルネットワーク - Screenshot_04

Reviews

相澤
January 19, 2018
ニューラルネットワークの仕組みが、数学的に大変丁寧に説明されていて、大変良かったと思います。 理論の説明の後、pythonで実習なので、良かったです。 数学の理論を説明して、即pythonのプログラム演習なのはいいのですが、 数学の式をどのようにコードにするのか思いつかず、ヒントがなさ過ぎて不親切に感じました。 特に肝心な多層のバックプロバケーションが作成中なのが残念です。
田中翔一
October 4, 2017
損失関数、勾配法、誤差逆伝播法、多層ニューラルネットワークなど、機械学習を学ぶ上で欠かせない概念の多くを素早く理解する事ができた。特に勾配法はとても丁寧に説明しており、一度の受講で理解する事ができた。機械学習に関してコーディングする前の入門として最高。
I
September 22, 2017
ニューラルネットワークの概要は良く理解できた。とっかかりとしてはいい学習ができたと思う。が、冒頭の謳い文句でもあった、バックプロパゲーションの説明が尻切れトンボという感じで終わってしまっていた。私としてはこのコースのハイライトに相当するものと思うので、ここをもう少し丁寧に説明いただきたかったのが残念です。
Aoki
August 17, 2017
AI=ディープラーニングの基礎となるニューラルネットワークの「中身」を詳しく学ぶことができるコース。 数式のレベルからひとつひとつ丁寧に中身を見ていくことで、ニューラルネットワークへの理解がクリアになりました。 演習も充実しており、その分だけやりきった後の達成感は大きかった。 このコースの経験を通して、広く機械学習の手法についても改めて詳しく勉強していきたい。 Pythonならscikit-learnモジュールをインポートして3行程度コード書けば「いわゆる機械学習」ができてしまう状況ですが、本当にAIなりデータサイエンスをやるなら、それぞれの機械学習の手法がどういう中身になっているかをしっかり理解をする必要があります。 他の機械学習の手法も、同じように簡単ではありません。 私にとっては、改めてしっかり理解する=その行動をする「マインドセット」を再認識させてもらったコースになりました。
佐々木宏
August 16, 2017
ニューラルネットワークの学習理論について要点を分かりやすく解説していただけていると思います。大変勉強になりました。ありがとうございます。ただ、レクチャ69の隠れ層の入力値計算 0.2 * 0.3 + 0.5 * -0.2 の計算結果が間違っているのが残念でした。
Toru
August 6, 2017
基本的な用語や、高校時代の数学の基礎(行列など)を思い出しながら、対応しているライブラリ群の機能を理解するために、有益です。丁寧な説明内容で、スタートアップの手助けとして大いに参考になります。ニューラルネットワークの内部演算の仕組み(アルゴリズム)が具体的に例示されたサンプルコードをつかって解説されており、とても理解が進みました。よい内容でありコース構成も工夫されており、探求していくモチベーションの維持にも、とても有益です。
a
July 31, 2017
活性化関数をシグモイド関数、損失関数を最小二乗誤差で勾配降下法を使った場合のバックプロパゲーションの仕方を数式を使って理解することができました。誤差項(エラー)を出力層から入力層に向かって重みwを通ることで伝搬していくことが分かりました。 今までブラックボックスだったバックプロパゲーションもスクラッチで書けるようになるとtensorflowがどういった動作をしているのかイメージできるようになると思います。
July 25, 2017
本を持っている人は、セクション4をはじめた段階で、この講座オライリー社「ゼロから作るDeep Learning」をもとにテキストを作っていることがわかる。つまり「ゼロから作る~」本を積読している人が再エントリーするきっかけとして使うのが、おそらく最も良い本講座の活用法だと思う。数式や偏微分記号は講座内にでてくるので、ノートを用意して自分で書いて数式の意味や今何故その式を計算しているかを掴みながら進めないとすぐに迷子になる。
Yuichi
July 16, 2017
The lecture was really good for theory part. But unfortunately, the example had typos and also critical wrong calculation which ruined the flow sometimes. (e.g., the biggest one was 0.5 * 0.2 => 0.1 wrongly calculated as 0.01 in the last chapter.)
Brio
July 8, 2017
Windows7で始めましたが、環境が違うせいか講義内容と違う点が多くてほとんど進めていません。1ページ毎にQ&Aで半日待つといった状況です。 その後、ようやく環境が整い進めるようになりました。コース内容はとても丁寧で面白く、分からない所は繰り返し確認できます。 講義も後半に入り、数学基礎の講義になりました。丁寧に講義してくださるので、数学の復習としても楽しめます。 コースを一通り終えました。このコースのおかげでNNの理解がかなり進みました。書籍だけではこうはいかないので、このコースを提供してくださった井上先生に大変感謝しています。
tomo
June 23, 2017
とっても分かりやすいです!数学が苦手な方でも理解しやすく、練習問題もあって良いです。ニューラルネットワークの基礎を知りたい方は、おすすめです! 1点だけ申し上げれば、練習問題の答えが全て揃っていない所が残念でしたが、それを差し引いても、とてもわかりやすいです!
真一
June 18, 2017
ニューラルネットワークに基礎となるバックプロパゲーション(誤差逆伝播法)の仕組みを数式を用いて学ぶことが出来ました。 最終プロジェクト(課題)の自作のニューラルネットワークの作成も無事終えることが出来ました。詳細な説明やフォローアップのおかげです。大変役に立ちました。
山本昌則
June 12, 2017
どうしてこのようになるのかという部分についてブラックボックスになっていたところを丁寧に数式等を使って説明されているので、とても分かりやすく理解出来ました。さらに理解を深められるように勉強していきたいと思います。
S
June 6, 2017
講師の方は質問にも迅速に非常に丁寧に答えてくださいます。 また講義内容も具体例を交えながらブラックボックスをなるべくなくすように工夫されています。これから機械学習、深層学習を学んでいこうとする方におすすめです。
Joe
May 23, 2017
ニューラルネットワークにおける各アルゴリズムがどういった処理を行なっているかに加え、なぜその処理が必要かが明確に説明されている為、本質的に理解することができた為。 また、Q&Aでの質問に対しても迅速かつ詳細に回答してくれる為。

Charts

Price

【NumPy・Python3で】ゼロから作るニューラルネットワーク - Price chart

Rating

【NumPy・Python3で】ゼロから作るニューラルネットワーク - Ratings chart

Enrollment distribution

【NumPy・Python3で】ゼロから作るニューラルネットワーク - Distribution chart
1187046
udemy ID
4/20/2017
course created date
11/16/2019
course indexed date
Bot
course submited by