狠狠撸

狠狠撸Share a Scribd company logo
プログラミング言語として
考えたTensorFlow
梅澤 慶介
1
紹介発表
2
プログラミング言語として
考えるとは
? プログラミング言語は、意味論によって文字列がどのよ
うな実行コードになるか厳密に定義できる
? 意味論が存在する言語は???
? コンパイラが正しいかどうか証明できる
? プログラムの性質を解析?検証できる
? プログラムの保守?再利用ができる
? プログラミング言語として考えるとは、意味論に基いて
考えてみようということ。
3
プログラミング言語の意味論
? ちなみに???
? 厳密な意味論がある言語
? Scheme, Standard ML …
? 自然言語による意味論がある言語
? C, Java …
? 意味論がない言語
? Ruby …
4
AGENDA
? プログラミング言語の意味論
? TensorFlowの意味論
5
AGENDA
? プログラミング言語の意味論
? TensorFlowの意味論
6
プログラミング言語の
意味論とは
? 複雑なプログラムの背後にある数学的な構造をつきとめ
、分析することによって、プログラムに関して成り立つ
本質的な原理を導くことを目的とする研究分野
? 例:意味論としては以下は同じ
? if 1 = 1 then S1 else S2
? S1
7
プログラミングの意味とは
? プログラミング言語のプログラムは、コンピュータに何
かをさせるための指示を記述する文章であり、通常、有
限長の記号の列として与えられる
? 記号列に固有の意味が元から備わっているわけではない
ので、プログラムの表現する計算=プログラムの意味(
semantics)を別に定義する必要がある。
? プログラムの意味を数学的に定義すること、およびその
理論的な枠組みのことを、プログラミング言語の意味論
(プログラム意味論)と呼ぶ。
8
意味論の形式化方法
? 操作的意味論
? 言語の実行によって直接的に意味を説明する。操作的意味論は
インタプリタと対応すると考えることもできる。
? 表示的意味論
? 対象とする言語の語句それぞれを「表示」に変換、すなわち別
の言語の語句に翻訳する。表示的意味論はコンパイルと対応す
ると考えることもできる。
? 公理的意味論
? 語句の並びに「論理学的公理」を適用することによって意味を
明らかにする。プログラムの意味は論理学で証明可能なものと
等価である。
Wikipedia:プログラム意味論 [1] 9
プログラミング言語意味論の
意義とは
? 意義
? プログラムの見通し良い設計
? プログラムの性質の検証
? プログラムの効率化?最適化
10
AGENDA
? プログラミング言語の意味論
? TensorFlowの意味論
11
TensorFlowの意味論を考える
意義とは
? プログラミング言語意味論の意義
? プログラムの見通し良い設計
? プログラムの性質の検証
? プログラムの効率化?最適化
? TFの意味論を考える意義
? TFの見通し良い設計
? TFの性質の検証
? TFの効率化?最適化
12
TensorFlowの意味論を考える
意義とは (cont’d)
? プログラミング言語意味論の意義
? プログラムの見通し良い設計
? プログラムの性質の検証
? プログラムの効率化?最適化
? TFの意味論を考える意義
? TFの見通し良い設計
? TFの性質の検証
? TFの効率化?最適化
13
TensorFlowの意味論を考える
意義とは (cont’d)
? プログラミング言語意味論の意義
? プログラムの見通し良い設計
? プログラムの性質の検証
? プログラムの効率化?最適化
? TFの意味論を考える意義
? TFの見通し良い設計 → TFの言語設計が良くなる
? TFの性質の検証
? TFの効率化?最適化 → TFでXLAによる最適化を行える
14
TensorFlowの操作的意味論
? 操作的意味論
? 言語の実行によって直接的に意味を説明する。操作的
意味論はインタプリタと対応すると考えることもでき
る。
15
TensorFlowの操作的意味論
(cont’d)
? TensorFlowは操作的意味論によって、その意味を形式化
している。特に、処理をデータフローグラフを用いて表
現することによって形式化を行う。
16
TensorFlowの操作的意味論
(cont’d)
? node:operationを表現する
? edge:valueのフローを表現する
17
valueの定義
? TF valuesと呼び、以下の種類が存在する
? :tensor。多次元arrayのこと。
? :variable。変数のハンドラ。
? :トリガーのこと。
? :EMPTY。生成されていないor使用済みのデータ
のこと
18
A
GO
B
EMP
Var
edgeの定義
? 以下の種類が存在する
? :tensor edge。tensorを伝えるために使用する
? :variable edge。Varを伝えるために使用する
? :control edge。GO トリガーを伝えるために使用
する
19
operatorの定義
? TF operatorsと呼び、以下の種類が存在する
? :変数xのハンドラVarに変換する
? :Varが持つ現在の変数の値を取得する
? :k次元tensor→l次元のtensorの関数
? :(Var, tensor)→Varの関数。計算結果をVarに代入
20
Read
Var(x)
assign-
f
f
簡単な例
21
Read
Var(x)
Write
A
Var(x)
xの値は
B
計算のルール
1. 初期状態は以下
1. 外部入力は非
2. それ以外は
2. 入力edgeが全て非 の場合に計算を行う
3. 使用したedgeは再び にする
22
EMP
EMP
EMP
EMP
簡単な例の計算
23
Read
Var(x)
Write
GO A
EMP
B
Var(x)
GO
EMP
xの値は
GO
EMP EMP
簡単な例の計算
24
Read
Var(x)
Write
Var
B
Var(x)
GO
EMP
EMP
Axの値は
EMP
EMP
簡単な例の計算
25
Read
Var(x)
Write
Var(x)
GO
EMP
Bxの値は
EMP
EMP
EMP
EMP
GO
簡単な例の計算
26
Read
Var(x)
Write
Var(x)
EMP
Bxの値は
EMP
EMP
EMP
EMP
GO
Var
簡単な例の計算
27
Read
Var(x)
Write
Var(x)
EMP
Bxの値はEMP
EMP
EMP
B
EMP
EMP
まとめ
? プログラムを厳密に定義するには、意味論が必要である
? TensorFlowはプログラミング言語としての意味論が定義
されており、言語設計が良さ?最適化のしやすさに貢献
している
28
参考
? [1] Wikipedia:プログラム意味論
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82
%B0%E3%83%A9%E3%83%A0%E6%84%8F%E5%91%B3%E
8%AB%96
? [2] XLA Overview https://www.tensorflow.org/performance/xla/
? http://www.kurims.kyoto-u.ac.jp/~kenkyubu/kokai-
koza/katsumata.pdf
? http://www.kurims.kyoto-u.ac.jp/~kenkyubu/kokai-koza/H28-
hasegawa.pdf
? http://mandel59.hateblo.jp/entry/2016/05/11/002356
29

More Related Content

フ?ロク?ラミンク?言語として考えたTensor flow