2017年07月15日

タグチメソッドの手法とディープラーニングの手法があまりにもよく似ているのでタグチメソッドの学習も始めます!

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

ディープラーニングの本を拾い読みしていると、以前一度学習したタグチメソッドとあまりにも似ているので、本ブログでタグチメソッドの学習もやります。

そうして両者に関連があるのかどうか探っていこうと思います。

では。

posted by tsurutsuru at 03:18| Comment(0) | 日常茶飯事

「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」の拾い読み(3)

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

前回の続きです。

その前に「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」の構成を再確認します。

1章 Python入門
2章 パーセプトロン
3章 ニューラルネットワーク
4章 ニューラルネットワークの学習
5章 誤差逆伝播法
6章 学習に関するテクニック
7章 畳み込みニューラルネットワーク
8章 ディープラーニング
付録A Softmax-with-Loss レイヤの計算グラフ
参考文献

それで各章の一番最後にある「本章で学んだこと」を原文のまま紹介していました。続きは4章からです。

4章 ニューラルネットワークの学習
・機械学習で使用するデータセットは、訓練データとテストデータに分けて使用する。
・訓練データで学習を行い、学習したモデルの汎化能力をテストデータで評価する。
・ニューラルネットワークの学習は、損失関数を指標として、損失関数の値が小さくなるように、重みパラメータを更新する。
・重みパラメータを更新する際には、重みパラメータの勾配を利用して、勾配方向に重みの値を更新する作業を繰り返す。
・微小な値を与えたときの差分によって微分を求めることを数値微分と言う。
・数値微分によって、重みパラメータの勾配を求めることができる。
・数値微分による計算には時間がかかるが、その実装は簡単である。一方、次章で実装するやや複雑な誤差逆伝播法は、高速に勾配を求めることができる。

【ツルツルの寸評】なんと数値微分はつい最近このブログで紹介した統計学のいろいろな分布のグラフを描くときに利用しています。面白いもので知らぬまにディープラーニングの学習もしていたのですね。

5章 誤差逆伝播法
・計算グラフを用いれば、計算過程を視覚的に把握することができる。
・計算グラフのノードは局所的な計算によって構成される。局所的な計算が全体の計算を構成する。
・計算グラフの順伝播は、通常の計算を行う。一方、計算グラフの逆伝播によって、各ノードの微分を求めることができる。
・ニューラルネットワークの構成要素をレイヤとして実装することで、勾配の計算を効率的に求めることができる(誤差逆伝播法)。
・数値微分と誤差逆伝播法の結果を比較することで、誤差逆伝播法の実装に誤りがないことを確認できる(勾配確認)。

(続きは次回へ)




posted by tsurutsuru at 02:25| Comment(0) | 日常茶飯事

2017年07月14日

当分の間、このブログは学習モードになります

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

このブログは当分の間、学習ブログとなります。主な内容は次のようになると思います。
・ニューラルネットワークとディープラーニング
・タグチメソッドとその実践例
・Pythonによるデータ分析
・Pythonから始める数学入門
・Z80マイコン応用システム入門(ソフト編)
・統計学の続き
・群論とその応用
・ガロア理論

私は6年前くらいにタグチメソッドを知り、以後ずっと強い関心を持っていましたが、このたびニューラルネットワークやディープラーニングの学習を始めるに当たり、ニューラルネットワークやディープラーニングがタウチメソッドと深い関係があるのではと思うようになりました。

そこでこれらを学習することで両者の関係を確認してみたいと思います。

当分、このブログは学習モードになりそうです。

では。

posted by tsurutsuru at 10:46| Comment(0) | 日常茶飯事

「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」の拾い読み(2)

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

前回の続きです。

その前に「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」の構成を再確認します。

1章 Python入門
2章 パーセプトロン
3章 ニューラルネットワーク
4章 ニューラルネットワークの学習
5章 誤差逆伝播法
6章 学習に関するテクニック
7章 畳み込みニューラルネットワーク
8章 ディープラーニング
付録A Softmax-with-Loss レイヤの計算グラフ
参考文献

それで各章の一番最後にある「本章で学んだこと」を原文のまま紹介していました。続きは2章からです。

2章 パーセプトロン
・パーセプトロンは入出力を備えたアルゴリズムである。ある入力を与えたら、決まった値が出力される。
・パーセプトロンでは、「重み」と「バイアス」をパラメータとして設定する。
・パーセプトロンを用いれば、ANDやORゲートなどの論理回路を表現できる。
・XORゲートは単層のパーセプトロンでは表現できない。
・2層のパーセプトロンを用いれば、XORゲートが表現することができる。
・単層のパーセプトロンは線形領域だけしか表現できないのに対して、多層のパーセプトロンは非線形領域を表現することができる。
・多層のパーセプトロンは、(理論上)コンピュータを表現できる。

【ツルツルの寸評】
いきなりパーセプトロン(perceptron)が出てきて戸惑いますが、その理由が章のはじめに説明されています。

(以下P21の原文)
 本書では、パーセプトロン(perceptron)というアルゴリズムについて説明します。パーセプトロンは、ローゼンブラットというアメリカの研究者によって1957年に考案されたアルゴリズムです。この昔からあるアルゴリズムをなぜ今さら学ぶのかというと、パーセプトロンはニューラルネットワーク(ディープラーニング)の起源となるアルゴリズムでもあるからです。そのため、パーセプトロンの仕組みを学ぶことは、ニューラルネットワークやディープラーニングへと進む上で重要な考え方を学ぶことにもなります。
 本章では、パーセプトロンについて説明し、パーセプトロンを使って簡単な問題を解いていきます。その過程を通して、パーセプトロンに親しんでもらいます。
(原文終わり)

どうもパーセプトロンは電子回路を記述するために登場したものと思われますね。それが、ニューラルネットワークへと繋がったのですね。
パーセプトロンでは、「重み」と「バイアス」というパラメータの設定と多層の場合が重要だと推測されます。そして、適切なパラメータの値をコンピュータに決めさせることが学習だということです。人間は、その作業のモデルを決めて学習データを機械(コンピュータ)に与えるということです。

3章 ニューラルネットワーク
・ニューラルネットワークでは、活性化関数としてシグモイド関数やReLU関数のような滑らかに変化する関数を利用する。
・NumPyの多次元配列をうまく使うことで、ニューラルネットワークを効率よく実装することができる。
・機械学習の問題は、回帰問題と分類問題に大別できる。
・出力層で利用する活性化関数は、回帰関数では恒等関数、分類問題ではソフトマックス関数を一般的に利用する。
・分類問題では、出力層のニューロンの数を分類するクラス数に設定する。
・入力データのまとまりをバッチと言い、バッチ単位で推論処理を行うことで、計算を高速に行うことができる。


だんだんと面白くなって来ましたが、続きは次回に。


posted by tsurutsuru at 09:43| Comment(0) | 日常茶飯事

2017年07月13日

「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」の拾い読み(1)

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」を購入したので、自分が理解できる範囲でDeep Learningを解説しようと思いましたが、私の頭脳では無理だと分かったので、方針を変えて拾い読みにします。

自分の関心があったところを紹介することにします。

私の貧弱な頭脳で理解できた範囲でコメントを付けていきます。もちろん、間違ったコメントもすると思うのでそれは読む方が判断してください。

では、1回目を始めます。

まず、「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 」の構成を紹介します。

1章 Python入門
2章 パーセプトロン
3章 ニューラルネットワーク
4章 ニューラルネットワークの学習
5章 誤差逆伝播法
6章 学習に関するテクニック
7章 畳み込みニューラルネットワーク
8章 ディープラーニング
付録A Softmax-with-Loss レイヤの計算グラフ
参考文献

8章と付録と参考文献となっています。

各章には最後に本章で学んだことというのがあり、これを読むだけでも参考になるので原文のまま紹介します。

<各賞の「本章で学んだこと」>
1章 Python入門
・Pythonはシンプルで覚えやすいプログラミング言語である。
・Pythonはオープンソースで自由に使うことができる。
・本書のディープラーニングの実装ではPython3系を利用する。
・外部ライブラリとしてNumPyとMatplotlibを利用する。
・Pythonの実行モードには「インタープリタ」と「スクリプトファイル」の2つのモードがある。
・Pythonでは関数やクラスといったモジュールとして実装をまとめることができる。
・NumPyには多次元配列を操作するための便利なメソッドが数多くある。

【ツルツルの寸評】これだけでもプログラミングの経験者ならPythonとはどのようなプログラミング言語かすぐイメージできますね。

(続きは次回に)
posted by tsurutsuru at 19:47| Comment(0) | 日常茶飯事

2017年07月11日

ディープラーニング、深層学習(英: deep learning)を学習するにはお金がかかることが判明

storage.mantan-web.jp_images_2017_05_21_20170521dog00m200017000c_001_size8.jpg

私はこの歳なので今更「ディープラーニング、深層学習(英: deep learning)」を学習したところでメリットはほとんどなく趣味でやるしかありません。

しかし、若い方にはもしも「ディープラーニング、深層学習(英: deep learning)」に深い理解があるようなら仕事を得るときに有利に働くでしょう。就職のときに有利になるでしょう。

それで関心が高いのですが、私は前述のように関心はありますが、今更お金と時間を費やして学習したとしても新しく仕事が貰えるとは思えませんので、学習意欲はそれほど強くありません。

それでも、ちらほら関連するサイトを読んでみると、その学習にはかなりの出費が必要だと知りました。

どうも普通のPCでは学習は無理のようです。CPUでは無理なのです。

次のサイトでは、「基本的にはそこそこのnVidia GPUを調達した方がよいです。」とあります。
http://qiita.com/YusukeSuzuki@github/items/f3840a4ae2fd537b71c5

クラウドでやろうとすると高額な時間貸しになります。年額でも100万円はします。

これは学習に相当な出費が必要です。

これでは、本格的に学習するのは難しいですね。

現実的には企業に就職してそこで学習するしか今のところ難しいでしょうね。

まだまだディープラーニングは世の中に浸透していないので、今の段階で企業に就職せずに学ぶのはかなり大変だと思います。

10年後にはかなり環境も変わっているでしょうが、今はまだまだ学習するのに大きな壁があるようです。

posted by tsurutsuru at 11:47| Comment(0) | 日常茶飯事