オライリー・ジャパンから出版されている「ゼロから作るDeepLearning」の読書会をやっています。 https://deeplearning-yokohama.connpass.com/
先日、5章までが終わりました。 自分の復習を兼ねて、5章までのざっくりとした内容をスライドにまとめました。
DeepLearningが分かった気になる「ゼロから作るDeepLearning」ざっくりまとめたのっち @dproject212017.1.17 ゆるプレ #12
View Slide
この本のざっくりまとめです• 「ゼロから作るDeepLearning」斎藤 康毅 著オライリー・ジャパンより2016年9⽉ 発⾏https://www.oreilly.co.jp/books/9784873117584/• 公式サポートページhttps://github.com/oreilly-japan/deep-learning-from-scratch• 読書会やってます。(5章まで終わりましたので、そこまでのまとめです)https://deeplearning-yokohama.connpass.com/
ディープラーニングって何ぞ?• ディープラーニング層を深くしたディープなニューラルネットワーク• ニューラルネットワーク「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数などの滑らかな活性化関数を使⽤するネットワーク• パーセプトロン(単純パーセプトロン)複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するもの。
まずはパーセプトロンから…• パーセプトロンは、複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒します。電流が導線を流れ、電⼦を先に送り出すように、パーセプトロンの信号も流れを作り、情報を先へと伝達していきます。ただし、実際の電流とは違い、 パーセプトロンの信号は「流す/流さない(1 か 0)」の⼆値の値です。• 例えていうならば、”論理回路”みたいなもの。
パーセプトロンとは⼊⼒信号 に、重みづけ を掛けた値の総和が ≦ のとき0 > のとき1を出⼒する。+,+,出⼒信号⼊⼒信号 重みノード++,,こういうやつ。
パーセプトロンとは+,+,出⼒信号⼊⼒信号 重みノード++,,+,0 0 11 0 10 1 11 1 0 = .0 (−0.5++ −0.5,≦ −0.7)1 (−0.5++ −0.5,> −0.7)NANDの真理値表パラメータを当てはめると…パラメータの与え⽅次第でいろいろな論理回路を作れる。
パーセプトロンとは+,+,出⼒信号⼊⼒信号 重みノード++,, = .0 ( + +++ ,,≦ 0)1 ( + +++ ,,> 0)バイアスを使うと、 出⼒信号が1を出⼒する度合い(ニューロンの発⽕のしやすさ)が調整できる。パーセプトロンは重みとバイアス次第で、特性を変えることができる。バイアス
パーセプトロンとは+,+,出⼒信号⼊⼒信号 重みノード++,,バイアス 出⼒0出⼒11110線形なものは実現できる。…が、
パーセプトロンとは+,+,出⼒信号⼊⼒信号 重みノード++,,バイアス 出⼒0出⼒11100⾮線形なものは実現できない…では、どうするか。
パーセプトロンとは+,第2層第0層 第1層ノード+,+,0 0 1 0 01 0 1 1 10 1 1 1 11 1 0 1 0パーセプトロンを多層にしてあげればいい。+,XORの真理値表
ディープラーニングって何ぞ?• ディープラーニング層を深くしたディープなニューラルネットワーク• ニューラルネットワーク「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数などの滑らかな活性化関数を使⽤するネットワーク• パーセプトロン(単純パーセプトロン)複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するもの。パーセプトロンは、これでいいね。では、ニューラルネットワークはどうなの?
ディープラーニングって何ぞ?• ディープラーニング層を深くしたディープなニューラルネットワーク• ニューラルネットワーク「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数などの滑らかな活性化関数を使⽤するネットワーク• パーセプトロン(単純パーセプトロン)複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するもの。シグモイド関数?活性化関数?
ニューラルネットワークとは+,+,出⼒信号⼊⼒信号 重みノード++,,パーセプトロンのパラメータを決めているのは⼈間。機械学習の問題では、このパラメータの値を決める作業をコンピュータに⾃動で⾏わせる。そこで、ニューラルネットワークが出てくる。
ニューラルネットワークとは出⼒層⼊⼒層 中間層(隠れ層) こういうやつ。⾒た⽬はパーセプトロンとあまり変わらない。信号の伝達⽅法が違う。
ニューラルネットワークとは+,+, 1先ほどのパーセプトロン。 ≦ のとき0 > のとき1としていたが、ここが変わる。
ニューラルネットワークとは+,+, 1を出⼒するための関数をℎ()とします。これを活性化関数と呼びます。ℎ( )
ニューラルネットワークとは+,+, 1ℎ( ) ≦ のとき0 > のとき1これがステップ関数。これが別の関数に置き換わる。
ニューラルネットワークとは+,+, 1ℎ( )ℎ =11 + exp (−)というシグモイド関数や
ニューラルネットワークとは+,+, 1ℎ( )ℎ = . ( > 0)0 ( ≦ 0)というReLU関数を使います
ニューラルネットワークとは+,+, 1ℎ( )例えば、こういう⼿書き⽂字が⼊⼒信号として⼊ります。28×28ピクセルの画像から数字を判定するので…784画素を⾏列として計算し、10種の数字を判定します。
ニューラルネットワークとは+,+, 1活性化関数は、こうした⼊⼒信号から特徴抽出を⾏うために、中間層で⽤います。ℎ( )
ニューラルネットワークとは出⼒層⼊⼒層 中間層(隠れ層)…では、出⼒層は?別の関数で計算をします。
ニューラルネットワークとは,?+出⼒層では⼊⼒をそのまま出⼒する「恒等関数」あるいは、+,?( )( )( )
ニューラルネットワークとは,?+ソフトマックス関数A=exp (A)∑ exp (C)DCE+を使います。+,?( )
ニューラルネットワークとは,?+恒等関数は、隠れ層の出⼒から結果を1つ選ぶ場合に使います。ソフトマックス関数は、隠れ層の出⼒から、確率を求める場合に使います。+,?( )
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層)機械学習の問題では、パラメータの値を決める作業をコンピュータに⾃動で⾏わせる。この作業の精度を⾼める必要がある。どうすればよいか…
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層)性能の悪さを「損失関数」で求めて、この値を⼩さくしていく。ミニバッチ学習で、全データからサンプルを抜き出し、近似としての「損失関数」を求める。「勾配」を計算して、重み付けを変える。上記を繰り返す。
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層)損失関数 : 教師データに対して、現在のニューラルネットワークがどれだけ適合していないか。という指標を求める。値が⼩さいほうが良い。計算⽅法には「⼆乗和誤差」と「交差エントロピー誤差」が良く⽤いられる。
ニューラルネットワークとは,+++,⼆乗和誤差(mean squared error)ニューラルネットワークの出⼒ Aと正解となる教師データ Aの各要素の差の 2 乗を計算し、その総和を求める。 =12J(A− A),A教師データ Aは正解を1、不正解を0として扱う。(one-hot表現),
ニューラルネットワークとは,+++,,交差エントロピー誤差(cross entropy error)正解となる教師データ Aに対する、ニューラルネットワークの出⼒ Aの⾃然対数を計算する。 = − J AAlog A教師データ Aは正解を1、不正解を0として扱う。(one-hot表現)
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層)ミニバッチ学習 : 全データを使って損失関数を求めるには時間がかかる。そこで、全データの⼀部をサンプルとして抜き出して全データの近似として扱い、損失関数を計算する。例えば、こういう⼿書き⽂字6万個のデータから100個をサンプルとする。という具合。
ニューラルネットワークとは+,+, 1ℎ( )勾配 : すべての変数の偏微分をベクトルでまとめたもの。ニューラルネットワークでは、損失関数の値ができるかぎり⼩さくなるベクトルを、勾配降下法を⽤いて求め、重み付けを更新する。A= A− A学習率 の値は0.01など事前に決めておく。この学習率の値を変更しながら、正しく学習できているか確認していく。
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層) 性能の悪さを「損失関数」で求めて、この値を⼩さくしていく。ミニバッチ学習で、全データから近似を求める。「勾配」を計算して、重み付けを変える。→ここで誤差逆伝播法というものを⽤いる。上記を繰り返す。
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層) 誤差逆伝播法 : 重みパラメータに関する損失関数の勾配を効率良く求めるための⽅法何をやっているのか…
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層) 誤差逆伝播法 : 各ノードの微分に後段ノードの信号を乗算し、前段ノードに伝達させる。
ニューラルネットワークとは,+++,,交差エントロピー誤差の偏微分−AA−AA −1 1
ニューラルネットワークとは,?+ソフトマックス関数の偏微分A− A+,?( )−AAA− A
ニューラルネットワークとは+,+, 1ℎ( )シグモイド関数の偏微分(1 − )A− A(A− A)(1 − )
ニューラルネットワークとは+,+, 1ℎ( )ReLU関数の偏微分= .1 ( > 0)0 ( ≦ 0)A− A= .A− A( > 0)0 ( ≦ 0)
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層)性能の悪さを「損失関数」で求めて、この値を⼩さくしていく。ミニバッチ学習で、全データから近似を求める。誤差逆伝播法で「勾配」を計算して、重み付けを変える。上記を繰り返す。
ニューラルネットワークでの学習出⼒層⼊⼒層 中間層(隠れ層) ここまでが、読書会でとりあげた5章までの範囲。6章では「学習に関するテクニック」7章では画像の特徴抽出を⾏う「畳み込みニューラルネットワーク」8章で、ようやく「ディープラーニング」を取り上げます。
ディープラーニングって何ぞ?• ディープラーニング層を深くしたディープなニューラルネットワーク• ニューラルネットワーク「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数などの滑らかな活性化関数を使⽤するネットワーク• パーセプトロン(単純パーセプトロン)複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するもの。次回はニューラルネットワークからディープラーニングに⾄るまでを取り上げたいな。