==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==

Text Elements

Embedded files

da537ef4a57236c206a800001be49018b03161c8: [[Pasted Image 20230417205625_574.jpg]]

%%

Drawing

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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
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

YAGNBABjQgAA

%%

GPG on hpc

GPG on hpc

loopback

  • echo allow-loopback-pinentry >> ~/.gnupg/gpg-agent.conf
  • input passphrase in ~/.___
  • echo -n "#\!/usr/bin/bash \ngpg --pinentry-mode loopback --batch --yes --passphrase-fd 1 --passphrase-file ~/.___ $@" >> ~/.gpg-pinentry-loopback
  • chmod +x ~/.gpg-pinentry-loopback
  • git config --global gpg.program $HOME/.gpg-pinentry-loopback
  • success in vscode

Time Cache

  • echo -n "default-cache-ttl 34560000\n max-cache-ttl 34560000" >> ~/.gnupg/gpg-agent.conf

Group Meeting

Group Meeting

  1. You can try it (cocluster the input matrix)
  2. You can write a small paper on how to cocluster the big matrix (millions?). Maybe CUR can be used.
  3. LoRA is very popular. But we have different ideas.

Kolmogorov’s extension theorem

Kolmogorov’s extension theorem

For all $t_1, \ldots, t_k \in T, k \in \mathbf{N}$ let $\nu_{t_1, \ldots, t_k}$ be probability measures on $\mathbf{R}^{n k}$ s.t.
$$
\nu_{t_{\sigma(1)}, \cdots, t_{\sigma(k)}}\left(F_1 \times \cdots \times F_k\right)=\nu_{t_1, \cdots, t_k}\left(F_{\sigma^{-1}(1)} \times \cdots \times F_{\sigma^{-1}(k)}\right)
$$
for all permutations $\sigma$ on ${1,2, \ldots, k}$ and
$$
\nu_{t_1, \ldots, t_k}\left(F_1 \times \cdots \times F_k\right)=\nu_{t_1, \ldots, t_k, t_{k+1}, \ldots, t_{k+m}}\left(F_1 \times \cdots \times F_k \times \mathbf{R}^n \times \cdots \times \mathbf{R}^n\right)
$$
for all $m \in \mathbf{N}$, where (of course) the set on the right hand side has a total of $k+m$ factors.

Then there exists a probability space $(\Omega, \mathcal{F}, P)$ and a stochastic process $\left{X_t\right}$ on $\Omega, X_t: \Omega \rightarrow \mathbf{R}^n$, s.t.
$$
\nu_{t_1, \ldots, t_k}\left(F_1 \times \cdots \times F_k\right)=P\left[X_{t_1} \in F_1, \cdots, X_{t_k} \in F_k\right],
$$
for all $t_i \in T, k \in \mathbf{N}$ and all Borel sets $F_i$.

Kolmogorov的延拓定理解决了在给定各个坐标空间上的概率测度的情况下,如何构造一个概率测度来描述乘积空间的问题。
简单来说,Kolmogorov的延拓定理允许我们为定义在不同空间上的一组随机变量构造一个联合概率测度。
它提供了一种将概率测度从有限维空间延拓到无限维乘积空间的方法。

Kolmogorov的延拓定理要求满足以下条件:完全一致性条件(完全可测性):给定一组可测空间和其上的概率测度,这些测度必须满足完全一致性条件。
即,对于任意的有限个可测集合,它们的乘积集合在每个坐标空间上的投影集合的概率测度必须与已知的概率测度一致。
Kohlrausch条件(无信息传递性):该条件要求当从一个坐标空间的可测集合推断到另一个坐标空间时,概率测度是一致的。
换句话说,如果两个可测集合的投影集合在某个坐标空间上的概率已知,则这两个可测集合的乘积集合在其他坐标空间上的概率也应该是一致的。
满足这些条件,就可以使用Kolmogorov的延拓定理构造一个满足一致性要求的概率测度。

Wikipedia for Kolmogorov 延拓定理

Let $T$ denote some Interval (thought of as “time”), and let $n \in \mathbb{N}$. For each $k \in \mathbb{N}$ and finite sequence of distinct times $t_{1}, \dots, t_{k} \in T$, let $\nu_{t_{1} \dots t_{k}}$ be a probability measure on $(\mathbb{R}^{n})^{k}$. Suppose that these measures satisfy two consistency conditions:

  1. for all permutations $\pi$ of ${ 1, \dots, k }$ and measurable sets $F_{i} \subseteq \mathbb{R}^{n}$:
    $$\nu_{t_{\pi (1)} \dots t_{\pi (k)}} \left( F_{\pi (1)} \times \dots \times F_{ \pi(k)} \right) = \nu_{t_{1} \dots t_{k}} \left( F_{1} \times \dots \times F_{k} \right);$$测度改变顺序后不变
  2. for all measurable sets $F_{i} \subseteq \mathbb{R}^{n}$,$m \in \mathbb{N}$ :
    $$\nu_{t_{1} \dots t_{k}} \left( F_{1} \times \dots \times F_{k} \right) = \nu_{t_{1} \dots t_{k}, t_{k + 1}, \dots , t_{k+m}} \left( F_{1} \times \dots \times F_{k} \times \underbrace{\mathbb{R}^{n} \times \dots \times \mathbb{R}^{n}}_{m} \right).$$
    可扩展?

Then there exists a probability space $(\Omega, \mathcal{F}, \mathbb{P})$ and a stochastic process $X : T \times \Omega \to \mathbb{R}^{n}$ such that
:$\nu_{t_{1} \dots t_{k}} \left( F_{1} \times \dots \times F_{k} \right) = \mathbb{P} \left( X_{t_{1}} \in F_{1}, \dots, X_{t_{k}} \in F_{k} \right)$
for all $t_{i} \in T$, $k \in \mathbb{N}$ and measurable sets $F_{i} \subseteq \mathbb{R}^{n}$, i.e. $X$ has $\nu_{t_{1} \dots t_{k}}$ as its finite-dimensional distributions relative to times $t_{1} \dots t_{k}$.

In fact, it is always possible to take as the underlying probability space $\Omega = (\mathbb{R}^n)^T$ and to take for $X$ the canonical process $X\colon (t,Y) \mapsto Y_t$. Therefore, an alternative way of stating Kolmogorov’s extension theorem is that, provided that the above consistency conditions hold, there exists a (unique) measure $\nu$ on $(\mathbb{R}^n)^T$ with marginals $\nu_{t_{1} \dots t_{k}}$ for any finite collection of times $t_{1} \dots t_{k}$. Kolmogorov’s extension theorem applies when $T$ is uncountable, but the price to pay
for this level of generality is that the measure $\nu$ is only defined on the product σ-algebra of $(\mathbb{R}^n)^T$, which is not very rich.

Brownian Motion

Definition

A stochastic process $\left{B_t\right}_{t \geq 0}$ is called a Brownian motion if it can be constructed as follows:

Fix $x \in \mathbb{R}^n$ and define

$$
p(t, x, y) = \frac{1}{(2 \pi t)^{n/2}} \exp \left(-\frac{|x-y|^2}{2t}\right)
$$

Then if $0 \geq t_1 < t_2 < \cdots < t_k$ define a measure $\mu_{t_1, \cdots, t_k}$ on $\mathbb{R}^{nk}$ by

$$
\mu_{t_1, \cdots, t_k} (F_1 \times \cdots \times F_k) = \int_{F_1 \times \cdots \times F_k} p(t_1, x_0, x_1) p(t_2 - t_1, x_1, x_2) \cdots p(t_k - t_{k-1}, x_{k-1}, x_k) dx_1 \cdots dx_k
$$

where $F_i \in \mathcal{B}(\mathbb{R}^n)$.

Then $\mu_{t_1, \cdots, t_k}$ is a probability measure on $\mathbb{R}^{nk}$ and the finite dimensional distributions of $\left{B_t\right}_{t \geq 0}$ are given by

$$
P^x(B_{t_1} \in F_1, \cdots, B_{t_k} \in F_k) = \mu_{t_1, \cdots, t_k} (F_1 \times \cdots \times F_k).
$$

We state some basic properties of Brownian motion:

  1. $B_t$ is a Gaussian process.
  2. $B_t$ has independent increments.

Linux Onedrive

Linux Onedrive

Install

Install Onedrive

1
sudo apt install onedrive

Config

1
onedrive --synchronize --verbose

Download specific folder

1
onedrive --synchronize --verbose --download-only "folder_name"

Stop sync

1
onedrive --synchronize --verbose --stop

Linux环境下的VSCode和Git配置

Linux环境下的VSCode和Git配置

移动硬盘分区情况

![[Pasted image 20230722114843.png]]

  • AppleAPFSMedia是两个共用空间的卷宗
  • LINUX 是16G的启动盘(FAT32)
  • Extended 是 Exfat.

vscode on linux

git configuration

  • git config --global user.name "wzh4464"
  • git config --global user.email "32484940+wzh4464@users.noreply.github.com"
  • gpg key: git config --global user.signingkey ****
  • git config --global commit.gpgsign true
  • example: git commit -S -m “commit message”
  • -s means --signoff and -S means --gpg-sign

export gpg private key

1
2
gpg --export-secret-keys -a **** > private.key
rsync -avzP private.key ***

gpg configuration

  • 先import: gpg --batch --import private.key
  • 再trust: gpg --edit-key ****
  • trust -> 5 -> y -> quit

obsidian git

  • plugin name: obsidian git

  • 不知道有没有用的:

    • curl -L https://aka.ms/gcm/linux-install-source.sh | sh
    • git-credential-manager configure
  • 使用gpg来验证身份

    • git config --global credential.credentialStore gpg
  • install pass

  • pass init ****

git interactive editor vim

  • git config --global core.editor "vim"

time zone incompatible

timedatectl set-local-rtc 1

install matlab on centos

install matlab on centos

  • download according to network access/client computer:
    • For example, first download it to your mac
  • log in, agree to the acknowledgment, and click on Advance Option on the right above, then choose Download only
  • Acquire hostid of the server computer. ip link show and copy the mac address.
  • https://ww2.mathworks.cn/licensecenter/licenses/40746419/5495716/activations?bypass=true
  • ./install -inputfile installer_input.txt -tmpdir /home/jeff/zihan/tmp
  • supported compiler is required:

    Fixed-Point Designer
    SimBiology

    The following products require a supported compiler:

    Embedded Coder
    MATLAB Coder
    Simulink Coder
    Simulink Test
    Stateflow

    MATLAB Compiler SDK requires the following:

    ● a supported compiler for creation of C and C++ Shared libraries
    ● a Java JDK for creation of Java packages

    Simulink requires a C compiler for simulation acceleration, model reference, and MATLAB Function Block capabilities. It is recommended that you install a supported compiler on your machine.

    The following products require Hardware Setup for third-party tools configuration:

    C2000 Microcontroller Blockset

MacOS plugin

MacOS plugin

This plugin provides a few utilities to make it more enjoyable on macOS (previously named OSX).

To start using it, add the macos plugin to your plugins array in ~/.zshrc:

1
plugins=(... macos)

Original author: Sorin Ionescu

Commands

Command Description
tab Open the current directory in a new tab
split_tab Split the current terminal tab horizontally
vsplit_tab Split the current terminal tab vertically
ofd Open the current directory in a Finder window
pfd Return the path of the frontmost Finder window
pfs Return the current Finder selection
cdf cd to the current Finder directory
pushdf pushd to the current Finder directory
pxd Return the current Xcode project directory
cdx cd to the current Xcode project directory
quick-look Quick-Look a specified file
man-preview Open man pages in Preview app
showfiles Show hidden files in Finder
hidefiles Hide the hidden files in Finder
itunes DEPRECATED. Use music from macOS Catalina on
music Control Apple Music. Use music -h for usage details
spotify Control Spotify and search by artist, album, track…
rmdsstore Remove .DS_Store files recursively in a directory
btrestart Restart the Bluetooth daemon
freespace Erases purgeable disk space with 0s on the selected disk

Acknowledgements

This application makes use of the following third party scripts:

shpotify

Copyright (c) 2012–2019 Harish Narayanan.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
“Software”), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.