狠狠撸
Submit Search
がんばろう!はじめての顿苍苍!
?
7 likes
?
4,785 views
S
Shushi Namba
Follow
贬颈箩颈测补尘补.搁(5/28)にて発表したスライドです。
Read less
Read more
1 of 52
Download now
Downloaded 17 times
More Related Content
がんばろう!はじめての顿苍苍!
1.
はじめてのDNN 文系でもニューラル ネットワークがしたい! ???したくない? 難波 修史
2.
自己紹介 ?難波 修史(なんば しゅうし) ?広島大学大学院教育学研究科D1 ?感情表情の表出?認知の研究してます。 ?R歴:ちょこちょこ ?twitter:@NSushi
3.
2012年のBig News ? DNNによってコンピュータが猫を認識で きるようになった!! ?
すごい ? 実際の研究論文 ↓ http://static.googleusercontent.com/external_content/untr usted_dlcp/research.google.com/en//archive/unsupervised _icml2012.pdf
4.
どうやったの? ? これは機械学習の一種であるDeep Neural Network
(以下DNN) ってやつの仕業なんだ! ※機械学習?=データの蓄積によって ルールを獲得するアルゴリズム。 詳しくはググるのが一番いい ? 2012年の画像認識テストに おいて従来のComputer Vision (CV) 手法の成績を大きく上回 ったことで一躍有名に。
5.
しったときのわたし
6.
しかし最新の 表情研究は… わけわかんなさすぎて 瞳の輝きを失う発表者
7.
もちろん表情だけではない ? あらゆる分野でDNNの話は出てくる ? 画像処理,自然言語処理,人工知能,音声認識 など分野の枚挙には暇がなく,当然ビジネスで も応用されており適用場面はどんどん広がって きている。
8.
そこで! ?本発表の目的:一緒にDNNの核とな る概念や要素を学び,Rを用いて実 装することで少しでもDNNと仲良く なることを目指しましょう! ※わけわかんなすぎてDNNを もっと嫌いになっても発表 者は責任をとれません。
9.
まずDNNってなんだ? ? 事前にうまく特徴を抽出してくれる教師無 しニューラルネットワークをたくさんつな げて多層にしたもの(≒Deep Learningと も表現される) ?
人の神経を模したネットワーク構造をいく つも重ねて構築した「機械が物事を理解す るための学習方法」と理解してください。 (図は後で
10.
いまじん ? 一つのニューラル ? 右図上:人の神経細胞 ?
右図下:DNN内の一要素 ? 右図下のやつらを多層にしたもの=DNN
11.
DNNを理解するぞー。 ? 未経験のユーザー(我々…少なくとも私)にとって, DNNによる処理や結果は理解がしにくい。 ? 今回はメカニズムや処理の観点から理解するため, ネットワークの作成をRを通してしっかり実践して みる。 ?
既存のDNNパッケージさえあれば分析自体は可能 → しかしあえて各層の結果 (訓練による重みづ けの変化など) を可視化することで理解して いこう。 (Rの偏った知識もつくぞ!多分!
12.
基本の概念と要素 ? この右図はFully connected neural networkというも のであり,いわ ゆるDNNである。 ?
隣接するネット ワーク内の層 ( ) で完全にお互いを つないでいる。
13.
典型的なネットワーク ? もっとも単純かつ典型的なネットワークは ? 1つの入力層 ?
2つの隠れ層(間の層) ? 1つの出力層 からできている。 ? ネットワークの構造というものは層の数,ニュー ロンの数,活性化?損失関数の種類,正則化(過 学習防いだりする追加の項)などをさす。
14.
重みづけとバイアス ? 先ほどのDNN構造には3種類の重みづけポイント が存在する=入力→隠れ1;隠れ1→隠れ2;隠れ2→出力 ? バイアスは入力以外の隠れ ノード及び出力とつながっ ている(右図の黒い●) ?
今回は重みづけとバイアスは行列で示す。 ? 初期値=正規分布からの乱数(初期値に関して: http://cs231n.github.io/neural-networks-2/#init)
15.
重みづけとバイアスのR code ? Weight
<- 0.01*matrix (rnorm(入力特徴のニュー ロン数*隠れ層の数), nrow = 入力特徴のニュー ロン数, ncol = 隠れ層内のニューロン数) ? #1次元行列で0とする。 ? Bias <- matrix(0, nrow = 1, ncol = 隠れ層内の ニューロン数)
16.
ニューロン:Neuron 一つ一つのニューロンは線形回帰と同じように重 みと入力を掛け合わして足していき,結果は活性 化関数に渡される。 よく知られる活性化関数は sigmoid, Relu, Tanh,
Maxout などだが,今回はrectified Linear unit (ReLu:f(x) = max(0, x))を用いる。 ※他の活性化関数:http://cs231n.github.io/neural-networks-1/#actfun 入力 重み 活性化 関数 バイアス
17.
ReLu? ? f(x) =
max(0, x) x > 0の時は f(x) = x x ≦ 0の時はf(x) = 0となる ? 以上! ? 詳しくは:http://en.wikipedia.org/wiki/Rectifier_(neural_networks)
18.
活性化関数含むニューロンの イメージ ? ニューラルネットを構成するニューロンは,1 つ1つがある活性化関数を持つ。 ? 各ニューロンが持つ活性化関数は“パラメータ” が少しずつ違い,同じ形ではない。 ?
重みつきのノードでニューロン同士をつなぎ合 わせることで,複雑な関数を表現 参照: http://vaaaaaanquish.hatenablog. com/entry/2015/01/26/060622
19.
ニューロンのR code ? #
やりたいこと neuron <- max(0, input %*% weight + bias) ? # 入力特徴_dimenstion: 2x2 ? input <- matrix(1:4, nrow=2, ncol=2) ? # 重みづけ_dimenstion: 2x3 ? weights <- matrix(1:6, nrow=2, ncol=3) ? # バイアス_dimenstion: 1x3 ? bias <- matrix(1:3, nrow=1, ncol=3)
20.
実装にむけたTips.1 ? # 行列の積?和に関して※%*%は行列の積 ?
# 次元の異なるinput %*% weightsとbiasは直接足 し合わせれないため,sweep()を用いる。 ? input %*% weights + bias #まわらない ? s1 <- sweep(input %*% weights, 2, bias, `+`) ? sweep()がHelp見てもよくわからんって人に: http://entertainment-lab.blogspot.jp/2009/10/sweep.html
21.
実装にむけたTips.2 ? # 行列内の要素ごとの最大値に関して ?
print(s1) #もちろんprint()なくてもよい ? max(0, s1) #max()は最大値を返す ? # 行列構造なくして,s1内の最大値を並べる ? pmax(0, s1) ? #1つ目の引数にぶち込むと行列に戻す ? pmax(s1, 0)
22.
層:Layer ? 入力層:入力層は基本的に1層に固定されており, 入力データの特徴数と同じ単位になる。 ? 隠れ層:DNNの中で主要かつ多様性のある要素。 ?
一般的にはより複雑な問題 (非線形) に関してはよ り多くの隠れ層が必要となる。 ? 出力層:回帰においては恣意的な実数値(一つの 出力ノード),分類においては特定のクラスを示 す(予測カテゴリー数と同数のノード)。
23.
つくってあそぼう! ? 今まで:DNNの基本的概念の紹介 ? 次からはネットワークの基本構造,トレーニン グネットワークを含むNNを作って,学習させた 後に新データに関する予測を行ってみよう。 ?
以降ではみんな大好き滨谤颈蝉たんを使っていきます。
24.
まずデータを知ろう(irisたんとは?) ? アヤメ(お花さんです)の計測データです。 ? summary()
でみてみましょう
25.
ネットワークの基本構造 ? 4つの特徴 (入力)
+3つの分類カテゴリー (出力) があ るようだ。そこで以下のDNN構造が考えられる。
26.
予測:Prediction ? 予測 (classification
/ inferenceと呼ばれることも ある) はトレーニング (後に紹介) と比べると簡潔 なものである。 ? 出力層では活性化関数は必要ない。分類では確 率がsoftmaxによって計算され,回帰では出力が 予測の実数値によって示される。 ? このプロセスはfeed forward / feed propagation とも呼ばれる。
27.
予測:R code
28.
訓練:Training ? 分類誤差?残差を最小化するプロセス。ネットワー ク構造下の最適パラメータ (重みづけ+バイアス)
を 探索する。 ? 2種類のプロセス:Feed forward & back propagation ? Feed-forward:(予測の時と同じように) 入力データ からネットワークを経由して損失関数によって出力 層におけるデータの損失 (予測ラベルと真のラベルと の不一致度) を計算する。 ※損失関数=推定の悪さを定義した関数 ? 今回はsoftmax分類機で使用される交差エントロピー 関数を利用:http://cs231n.github.io/neural-networks-2/#losses参照
29.
訓練.2 ? データの損失 (予測ラベルと真のラベルとの不一致度) を得た後,重みづけとバイアスを変更することによっ てそれらを最小化する必要がある。 ?
back-propagation:各パラメータ (重みづけとバイア ス) に関するデータの損失の導函数を求める勾配降下 や確率的勾配降下法によってすべての層やニューロン に誤差逆伝播 (back-propagation) を行う。 ? ※誤差逆伝播は各活性化関数により異なる。以下を参 照:http://mochajl.readthedocs.io/en/latest/user-guide/neuron.html さらに詳細:http://cs231n.github.io/neural-networks-3/
30.
すごい適当な訓練のイメージ feed-forward back-propagation data loss
31.
※注意!! こっからアホみたいに長いです。 余裕があるときにじっくり見て いただければと思います。
32.
トレーニング:R code (引数設定)
33.
トレーニング:R code (引数データからの入力)
34.
トレーニング:R code (modelの設定:初期値など)
35.
トレーニング:R code (モデルの各パラメータ)
36.
トレーニング:R code (訓練の中枢)
37.
トレーニング:R code (可視化用)
38.
トレーニング:R code (逆向きの計算)
39.
トレーニング:R code (更新)
40.
トレーニング:R code (仕上げ)
41.
よしやってみよう ? これでDNNに必要な予測と訓練に関する関数 が完成した。 → 早速性能を試してみよう!
42.
set.seed() 乱数を設定: 結果を再現させる関数
43.
トレーニングだ! 左の値は損失=低いほどいい 右の値は正確性=高いほどいい iterationが増えるほどいい感じに なっていっているのがわかる。 ちなみにtrain.dnnの引数のx=入力の数,y=irisデータのラベルの列を指定しているよ
44.
結果の確認 setosa は満点 他もほぼあってる(すごい 値
45.
可视化:损失と正确性
46.
まとめ ? 今回はDNNの主要な概念や要素の説明を行い, Rによるニューラルネットワークの実装も示しま した。 ? Irisデータをかなり正確に分類するNetworkも作 れました。これをきっかけにどんどんDNNの勉 強をすすめていくと楽しいと思います。 ?
ご指摘?ご意見ございましたらお手数ですが是 非@Nsushi ( twitter) までご連絡ください
47.
おまけ ? 「Neural network
browser」でググるか ? ↓にいくと ? http://playground.tensorflow.org/#activation=tanh&batchSize=10&dataset=circle®D ataset=reg- plane&learningRate=0.03®ularizationRate=0&noise=0&networkShape=4,2&seed=0. 76541&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTime sY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=fa lse&collectStats=false&problem=classification&initZero=false ? GUI(ボタンポチポチ操作)で簡単かつ視覚 的にNeural networkを楽しめるぞ!!
48.
画面(学习前
49.
画面(学习后
50.
おまけのまとめ ? すんごい簡単にブラウザ上でDNNができる。 ? まずはこれで色々遊んでみてもDNNと仲良くな れると思います。 もちろんRたんとも 仲良くしてね! ※発表者はRのこと を右図のようにイメ ―ジして日々楽しく勉強しています。
51.
参考文献 ? 今回の内容は基本的にここを死ぬほど参考にし てます。 http://www.r-bloggers.com/r-for-deep-learning- i-build-fully-connected-neural-network-from- scratch/ ? ちなみにCodeは以下にあります。 http://www.parallelr.com/materials/2_DNN/iris_d nn.R
52.
参考文献 Deep Learningの基礎: http://www.slideshare.net/kazoo04/deep-learning- 15097274 http://www.slideshare.net/pfi/deep-learning- 22350063 http://stonewashersjournal.com/2015/03/05/deeple arning1/ 活性化関数に関して: http://wpedia.goo.ne.jp/wiki/%E6%B4%BB%E6%80 %A7%E5%8C%96%E9%96%A2%E6%95%B0 http://sleepy- programmer.blogspot.jp/2015/02/2.html
Download