SlideShare une entreprise Scribd logo
1  sur  187
Agenda
 脳とニューロン
 脳研究の取り組み
 ニューロンの働き
 ニューラル・ネットワークとその表現(1)
 一つのニューロンの動きを考える
 一つのニューロンの内部の状態の表現
 複数のニューロンからなる一つの層の内部の状態の表現
 式は便利だ! Y = W・X + b が表すもの
 ニューラル・ネットワークとその表現(2)
 ニューロンを動かす -- 活性化関数 (Activator)
 クラス分けのActivator -- SoftMax
 ニューラル・ネットワークのパラメーターの最適化
 ニューラル・ネットワークで数値予測(線形回帰)
 損失関数 Loss Function
 勾配降下法 Gradient Descent
 クラス分けの場合の損失関数 クロス・エントロピー
 TensorFlow:ニューラル・ネットワークをグラフで表現する
 複数のニューロンからなる一つの層をグラフで表す
 複数の層からなるニューラル・ネットワークをグラフで表す
 グラフを流れる量 -- テンソル
 TensorFlow プログラミング
 TensorFlowでグラフを定義する
 TensorFlowの変数定義
 訓練: パラメーターを最適化をする
 TensorFlowプログラムサンプル
はじめに
 本講演は、ニューラル・ネットワークとTensorFlowを初め
て学ぶ人のための入門講座である。最小限の前提知識で、
ニューラル・ネットワークの基本が理解できるように努めた。
 ニューラル・ネットワークはコンピューター上で実装されて
初めて意味を持つのだが、本講演は、TensorFlowでの
実装を、意識したものになっている。
 今回は取り上げられなかった、Convolutional Neural
Networkや、Recurrent Neural Networkについては、
今後の、「CNNとTensorFlow」「RNN/LSTMと
TensorFlow」といった講演で補いたいと考えている。
この講演が扱う範囲
脳とニューロン
 脳研究の取り組み
 ニューロンの働き
脳研究の取り組み
現在は、それぞれ異なった道を歩いているのだが、
ニューラル・ネットワークの研究と脳研究とは、「人
間の知能」の解明という共通の目標で結ばれてい
る。ここでは、脳研究のいくつかの取り組みを紹介
する。
Blue Brain Project
Henry Markram
 “I wanted to model the brain because
we didn’t understand it.”
 “The best way to figure out how
something works is to try to build it
from scratch.”
in vivo
in vitro
in silico
http://seedmagazine.com/content/article/out_of_the_blue/P1/
ネズミの脳
http://seedmagazine.com/content/article/out_of_the_blue/P1/
EU Human Brain Project
2013年10月 10年間で総額約12億ユーロ
EU Human Brain Project
ビジョン
 人間の脳を理解することは、21世紀の科学が
直面している最も偉大な挑戦の一つである。
もしも、我々が、それに対して立ちあがること
が出来るならば、我々は、我々を人間にして
いるものが何であるかについて深い洞察を得
て、革命的なコンピュータ技術を構築し、脳の
異常に対して新しい治療法を開発出来るだろ
う。今日、初めて、現代のICT技術が、こうした
目標を到達可能なものにしている。
EU Human Brain Project
批判 ECへの公開質問状
脳研究をめぐる「対立」の構図
認知科学 vs 脳科学、トップダウン vs ボトムアップ
 発端は、次年度のプロジェクトの予算配分で、認知科学的
なアプローチの予算が、ばっさりと切られたことにあるらし
い。それに反発した研究者のグループが、150名の連名
で、欧州委員会に公開質問状を提出した。
 対立の根底にあるのは、脳研究でのアプローチの違い。
Henry Markramら主流派は、ニューロンとシナプスの数
学的モデルに基づいて脳全体のモデルをボトムアップに
作り上げようというアプローチ。 一方、反対派は、脳研究
には、認知科学の知見に基づいたトップダウンのリバー
ス・エンジニア的なアプローチが必要だという。
 「鳥の羽の全てをシミュレーションしたとしても、鳥が空を
飛べることを解明出来ないのと同じことだ」
NIH
Human Connectome Project
http://www.nih.gov/news/health/sep2010/nimh-15.htm
2010年10月 40億円の賞金
NIH
Human Connectome Project
http://www.humanconnectomeproject.org/
US BRAIN Initiative NIHのも
とで、12年間で4,500億円投資する
2014/06/05 http://1.usa.gov/1pIIhvx
ニューロンの働き
脳の働きも、最終的には、脳を構成する無数のニュー
ロンの働きに帰着する。
コンピューター上のニューラル・ネットワークを構成す
る個々の「ニューロン」の動作原理は、生体のニュー
ロンの働きをシミレートしたものである。
脳のニューロンの
コンピュータ・グラフィックス
脳は、1mm立方に
5万個のニューロンを含み、
一つのニューロンは
6千個のシナプスをもつ。
大脳新皮質には、
100億のニューロンと
60兆個のシナプスがある!
http://www.tmd.ac.jp/artsci/biol/textlife/neuron.htm
クラゲだって神経はある
「神経系の起源と進化」
http://bit.ly/1qR2Dmq
http://goo.gl/0lbzRg
線虫のC. Eleganceは、すべての神経の
接続がわかっている唯一の生物である。
302の神経と8,000のシナプスがある。
1987年
60年代から70年代にかけての、Hubel と Wieselの
大脳視覚野の研究は、各方面に大きな影響を与えた。
ニューラル・ネットワークの最初の研究も、こうした影響の
もとで始まった。
David H. Hubel
Torsten Wiesel
1960年代
ヘッブの法則
Donald O. Hebb
 ヘッブの法則(ヘッブのほうそく)は、脳のシナプス可塑性
についての法則である。ヘッブ則、ヘブ則とも呼ばれる。
心理学者のドナルド・ヘッブによって提唱された。ニューロ
ン間の接合部であるシナプスにおいて、シナプス前ニュー
ロンの繰り返し発火によってシナプス後ニューロンに発火
が起こると、そのシナプスの伝達効率が増強される。また
逆に、発火が長期間起こらないと、そのシナプスの伝達効
率は減退するというものである。
 The Organization of Behavior. 1949年
https://goo.gl/2HsDwK
ヘッブの法則
Donald O. Hebb
1950年代
http://kitsuon-kaizen.en.que.jp/hori/108.htm
http://blogs.yahoo.co.jp/yuyamichidori/11068629.html
興奮性シナプスと抑制性シナプス
ニューラル・ネットワークとその表現(1)
 一つのニューロンの動きを考える
 一つのニューロンの内部の状態の表現
 複数のニューロンからなる一つの層の内部の状態
の表現
 式は便利だ! Y = W・X + b が表すもの
一つのニューロンの動きを考える
以下の文中に現れる「ニューロン」は、コンピューター
上でシミレートされた偽の「ニューロン」である。ただし、
基本的な動作原理は、本物のニューロンを真似てい
ることを知っておくことは、役に立つと思う。
ニューロンは、
いつ発火するのか?
ニューロンは、
いつ発火するのか?
ニューロンの働きは、
発火するか発火しないかの
1か0かのディジタル・スタイル
個々のシナプスの性質
同じ発火信号を受けても、受け止めるニューロン内
でのその信号の「強さ」は、シナプスごとに異なる。
興奮性シナプスからの信号の強さから
抑制性シナプスからの信号の強さを
引いた値がある閾値を越えると、
ニューロンは、「発火」する。
興奮性シナプスからの信号の強さから
抑制性シナプスからの信号の強さを
引いた値がある閾値を越えると、
ニューロンは、「発火」する。
ニューロンの働きは、
発火するか発火しないかの
1か0かのディジタル・スタイル
個々のシナプスの性質
同じ発火信号を受けても、受け止めるニューロン内
でのその信号の「強さ」は、シナプスごとに異なる。
ニューロン発火の条件
 あるニューロンが「発火」するかは、次のようにして決まる。
興奮性シナプスから受け取る信号の強さ全体 A から
抑制性シナプスから受け取る信号の強さ全体 B を
引いて、その値がある閾値 C より大きければ発火する。
A – B > C 発火 ( A – B – C > 0 )
A – B < C 発火しない ( A – B – C < 0 )
 発火賛成と発火反対の多数決のようなもの。ただし、賛成
票が、ある一定数以上(閾値)、反対票を上回らないとい
けないというルール。至極、単純である。
賛成票:3+3+2=7
反対票:2+1+2=5
賛成票 - 反対票 = 2 > 1(閾値)
発火!
ニューロン発火の判断
閾値=1の場合
個々のシナプスの性質は異なる
内部の数字は、シナプスごとに異なる
信号を受けた時に伝えられる、信号の「強さ」
X1=1
X2=1
X3=1
X4=1
X5=1
X6=1
2
3
1
3
2
2
賛成票:0+0+2=2
反対票:2+1+2=5
賛成票 - 反対票 = -3 < 1(閾値)
発火せず!
ニューロン発火の判断
閾値=1の場合
X2, X4からの信号なし
X1=1
X2=0
X3=1
X4=0
X5=1
X6=1
2
3
1
3
2
2
個々のシナプスの性質は異なる
内部の数字は、シナプスごとに異なる
信号を受けた時に伝えられる、信号の「強さ」
賛成票:3+3+0=6
反対票:2+0+2=4
賛成票 - 反対票 = 2 > 1(閾値)
発火!
ニューロン発火の判断
閾値=1の場合
X3, X5からの信号なし
X1=1
X2=1
X3=0
X4=1
X5=0
X6=1
2
3
1
3
2
2
個々のシナプスの性質は異なる
内部の数字は、シナプスごとに異なる
信号を受けた時に伝えられる、信号の「強さ」
X
X1,X2,..X6は、0または1で
W1X1+W2X2+W3X3+
W4X4+W5X5+W6X6
+ b > 0
の時発火
重み:Wi
シナプスごとの賛成票の強さAをプラスの値に
反対票の強さBをマイナスの値にすると、
式が簡単になる。そうしたWiを「重み」という。
バイアス:b
ついでに、閾値 Cの符号を逆にすれば、
式はもっと簡単になる。それを「バイアス」という。
X1
X2
X3
X4
X5
X6
W2=3
W3=-1
W4=3
W5=2
W6=-2
W1=-2
先の次式を想起せよ
A – B – C > 0
符号を変えると
A + B’+ C’ > 0
の形になる。
W1X1+W2X2+W3X3+
W4X4+W5X5+W6X6
+ b =
(-2)x1+3x0+(-1)x1+
3x0+2x1+(-2)x1
-1 =
-2-2+2-2-1= -5<0
発火せず!
重みWi=[-2,3,-1,3,2,-2]
バイアス b=-1
入力Xi=[1,0,1,0,1,1]
の場合
X1=1
X2=0
X3=1
X4=0
X5=1
X6=1
-2
3
-1
3
2
-2
W1X1+W2X2+W3X3+
W4X4+W5X5+W6X6
+ b =
(-2)x1+3x1+(-1)x0+
3x1+2x0+(-2)x1
-1 =
-2+3+3-2= 2>0
発火!
X1=1
X2=1
X3=0
X4=1
X5=0
X6=1
-2
3
-1
3
2
-2
重みWi=[-2,3,-1,3,2,-2]
バイアス b=-1
入力Xi=[1,1,0,1,0,1]
の場合
一つのニューロンの
内部の状態の表現
一つのニューロンの内部の状態は、ニューロンがシナ
プスを通じて受け取る刺激である「入力」と、シナプス
ごとの「重み」と、発火の閾値に対応する「バイアス」
の三つの量で表現できる。
X1
X2
X3
X4
X5
X6
W1X1+W2X2+W3X3+W4X4+W5X5+W6X6+b > 0 ?
重み W=[W1,W2,W3,W4,W5,W6]
バイアス b
入力 X=[X1,X2,X3,X4,X5,X6]
の場合の発火の条件
まず、一つのニューロンで
考えてみよう
X1
X2
X3
X4
X5
X6
W1X1+W2X2+W3X3+W4X4+W5X5+W6X6+b > 0 ?
重み W=[W1,W2,W3,W4,W5,W6]
バイアス b
入力 X=[X1,X2,X3,X4,X5,X6]
の場合の発火の条件
X1
X2
X3
X4
X5
X6
先の行ベクトルXを
列ベクトルに変えた
ものをXTで表す
XT =
行ベクトルと列ベクトルの積
 行ベクトル W=[W1,W2,W3,W4,W5,W6] と
行ベクトル X=[X1,X2,X3,X4,X5,X6] を列ベクトルに変
えた XTとの積を次のように定義する。
 W・XT =
[W1,W2,W3,W4,W5,W6] ・
= W1X1+W2X2+W3X3+W4X4+W5X5+W6X6
 対応する要素を掛けて、足し合わせたものである。
X1
X2
X3
X4
X5
X6
X1
X2
X3
X4
X5
X6
W・XT + b > 0 ?
この時、
重み W=[W1,W2,W3,W4,W5,W6]
バイアス b
入力 X=[X1,X2,X3,X4,X5,X6]
の場合の発火の条件は、
次のように、簡単に書ける。
もしも、Xが最初から行ベクトルの形で与えられて
いれば、重みWとバイアスbを持つあるニューロン
の発火の条件は、W・X+b > 0 で与えられること
になる。これは、y = ax + b > 0 と同じくらい、
簡単な式の形である。
複数のニューロンからなる一つの層の
内部の状態の表現
複数のニューロンの集まりが、一つの「層」として、入
力を受け取り出力を返すことがある。
この層の内部の状態も、この層が受け取る「入力の全
体」と、シナプスごとの「重みの全体」と、層を構成する
ニューロンの閾値に対応する「バイアスの全体」という
三つの量で表現できる。
X1
X2
X3
ニューロン1
ニューロン2
ニューロン3
入力 X=[X1,X2,X3]
例えば、入力 X=[1,0,1] で
ニューロン1の重みが [2,-3,4] バイアスが -4なら
ニューロン1の出力は、2・1+(-3)・0+4・1-4=2>0で発火。
ニューロン2の重みが [-4,1,-5] バイアスが 5なら
ニューロン2の出力は、(-4)・1+1・0+(-5)・1+5=-4<0で発火せず。
ニューロン3の重みが [-4,-2,5] バイアスが 2なら
ニューロン3の出力は、(-4)・1+(-2)・0+5・1+2=3>0で発火。
三つのニューロンで
考えてみよう
X1
X2
X3
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
入力 X=[X1,X2,X3]
重み W1=[W11,W12,W13]
バイアス b1
重み W2=[W21,W22,W23]
バイアス b2
重み W3=[W31,W32,W33]
バイアス b3
ニューロン1の値: W1・XT + b1 = W11X1+W12X2+W13X3+b1
ニューロン2の値: W2・XT + b2 = W21X1+W22X2+W23X3+b2
ニューロン3の値: W3・XT + b3 = W31X1+W32X2+W33X3+b3
一般的には、
X1
X2
X3
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
入力 X=[X1,X2,X3]
重み W1=[W11,W12,W13]
バイアス b1
重み W2=[W21,W22,W23]
バイアス b2
重み W3=[W31,W32,W33]
バイアス b3
W11X1+W12X2+W13X3+b1
W21X1+W22X2+W23X3+b2
W31X1+W32X2+W33X3+b3
これを、行列の積と和を使うと (あとで少し述べる)
W11,W12,W13 X1 b1
W21,W22,W23 X2 + b2 =
W31,W32,W33 X3 b3
これも、 W・XT + b の形をしている!
X1
X2
X3
X4
X5
X6
ニューロン1
ニューロン2
ニューロン3
ニューロン4
ニューロン5
ニューロン6
入力 X=[X1,X2,X3,X4,X5,X6]
六つのニューロンで
考えてみよう。
基本的には、同じで
ある。
X1
X2
X3
X4
X5
X6
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
ニューロン4
W4・XT + b4 > 0
ニューロン5
W5・XT + b5 > 0
ニューロン6
W6・XT + b6 > 0
入力 X=[X1,X2,X3,X4,X5,X6]
重み W1=[W11,W12,W13,W14,W15,W16]
バイアス b1
重み W2=[W21,W22,W23,W24,W25,W26]
バイアス b2
重み W3=[W31,W32,W33,W34,W35,W36]
バイアス b3
重み W4=[W41,W42,W43,W44,W45,W46]
バイアス b4
重み W5=[W51,W52,W53,W54,W55,W56]
バイアス b5
重み W6=[W61,W62,W63,W64,W65,W66]
バイアス b6
X1
X2
X3
X4
X5
X6
ニューロン1
W1・XT + b1 > 0
ニューロン2
W2・XT + b2 > 0
ニューロン3
W3・XT + b3 > 0
ニューロン4
W4・XT + b4 > 0
ニューロン5
W5・XT + b5 > 0
ニューロン6
W6・XT + b6 > 0
入力 X=[X1,X2,X3,X4,X5,X6]
値:W11X1+W12X2+W13X3+
W14X4+W15X5+W16X6+b1
値:W21X1+W22X2+W23X3+
W24X4+W25X5+W26X6+b2
値:W31X1+W32X2+W33X3+
W34X4+W35X5+W36X6+b3
値:W41X1+W42X2+W43X3+
W44X4+W45X5+W46X6+b4
値:W51X1+W52X2+W53X3+
W54X4+W55X5+W56X6+b5
値:W61X1+W62X2+W63X3+
W64X4+W65X5+W66X6+b6
W11, W12, W13, W14, W15, W16 X1 b1
W21, W22, W23, W24, W25, W26 X2 b2
W31, W32, W33, W34, W35, W36 X3 + b3 =
W41, W42, W43, W44, W45, W46 X4 b4
W51, W52, W53, W54, W55, W56 X5 b5
W61, W62, W63, W64, W65, W66 X6 b6
W11X1+W12X2+W13X3+W14X4+W15X5+W16X6+b1
W21X1+W22X2+W23X3+W24X4+W25X5+W26X6+b2
W31X1+W32X2+W33X3+W34X4+W35X5+W36X6+b3
W41X1+W42X2+W43X3+W44X4+W45X5+W46X6+b4
W51X1+W52X2+W53X3+W54X4+W55X5+W56X6+b5
W61X1+W62X2+W63X3+W64X4+W65X5+W66X6+b6
行列による表現(六個のニューロンの場合)
これも、 W・XT + b の形をしている!
式は便利だ!
Y = W・XT + b が表すもの
数学的な表記を使うと、問題を簡潔に定式化できる。
ここでは、一つのニューロンの状態だけでなく、複数
のニューロンからなる層も、一つの式で表現できる背
景について述べる。
この節は、読み飛ばしてもらって結構です。
式は便利だ!
Y = W・XT + b が表すもの
 ニューラル・ネットワークの本を読んで、最初につまずくの
は、行列が出てくるあたりだと思う。ただ、ニューラル・ネッ
トワークの理解で、当面、必要なことは、式 Y = W・XT +
b が表現しているものを理解することだ。見慣れていない
だけで、難しい数学ではない。
 具体的な例で、式 Y = W・XT + b が表しているものを、
紹介したいと思う。一見、複雑に見える沢山の関係が、こ
の式一つで表現されていることがわかるはずだ。式は便
利だということがわかってもらえると思う。
 以下の例では、XもYもbも、最初から列ベクトルだとしよう
(このことを、仮に、X=[X1,X2,...Xn]Tのように表そう)。こ
の時、 Y = W・X + b が、何を表すかを考えよう。
Y = W・X + b が表すもの
Wが数値(スカラー)の時
 Y=y, X=x, W=a, b=b なら、この式は、
y = ax + b という、式を表す。
 Y=y, X=x, W=2, b=3 なら、この式は、
y = 2x + 3 という、式を表す。
 Y=y, X=x, W=4, b=0 なら、この式は、
y = 4x という、式を表す。
Y = W・X + b が表すもの
Wがベクトルの時
 Y=y, X=[x1,x2]T W=[w1,w2] b=b0 なら、この式は、
y = w1・x1+w2・x2+b0 という、式を表す。
 Y=y, X=[c,d]T W=[m,n] b=b なら、この式は、
y = m・c+n・d+b という、式を表す。
 Y=y, X=[1,0]T W=[2,3] b=4 なら、この式は、
y = 2・1+3・0+4 = 6 という、式を表す。
 Y=y, X=[x1,x2,x3]T W=[w1,w2,w3] b=b0 なら、
y = w1・x1+w2・x2+w3・x3+b0
 Y=y, X=[x1,x2,x3,x4]T W=[w1,w2,w3,w4] b=b0 な
ら、y = w1・x1+w2・x2+w3・x3+w4・x4+b0
Y = W・X + b が表すもの
Wが行列の時
 2x2の行列(2行2列の行列)を、[ [a,b], [c,d] ]と表そ
う。同様に、3x3 (3行3列の行列)の行列を、[ [d,e,f],
[g,h,i], [j,k.l] ] と表そう。 ....
 Y=[y1,y2]T, X=[x1,x2]T、W= [ [2,3], [4,5] ]、
b=[1,2]Tのとき、 Y = W・X + b は、次の二つの式を
表す。y1 = 2x1+3x2+1、 y2 = 3x1+5x2+2
 Y=[y1,y2,y3]T, X=[x1,x2,x3]T、W= [ [2,3,-1], [4,-
5,1], [1,2,3] ]、 b=[1,2,3]Tのとき、 Y = W・X + b
は、次の三つの式を表す。y1 = 2x1+3x2-x3+1、 y2 =
4x1+5x2+x3+2、y3 = x1+2x2+3x3+3
Y = W・X + b が表すもの
Wが行列の時
 例えば、Wが6x6(6行6列)の行列の時、 Y = W・X + b
が表すものの例については、先に見た。もちろんnが100
でも10,000でも同じ式で、表現できる。
 Wが n行 m列の行列の時、 Y = W・X + bが、n個の式
を表していることを示すために、次のように書くこともある。
Yn = Wn・X + bn
 こうした表記は、数百・数千のノードからなるニューラル・
ネットワークが満たす多数の関係式を、一つの式で簡潔
にまとめることができるので、プログラミング上も極めて有
用である。
Y=W・XT+b と Y=X・W+b という
二つの表記
 これまで、入力の X=[X1,X2,...,Xn] を行ベクトルとして、
Y=W・XT+b という表記を用いてきた。多くのドキュメント
もこうした表記を採用している。
 X=[X1,X2,...,Xn]T として、 Y=W・X+bと表しても、この
二つの表記は、同じ内容を表し、重みを表す行列Wも、同
じものである。 どちらでも XT, b は列ベクトルである。
 ただ、 X=[X1,X2,...,Xn] を行ベクトルとした時、
Y=X・W+b という表記も可能である。ここでのWは、先
のWの行と列を入れ替えたものである。W=WT。bは、行
ベクトルとなる。b=bTである。基本的には同じである。
 ただ、TensorFlowでは、 Y=X・W+b の方の表記を採
用している。TensorFlowに関連する部分に入ったら、こ
の表記に切り替えたいと思う。
ニューラル・ネットワークとその表現(2)
 ニューロンを動かす -- 活性化関数 (Activator)
 クラス分けのActivator -- SoftMax
ニューロンを動かす
-- 活性化関数 (Activator)
活性化関数は、その名前の通りに、一つのニューロン
が発火(活性化)する時の条件と出力を関数の形で表
したものである。いろいろな種類の活性化関数がある。
活性化関数
 先に見たようにように、重みWとバイアスbを用いて、
W・X + b という式で、ニューロンの興奮のレベルが計算
できるとするなら、 「W・X + b > 0 なら、ニューロンは発
火する」という条件は、どのように表現できるだろうか?
 W・X + b は、ニューロンの内部の状態を表す量なので、
その値を、ニューロンの出力に変える関数 φ をうまく定
義して、φ (W・X + b ) がそのニューロンの発火・出力
を表現するようにすればいい。こうした関数 φ を、「活性
化関数」とよぶ。
 例えば、ニューロンの発火の信号の強さが 1で、発火しな
い時は信号が 0 であるなら、次のような関数 φ を考えれ
ばいい。 0 x<=0 の時
1 x> 0 の時φ (x) =
sigmoid 関数 (logistic 関数)
 先の φ を、右のグラフでは、赤線で示した。x=0の時に、
非連続に変化する。
 実際の応用では、こうし
た飛躍のない、青線の
ような関数が持ちいら
れることが多い。
 これをsigmoid関数と
いう。(logistic関数)
 近似的には、
x<0の時 0
x>0の時 1
基本的には0と1の間の値をとる。
ReLU (rectified linear unit)
 rectifier は、「整流器」。ReLUは、マイナスの値は通さ
ず 0を返すが、プラスの値は、そのまま通す。(青線)
 sigmoidは、0と1
の間の値を出力する
が、ReLUの出力に
は、そうした制限は
ない。
 断続はないが、x=0のところで折れ曲が
っている。それを、スムースに近似した関
数も存在する。(Softplus 緑線)
 x<0の時 0
x>0の時 x
の値をとる。
tanh 関数
 sigmoidの仲間だが、ちょうどそれを1/2ほど、下に移動
した形である。-1と+1との間の値を出力する。tanh以外
にも、同じ性質を持つ、様々な関数が提案されている。
(
W・X + b =
(-2)x1+3x0+(-1)x1+
3x0+2x1+(-2)x1 -1 =
-2-2+2-2-1= -5
φ(W・X + b ) =
sigmoid(-5) ≒ 0
重み W=[-2,3,-1,3,2,-2]、バイアス b=-1
入力 X = [1,0,1,0,1,1]T
φ(x) = sigmoid(x) の場合
X1=1
X2=0
X3=1
X4=0
X5=1
X6=1
-2
3
-1
3
2
-2
0
一つのニューロンの出力は、
φ( W・X + b )
の形で表せる。
W・X + b =
(-2)x1+3x1+(-1)x0+
3x1+2x0+(-2)x1 -1 =
-2+3+3-2= 2
φ(W・X + b ) =
ReLU(2) =2
X1=1
X2=1
X3=0
X4=1
X5=0
X6=1
-2
3
-1
3
2
-2
重み W= [-2,3,-1,3,2,-2]、バイアス b=-1
入力 X = [1,1,0,1,0,1]T
φ(x) = ReLU(x)の場合
2
一つのニューロンの出力は、
φ( W・X + b )
の形で表せる。
X1
X2
X3
ニューロン1
φ(W1・X + b1)
ニューロン2
φ(W2・X + b2)
ニューロン3
φ(W3・X + b3)
入力 X=[X1,X2,X3] T 出力 Yi = φ(Wi・X + bi)
重み W1=[W11,W12,W13]
バイアス b1
重み W2=[W21,W22,W23]
バイアス b2
重み W3=[W31,W32,W33]
バイアス b3
W11,W12,W13 X1 b1
W21,W22,W23 X2 + b2
W31,W32,W33 X3 b3
φ
φ(W11X1+W12X2+W13X3+b1)
φ(W21X1+W22X2+W23X3+b2 =
φ(W31X1+W32X2+W33X3+b3)
複数のニューロンの出力も、 φ( W・X + b ) の形で表せる。
クラス分けのActivator
SoftMax
画像認識等のクラス分けの出力には、Softmaxとい
う活性化関数がよく利用される
 クラス分けの場合の出力に利用されるactivator。
手書き数字画像の認識だと、提示された画像が0から9ま
での10個の数字のどれかだと判断しなければいけない。
 ニューラル・ネットワークでは、こうした場合、出力層に、 0
から9までの10個の数字に対応した10個のノードが並び、
それぞれのノードの値が、「提示された画像がその数字で
ある確率」であるようにする。
 ノードごとに、確率を計算するのが softmax関数である。
最終的には、10個のノードの中で、その確率が最大であ
るものが選ばれる。
softmax 関数
softmax 関数の出力例
ノード0 ノード1 ノード2 ノード3 ノード4 ノード5 ノード6 ノード7 ノード8 ノード9
0 0 0 1 0 0 0 0 0 0
softmax 関数の出力例
ノード0 ノード1 ノード2 ノード3 ノード4 ノード5 ノード6 ノード7 ノード8 ノード9
0 0 0 0 0 1 0 0 0 0
softmax 関数の出力例
ノード0 ノード1 ノード2 ノード3 ノード4 ノード5 ノード6 ノード7 ノード8 ノード9
0 0 0 0 0 1 0 0 0 0
softmax 関数の性質
 softmax関数は、それが適用される層のノードの
softmac関数の値をすべて足し合わせると1になるという
性質を持つ。それは、softmaxの出力が「確率」であるこ
とを考えれば、すぐわかる。
 例えば、先の例で、ある画像が3である確率が 0.75で
あったとしよう。そのことは、その画像が3以外の数字であ
る確率は、1 - 0.75 = 0.25 だということである。3以外
のノードの確率(softmaxの出力の値)を全部足しても、
0.25にしかならないということである。
 次のこともわかる。あるノードのsoftmaxの値が上がれ
ば、他のノードの値は下がる。あるノードの値を下げれば、
他のノードの値は上がる。全部足して1になるように、値は
変化する。
One-Hot-Vector
 先のsoftmax関数の出力例の、一番上のノードは、「この
画像は数字nである」という、ニューラル・ネットワークの判
断を表しているの。もちろん、softmaxの値が一番大きい
ところが選ばれて、そこに一つだけに1が入っていて、残り
はすべて0になっている。
 こうした一つだけに1が、残りすべてが0のベクトルを、
One-Hot-Vector と呼ぶ。
 One-Hot-Vectorは、クタス分けの出力に現れるだけで
はない。ニューラル・ネットワークを「学習」させるための訓
練用データは、画像と一緒に「この画像は数字nである」と
いう「正解」の情報を持っていなければならない。訓練用
データは、画像と正解を示すOne-Hot-Vectorの二種類
のデータから構成されている。
ニューラル・ネットワークの
パラメーターの最適化
 ニューラル・ネットワークで数値予測(線形回帰)
 損失関数 Loss Function
 勾配降下法 Gradient Descent
 クラス分けの場合の損失関数 クロス・エントロピー
出力結果を見て、パラメーターを修正する
Backpropagation
 出力結果が、予期していたものと異なっていたら、その出
力を行った一つ前の層にさかのぼって、パラメーター(重
みWとバイアスb)を修正すればいい。ただ、手動の試行
錯誤で、こうした修正を行っていては、ラチがあかない。
 Rumelhartらが開発した(1986年) Backpropagation
は、こうしたパラメーターの修正を、システマチックに行う
方法を提供する。
 以下、ニューラル・ネットワークでのパラメーター修正を行
うのに必要な道具立てを、あらかじめ、簡単に紹介しよう。
具体的な例については、その後に述べることにする。
出力結果と「正解」とのずれ
Loss Function (損失関数)
 まず、出力結果と予期していた「正解」とのズレを、何らか
の方法で定式化する必要がある。そのズレを関数の形で
表したものを Loss Function (損失関数)という。Cost
Function (コスト関数)ということもある。
 出力が「正解」と一致した時、 Loss Functionの値が最
小値を取るようにする。この時、パラメーター修正の目的
を、Loss Functionの値をできるだけ小さくすることだと
言い換えることができる。
 ある問題に対して、Loss Functionは一つとは限らない。
どのようなLoss Functionを選ぶかで、パラメーター修正
の効率は変化する。
Gradient Descent (勾配降下法)
 パラメーター修正で、最もよく使われる方法が、この
Gradient Descent (勾配降下法)である。
 Loss Functionを Jだとしよう。パラメーターのWとbの値
が、それぞれ少し変化した時に、Jの値がどう変化するか
を調べる。このJの変化が「勾配」である。「勾配」にそって、
Jの値が下がるように、Wとbを変化させればいい。それが、
Gradient Descent である。
 数学的には、∂J/∂W と ∂J/∂b をチェックすることにな
る。Jは、ニューラル・ネットワークの出力と「正解」とのズ
レなので、φ(WX+b)という形の項を含んでいる。アクティ
ベーターφとして、微分可能なものが好まれるのは、この
Gradient Descentに関係している。
一つのニューロンで、
パラメーターの最適化を考える
単純なニューロンの集まりでも、パラメーター最適化の
メカニズムと組み合わせれば、強力な機能を持ちうる。
ここでは、一つのニューロンが、線形回帰の数値予測
の能力を持ちうることを示す。
一つのニューロンの
パラメーターを動かす
 ニューロン一つの働きは、先に見たように
φ(W・X+b) と表現できる。φは活性化関数、W, X, b
はベクトルである。ここではさらに単純化して、入力を数字
一つにする。この時、Wもただの数字になる。さらに、
Activator φも取り除く。
 このニューロン一つの「ニューラル・ネットワーク」は、一つ
の数字の入力xに対して、内部のパラメーター(単なる実
数である) a, b に応じて、ax+bを返すのである。この値
をyとしよう。
 y=ax+bは、直線を表す式である。この単純なニューラ
ル・ネットワークでパラメーターを様々に変更するというの
は、様々な直線を考えることに等しい。
一つの入力と出力を持ち、一つだけのニューロンからなるネット
ワークは、y=ax+bという直線に対応している。このニューロンの
パラメーターを動かすということは、下の図のようにこの直線を、
いろいろに動かすということである。
a, b の値を変えれば、y=ax+bの形は変化する
(傾きがaで、切片がbの直線である)
この図は、あるデータ(赤点)の分布を直線で近似しようというもの
である。統計学では「線形回帰」と飛ばれているものだ。(左の直線
より、右の直線の方がいい近似を与えている。)
もっとも単純なものでも、パラメーターの変更を考えることで、ニュー
ラル・ネットワーク、は「線形回帰」と同じ数値予測の能力を持つ。
ニューラル・ネットワークで数値予測
(線形回帰)
データ群に一番「近い」直線を求める。
直線が見つかれば、それに基づいて、数値予測が可
能になる。
損失関数
損失関数は、ニューラル・ネットワークで、重要な役割
を果たす。ニューラル・ネットワークでの「学習」は、す
べて「損失関数を最小のものにせよ」という指示に
従ったパラメーター変更に帰着する。
損失関数を定めて、
誤差を最小にする a,b を求める
 サンプル中のi 番目の点を (x(i), y(i))とすれば、
y=ax+b上の点と点 (x(i), y(i)) との垂直方向の誤差は、
(ax(i)+b) – y(i) となる。
 誤差は、正負の値をとるので、単純に、誤差の平均を取っ
ても、打ち消しあって、全体としての誤差の大きさはわか
らなくなる。
 そこで、誤差の二乗をとって、その平均を最小にすること
を考える。
 a, b の関数である、この誤差の二乗の平均を、損失関数
とすればいい。
誤差
誤差
誤差
誤差
データの各点と、y=ax+b との誤差が、
もっとも小さくなるように、a,b の値を修正する。
(x(i), y(i))
(ax(i)+b) – y(i)
( ax(i)+b), y(i) )
誤差の二乗をLoss関数にする
こうした形の損失関数を、 “quadratic cost” という
仮説:
パラメーター: a, b
損失関数:
目標:
問題の整理
y(x) = ax + b
a, b y
a, b
a, b
損失関数 J(a, b)は、a,b についての関数で、
この例では、次のような形をしている
a b
1
0
J(0,1)
損失関数 J(θ0 , θ1)の別の例
Gradient descent
勾配降下法
Gradient descent 勾配降下法は、ニューラル・ネッ
トワークのパラメーター更新の基本的な手段である。
TensorFlowでは、 Gradient descent が、標準的
な関数として、あらかじめ組み込まれている。
ある関数があって
その値を最小にしたい
基本的な考え方:
• ある からはじめる。
• の値を、 が減少するように
変化させる。
• 最小値になるまで、繰り返す。
Gradient descent(勾配降下法)
簡単にするために、二次元のグラフで考え
よう。ある点から始めて、その点から極小
点に近ずくためには、どうすればいいか?
二つの場合がある。
その点が極小点の右側にある場合には、
その点のx座標を少し減らせばいい。
その点が極小点の左側にある場合には、
その点のx座標を少し増やせばいい。
その点が、極小点の右にあるか左にある
かは、その点での接戦の傾きが、正である
か負であるかでわかる。
よって、α を正の数値とすれば、次の式が、
より近づいた点の位置を与える。
直感的な説明
損失関数を、パラメーターで微分している
If α is too small, gradient
descent can be slow.
If α is too large, gradient
descent can overshoot the
minimum. It may fail to
converge, or even diverge.
アルファが、あまりに小さいと、
Gradient descentは、ゆっくり
にしか進まない。
アルファが、あまりに大きいと、
Gradient descentは、最小値
を通り越してしまう。場合によっ
ては、振動したり、収束しない場
合もある。
このアルファを学習率
(Learning Rate)という。
Gradient descentは、アルファが固定されて
いても、極小値に収束できる。
局所的な最小値に近づくに
つれ、gradient descent
は、自動的に小さなステップ
を取るようになるので、繰り
返しアルファを小さくしてゆく
必要はない。
どう、重みとバイアスを修正するのか?
もう少し、一般的に、Gradient Descent をまとめてみよう。
損失関数をCとするとき、次の式に従って、重みWkと
バイアスbl を変更すればいい。
損失関数が、 ここで見た、quadratic costの形をしていない
場合(例えば、後で見る Cross Entropyの場合)でも、この
考え方は、変わらない。
ηは学習率
1
0
J(0,1)
0
1
J(0,1)
ある場合には、最小値ではなく、局所的な
極小値に、入り込むことがある。
http://arxiv.org/pdf/1210.0811v2.pdf
gradient descent method
クラス分けの場合の損失関数
出力が数値一つだけだったら、正解の数字との「誤
差」を定義するのは容易である。それを損失関数にす
ればいい。
ただ、出力が、画像認識のようなクラス分けだったら、
誤差の定義は簡単ではない。
クロス・エントロピー
クラス分けによく使われるSoftmaxの出力の場合で
考えてみよう。例えば、数字の画像認識なら0から9ま
での数字に対応した10個のノードそれぞれに、その
画像がそのノードに対応した数字である確率が入って
くる。こうした場合の損失関数に利用されるのが、クロ
ス・エントロピーである。
クロス・エントロピー H(p,q) の定義
Σ Σ p(x)log(q(x))
N x
サンプルの数 分類の数
目標の確率 データの確率
ー
マイナス
p(x) q(x)
P(1)=2/3,p(2)=1/4,p(3)=5/24,p(4)=5/24 q(1)=1/8,q(2)=1/8, q(3)=5/8,q(4)=1/8
x=1の時 2/3log(1/8) = -2/3log8 = -2log2
x=2の時 1/4log(1/8) = -1/4log(8) = -3/4log2
x=3の時 5/24log(5/8)= 5/24log(5) - 15/24log2
x=4の時 5/24log(1/8)= -5/24log(8) = -15/24log2
全部足し合わせると
-(48log2+18log2-5log5+15log2+15log2)/24=-(96log2-5log5)/24
H(p,q) = (96log2-5log5)/24
Σp(x)log(q(x))
x
の計算
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=2/3,q(2)=1/4,q(3)=5/24,q(4)=5/24
x=1の時 0log2/3
x=2の時 1log1/4
x=3の時 0log5/24
x=4の時 0log5/24
全部足して
log1/4 = -log4 = -2log2
H1(p,q) = 2log2
H1
Σp(x)log(q(x))
x
の計算
p(2) = 1 の場合の
「目標」のpの分布は、
こういう形になる。
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=1/4,q(2)=2/3,q(3)=5/24,q(4)=5/24
x=1の時 0log1/4
x=2の時 1log2/3
x=3の時 0log5/24
x=4の時 0log5/24
全部で
log2/3 = log2 – log3
H2(p,q) = log3-log2
H2
Σp(x)log(q(x))
x
の計算
p(2) = 1 の場合の
「目標」のpの分布は、
こういう形になる。
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=5/24,q(2)=2/3,q(3)=1/4,q(4)=5/24
x=1の時 0log5/24
x=2の時 1log2/3
x=3の時 0log1/4
x=4の時 0log5/24
全部足し合わせると
log2/3
H3(p,q) = log3-log2
H3
Σp(x)log(q(x))
x
の計算
p(2) = 1 の場合の
「目標」のpの分布は、
こういう形になる。
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=0,q(2)=1,q(3)=0,q(4)=0
x=1の時 0log0 = 0
x=2の時 1log1 = 0
x=3の時 0log0 = 0
x=4の時 0log0 = 0
H5(p,q) = 0
H4
Σp(x)log(q(x))
x
の計算
p(2) = 1 の場合の
「目標」のpの分布は、
こういう形になる。
p(x)が one-hot-value の時
Σ Σ p(x)log(q(x))
N x
ー
= - { サンプル中の正解値をとった i についての log(q(i))の和 }
H(p,q) =
0 ≦ q(i) ≦ 1 で、 log(q(i)) ≦ 0 だが、
q(i)  0 の時 log(q(i))  - ∞
q(i)  1 の時 log(q(i))  0
だから、q(i)が正解に近いほど、H(p,q)は小さくなる。
Σ log(q(i))
N
ー=
バイナリー・クロス・エントロピー
先に見たクロス・エントロピーは、二つの分布pとqが
「似ているか?」については、あまり有効な情報を与え
ない。なぜなら、p(x)=1 以外のxの値でのqの値は、
すべて無視するので。
ただ、次のように定義を変更すると、二つの分布の
「近さ」を数値化できる。(計算が増えるので、必要な
いかもしれないのだが)
この節は、読み飛ばしてもらって結構です。
H(p, q) = - { p(x)log(q(x)) + (1-p(x))log(1-q(x)) }Σx
P(x),q(x)は、確率を表しているので
0 ≦ p(x) ≦ 1、 0 ≦ q(x) ≦ 1
0 ≦ 1-p(x) ≦ 1、 0 ≦ 1-q(x) ≦ 1
P(x) ≧ 0 で、log(q(x)) ≦ 0 だから
p(x)log(q(x)) ≦ 0
(1−p(x)) ≧ 0 で、log(1-q(x)) ≦ 0 だから
(1-p(x))log(1-q(x)) ≦ 0
よって、Σの中の
p(x)log(q(x)) + (1-p(x))log(1-q(x)) ≦ 0 となる
Σの前に マイナス符号が付いているので、H(p, q) ≧ 0
H(p, q) = - { p(x)log(q(x)) + (1-p(x))log(1-q(x)) }Σx
マイナスが
付いている
p(x)が成り立つ確率 p(x)が成り立たない確率
目標とする
確率
データの
確率
H(p, q) = - { p(x)log(q(x)) + (1-p(x))log(1-q(x)) }Σx
p(x)=0の時は、
この項が消える
p(x)=1の時は、
この項が消える
H(p) = - p(x)log(p(x))Σx
ShannonのEntoropy
Binary Entoropy
の式の特徴
p(x) q(x)
P(1)=2/3,p(2)=1/4,p(3)=5/24,p(4)=5/24 q(1)=1/8,q(2)=1/8, q(3)=5/8,q(4)=1/8
x=1の時 2/3log(1/8)+(1-2/3)log(1-1/8) = 2/3log(1/8)+1/3log(7/8)
x=2の時 1/4log(1/8)+(1-1/4)log(1-1/8) = 1/4log(1/8)+3/4log(7/8)
x=3の時 5/24log(5/8)+(1-5/24)log(1-5/8) = 5/24log(5/6)+19/24log(3/8)
x=4の時 5/24log(1/8)+(1-5/24)log(1-1/8) = 5/24log(1/8)+19/24log(7/8)
全部足し合わせると
(-2/3log8+1/3(log7-log8)) + (-1/4log8+3/4(log7-log8)) +
(5/24(log5-log6)+19/24(log3-log8) + (-5/24log8+19/24(log7-log8))
= ( -16log8+8log7-8log8-6log8+18log7-18log8 +
5log5-5log6+19log3-19log8-5log8+19log7-19log8)/24
= ( -(16+8+6+18+19+5+19)log8+(8+18+19)log7-5log6+19log3)/24
H(p,q) = - ( -91log8 + 45log7 – 5(log2+log3) +19log3)/24
= (278log2-45log7+14log3)/24
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=2/3,q(2)=1/4,q(3)=5/24,q(4)=5/24
x=1の時 0log2/3+1log(1-2/3) = log(1/3) = -log3
x=2の時 1log1/4+0log(1-1/4) = log(1/4) = -2log2
x=3の時 0log5/24+1log(1-5/24) = log(19/24) = log19 –log24
x=4の時 0log5/24+1log(1-5/24) = log(19/24) = log19 –log24
全部足し合わせると
-log3-2log2+log19-log24+log19-log24
= -log3-2log2+2log19-2(log3+log8)= -3log3+2log19 – 8log2
H1(p,q) = 3log3+8log2-2log19
H1
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=2/3,q(2)=1/4,q(3)=5/24,q(4)=5/24
H’1
H(p, q) = - { p(x)log(q(x)) + (1-p(x))log(1-q(x))Σx
p(x)が、One Hot Valueの分布の場合でも、
q(x)の分布の情報を拾っている。
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=1/4,q(2)=2/3,q(3)=5/24,q(4)=5/24
x=1の時 0log1/4+1log(1-1/4) = log(3/4) = log3 – log4
x=2の時 1log2/3+0log(1-2/3) = log2/3 = log2 –log3
x=3の時 0log5/24+1log(1-5/24) = log(19/24) = log19 –log24
x=4の時 0log5/24+1log(1-5/24) = log(19/24) = log19 –log24
全部足し合わせると
log3–log4+log2-log3+log19-log24+log19-log24
= log4+2log19-2(log3+log8)= -log3-8log4+2log19
H2(p,q) = log3+8log2-2log19
H1-H2 = (3log3+8log2-2log19) –(log3+8log2-2log19)
= 2log3 > 0
H2
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=5/24,q(2)=2/3,q(3)=1/4,q(4)=5/24
x=1の時 0log5/24+1log(1-5/24) = log(19/24) = log19 –log24
x=2の時 1log2/3+0log(1-2/3) = log(2/3) = log2 – log3
x=3の時 0log1/4+1log(1-1/4) = log(3/4) = log3 – log4
x=4の時 0log5/24+1log(1-5/24) = log(19/24) = log19 –log24
全部足し合わせると
先のH2と同じになる
H3(p,q) = H2(p,q) =log3+8log2-2log19
H3
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=0,q(2)=3/4,q(3)=1/8,q(4)=1/8
x=1の時 0log0+1log(1- 0) = 0
x=2の時 1log3/4+0log(1-3/4) = log(3/4) = log3 – log4
x=3の時 0log1/8+1log(1-1/8) = log(7/8) = log7 –log8
x=4の時 0log1/8+1log(1-1/8) = log(7/8) = log7 –log8
全部足し合わせると
log3-log4+log7-log8+log7-log8
= log3+2log7-8log2
H4(p,q) = 8log2-2log7-log3
H3-H4 = (log3+8log2-2log19) – (8log2-2log7-log3)
= 2log3+ 2log7 -2log19 > 0 9x49 > 19x19
H4
p(x) q(x)
P(1)=0,p(2)=1,p(3)=0,p(4)=0 q(1)=0,q(2)=1,q(3)=0,q(4)=0
x=1の時 0log0+1log(1-0) = 0
x=2の時 1log1+0log(1-1) = 0
x=3の時 0log0+1log(1-0) = 0
x=4の時 0log0+1log(1-0) = 0
H5(p,q) = 0
H5
TensorFlow
ニューラル・ネットワークをグラフで表現する
 複数のニューロンからなる一つの層をグラフで表す
 複数の層からなるニューラル・ネットワークをグラフ
で表す
 グラフを流れる量 -- テンソル
TensorFlow: 複数のニューロンか
らなる一つの層を、グラフで表す
ここから、TensorFlowを使った、ニューラル・ネット
ワークの実装のスタイルを紹介する。
「グラフ」「演算ノード」「テンソル」というのが、基本的
なコンセプトとなる。
複数のニューロンからなる一つの層の出力の計算、
φ( W・X + b ) を、次のような図形で表わすことにしよう。
行列
の積X
W
行列
の和
b
φの
適用
先の例で言うと、
Xは、[X1,X2,X3]T の列ベクトルで、
Wは 3x3の行列、
bは、[b1,b2,b3]T の列ベクトルである。
複数のニューロンからなる一つの層の出力の計算、
φ( X・W + b ) を、次のような図形で表わすことにしよう。
行列
の積X
W
行列
の和
b
φの
適用
先の例で言うと、
Xは、[X1,X2,X3] の行ベクトルで、
Wは 3x3の行列、
bは、[b1,b2,b3] の行ベクトルである。
TensorFlowのスタイル
に準じて、表記を切り替えて
いることに注意!
φ( X・W + b )
TensorFlowでは、こうした図形を「グラフ」と呼んでいる。
グラフは、「ノード」とノード同士を結ぶ「辺」からできている。
行列
の積X
W
行列
の和
b
φの
適用
TensorFlowのグラフのノードは、基本的には、演算を行う
「演算ノード」である。様々な演算が用意されている。演算を
行わない「変数ノード」「プレースゴルダー・ノード」も存在する。
変数ノード 変数ノード
プレースホルダー 演算ノード 演算ノード 演算ノード
TensorFlowのグラフが有用なのは、一つの同じグラフで、
様々な複雑なニューラル・ネットワークを表現できるからである。
(もちろん、X,W,bのタイプはことなるのだが)
行列
の積X
W
行列
の和
b
φの
適用
もっとも、そのことは、基本的には、このグラフの場合には、
すでに見た φ( X・W + b ) という数学的な抽象化に負って
いる。ただ、グラフの方が具体的に処理をイメージしやすい。
TensorFlowのスタイル
に準じて、表記を切り替えて
いることに注意!
φ( X・W + b )
いくつかの例で考えてみよう。
4つの入力を受け取り、3つの出力を返す、3つのニューロン
からなる「層」を考えてみよう。これも、このグラフで表現できる。
行列
の積X
W
行列
の和
b
φの
適用
[X1,X2,X3 ,X4]
4行3列の行列 [b1,b2,b3]
ある「層」の出力の数は、その層に含まれるニューロンの数に
等しいのは、当然である。
2つの入力を受け取り、5つの出力を返す、5つのニューロン
からなる「層」を考えてみよう。これも、このグラフで表現できる。
行列
の積X
W
行列
の和
b
φの
適用
[X1,X2]
2行5列の行列 [b1,b2,b3,b4,b5]
一般に、n個の入力を受け取り、m個の出力を返すニューロンの
「層」では、Xはn次元の行ベクトル、Wはn行m列の行列、bは
m次元の行ベクトルである。
複数の層からなるニューラル・ネット
ワークを、グラフで表す
もちろん、通常の表現でも、ニューラル・ネットワーク
はグラフとして表現される。ただ、TensorFlowのグラ
フは、それをさらに単純化する。
そうした単純化されたグラフ表現は、TensorFlowの
大きな能力である。そのことと、グラフを流れる「テンソ
ル」というデータの捉え方とは、結びついている。
X1
X2
X3
X4
H1
H2
H3
M1
M2
M3
M4
Y1
Y2
Full Connectなニューラル・ネットワークの
旧来のグラフでの表現
Full Connectと
いうのは、向かい
合ったノードがす
べて接続されている
ということ
X1
X2
X3
X4
H1
H2
H3
M1
M2
M3
M4
Y1
Y2
入力層・隠れ層・出力層
旧来のグラフでの表現
入力層 隠れ層 出力層
X1
X2
X3
X4
H1
H2
H3
M1
M2
M3
M4
Y1
Y2
X層 H層 M層 Y層
H層の
重み WH
バイアス bH
活性化 φH
M層の
重み WM
バイアス bM
活性化 φM
Y層の
重み WY
バイアス bY
活性化 φY
旧来のグラフ
一つの「層」のグラフでの表現
行列
の積X
W
行列
の和
b
φの
適用
積
W
和
b
φ
X1
X2
X3
X4
H1
H2
H3
M1
M2
M3
M4
Y1
Y2
X層 H層 M層 Y層
H層の
重み WH
バイアス bH
活性化 φH
M層の
重み WM
バイアス bM
活性化 φM
Y層の
重み WY
バイアス bY
活性化 φY
旧来のグラフ
積X
W
和
b
φ 積
W
和
b
φ 積
W
和
b
φ
H層の
ニューロン数:3
重み W:4x3次元
バイアス b:3次元
M層の
ニューロン数:4
重み W:3x4次元
バイアス b:4次元
Y層の
ニューロン数:2
重み W:4x2次元
バイアス b:2次元
X層 H層 M層 Y層
こっちのグラフの方が、ずっとわかりやすい!
X層の
入力:4
4次元
TensorFlowのグラフ
ニューラル・ネットワークの例
これでも省略
されている
784->8
旧来のグラフ
積X
W
和
b
φ 積
W
和
b
φ
隠れ層の
ニューロン数:15
重み WH:784x15次元
バイアス bH:15次元
出力層の
ニューロン数:10
重み WO:15x10次元
バイアス bO:10次元
入力層 隠れ層 出力層
こっちのグラフの方が、ずっとわかりやすい!
隠れ層の
入力:784
784次元
TensorFlowのグラフ
グラフの例
(学習用)
https://www.tensorflow.org/
Logit Layer, ReLu Layerを
見れば、先に見た「層」のパター
ンが現れているのがわかる。
演算ノードの、MatMulは行列の
積、BiassAddはバイアスの加算
である。
Logit LayerのActivatorは、
Softmaxで、ReLu Layerの
Activatorは、ReLuである。
(このグラフ、GitHubで提供されている
コードのグラフとは、少し、違っている。)
グラフの例
(学習済み)
ニューラル・ネットワークでは、
学習の過程と、学習済みの
結果を利用する過程では、計算
量には、大きな差がある。
学習に持ちいたグラフの一部を
再利用して、学習済みのデータ
(基本的には、学習された各レー
ヤーの重みとバイアスである)を
利用すれば、スマホでも機械学
習の成果を利用できる。
TensorFlowは、それを可能に
する
少し複雑なグラフの例(これは、LSTMのセル)
σ(sigmoidのこと), tanh は、活性化関数
次の式をグラフで
追ってみるといい。
Chris Olah "Understanding LSTM Networks"
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
グラフを流れる量 -- テンソル
旧来のグラフの沢山の線は、どこへ行ったのか?
TensorFlowのグラフでは、グラフを流れるデータは、
すべて「テンソル」にまとめられている。
4つの入力を受け取り、3つの出力を返す、3つのニューロン
からなる「層」を考えてみよう。
行列
の積X
W
行列
の和
b
φの
適用
[X1,X2,X3 ,X4]
4行3列の行列 [b1,b2,b3]
ただ、ここでは、ノードではなく辺の方に注目してみよう。
どのようなタイプのデータが、辺の上を流れるかを考えよう。
4つの入力を受け取り、3つの出力を返す、3つのニューロンの「層」
行列
の積X
W
行列
の和
b
φの
適用
[X1,X2,X3 ,X4]
4行3列の行列 [b1,b2,b3]
TensorFlowでは、こうしたデータをすべてテンソルと呼んでいる。
どのような、タイプのデータか見てみよう。
4つの入力を受け取り、3つの出力を返す、3つのニューロンの「層」
行列
の積X
W
行列
の和
b
φの
適用
[X1,X2,X3 ,X4]
4行3列の行列 [b1,b2,b3]
テンソルには、いろいろなタイプがある。
3次元の 3次元の 3次元の
行ベクトル 行ベクトル 行ベクトル
2つの入力を受け取り、5つの出力を返す、5つのニューロンの「層」
行列
の積X
W
行列
の和
b
φの
適用
[X1,X2]
2行5列の行列 [b1,b2,b3,b4,b5]
テンソルには、いろいろなタイプがある。
5次元の 5次元の 5次元の
行ベクトル 行ベクトル 行ベクトル
TensorFlowとテンソル
 TensorFlowのプログラムは、すべてのデータを表現する
ものとしてテンソル・データ構造を利用する。
 TensorFlowのテンソルは、n次元の配列あるいはリスト
だと考えることができる。
 テンソルは、静的な型と動的な次元を持っている。
 計算グラフのノード間を移動するのは、テンソルだけであ
る。
テンソルのランク(階数)
 TensorFlowのシステムでは、テンソルは「ランク」と呼ば
れる次元の単位で記述される。
 テンソルのランクは、行列のランクとは異なるものである。
 テンソルのランクは、(時には、位数(order)とか度数
(degree)とかn次元とも呼ばれることがあるのだが)、テ
ンソルの次元の数である。
 例えば、Pythonのリストで定義された次のテンソルのラ
ンクは 2である。
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
テンソルのランク(階数)
 ランク2のテンソルで、われわれが典型的に考えるのは
「行列」である。
 ランク1のテンソルは、「ベクトル」である。
 ランク2のテンソルに対しては、t[i,j] という構文で、任意
の要素にアクセスできる。
 ランク3のテンソルには、t[i,j,k]でアクセスする必要があ
る。
ランク 数学的実体 Pythonでの表記
0 スカラー(大きさのみ) s = 483
1 ベクトル(大きさと向き) v = [1.1, 2.2, 3.3]
2 行列 (数字のテーブル) m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3 3-テンソル
t = [[[2], [4], [6]], [[8], [10], [12]], [[14],
[16], [18]]]
n n-Tensor ....
テンソルのランク(階数)
テンソルの形
 TensorFlowのドキュメントでは、テンソルの次元を記述
するのに、ランク、形、次元数の三つを用いる。
Rank Shape
Dimension
number
Example
0 [] 0-D A 0-D tensor. A scalar.
1 [D0] 1-D A 1-D tensor with shape [5].
2 [D0, D1] 2-D A 2-D tensor with shape [3, 4].
3 [D0, D1, D2] 3-D A 3-D tensor with shape [1, 4, 3].
n [D0, D1, ... Dn] n-D A tensor with shape [D0, D1, ... Dn].
TensorFlowプログラミング
 TensorFlowでグラフを定義する
 TensorFlowの変数定義
 訓練: パラメーターを最適化をする
 TensorFlowプログラムサンプル
TensorFlowでグラフを定義する
TensorFlowのプログラムは、まず、グラフを定義す
ることから始まる。
表現は単純化されているが、多数のノードからなる、
多層のグラフも、簡単に定義できる。
TensorFlowでは、複数のニューロンからなる一つの層は、
次のようなグラフで表現されることを、思い出して欲しい。
行列
の積X
W
行列
の和
b
φの
適用
5つのノードがあるが、Wとbには、重みとバイアスの値が入り、
残りの3つのノードは、演算を行うノードである。この層の働きは、
φ(X・W+b) で表現される。
一つの層
Wとbの値は、この層の中での計算に利用されるだけでなく、その
次の段階では、Back Propagationで修正を受ける。それは、変数
Variableである。
行列
の積X
W
行列
の和
b
φの
適用
PythonのTensorFlowプログラムでは、固有の役割をもった
それぞれのノードは、固有の名前が割り当てられている。
先頭の tf はTensorFlow、nnはNeural Netの略だと思えばいい。
tf.Variable tf.Variable
tf.matmul + tf.nn.relu
φ(X・W+b)
グラフ定義は、次のようなわずか3行のプログラムになる。
weights = tf.Variable( ... ) # weight を入れる変数の定義
bias = tf.Variable( ... ) # biasを入れる変数の定義
# 層の働きを φ(X・W+b) で定義する。
# ここではφにreluを使っている
# imagesは、この層が受ける入力
# hidden1は、この層の出力である
hidden1 = tf.nn.relu(tf.matmul(images, weights) + biases)
φ(X・W+b)
このプログラムに出てくる、 images, weights, bias, hidden1
は、いずれもテンソルである。それがどのような形をしているかは、
ここでは省略したVariableの定義を述べる際に詳しく述べる。
Variableの定義によってテンソルの形は決まる。
二層からなるグラフのプログラムを見てみよう。
# 第一層
weights1 = tf.Variable( ... )
bias1 = tf.Variable( ... )
hidden1 = tf.nn.relu(tf.matmul(images, weights1) + biases1)
# 第二層
weights2 = tf.Variable( ... )
bias2 = tf.Variable( ... )
hidden2 = tf.nn.relu(tf.matmul( hidden1, weights2) + biases2)
第一層の出力のhidden1テンソルが、第二層の入力に、
そのまま利用されているのがわかる。
積
W
images 和
b
φ 積
W
和
b
φ
weight1 bias1 weight2 bias2
relu relu
images hidden1 hidden2
# 第一層
weights1 = tf.Variable( ... )
bias1 = tf.Variable( ... )
hidden1 = tf.nn.relu(tf.matmul(images, weights1) + biases1)
# 第二層
weights2 = tf.Variable( ... )
bias2 = tf.Variable( ... )
hidden2 = tf.nn.relu(tf.matmul( hidden1, weights2) + biases2)
TensorFlowプログラムと
対応するグラフ
三層からなるグラフのプログラムも簡単に書ける。
# 第一層
weights1 = tf.Variable( ... )
bias1 = tf.Variable( ... )
hidden1 = tf.nn.relu(tf.matmul(images, weights1) + biases1)
# 第二層
weights2 = tf.Variable( ... )
bias2 = tf.Variable( ... )
hidden2 = tf.nn.relu(tf.matmul( hidden1, weights2) + biases2)
# 第三層
weights3 = tf.Variable( ... )
bias3 = tf.Variable( ... )
logit = tf.matmul( hidden2, weights3) + biases3)
この例では、第三層は、Activatorを呼んでいない。
TensorFlowの変数定義
TensorFlowの変数(Variable)は、データの格納場
所として、他のプログラミング言語の変数と同じ役割
を果たす。ただ、TensorFlowの変数は、テンソルの
格納場所である。変数の定義では、それがどのような
「形」のテンソルの格納場所であるかを定義すること
が、重要な意味を持つ。
TensorFlowの変数
 他のプログラミング言語での変数と同じように、
TensorFlowの変数も、プログラムの中で、その値を読み
だしたり、値を変更したりできる。
 ただ、TensorFlowの変数は、一つの値を持つのではなく、
多次元の行列であるテンソルを格納している。実装として
は、それは、大きなメモリー・バッファーである。
 TensorFlowの変数は、どのようなテンソルを格納するの
かの情報をはじめとして、利用前に明示的に初期化され
なければならない。
 TensorFlowの変数は、その値を直接ディスクにSaveで
き、また、プログラムの中で、それをディスクからRestore
できる。
TensorFlowの変数の生成
 変数を生成するためには、そのコンストラクターに初期値
としてテンソルを渡す必要がある。そのための幾つかの
Helper関数が用意されている。
 この例では、 tf.random_normal と tf.zeros とい
う Helperを使っている。前者は乱数で、後者はゼロで変
数を初期化する。
 重要なことは、このHelperの第一引数が、この変数の初
期化に使われたテンソルの形(shape)を示しているとい
うことである。
# Create two variables.
weights = tf.Variable(
tf.random_normal([784,200], stddev=0.35), name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
変数の初期化
# 二つの変数を生成する
weights = tf.Variable(tf.random_normal([784, 200],
stddev=0.35), name=“weights”)
biases = tf.Variable(tf.zeros([200]), name="biases")
...
# この変数を初期化する演算を追加しておく
init_op = tf.initialize_all_variables()
# モデルを起動した後で、この初期化を呼び出す。
with tf.Session() as sess:
# Run the init operation.
sess.run(init_op)
...
# モデルを使う
...
ここではまだ実行されない
ノードが追加されただけ
ノードで構成されたモデルは
Sessionで初めて動き出す
呼出には、runを使う
[784,200]あるいは
[200]の形をしたテンソル
が用意されている。
変数の初期化(他の変数から)
# 乱数からなる変数を作る。784x200の行列。
weights = tf.Variable(tf.random_normal([784, 200],
stddev=0.35), name="weights")
# 先のweightsの初期値と同じ値を持つ変数w2を作る
w2 = tf.Variable(weights.initialized_value(), name="w2")
# weightsの初期値を二倍した値を持つ変数 twice を作る
twice = tf.Variable(weights.initialized_value() * 2.0,
name="w_twice")
変数のsave
# 変数を作る
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2") ...
# 変数を初期化する init_opノードを追加
init_op = tf.initialize_all_variables()
# すべての変数をsave,restoreするsaveノードを追加
saver = tf.train.Saver()
# モデルを起動し、変数を初期化し、何かの仕事をした後で
# 変数をディスクにsaveする
with tf.Session() as sess:
sess.run(init_op)
# モデルで何かの仕事をする
...
# 変数をディスクにsaveする
save_path = saver.save(sess, "/tmp/model.ckpt")
print("Model saved in file: %s" % save_path)
変数のrestore
# 変数を作る
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2") ...
...
# すべての変数をsave,restoreするsaveノードを追加
saver = tf.train.Saver()
# モデルを起動し、 変数をディスクからrestoreして
# 何かの仕事をする
with tf.Session() as sess:
# 変数をディスクにsaveする
saver.restore(sess, "/tmp/model.ckpt")
print("Model restored" )
# モデルで何かの仕事をする
...
訓練: ニューラル・ネットワークのパラメー
ター(重みとバイアス)を最適化をする
ニューラル・ネットワークの「訓練」は、プログラム上で
は簡単に記述されているが、計算時間の大部分は、
この「訓練」に費やされる。
パラメーター(重みとバイアス)の最適化
パラメーター(重みとバイアス)の最適化は、次のような繰り返
しのステップで行われる。(幾つかのバリエーションあり)
1. グラフが組みあがったら、そのグラフで入力データに対し
て出力を計算する。
2. その出力結果を、正しい答えと比較する。比較には、あら
かじめ定義していた損失関数を用いる。
3. Gradient Descent(勾配降下法)を使って、損失関数の
値が小さくなるようにパラメーター(重みとバイアス)を修正
する。
4. 新しいパラメーターのもとで、入力データに対して出力を
計算し、2.に戻る。損失関数が十分小さくなるまでこの処
理を繰り返す。
GradientDescentOptimizer
 TensorFlowでは、GradientDescentを使ったパラメー
ターの最適化のための最適化演算
GradientDescentOptimizerがあらかじめ用意されて
いる。
 このOptimizerを使って、損失関数を最小化せよという指
示を出せば、ニューラル・ネットワークのパラメーターは、
自動的に更新される。
 TensorFlowでは、こうして、パラメーター最適化のアルゴ
リズムが極めて簡単に書ける。
最適化のアルゴリズムの例1
(数値予測の場合)
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
(y-y_data)2
Σ1/2m損失関数 C =
学習率
最適化のアルゴリズムの例
(クラス分けの場合)
y_ = tf.placeholder("float", [None, 10])
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(cross_entropy)
(y_*log(y))Σ損失関数 C =
学習率
TensorFlowプログラムサンプル
数値予測とクラス分けは、ニューラル・ネットワークの
二大機能である。ここでは、この二つのタイプの簡単
なプログラム・サンプルを示す。
数値予測(線形回帰)の例
....
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b
# Minimize the mean squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# Before starting, initialize the variables. We will 'run' this first.
init = tf.initialize_all_variables()
# Launch the graph.
sess = tf.Session()
sess.run(init)
# Fit the line.
for step in xrange(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
....
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b
# Minimize the mean squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# Before starting, initialize the variables. We will 'run' this first.
init = tf.initialize_all_variables()
# Launch the graph.
sess = tf.Session()
sess.run(init)
# Fit the line.
for step in xrange(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
グラフの定義
最適化の
アルゴリズム
グラフの起動
グラフで訓練
繰り返し
クラス分け(手書き文字の認識)の例
....
# Create the model
x = tf.placeholder("float", [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
# Define loss and optimizer
y_ = tf.placeholder("float", [None, 10])
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01)
.minimize(cross_entropy)
# Train
tf.initialize_all_variables().run()
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
train_step.run({x: batch_xs, y_: batch_ys})
ソースの全体は、こちらにある。
https://goo.gl/MwscZO
....
# Create the model
x = tf.placeholder("float", [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
# Define loss and optimizer
y_ = tf.placeholder("float", [None, 10])
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01)
.minimize(cross_entropy)
# Train
tf.initialize_all_variables().run()
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
train_step.run({x: batch_xs, y_: batch_ys})
グラフの定義
最適化の
アルゴリズム
グラフで訓練
繰り返し
ソースの全体は、こちらにある。
https://goo.gl/MwscZO
この講演が扱った範囲
予告1
Convolutional NN と TensorFlow
φ(conv(X,W,...)+b) φ(X・W+b)
例えば、Filter W: [32,32,1,32]
予告2
Neural Net とクラウドの最新動向
日時: 4月4日 19:00~
場所: Google 六本木
登壇者
丸山不二夫、佐藤一憲(Google) 他
3月23-24日に行われる GoogleのGCP Next (Google
Cloud Platform Next)の報告会を兼ねて、ニューラル・
ネットワークとクラウドの最新動向を探ります。

Contenu connexe

Tendances

深層学習と確率プログラミングを融合したEdwardについて
深層学習と確率プログラミングを融合したEdwardについて深層学習と確率プログラミングを融合したEdwardについて
深層学習と確率プログラミングを融合したEdwardについてryosuke-kojima
 
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...Deep Learning JP
 
Graph Neural Networks
Graph Neural NetworksGraph Neural Networks
Graph Neural Networkstm1966
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)Satoshi Hara
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
Anomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめたAnomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめたぱんいち すみもと
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版
FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版
FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版Masatoshi Yoshida
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編Daiyu Hatakeyama
 
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料Ken'ichi Matsui
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題joisino
 
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知Chika Inoshita
 
4 データ間の距離と類似度
4 データ間の距離と類似度4 データ間の距離と類似度
4 データ間の距離と類似度Seiichi Uchida
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
ウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタToshihisa Tanaka
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~Hideki Tsunashima
 
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析Shinnosuke Takamichi
 
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)Shirou Maruyama
 
AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜Naoki Fujiwara
 

Tendances (20)

深層学習と確率プログラミングを融合したEdwardについて
深層学習と確率プログラミングを融合したEdwardについて深層学習と確率プログラミングを融合したEdwardについて
深層学習と確率プログラミングを融合したEdwardについて
 
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
 
Graph Neural Networks
Graph Neural NetworksGraph Neural Networks
Graph Neural Networks
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
Anomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめたAnomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめた
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版
FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版
FEPチュートリアル2021 講義3 「潜在変数が連続値、生成モデルが正規分布の場合」の改良版
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
 
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
「ベータ分布の謎に迫る」第6回 プログラマのための数学勉強会 LT資料
 
グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題
 
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知
 
4 データ間の距離と類似度
4 データ間の距離と類似度4 データ間の距離と類似度
4 データ間の距離と類似度
 
機械学習と主成分分析
機械学習と主成分分析機械学習と主成分分析
機械学習と主成分分析
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
ウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタ
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
 
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
 
AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜AI技術の現状と課題 〜aiboおよび自然言語処理〜
AI技術の現状と課題 〜aiboおよび自然言語処理〜
 

En vedette

機械学習技術の現在
機械学習技術の現在機械学習技術の現在
機械学習技術の現在maruyama097
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)徹 上野山
 
機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Paper機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Papermaruyama097
 
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。tak9029
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門tak9029
 
ContainerとName Space Isolation
ContainerとName Space IsolationContainerとName Space Isolation
ContainerとName Space Isolationmaruyama097
 
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)tak9029
 
TensorFlowとは? ディープラーニング (深層学習) とは?
TensorFlowとは? ディープラーニング (深層学習) とは?TensorFlowとは? ディープラーニング (深層学習) とは?
TensorFlowとは? ディープラーニング (深層学習) とは?KSK Analytics Inc.
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~nlab_utokyo
 
use_legacy_sql=false
use_legacy_sql=falseuse_legacy_sql=false
use_legacy_sql=falseyancya
 
IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18Seigo Tanaka
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTKmaruyama097
 
賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号Akio Kondo
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3tak9029
 
Hadoopによる大規模分散データ処理
Hadoopによる大規模分散データ処理Hadoopによる大規模分散データ処理
Hadoopによる大規模分散データ処理Yoji Kiyota
 
Autoencoderの実装と愉快な仲間との比較
Autoencoderの実装と愉快な仲間との比較Autoencoderの実装と愉快な仲間との比較
Autoencoderの実装と愉快な仲間との比較YumaMatsuoka
 

En vedette (20)

機械学習技術の現在
機械学習技術の現在機械学習技術の現在
機械学習技術の現在
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
 
機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Paper機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Paper
 
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門
 
ContainerとName Space Isolation
ContainerとName Space IsolationContainerとName Space Isolation
ContainerとName Space Isolation
 
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)
 
TensorFlowとは? ディープラーニング (深層学習) とは?
TensorFlowとは? ディープラーニング (深層学習) とは?TensorFlowとは? ディープラーニング (深層学習) とは?
TensorFlowとは? ディープラーニング (深層学習) とは?
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 
use_legacy_sql=false
use_legacy_sql=falseuse_legacy_sql=false
use_legacy_sql=false
 
IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18IoT縛りの勉強会! IoTLT vol.18
IoT縛りの勉強会! IoTLT vol.18
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTK
 
賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
Hadoopによる大規模分散データ処理
Hadoopによる大規模分散データ処理Hadoopによる大規模分散データ処理
Hadoopによる大規模分散データ処理
 
2016tf study5
2016tf study52016tf study5
2016tf study5
 
Autoencoderの実装と愉快な仲間との比較
Autoencoderの実装と愉快な仲間との比較Autoencoderの実装と愉快な仲間との比較
Autoencoderの実装と愉快な仲間との比較
 

Plus de maruyama097

Convolutionl Neural Network 入門
Convolutionl Neural Network 入門Convolutionl Neural Network 入門
Convolutionl Neural Network 入門maruyama097
 
ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望maruyama097
 
Cloud OSの進化を考える
Cloud OSの進化を考えるCloud OSの進化を考える
Cloud OSの進化を考えるmaruyama097
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twittermaruyama097
 
Facebook Parseの世界
Facebook Parseの世界Facebook Parseの世界
Facebook Parseの世界maruyama097
 
Project Araとものづくりの未来
Project Araとものづくりの未来Project Araとものづくりの未来
Project Araとものづくりの未来maruyama097
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02maruyama097
 
Project Araと新しいものづくりのエコシステム
  Project Araと新しいものづくりのエコシステム  Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムmaruyama097
 
エンタープライズと機械学習技術
エンタープライズと機械学習技術エンタープライズと機械学習技術
エンタープライズと機械学習技術maruyama097
 
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識maruyama097
 
Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?maruyama097
 
Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムProject Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムmaruyama097
 
人間の思考、機械の思考
人間の思考、機械の思考人間の思考、機械の思考
人間の思考、機械の思考maruyama097
 
グローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケットグローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケットmaruyama097
 
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?maruyama097
 
大規模グラフデータ処理
大規模グラフデータ処理大規模グラフデータ処理
大規模グラフデータ処理maruyama097
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programmingmaruyama097
 
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界maruyama097
 

Plus de maruyama097 (20)

Convolutionl Neural Network 入門
Convolutionl Neural Network 入門Convolutionl Neural Network 入門
Convolutionl Neural Network 入門
 
ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望
 
Cloud OSの進化を考える
Cloud OSの進化を考えるCloud OSの進化を考える
Cloud OSの進化を考える
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
 
Facebook Parseの世界
Facebook Parseの世界Facebook Parseの世界
Facebook Parseの世界
 
Aurora
AuroraAurora
Aurora
 
Project Araとものづくりの未来
Project Araとものづくりの未来Project Araとものづくりの未来
Project Araとものづくりの未来
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02
 
Project Araと新しいものづくりのエコシステム
  Project Araと新しいものづくりのエコシステム  Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステム
 
エンタープライズと機械学習技術
エンタープライズと機械学習技術エンタープライズと機械学習技術
エンタープライズと機械学習技術
 
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
 
Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?
 
Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムProject Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステム
 
人間の思考、機械の思考
人間の思考、機械の思考人間の思考、機械の思考
人間の思考、機械の思考
 
グローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケットグローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケット
 
Google Dremel
Google DremelGoogle Dremel
Google Dremel
 
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
 
大規模グラフデータ処理
大規模グラフデータ処理大規模グラフデータ処理
大規模グラフデータ処理
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
 

Dernier

Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxivanwang53
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ivanwang53
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元ivanwang53
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンivanwang53
 
動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Componentsokitamasashi
 
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]Taka Narita
 

Dernier (6)

Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
 
動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components
 
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
 

Neural Network + Tensorflow 入門講座