ゼロ から 作る deep learning python で 学ぶ ディープ ラーニング の 理論 と 実装。 『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』☆5

ゼロから作るDeep Learning: 読了メモ

ゼロ から 作る deep learning python で 学ぶ ディープ ラーニング の 理論 と 実装

理由 以下記事で理由を述べていきます。 実装がライブラリに依存していない もしもライブラリに依存したものである場合、ライブラリが更新されると、本の内容が古くなって価値のないものになることもありえます。 しかしこの本は、ディープラーニングを理解することに焦点を起き、その手段としてプログラミングを行うという形式であるため、 深層学習をこれから学びたい人、リファレンスとして本を持っておきたい人、実装の基本的な中身を見てみたい人すべてにとって有用です。 しっかりと解説が行われている 最新の技術を紹介しながら、興味をそそる触りを教え、結局何だったのかを理解できるように教えていない本も世の中にはあります。 この本では紹介した手法に関して、理解を促すために解説を行い、ソースコードも公開しています。 また、基本的なことはわかっているだろうという前提で話が進んでしまう本もありますが、この本は基礎からこの本だけで完結できるように解説がなされています。 必要なのは大学初学年程度の数学だけで、それ以上の高度な数学の知識を前提としていません。 リファレンスが充実している 本書の中で扱った内容に関して、更に詳しいことを知りたい場合に、どのような文献に当たればいいのかを明示してくれます。 レベルアップを望んでいる人にとって、この本書に留まらず、さらなる道標を記してくれるところは素晴らしいと思います。 先日深層学習に関する私が所持している書籍の紹介を行いました。 計算グラフによってネットワークの計算を扱う 以下の記事で計算グラフについて紹介しています。 計算グラフを導入すると、視覚的に計算の流れを理解することが可能です。 一度勉強したことがある人にとって、誤差逆伝搬法などの式は非常に優れた形をしていることがわかりますが、初学者にとっては添字の嵐で何が起こっているのかわかりづらいはずです。 計算グラフでは視覚的に理解することができ、何より難しい知識が必要ありません。 どのようなルールでグラフが構築されているのかを把握すればそれだけで十分です。 初めて学ぶ人にとっても十分に分かりやすい解説をしています。 中身 目次は以下となっています。 1.Python入門 Pythonの基本的な関数などの使い方を解説 2.パーセプトロン 論理回路から始まり、パーセプトロンがどのような表現力を有するかを解説 3.ニューラルネットワーク 活性化関数や順伝搬の計算の実現方法などの解説 4.ニューラルネットワークの学習 損失関数と勾配、微分の解説 5.誤差逆伝搬法 微分の連鎖律、計算グラフでの逆伝搬を解説層の実装の解説 6.学習に関するテクニック パラメータ更新の最適化法、バッチ正規化、正則化などハイパーパラメータ関連 7.畳み込みニューラルネットワーク 畳み込みニューラルネットの基本と、その実装を解説 8.ディープラーニング 近年のディープラーニングに関する話 誰におすすめできるか この本は非常に多くの人にオススメできます。 これから深層学習の勉強を始めたい人、プログラムを動かしてみて入るものの理解が伴っていないと感じる人などに最適です。 勉強をある程度進めている人にとっても、全体像を実装を通して復習する良い題材になります。 誰におすすめできないか ・すでに十分に勉強を進めており、理解も伴い、実装も自分で完全に行うことができる。 おそらく特に得ることはないでしょう。 ・よくわからなくても良いからすぐに深層学習を使いたい ライブラリに依存しない実装を通して理解を深めることが目的です。 決して世界に発信できる高性能なニューラルネットワークの構築の仕方を教えてくれるわけではありません。 ・数学的な理論面を知りたい むしろ平易に書かれており、興味を持った大学初学年程度のレベルを有するすべての人間を対象としています。 難しい理論の話は一切ないので、その面で新たな発見は得られないでしょう。 ・RNNやDBNを実装したい 今回はニューラルネットから始まり、CNNの実装まで行きます。 残念ながらRNNやDBNに関する記述はありません。 私が本を購入して 以前深層学習の書籍に観する記事 を書きながら思ったのは、理論面の関して熱心に取り組む一方で、プログラミングから入ってみようという方にとって有益な情報を提供できていないということでした。 その後私は今回紹介した「ゼロから作るDeep Learning」を購入しました。 Pythonで実装を行うという経験を通して、確かにこの本ならばこれから始める人の理解を促す内容になっているだろうと考えた次第です。 いざ始めてみると、本当に多くの人が機械学習をやっており、そしてPythonでソースコードを記述しているのがわかります。 この本に出会えたことで、本の内容の素晴らしさのみならず、新たな一歩を踏み出す後押しにもなったと思います。 s0sem0y.

次の

AIのためのPython!おすすめライブラリと勉強法を徹底紹介!

ゼロ から 作る deep learning python で 学ぶ ディープ ラーニング の 理論 と 実装

ディープラーニング(深層学習)の本格的な入門書。 外部のライブラリに頼らずに、Python 3によってゼロからディープラーニングを作ることで、ディープラーニングの原理を楽しく学べるように構成。 【「TRC MARC」の商品解説】 実際にシステムを作りながらディープラーニングを学ぶ! ディープラーニングの本格的な入門書。 外部のライブラリに頼らずに、Python 3によってゼロからディープラーニングを作ることで、ディープラーニングの原理を楽しく学びます。 ディープラーニングやニューラルネットワークの基礎だけでなく、誤差逆伝播法や畳み込みニューラルネットワークなども実装レベルで理解できます。 【商品解説】 ディープラーニングの本格的な入門書。 外部のライブラリに頼らずに、Python 3によってゼロからディープラーニングを作ることで、ディープラーニングの原理を楽しく学びます。 ディープラーニングやニューラルネットワークの基礎だけでなく、誤差逆伝播法や畳み込みニューラルネットワークなども実装レベルで理解できます。 人工知能も初めて勉強します。 この本には、人工知能の原理と、数式と、それを実現するための実際に動くコードが、書かれています。 数学の知識は高校数学までで大丈夫なようですが、数学のセンスというものが必要で、「入力する配列の次元は何を意味しているんだろう?forで何を繰り返しているんだろう?」と、理解するのに時間がかかります。 コードの説明は、ネットで調べられるグラフ描画等の一般的なコマンドについては省略されているので、Pythonが初めての場合は自分で調べる必要があります。 投稿者: げん丸 - 本書では、Pythonを使って、かなり初歩的なパーツの組み立てから始まり、最終的には深層学習を実装していく。 詳しい理論については説明が省かれているが、載っているソースコードを弄ったり実行したりしながら最後まで読むと、深層学習がどのように働いるのか分かる様になっている。 この本を読むまで、深層学習は自分が理解できる範囲からかけ離れた、魔法のような技術なのかと思っていたが、学校で習う基本的な数学の応用であるようだ。 情報系ではなくても、プログラミングを多少でもやったことがあれば理解できる内容。 深層学習に興味がある方にオススメ。 章を追って順にやっていくと、Deep Learning の実装ができるという優れもの。 仮に Python ができなくても、 コードを書くことを仕事にしている人には、 大きな壁にはならない程度に説明してくれています。 (実際に私は C が一番なので、誤差逆伝播法までは C でやったので、 理解を深めることができたと感じています。 ) 数式が出てこないわけではないですが、出てきてもわかりやすく、 基本的にはコードを書きながら、図などを使って説明してくれています。 誤差逆伝播法の計算グラフの説明などは、 イメージを把握するにはとてもわかりやすい説明だなと思いました。 とは言えどこまで行っても数学無しでは理解できないので、 基本的な行列計算と微分の知識は前提になっているかなとは思います。 そこがまだの人は、他の本で少し鳴らしてから読んだほうが入りがいい気はします。

次の

O'Reilly Japan

ゼロ から 作る deep learning python で 学ぶ ディープ ラーニング の 理論 と 実装

目的 「ゼロから作るDeep Learning -- Pythonで学ぶディープラーニングの理論と実装」 (2017年7月28日 初版第10刷発行, 発行所 株式会社オライリー・ジャパン) この書籍は、かなりいい書籍だと思います。 しばらく、手元においておきたい書籍です。 パラパラと何度か眺めていて、気づいたことなどをここに記します。 以下の項目は、少し、参考になるかも。 勾配法が最小値にならない件• ドット積とかの説明• ReLU関数• 階層構造による情報抽出 ReLU関数 いまは、SigmoidよりReLU関数を用いるほうが良いみたいです。 p53引用 シグモイド関数は、ニューラルネットワークの歴史において、古くから利用されてきましたが、最近ではReLU Rectified Linear Unit という関数が主に用いられます ドット積とかの説明 ドット積は、内積とも呼ばれます。 本書で必要なのは、乗算とドット積(内積)の2つです。 numpyの演算例を示します。 outer a,b array [[ 4, 5, 6], [ 8, 10, 12], [12, 15, 18]] 引用: ベクトル積(英語: vector product)とは、ベクトル解析において、3次元の向き付けられた内積空間において定義される、2つのベクトルから新たなベクトルを与える二項演算である。 演算の記号からクロス積(cross product)と呼ばれることもある。 2つのベクトルからスカラーを与える二項演算である内積に対して外積(がいせき)とも呼ばれるが、英語でouter productは直積を意味するので注意を要する。 誤差逆伝搬法の説明の仕方 5章の誤差逆伝搬法の最初のページ(P123 に以下の記載があります。 誤差伝搬法を正しく理解するためには、2つの方法があると、筆者は(個人的に)考えています。 ひとつは「数式」によって、もうひとつは「計算グラフ computational grapf 」によって理解するものです。 この書籍では、後者を選択しています。 後者の方法で、順序よく説明されていますが、読み手が全体をうまく把握するのが、意外と難しいです。 部分、部分は、納得できますが、全体がうまく把握できない面があります。 前者の手段での説明で、かなーりわかりやすいページ(qiita として、以下などがあります。 ご参考まで。 よく見られているようです。。。。 勾配法が最小値にならない件 4. 1 勾配法 P106 において、以下の記載があります。 勾配の方向が必ず最小値を示すとはかぎらないにせよ、その方向に進むことで関数の値を最も減らすことができます。 そのため、最小値の場所を探す問題--もしくは、できるだけ小さな値となる関数の場所を探す問題--においては、勾配の情報を手がかりに、進む方向を決めるべきでしょう。 ニューラルネットの学習において、一般的に、こんな感じで、最小値を探すことはあっさりあきらめる感じですが、 気になる方もいるかなと思い、メモしました。 大体、いつもこんな感じだと思います。 誤記かな(チャンネルの件) P241の末尾から次ページにかけて 畳み込み層のチャンネル数は、前層から順に、16、16、32、32、64 チャンネル数は、R、G、Bの3とかグレーの1とかじゃないんでしょうか?上記の値は、深さとか? 階層構造による情報抽出 「より複雑で抽象化された情報が抽出される」との説明のところで、 以下が引用されています。 Conv3:Textureという説明は、相当、違和感がある (そもそも、この表示が何をどう見える形で見える状態にしているかにもよるが。。。 ) p236の図7-26の説明として記載されている『何にニューロンが反応するか』についての説明を表にすると、 層 説明 1層目 エッジやブロブ 3層目 テクスチャ 5層目 物体のパーツ 最後の)全結合層 物体のクラス 犬や車など) となっています。 理解しようとした場合、 以下のページの内容が充実しています。 また、以下のサイトの説明が、なんとなく、納得感がある。 (出典:上記のサイト) 特に、答えはないですが、以下の記事にもう少し、何か書きました。 端的には、実際に動かしみると、なんとなく、だんだんいい気がしています。 以下の記事を別途書きました。 単に、結果を貼っただけですが。 見る価値があるかも。。。。 うまく理解できない部分 8. 3 層を深くすることのモチベーション の項のP247において、 5x5の畳み込み演算と、3x3の畳み込み層を2回繰り返した場合とを比較し、パラメータ数が25 5x5 と18 2x3x3 で 少なくなっているとの説明があります。 この表題の中でかたるほど、大きな差でない気もしました。 用語について(畳み込み) 畳み込みという用語は、よく耳にする用語ですが、 個人的には、どういうものか、正確に意識したことがありませんでした。 「畳みこむ」なので、本当に「畳む」様子をイメージしていました。 引用 正しくは、 Wikiなど参照するといいでしょう。 下記をみていて、重畳という言葉がありますが、畳むには、重ねる的な意味がありますね、 そういえば。 引用 畳み込み(たたみこみ、英: convolution)とは関数 g を平行移動しながら関数 f に重ね足し合わせる二項演算である。 畳み込み積分、合成積、重畳積分、あるいは英語に倣いコンボリューションとも呼ばれる。 用語について(inception) inceptionは、このAI以外では、馴染みのない用語でした。 意味を調べましたが、特別な意味は、見つかりませんでした。 以下の説明のように、「発端」とかの意味で、わりと、大人用の言葉という程度でした。 引用 「inception」とは、どういう意味なのでしょうか? ネイティブにとっては、「inception」は相当難しい言葉です。 「inception」という言葉の意味を知らないネイティブの高校生や中学生が多くいます。 日本語では「始まり」、「開始」、「発端」という意味になります。 英語では「beginning」、「start」、「genesis」という言葉が意味的に「inception」に近いですが、「inception」は日常英語ではそれほど使われていません。 まとめ この書籍は、気に入っています。 関連(本人) 今後 また、何か関連する検討ができれば。 コメントなどあれば、お願いします。

次の