-
Notifications
You must be signed in to change notification settings - Fork 0
/
plan.tm
188 lines (125 loc) · 6.67 KB
/
plan.tm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<TeXmacs|2.1.1>
<style|web-article>
<\body>
<\hide-preamble>
<assign|table-of-contents-text|<macro|<inactive|<localize|<myblue|Navigation>>>>>
<assign|definition-text|<macro|<localize|Definition>>>
<assign|render-theorem|<\macro|which|body>
<render-enunciation|<theorem-name|<arg|which><theorem-sep>>|<arg|body>>
</macro>>
<assign|section|<macro|title|<assign|section-numbered|<compound|section-display-numbers>><assign|section-prefix|<macro|<compound|the-section>.>><compound|next-section><compound|section-clean><compound|section-header|<arg|title>><compound|section-toc|<arg|title>><if|<value|section-numbered>|<section-numbered-title|<myblue|<arg|title>>>|<compound|section-unnumbered-title|<myblue|<arg|title>>>>>>
\;
<assign|subsection|<macro|title|<assign|subsection-numbered|<compound|subsection-display-numbers>><assign|subsection-prefix|<macro|<compound|the-subsection>.>><compound|next-subsection><compound|subsection-clean><compound|subsection-header|<arg|title>><compound|subsection-toc|<arg|title>><if|<value|subsection-numbered>|<compound|subsection-numbered-title|<myblue|<arg|title>>>|<compound|subsection-unnumbered-title|<myblue|<arg|title>>>>>>
<assign|infix-iff|<macro|<math-imply|<text|
<localize|<space|1em>iff<space|1em>> >>>>
\;
<assign|garnet|<macro|body|<with|color|#990002|<arg|body>>>>
<assign|myblue|<macro|body|<with|color|#0749ac|<arg|body>>>>
<assign|key|<macro|body|<myblue|<strong|<arg|body>>>>>
<assign|Model|<with|font|cal|M>>
<assign|Net|<with|font|cal|N>>
<assign|Set|<with|font-family|ss|Set>>
<assign|Primes|<with|font-family|ss|P>>
<assign|semantics|<macro|body|<around*|\<llbracket\>|<arg|body>|\<rrbracket\>>>>
<assign|Lang|<with|font|cal|L>>
<assign|vocab|<with|font|cal|V>>
<assign|wocab|<with|font|cal|W>>
<assign|proves|\<vdash\>>
<assign|orr|\<vee\>>
<assign|land|\<wedge\>>
<assign|NP|<with|font-shape|small-caps|NP>>
<assign|axiom|<macro|body|<with|font-shape|small-caps|<arg|body>>>>
<assign|bigchi|<larger|\<chi\>>>
<assign|powerset|<with|font|cal|P>>
\;
<assign|hash|<with|font-family|ss|hash>>
<assign|Know|<with|font-series|bold|<text|K>>>
<assign|diaKnow|\<langle\><value|Know>\<rangle\>>
<assign|Typ|<with|font-series|bold|<text|T>>>
<assign|diaTyp|\<langle\><value|Typ>\<rangle\>>
<assign|Reach|<with|font-family|ss|Reach>>
<assign|Prop|<with|font-family|ss|Prop>>
<assign|Update|<with|font-family|ss|Update>>
<assign|Inc|<with|font-family|ss|Inc>>
<assign|AllNets|<with|font-family|ss|Net>>
<assign|AllModels|<with|font-family|ss|Model>>
<assign|doc-title|<macro|x|<\surround|<vspace*|0.5fn>|<vspace|0.5fn>>
<doc-title-block|<font-magnify|1.682|<doc-title-name|<myblue|<arg|x>>>>>
</surround>>>
<assign|item*|<macro|name|<render-item|<arg|name>><with|index-enabled|false|<set-binding|<arg|name>>>>>
<assign|bibliography-text|<macro|<localize|<myblue|References>>>>
<assign|render-bibliography|<\macro|name|body>
<principal-section*|<arg|name>>
<with|par-first|0fn|par-par-sep|0fn|font-size|0.84|<arg|body>>
</macro>>
<assign|thebibliography|<\macro|largest|body>
<render-bibliography|<bibliography-text>|<bib-list|<arg|largest>|<arg|body>>>
</macro>>
<assign|sectional-sep|<macro|<space|2spc>>>
<assign|sectional-post-sep|<macro|<space|2spc>>>
<assign|proposition-text|<macro|<localize|Proposition>>>
<assign|definition*|<\macro|body>
<compound|render-theorem|<compound|definition-unnumbered|<compound|definition-text>>|<arg|body>>
</macro>>
\;
<new-theorem|claim|Claim>
<new-theorem|goal|Goal>
</hide-preamble>
<doc-data|<doc-title|Verification for Neural Net Learning>>
<section*|Aim & Scope>
The main goal of the program is to do model checking for neural network
learning. Actually, I'm using model checking here to refer to two separate
tasks. The first is: <with|font-shape|italic|Given a neural network model
<math|<value|Net>>, a learning policy <verbatim|learn>, and a specific
interpretation <math|<semantics|\<cdot\>>>, verify that
<math|\<langle\><value|Net>,<semantics|\<cdot\>>\<rangle\>> has property
<math|P>>. For example, given Google's recommendation network, verify that
this net does not lead users to conspiratorial webpages (typically, with
acceptable error). This is the task people most often want from model
checking.
The catch is that we need to know ahead of time the interpretation
<math|<semantics|\<cdot\>>> \V i.e. we need to know which propositions map
to which sets of neurons. Usually, we don't have full information about
this; we may know that a certain input <math|<wide|x|\<vect\>>> maps to a
set <math|S>, but the neurons that denote a hidden-layer concept
<math|<wide|h|\<vect\>>> are completely unknown.
Our program should be able to do this kind of model checking
<verbatim|N.models(learn, interp)>, especially when <verbatim|interp> is
only a <with|font-shape|italic|partial> mapping. (We would like to be able
to reason about hidden states without knowing their mapping.)
The second is: <with|font-shape|italic|Given a general description of a
neural network <math|<value|Net>> and a learning policy <verbatim|learn>,
verify that the learning algorithm has a certain general property
<math|P>>. For example, we could verify that (say) backpropagation will
never predict a category that was not in the training set. This is where
our system shines. This allows us to check that a learning policy
<verbatim|learn> has the correct behavior, <with|font-shape|italic|no
matter what> the interpretation.
Our program should be able to do this: <verbatim|N.is_valid(learn)>. But
the program should be designed with extensions in mind. A user should be
able to plug in their own favorite learning algorithm and check that it
behaves correctly. The vision I have in mind is a tool that allows us to
explore how different learning policies relate, as well as to discover
entirely new learning policies.
\;
</body>
<\initial>
<\collection>
<associate|font-base-size|12>
<associate|page-medium|paper>
</collection>
</initial>
<\references>
<\collection>
<associate|auto-1|<tuple|?|1|../.TeXmacs/texts/scratch/no_name_7.tm>>
</collection>
</references>
<\auxiliary>
<\collection>
<\associate|toc>
<vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|Aim
& Scope> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-1><vspace|0.5fn>
</associate>
</collection>
</auxiliary>