From 3ebef0dc89238565da0b211cd8a03859ed9f753d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Mon, 12 Feb 2024 22:36:05 +0100 Subject: [PATCH 01/16] Update. --- randvar.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/randvar.tex b/randvar.tex index 6d3aae5..01007f6 100644 --- a/randvar.tex +++ b/randvar.tex @@ -80,10 +80,10 @@ Fran\c cois Fleuret \end{center} -\underline{Random variables} are central to any model of a random -process, but their mathematical definition is unclear to most. This is -an attempt at giving an intuitive understanding of their definition -and utility. +\underline{Random variables} (RVs) are central to any model of a +random phenomenon, but their mathematical definition is unclear to +most. This is an attempt at giving an intuitive understanding of their +definition and utility. \section{Modeling randomness} -- 2.39.5 From 119ad14a2072217edf3e2315154614815b72ccbd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Sat, 24 Feb 2024 09:06:51 +0100 Subject: [PATCH 02/16] Update. --- elbo.tex | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 elbo.tex diff --git a/elbo.tex b/elbo.tex new file mode 100644 index 0000000..6875ddf --- /dev/null +++ b/elbo.tex @@ -0,0 +1,140 @@ +%% -*- mode: latex; mode: reftex; mode: flyspell; coding: utf-8; tex-command: "pdflatex.sh" -*- + +%% Any copyright is dedicated to the Public Domain. +%% https://creativecommons.org/publicdomain/zero/1.0/ +%% Written by Francois Fleuret + +\documentclass[11pt,a4paper,oneside]{article} +\usepackage[paperheight=15cm,paperwidth=8cm,top=2mm,bottom=15mm,right=2mm,left=2mm]{geometry} +%\usepackage[a4paper,top=2.5cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsmath,amssymb,dsfont} +\usepackage[pdftex]{graphicx} +\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref} +\usepackage{tikz} +\usetikzlibrary{arrows,arrows.meta,calc} +\usetikzlibrary{patterns,backgrounds} +\usetikzlibrary{positioning,fit} +\usetikzlibrary{shapes.geometric,shapes.multipart} +\usetikzlibrary{patterns.meta,decorations.pathreplacing,calligraphy} +\usetikzlibrary{tikzmark} +\usetikzlibrary{decorations.pathmorphing} +\usepackage[round]{natbib} +\usepackage[osf]{libertine} +\usepackage{microtype} +\usepackage{fancyvrb} + +\usepackage{mleftright} + +\newcommand{\setmuskip}[2]{#1=#2\relax} +\setmuskip{\thinmuskip}{1.5mu} % by default it is equal to 3 mu +\setmuskip{\medmuskip}{2mu} % by default it is equal to 4 mu +\setmuskip{\thickmuskip}{3.5mu} % by default it is equal to 5 mu + +\setlength{\parindent}{0cm} +\setlength{\parskip}{1ex} +%\renewcommand{\baselinestretch}{1.3} +%\setlength{\tabcolsep}{0pt} +%\renewcommand{\arraystretch}{1.0} + +\def\argmax{\operatornamewithlimits{argmax}} +\def\argmin{\operatornamewithlimits{argmin}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\given{\,\middle\vert\,} +\def\proba{\operatorname{P}} +\newcommand{\seq}{{S}} +\newcommand{\expect}{\mathds{E}} +\newcommand{\variance}{\mathds{V}} +\newcommand{\empexpect}{\hat{\mathds{E}}} +\newcommand{\mutinf}{\mathds{I}} +\newcommand{\empmutinf}{\hat{\mathds{I}}} +\newcommand{\entropy}{\mathds{H}} +\newcommand{\empentropy}{\hat{\mathds{H}}} +\newcommand{\ganG}{\mathbf{G}} +\newcommand{\ganD}{\mathbf{D}} +\newcommand{\ganF}{\mathbf{F}} + +\newcommand{\dkl}{\mathds{D}_{\mathsf{KL}}} +\newcommand{\djs}{\mathds{D}_{\mathsf{JS}}} + +\allowdisplaybreaks[2] + +\newcommand*{\vertbar}{\rule[-1ex]{0.5pt}{2.5ex}} +\newcommand*{\horzbar}{\rule[.5ex]{2.5ex}{0.5pt}} + +\def\positionalencoding{\operatorname{pos-enc}} +\def\concat{\operatorname{concat}} +\def\crossentropy{\LL_{\operatorname{ce}}} + +\begin{document} + +\vspace*{0ex} + +\begin{center} +{\Large The Evidence Lower Bound} + +Fran\c cois Fleuret + +\today + +\vspace*{1ex} + +\end{center} + +Given a training set $x_1, \dots, x_N$ that follows an unknown +distribution $\mu_X$, we want to fit a model $p_\theta(x,z)$ to it, +maximizing +% +\[ +\sum_n \log \, p_\theta(x_n). +\] +% +If we do not have a analytical form of the marginal $p_\theta(x_n)$ +but only the expression of $p_\theta(x_n,z)$, we can get an estimate +of the marginal by sampling $z$ with any distribution $q$ +% +\begin{align*} +p_\theta(x_n) & = \int_z p_\theta(x_n,z) dz \\ + & = \int_z \frac{p_\theta(x_n,z)}{q(z)} q(z) dz \\ + & = \expect_{Z \sim q(z)} \left[\frac{p_\theta(x_n,Z)}{q(Z)}\right]. +\end{align*} +% +So if we wanted to maximize $p_\theta(x_n)$ alone, we could sample a +$Z$ with $q$ and maximize +% +\begin{equation*} +\frac{p_\theta(x_n,Z)}{q(Z)}.\label{eq:estimator} +\end{equation*} + +But we want to maximize $\sum_n \log \, p_\theta(x_n)$. If we use the +$\log$ of the previous expression, we can decompose its average value +as +\begin{align*} + & \expect_{Z \sim q(z)} \left[ \log \frac{p_\theta(x_n,Z)}{q(Z)} \right] \\ + & = \expect_{Z \sim q(z)} \left[ \log \frac{p_\theta(Z \mid x_n) \, p_\theta(x_n)}{q(Z)} \right] \\ + & = \expect_{Z \sim q(z)} \left[ \log \frac{p_\theta(Z \mid x_n)}{q(Z)} \right] + \log \, p_\theta(x_n) \\ + & = - \dkl(q(z) \, \| \, p_\theta(z \mid x_n)) + \log \, p_\theta(x_n). +\end{align*} +% +Hence this does not maximize $\log \, p_\theta(x_n)$ on average, but a +\emph{lower bound} of it, since the KL divergence is non-negative. And +since this maximization pushes that KL term down, it also aligns +$p_\theta(z \mid x_n)$ and $q(z)$, and we may get a worse +$p_\theta(x_n)$ to bring $p_\theta(z \mid x_n)$ closer to $q(z)$. + +However, all this analysis is still valid if $q$ is a parameterized +function $q_\alpha(z \mid x_n)$ of $x_n$. In that case, if we optimize +$\theta$ and $\alpha$ to maximize +% +\[ +\expect_{Z \sim q_\alpha(z \mid x_n)} \left[ \log \frac{p_\theta(x_n,Z)}{q_\alpha(Z \mid x_n)} \right], +\] +% +it maximizes $\log \, p_\theta(x_n)$ and brings $q_\alpha(z \mid +x_n)$ close to $p_\theta(z \mid x_n)$. + + +\end{document} -- 2.39.5 From 43b0cb04eae4537d95775038d9e700e642087d6d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Sat, 24 Feb 2024 12:11:36 +0100 Subject: [PATCH 03/16] Update. --- elbo.tex | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/elbo.tex b/elbo.tex index 6875ddf..239a657 100644 --- a/elbo.tex +++ b/elbo.tex @@ -71,16 +71,23 @@ \begin{document} -\vspace*{0ex} +\setlength{\abovedisplayskip}{2ex} +\setlength{\belowdisplayskip}{2ex} +\setlength{\abovedisplayshortskip}{2ex} +\setlength{\belowdisplayshortskip}{2ex} + +\vspace*{-4ex} \begin{center} {\Large The Evidence Lower Bound} +\vspace*{1ex} + Fran\c cois Fleuret \today -\vspace*{1ex} +\vspace*{-1ex} \end{center} @@ -102,12 +109,14 @@ p_\theta(x_n) & = \int_z p_\theta(x_n,z) dz \\ & = \expect_{Z \sim q(z)} \left[\frac{p_\theta(x_n,Z)}{q(Z)}\right]. \end{align*} % -So if we wanted to maximize $p_\theta(x_n)$ alone, we could sample a +So if we sample a $Z$ with $q$ and maximize % \begin{equation*} -\frac{p_\theta(x_n,Z)}{q(Z)}.\label{eq:estimator} +\frac{p_\theta(x_n,Z)}{q(Z)}, \end{equation*} +% +we do maximize $p_\theta(x_n)$ on average. But we want to maximize $\sum_n \log \, p_\theta(x_n)$. If we use the $\log$ of the previous expression, we can decompose its average value -- 2.39.5 From 44313fda41b14cbb410ee9aa1363b0e4ff18f0b7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Sun, 25 Feb 2024 09:58:14 +0100 Subject: [PATCH 04/16] Update. --- elbo.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/elbo.tex b/elbo.tex index 239a657..175019c 100644 --- a/elbo.tex +++ b/elbo.tex @@ -91,15 +91,15 @@ Fran\c cois Fleuret \end{center} -Given a training set $x_1, \dots, x_N$ that follows an unknown -distribution $\mu_X$, we want to fit a model $p_\theta(x,z)$ to it, -maximizing +Given a training i.i.d train samples $x_1, \dots, x_N$ that follows an +unknown distribution $\mu_X$, we want to fit a model $p_\theta(x,z)$ +to it, maximizing % \[ \sum_n \log \, p_\theta(x_n). \] % -If we do not have a analytical form of the marginal $p_\theta(x_n)$ +If we do not have an analytical form of the marginal $p_\theta(x_n)$ but only the expression of $p_\theta(x_n,z)$, we can get an estimate of the marginal by sampling $z$ with any distribution $q$ % -- 2.39.5 From 05c0721d2f8b578a8a27ed2085dc9812d2249f88 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Sun, 25 Feb 2024 10:21:37 +0100 Subject: [PATCH 05/16] Update. --- elbo.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/elbo.tex b/elbo.tex index 175019c..fe91565 100644 --- a/elbo.tex +++ b/elbo.tex @@ -91,9 +91,9 @@ Fran\c cois Fleuret \end{center} -Given a training i.i.d train samples $x_1, \dots, x_N$ that follows an -unknown distribution $\mu_X$, we want to fit a model $p_\theta(x,z)$ -to it, maximizing +Given i.i.d training samples $x_1, \dots, x_N$ that follows an unknown +distribution $\mu_X$, we want to fit a model $p_\theta(x,z)$ to it, +maximizing % \[ \sum_n \log \, p_\theta(x_n). -- 2.39.5 From 4b8c58903baa9ff8c508bda798492e10dde9cb7f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Wed, 28 Feb 2024 08:19:50 +0100 Subject: [PATCH 06/16] Update. --- elbo.tex | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/elbo.tex b/elbo.tex index fe91565..4c6cb24 100644 --- a/elbo.tex +++ b/elbo.tex @@ -76,24 +76,25 @@ \setlength{\abovedisplayshortskip}{2ex} \setlength{\belowdisplayshortskip}{2ex} -\vspace*{-4ex} +\vspace*{-3ex} \begin{center} {\Large The Evidence Lower Bound} -\vspace*{1ex} +\vspace*{2ex} Fran\c cois Fleuret +%% \vspace*{2ex} + \today -\vspace*{-1ex} +%% \vspace*{-1ex} \end{center} -Given i.i.d training samples $x_1, \dots, x_N$ that follows an unknown -distribution $\mu_X$, we want to fit a model $p_\theta(x,z)$ to it, -maximizing +Given i.i.d training samples $x_1, \dots, x_N$ we want to fit a model +$p_\theta(x,z)$ to it, maximizing % \[ \sum_n \log \, p_\theta(x_n). @@ -134,6 +135,8 @@ since this maximization pushes that KL term down, it also aligns $p_\theta(z \mid x_n)$ and $q(z)$, and we may get a worse $p_\theta(x_n)$ to bring $p_\theta(z \mid x_n)$ closer to $q(z)$. +\medskip + However, all this analysis is still valid if $q$ is a parameterized function $q_\alpha(z \mid x_n)$ of $x_n$. In that case, if we optimize $\theta$ and $\alpha$ to maximize @@ -145,5 +148,4 @@ $\theta$ and $\alpha$ to maximize it maximizes $\log \, p_\theta(x_n)$ and brings $q_\alpha(z \mid x_n)$ close to $p_\theta(z \mid x_n)$. - \end{document} -- 2.39.5 From 5c3ff032a4d2fc50d96f8f94672086ddde45ca75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Sat, 2 Mar 2024 01:04:42 +0100 Subject: [PATCH 07/16] Update. --- elbo.tex | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/elbo.tex b/elbo.tex index 4c6cb24..563ec3c 100644 --- a/elbo.tex +++ b/elbo.tex @@ -148,4 +148,20 @@ $\theta$ and $\alpha$ to maximize it maximizes $\log \, p_\theta(x_n)$ and brings $q_\alpha(z \mid x_n)$ close to $p_\theta(z \mid x_n)$. +\medskip + +A point that may be important in practice is +% +\begin{align*} + & \expect_{Z \sim q_\alpha(z \mid x_n)} \left[ \log \frac{p_\theta(x_n,Z)}{q_\alpha(Z \mid x_n)} \right] \\ + & = \expect_{Z \sim q_\alpha(z \mid x_n)} \left[ \log \frac{p_\theta(x_n \mid Z) p_\theta(Z)}{q_\alpha(Z \mid x_n)} \right] \\ + & = \expect_{Z \sim q_\alpha(z \mid x_n)} \left[ \log \, p_\theta(x_n \mid Z) \right] \\ + & \hspace*{7em} - \dkl(q_\alpha(z \mid x_n) \, \| \, p_\theta(z)). +\end{align*} +% +This form is useful because for certain $p_\theta$ and $q_\alpha$, for +instance if they are Gaussian, the KL term can be computed exactly +instead of through sampling, which removes one source of noise in the +optimization process. + \end{document} -- 2.39.5 From 00ccb7a22366144caa8278b72f62ea2b5f331d8e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 08:29:45 +0200 Subject: [PATCH 08/16] Update. --- dlscore.tex | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 dlscore.tex diff --git a/dlscore.tex b/dlscore.tex new file mode 100644 index 0000000..b72c511 --- /dev/null +++ b/dlscore.tex @@ -0,0 +1,163 @@ +%% -*- mode: latex; mode: reftex; mode: flyspell; coding: utf-8; tex-command: "pdflatex.sh" -*- + +\documentclass[11pt,a4paper,twocolumn,twoside]{article} +\usepackage[a4paper,top=2.5cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry} +\usepackage[utf8]{inputenc} +\usepackage{cmbright} + +\begin{document} + +\noindent One point per item if you know precisely the meaning of the +listed word(s) + +\section{Machine Learning} + +\begin{enumerate} + + \item VC dimension + \item over-fitting, under-fitting + \item logistic regression + \item Q-value + \item kernel trick + \item boosting + \item feature design + \item linear regression + \item expectation-maximization, GMM + \item SVM + \item Bellman equation + \item decision tree + \item train/validation/test sets + \item naive Bayesian model + \item autoregressive model + \item bias-variance dilemma + \item policy gradient + \item random forest + \item k-NN + \item perceptron algorithm + +\end{enumerate} + + +\section{Deep-Learning} + +\begin{enumerate} + + \item Adam + \item softmax + \item residual connections + \item autograd + \item ReLU + \item dropout + \item CLIP + \item Xavier's initialisation + \item Vanishing gradient + \item LeNet + \item ViT + \item transposed convolution layer + \item checkpoint (during the forward pass) + \item minibatch + \item masked model + \item supervised / unsupervised + \item data augmentation + \item attention block + \item SGD + \item batchnorm + \item gradient clipping + \item tokenizer + \item VAE + \item weight decay + \item GELU + \item LSTM, GRU + \item GAN + \item resnet + \item straight-through estimator + \item convolution layer + \item pre-training / fine-tuning + \item perplexity + \item logits + \item cls token + \item forward pass + \item Transformer (original one), GPT + \item backward pass + \item autoencoder, denoising autoencoder + \item layer norm + \item GNN + \item diffusion model + \item cross-entropy + \item max pooling, average pooling + \item RNN + \item contrastive loss + \item positional encoding + \item causal model + \item attention layer + \item SSL + \item MSE + \item positional encoding + \item tensor + +\end{enumerate} + +\section{Math} + +\begin{enumerate} + \item Hessian + \item random variable + \item matrix + \item entropy, mutual information + \item dot product + \item mean, variance + \item L2 norm + \item chain rule (differentiation) + \item Fourier transform + \item continuity, Lipschitz continuity + \item chain rule (probability) + \item polynomial + \item Cantor's diagonal argument + \item Jacobian + \item linear operator + \item gradient + \item Bayes' thorem + \item vector + \item joint law, product law + \item Gaussian distribution + \item distribution + \item determinant, rank + \item eigen-decomposition, svd + \item maximum likelihood + \item Central Limit Theorem + +\end{enumerate} + +\section{Compute Science} + +\begin{enumerate} + + \item polymorphism + \item recursion + \item value passed by reference + \item binary search + \item quick sort + \item parallel scan + \item mutability + \item Turing machine + \item FP32 + \item iterator + \item interpreter, compiler + \item anonymous function + \item set + \item binary heap + \item mutex + \item cache memory + \item scope of a variable or function + \item dynamic programming + \item hash table + \item big-O notation + \item Turing complete + \item class inheritance + \item closure + \item loop unrolling + \item complexity + +\end{enumerate} + +\end{document} -- 2.39.5 From d3ec58e881d629993d490e7b6b3a6a5f7492fc8b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 08:29:58 +0200 Subject: [PATCH 09/16] Update. --- dlscore.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlscore.tex b/dlscore.tex index b72c511..ae997f5 100644 --- a/dlscore.tex +++ b/dlscore.tex @@ -49,7 +49,7 @@ listed word(s) \item ReLU \item dropout \item CLIP - \item Xavier's initialisation + \item Xavier's initialization \item Vanishing gradient \item LeNet \item ViT -- 2.39.5 From 449f7b43b1fb2b9e30cf099c02037b1dc51276c4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 08:35:05 +0200 Subject: [PATCH 10/16] Update. --- dlscore.tex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlscore.tex b/dlscore.tex index ae997f5..5097381 100644 --- a/dlscore.tex +++ b/dlscore.tex @@ -1,7 +1,7 @@ %% -*- mode: latex; mode: reftex; mode: flyspell; coding: utf-8; tex-command: "pdflatex.sh" -*- \documentclass[11pt,a4paper,twocolumn,twoside]{article} -\usepackage[a4paper,top=2.5cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry} +\usepackage[a4paper,top=2cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry} \usepackage[utf8]{inputenc} \usepackage{cmbright} @@ -128,10 +128,12 @@ listed word(s) \end{enumerate} -\section{Compute Science} +\section{Computer Science} \begin{enumerate} +%% \itemsep0em + \item polymorphism \item recursion \item value passed by reference -- 2.39.5 From cc8788660c8f69048778d7bc5781100b7a54fbe8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 08:38:15 +0200 Subject: [PATCH 11/16] Update. --- dlscore.tex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dlscore.tex b/dlscore.tex index 5097381..e23cf19 100644 --- a/dlscore.tex +++ b/dlscore.tex @@ -100,6 +100,7 @@ listed word(s) \section{Math} \begin{enumerate} + \item Hessian \item random variable \item matrix @@ -132,8 +133,6 @@ listed word(s) \begin{enumerate} -%% \itemsep0em - \item polymorphism \item recursion \item value passed by reference -- 2.39.5 From 6f02a4dbc2799135ef135da72a1c1f83b690c9e5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 08:40:09 +0200 Subject: [PATCH 12/16] Update. --- dlscore.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/dlscore.tex b/dlscore.tex index e23cf19..dd742d1 100644 --- a/dlscore.tex +++ b/dlscore.tex @@ -92,7 +92,6 @@ listed word(s) \item attention layer \item SSL \item MSE - \item positional encoding \item tensor \end{enumerate} -- 2.39.5 From 321e2a37cbb0e723e6a768541d0d793fa68b2faa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 08:54:05 +0200 Subject: [PATCH 13/16] Update. --- dlscore.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/dlscore.tex b/dlscore.tex index dd742d1..743ad62 100644 --- a/dlscore.tex +++ b/dlscore.tex @@ -82,6 +82,7 @@ listed word(s) \item autoencoder, denoising autoencoder \item layer norm \item GNN + \item learning rate schedule \item diffusion model \item cross-entropy \item max pooling, average pooling -- 2.39.5 From cc493838b758b04d940b4cf7f57deee9b12548d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Thu, 25 Apr 2024 09:01:36 +0200 Subject: [PATCH 14/16] Update. --- dlscore.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/dlscore.tex b/dlscore.tex index 743ad62..6fd06ac 100644 --- a/dlscore.tex +++ b/dlscore.tex @@ -20,6 +20,7 @@ listed word(s) \item Q-value \item kernel trick \item boosting + \item PCA \item feature design \item linear regression \item expectation-maximization, GMM -- 2.39.5 From ad251e802aad8aa3985aff2e2add561c4ef4c5eb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Wed, 23 Oct 2024 08:23:22 +0200 Subject: [PATCH 15/16] Update. --- sliderule.pdf | Bin 0 -> 22410 bytes sliderule.tex | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 sliderule.pdf create mode 100644 sliderule.tex diff --git a/sliderule.pdf b/sliderule.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e6d8aecc9738ca0f4a5deefd35bf20061bcc42b GIT binary patch literal 22410 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 OFqo8!OHosa^uGXFlhGFd literal 0 HcmV?d00001 diff --git a/sliderule.tex b/sliderule.tex new file mode 100644 index 0000000..ae0aee5 --- /dev/null +++ b/sliderule.tex @@ -0,0 +1,38 @@ +%% -*- mode: latex; mode: reftex; mode: flyspell; coding: utf-8; tex-command: "pdflatex.sh" -*- + +\documentclass[11pt,a4paper,twoside]{article} +\usepackage[a4paper,top=1cm,bottom=1cm,left=1cm,right=1cm]{geometry} +\usepackage[utf8]{inputenc} +\usepackage{amsmath,amssymb,dsfont} +\usepackage[pdftex]{graphicx} +\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref} +\usepackage[round]{natbib} +\usepackage{tikz} +\usetikzlibrary{arrows,arrows.meta,calc} +\usetikzlibrary{patterns,backgrounds} +\usetikzlibrary{positioning,fit} +\usetikzlibrary{shapes.geometric,shapes.multipart} +\usetikzlibrary{patterns.meta,decorations.pathreplacing,calligraphy} +\usetikzlibrary{tikzmark} +\usetikzlibrary{decorations.pathmorphing} + +\pagestyle{empty} + +\begin{document} + +\makebox[\textwidth][c]{ +\begin{tikzpicture} +\draw[draw=none] (-7,-2)--(7,23); +\draw (0,-1) -- (0,21); +% for x in range(1,12): print(f"{x}/{math.log(x)}") +\foreach \x/\y in {1/0.000,2/3.004,3/4.761,4/6.008,5/6.975,6/7.765,7/8.433,8/9.011,9/9.522,10/9.978,12/10.769,14/11.437,16/12.015,18/12.526,20/12.982,23/13.588,26/14.119,29/14.592,33/15.152,37/15.648,42/16.197,47/16.685,53/17.206,59/17.670,66/18.156,74/18.652,83/19.149,93/19.642}{ + \draw (0,\y)--+(-1,0) node[left] {$\x$}; + \draw (0,\y)--+(1,0) node[right] {$\x$}; + \node[draw,circle] at (-5, 10) {\Huge A}; + \node[draw,circle] at (5, 10) {\Huge B}; +} + +\end{tikzpicture} +} + +\end{document} -- 2.39.5 From 34de2ce70825cb4add72bccb62dec730612f7172 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Fleuret?= Date: Wed, 23 Oct 2024 13:45:36 +0200 Subject: [PATCH 16/16] Update. --- sliderule.pdf | Bin 22410 -> 30427 bytes sliderule.tex | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sliderule.pdf b/sliderule.pdf index 0e6d8aecc9738ca0f4a5deefd35bf20061bcc42b..7746196fc0fec3fe559a7b7be5de15d40d428bac 100644 GIT binary patch delta 11544 zcmajFWl&u~x2}uBTDX(ou7QQSd$17P-QAsudvFQv!CixE2$JCL?(TlGzkT*SyXyY9 z|GH;&jUN3z@2KvY-BC5r%cs!sl(3vU97%bKbiipgf80(RX6W@JF8DOhs*5xb)}W^= zpkXk3%&{@-w8v&c>g}1iNg{Q?JY{DyrVz&6!h_eMluugKkKLM6gXLZG=IT20?2Y3> znZ?}cS4I4baia$B^6qn7ivj+Z*A9VV2koDU{a3kW#BX;mr78L(T#WlB`u?`>vAv~< z#z5m}cWR44bKNbsZ=38q;E?-z`&f~Bfkd*WGW_HA!2EsW_WtsG9bnoYSxQ?j&BY^; z(lHa$w0JyxJ@o*b(QL~KqP5oEyHvH*I^XRcM;*o--k;tqzWgd=qeIV~&)m9i?@Is| zY78%vuItFY=I7-(XhIh3?7IcU1&iEpfz;p+n;d_3;IAuiw$$|1?zFtT_-fw1?01l~ z?=y2i?jd;UH7-AxxcK3Jrte4bqu^J3mZuKX`TmQ~VQZ^Vople(aDp%;YyJ)L;Fk?O z*Wgy&n#5zOmNmX_5-DWS|CYWz!E*Zs8Tx7$&5aqQH)yJX4&#tAonDqrNVx_me&i zPE`Dj&QE<_I1;Q0=e&u};-u{lSLU$;i8YLRGq~!YDAq6@ci=U%$~X&RlKjo!{oJd@ zEL5_c%;V039ew>4+U5^$*-_4;6Ia-7z}hyL{@Sfz_^9j`Z=(=aQzY}Gm9 z1~7nGvoM=O-f~<+u*n-ywAm=}N4+VpCZ7p1!0**AoE=#>P&z3y5r6CH4MLBW?PJ@Tg$TO6DOxt`N`#YrN2C%Jo}3g_;$tgAb^dat$ZKhz^d)Gxa#-Wbl3MPZ z1|^8P(gKRQQ2^~i-QOoJClbAG;Mct2dGvXpm8SP#;$(a%BYkdbNa2Zs0I@2Ud7?aChC#@27Oje!pSFz~PCD9c%-L4H1;v2R zhdCWDc1$k5OHB2}dFchx$hNe33p!6M0Zup6dv2&gG00pe5i{q5Hi!Ny+ha ziIMNLT*;;?wFrBTy+EZwUc!^57hDnvm7ri7@QuKL#1Np0QqT(uq7hBXlbzu3z9BD* z*K1tuM|X3Lph;5==`wH9;PbyJ{(-YuFb?_f5(2%SWjxJX!C+fOTkTrz0_XEHPP|hB z>i%WEWYqkGyZ+)1sEBD^Sz1)^6p{NbG#e!bBHmHM`kk<7qIiTh?tyj=7-Mqmg2f_CS8E)btE7r(T=PGLU zD5D`O@|(Hl3tm+SC+Cg+CC`H+*V=92e_p2otPx^so~sRdpG&}D=#L>| zz#+lFLH9u+VK_v*z4S>DnmQRqPYI1}L6tKu`@HawoG@$|RVzwjKpzt?ckgyx8U7Nu z3gBG#7PRToP?kAZMaF^y1;L5-L4kVvsBK;!wU~&^@;9Q{*8Yf*dluWZ2K7~YOJT^+ zZRk?c8Foql|HRN>8e5QNs=d?cw>Z6L03&w-|CS+IOQuO+NG?_}!R)SSS;&NE{Du5k zi-`(Vd5DqeUlOko*-KwNI8WX^))u#yXd1J&gKcU3ae6HGTxbwjc4PER0PX-uF zD9yr?qLS!#w;k`YguAsH^McS-*#lw|vR0=owO`c6k-(v${kpJBL`T#xt^3{fhHNI? zMu9B`W*x8klBYsb|0|bD9sbWe>k@sFmxPB|+RLdeADP<$^lqJAy4?Iq!(g_XUz+We z<;_F4hz=S&qirp{cDF)k@YtXgcpVDE6tHxdMmXV5s!onWjiYOp4;q^4ss zMn&LQk4aE#ND=4*tqK`?kcQO0=?v|^-UDo46h9~!1nA&@kswgw&GA}C?%YGlcqkxe zj%mYyQoWyW{nbnEet8CZJ;PFlJwcIhXYgNoA={+AJx>nAx%ca%bdVe9|EPfg-4BIA z-AhluI~L0K+c>{c&f%#k^lP${hU$WZj!KaOWmB1ye2?|eo`YA7#P_;bi4CB#MR8pF zTonh+`#cD?H*iD5@ggeNFovxwD_6lTm6lYbtW=%k>E77vWbGYf?n z{+}@GgeS?jVX$-FYL|2TxPig={}Tn$6NqZ)`t4;Pm}>;4_oJFn*QO+V&^HElLj99Y ze+@gGelIK#&ms^3(u5@RbV4!Un!ixuYQ9%(UcdQ#fDaRb`i~@Jh6Djde#w*8F8+eh z(pr$#QnBDDOJV86B0e1w4jdRJ6dK1^eX;8Ob{7P;OAZx78A(4RlmT@yvZQgxyU#Y8 z(LG{a8`Wdt{vXUt|1dNE!`%N5Gg}n$|E3(~DfeD&{?D@Uz($)w1A38E1Yh_lzf8OJ zGDot%88j_nAT%-!Rx7>;e18l82YcM@=DP;46!uIY{+HYS3pOkyIS)o+?R8*6N(<6+ z7{V@q9EPO^dIO{U3&NF*0ISFa1B)k5<;W5M4*T$qgfIsjKXkn7O9kemi~Ps4NCf)5 z7{KilY5jvE0&J|aVZ`xSf%`w>Eg4Q|7?ze>!0~=Hd*g=Z%_Q(M*vvZ^X?Jm zmwPrC6qf&GIy}Y5Q|_5xldJ?}!lbE|QBQPuTTdV9b>ToKNAg`~9i!#e%U7b^LNPOk ze9X4HLfW1G%}a>Eo+P~|!{N_cpKncJo})XT+Kas{5^zQ<@H~+!lDl-;)}k zNqS|br{m=Yv&fs-Tew=Xk#X{}^88Paoec6nO)@SXZnpoNEx&mnswN%Rb4`WheU*T- zQVvw0&A(r(5P?egC>9_hBZftvk2IAz<&(rr(J7}=9zZ9lTJ$-gpx}nWF}Q7<_xa^r z`@Xs|rGx!i-e*7E!Edw6e^gaw5c3pjUZU_q%+M&F>C2xU5kwT2AQ9s}vUs|HOv0cZ z%1z)HdS%a%2|x>!8h%3*Lq!hXisW;n%R%B0DGX@yND!$dz+j?BPECXl3@9LrA6pmU zP{%7pyOrR9K@ACPv&11n+)x)c@vTL&z!zX0Uza9hi9tt7O-R6c*+o-z3OB)o(19(X z2HSg9BR?2@p_;%!74NwedPnMIJP#T&F_o0)=;#Q^2hMnmIOenxlrRoLd)lECHh6gE zu+NYLY(7{bxrM)5DG>CahP0A7cBB5Vr0u}RK}N*Fm4QQv?ZebNDL?k?fcg7Xc^9B*585RpVlrZ-p5oIByWcCSAU(mXRt{>DM5L8_Omc?_dH@j?csGN~EsGRi}M2s&XvO!`7B|)P1Hsh%tJ(kpua-z ze2W+#_9CRn{oYXDIgK%0h+*wuIRk}1y^ofbN8KSjfg>YfLM5n0L?AM{AL%3o9^To3 zzn|!~l!)IqD}tTHV8?^9XXQFdyKU}X#9`Ki3HuOVEFj_>32lyK=iTY{sEJU$5e6IY z?CZeKmv>8lyj{TT3D79=!jF70+kZuU08YMmz)kI=2g$6qdv1Ls$cr2ecycI(f4M*V z*h7rzvHHGT9vqG}FABdaU(|@9sY?J*z3IgDSW$Fr#*{$$}$Z7YY8^MdFKT_^?oR8xRq;Y%kF7mSsOui=5 z45A2;ka8l_Q&6PM5z_tJpnYBh1pJM*4JuOb88&-Dvu81nx>p2~2rJ5kR|OV$!~E!u zA5FdYHV86a>)ticK@0ckHwr+d zRQUBWN{j8=ATDewYn=I5v!Zl{9*l2XNvVR$ZhtV`LJEb|!Em_ugz!{y(7u=}jd_kn{@6kVU)aD(CN`o4dEM{2mP~E$g1bz5sk(Dl%aM&6 zu~cOeM=`2)A7LrHnA}9r+%Y3&>g1F9wy`VJeXMaP=uo)6AIp3Ne71B;d*Hi|eG^5| z#`~Rq?O8?1K$WW1N`3WfIu3ailb>j}$SIbpILu24ttI%o{%wH{AUgn+Q!L6FejKvx zHieQ$4y7WUN7wEq`Pa9xU#p&_J3LJFGI-+g2!f?e38+o4@V zNM)2F80FQMZtHByCb&qF(o7p4$R8#3BGv5}w_G9Z$hd&~P&2b{=jG0DsLXJCIS!rs z8cN1sls=T(FxN5&WNFpdnbGTRHCnf93%Kz}F6%v3kC^N8_$>GU7ry;J22uakFcn3k zE~c~WK2q26_P8?)RhkU~D<}gA$Fp`YI9@A)1|3ahVLVV(0=eRqf?f*5%;InT%yjZKU zdBnM>f%gyV?}x!!SqsPE=&M(7b|yqvY+cw0nPqt#!TDS6<;lo4Y4ij?V!gxBdkJAE zlWt7*ExR>mfcXeC!wIb;X)Ps+;iXPo#H=-|c@k}>B@qty+;;QtH`4GCNJNuN%xqQA z>{ACn5~iXZ9nw>M0mepqdG*rE|v7j#=j%!nD+@)_Doi-|nR`K&KJzWk#%myYByOKhl znT5QE$52*;)@}tT&o`XsWe!De2YgBr7PN*N?#*L;B9|+hYb{S&lErzWNzrcc9rv#X z4mA270F&$b0LNH)&uat`(7dd{kGUVlF&=~W~;LwtaH%H&mzDvY7ff3RwIhT9cHZY zt=x;v(St#CNqZLV^X)i#Sey@))n$z$KkBGT1H3Oi%vvv-w~OuTIqCW)od?_%e-`RT zf?c4=X@=CXiwhorpeu{88Zs6{YW!J{5%J-jWa=7VKHN(HX*>bDATAK_1(4jkmk8bgCL!1^M|1XSs}dJd1M5?2KE}`kN$WrZ`<)Q zk){?shE$f*3Y_Ex_i&F2lZ-}tcNs6VcEIRDxxTZ5QdsloTVQmCm~J{Z8!C``(#||b+_$k=f)h$;e2?9#O zN2U^Htk+?#`5Y}bXV8}3EJAY%RQW+AUyb+sMkl9&pIXk#g3CkAZ$JGxPv-T-?9Mjf zglps987V4dJyXZlba{1GD)HC#>3=Ki@@$wXUmb(b6Xm(WDEKoM_fhb2_#`az_Acjb zAhbMQ$xJd|e2^#n)s`nPh3hbSv=Ru}%d_eS=j_QIQbNon&?5-|@iHU)gYA zX(UoIa3&y7);1=t{dQ;@+$IrMAB8}vABAR<&p&UX$>Tid)(*AgYpc1v+Uo6Y61f`W zgJF*72Vf2wfw;q1#(coP^dF^Yzsh3?Q`*;$&~#&uaW|Mubr<6ptaCfgeyK8EoH4xr zWW0SkC_A_#chgyOPm#*Z^a@~X1N+|71&lg=3f|NiHZEfh?EBt@<})WfUsR`un`UKS zC3xF?prp5P^oXm&Qj?iS{nzft#=D7Q^O5%9$Y>%@mUrN~1!PGc=)YRb!l*&LY}G&ujlh3mY6~FcBFO>l9+ynxXPw z9!%NNBi4;t~q(L#!KC{2gL1a$K*b z;PX1H!}@G8-hqt*1_*84dwW(2m|Qd-uFd4gUp{*;S~nB|8-X2ie9Qb?W9k|8VL(H!D&+iv}*4x>}&xM44A z4X35x@wCvw8z90xo17kDcMoL%K6M{=OtZ}mi%|bIgDG(*)o7vc`MCTc8bt7-e<_$4 zc6Fy(FjCjp4&LnlyU*l2QXb#%Scx)|Yqlu`gnFLf^>yq{ zUw-vKOSd73`1yk#Yy+0?q0jYO;}zAJ-%Asl{7!G{){%|YRW;RkoJnu;$bwoztgdoC zs%7-F02;Omwxnkq*@mqF0>TG*)QxVsAI(4+OLb>dz6}}{;6b{P%LW>`2ze^}h~?$e zr#kI6+q|(Oi*}=Yi#L1dC(4oB?$qv9p3>q8yXS%3*N?e6X6Ecc+Dk@E{stc`eB9P` zj#YVtVxru$7cE(swiR!<=SScbq<*U&XGRC<0u$dhY-mU;(3})y-QYvdt5#u+>)V;vRX~*z`{kP~=-f=R$~PIzO-~ z0}cs1O15l+b7DI#4NvI0UY`Q zvXcJMIZkzR^&UJe$h+~(W0pHx*^4JFoY?KUhY8BuT@7`$#Zpe&!(|rIuG6u{AVJy6 zui9suGkM@=&F%USM|#EP)gN(ciaL!Hja5>hMP&_G6H`qA@}FvrEq=s`Y8OrlNa+3- z`a2mi1|7k^n$BA@b;}9A6VI7;fg>3#J{O*I=imJrou3M8xY;eX5-j z)Ub5_^3axNRUDjh>k)G8T<6XeS+xMQwJvx%Fd~EbqLfixg)7@M^i}&WI*>7qre8lY zMN-P}+wnB(eX`~6SjzA^-G^?Mh4Y}|)t@Bte?Tm0Iv+Z4c&sNWb&m*YOWa_lWHL#A z(9mZoBd~Dc40=55*8ckg zRPsKU>cDp&*JU21*r2-7p^2lI<6l2#BB_@G_RNH8_c@uiHOJcFlE#zvr7RCRtPK8~dHnUSqKw%q%VdoK3``5D-Utd*4np!2uunc{`RLV!oK) zW$^HO$jZWonjiK`@r{PQ9@cQq|4k?(*u7E@+0^G#bGcR|HVT^+wqD2B&6mOMlbAfP zgHx5{W3r9b(`c=zGwaAm{yf-T&CH^4tUW6@;mPwXYH=unGxR%W9pY2;b)V=*%EQP+ zBMW$rk?*ZxmpE0F#}@DwJ*rxQ)#04&csxj9kP5Z3U5W4;p)tXm+NQ55{o^X#MxMo~ z<3J5k9etB5GsS^bTznQaAID1*4|x1h&R~{%CBGHu z73o91?Bl4%-t{#|=zaoLU&F^mAfM#`%{c`QQtmZe$BZk&deod8HL)smxq(R$0sXptM8VnS_es+7-vW!ohd|bN3(GZw)is zH)$>86brH2#(zgpQ|!Z==DLE~3MEZ>xf5$qM*^7V#ElCFw+XM_Y3`fEgjP{&1TXrng zu}6geR9bf)76LgkqEp|YH?=2O7qagoX@=v?vG7?9?<=fNTGJ~GS-h&!f|4mnfXl1e z#$_l(3Ly0B+9nwq$$_0KQvL4G*LB*mj7-s?!uQp zZ8ch!iW&j~(a9At+=$j2{?b;QS-M!7br`_rQ}{vRA5K@^TlO-^X?qG1(8Fm(qjq7X2bf ze@bmDBy}`VLIws{W^40bm+aRy{WCwDM6!cz(ZaGSUJvfnDP}LZ&LEP{qHeW?nebB9 z!~MXJscKi8$y%nAkq+G`d(cbCoQ>2w!|0v^oaWPm`>qYS5ZocU$91IEn)7Q+GCcDB z!O*^9Z9kY|wvkxCP$8l_>`$C}opb~Bj}==11O=fw_*Cmq*%>rMWQD;xm>C9rjT5lld9#V7G#w{xv-flYrA%eejwYoVZ|lN5cXY;t)m(Cn)}zn~IM?N0+Q?27_a zklAuz4otv`aoMZRcJ>Wtws%3-H|w5xd_deg4X158BU)xeMEq`fK;S2mJIK& z$C`>#B~C1tmH{Qvmv25JYl(fYK2Lx8KIgSr<+mUw{kXHnmpPO3>LLFSDo=fdCdom7 z()Gj1yb+9E2dPIlA$(abFi{nh&O#SPn6c z-Z&QzMp_j59IYOxaHZP0G#8tTjp1A~9_K`|8Gq%T_MEsd+@$a-L865`T6#8j&ldz*CvxL#Ta{=(o&OU#vT^$lY7p7 zZ6J#K1h*c9GG6WM>`$?a7>!p)l;lf)_)KB3!ILC4g|4;+m-dTm2=$pz3wM`VEw@wd z_}kF7s>ya&nA%$I{`~+p_4g#e#!fECLhOwFhvK8uUr%bKe<)f0sJ&yDn8c`Fng?TQ9FhBz~S{}zRaD=(T)Cn5Q~-Ur}wI{ z9~y+nqtvN5U!%lJ+}Yql2JtG3QQ*#Wf%aPbp=H2jiJm~>`l^g~jCu$N`!Ia%beCX0 z-)MV{%vac_R-O5(tU5nyCMR2PC@c2!QD&T7EFGT>wF5iu`PqKqu!Mx6uG7(ULpT{V z7s@VTNyh8i-wJbRLUkq4e%At<=04eQycd=4_qjl6(!SH)HS5tZjK7>myrS42%x)5*QRh z&iLV}Q}qoxS}i68z-!)=%iA-S5A)yB*t(w#>?0gzL*@&6P_x*Pe zIMrOE5a)yEvM27=&?l-%`i!+{HJMN+fvdKc_vr}X*9NyD2&PfEv#hX#M~P&0I837p z^wHQ-r)LhWgYGy`L|6F9l$zm==pOl=j~-@e|E3iD;|0$hWyD2MRfG2p@e)oyAW2+~ zy5SH+Lk+{m)_}<(NrcBi1|f4Wwgw9b{NI~1Uaq8EMFv1s!C?!6(YdeTiJr0qJ4i|u z2qs?yCGgnlq*ym;$jEbJ$$mi!e|x?q#I95q#8AjtAM3b8cDX-xA^> zZ6nq7`_t8puhp-$lZn^3I(UN&^>(+X^3J*S!Z9l|PLD+B#oH;cC|jJ+QamDg84-f< zP$E$m^fZXIPP`UbyxlDP#)wCQ44vq8zEg+Z0)PpAj>{)B;ud&}!R zp!5O8wI;3!vM|ITf-(y#Lrd4mXh_yCU8#`G7#Ik8|A!(%>@b%jqWJJl6l+rflr&kW zBd)CW+e>eY>&v!Lp#AL#MFY9W>34i$A!8azF6CVc9>V3=kj=mv3@R#fq;a`RcAWDe zUT9GU{3iS!-oSpC@wr{B=2KUQ+&cGAlMJxVElqs*j2H6UWp9jMB1D5`J+ctrwBwc) zSkv(V>nY`ubwxe>K4oiV8-A;4C{oFdYBtvi&^RDeVWDRA(S0EB6eA)JD4CI?vy>@I zQ=LfN%L#7(T!uCtI9}rpGrw}&D` zgW{hqdBKRy-F+}xzyf-=J;`65qGRzpzXN?@)W+7taI#bFgx9F+$jAArM-6FpGkNsf3ZM z85x}f9~*>?gB8NY{@+8AtiINMU}FWdNLe|%xRSAQaQwgZ!OhF_uRiF3Vl^G5WeAS{ zcnwcnUL;@FE(Lj!zPe#yfTfYhYLn9f%njm$dicTwJ2Hi0O?7}SE%t7LdyZC$7HmTF_3v+Nj|DO*qTu5El3#pQyK)3imhpAAwU7Xr2`QX7 zfvn;l*YFX^8oUK2pZALh8A4sds3O!&x!-sViob`6B473Qg zRZ9FdAFFA}(uy9@+3Ved$kk(rYGG%y1xIwe|t zK9qRw{9`Xz8=^OIVv^r?nn8h~KQYk}rC6IMYkIrgaMm;@(?4L;T^lwxdn2Q)D@)C# zfVd2I(7qeu#~h#k;(Q1_9w&LM9x|V`n?IdbBm0QX=j9zz)leIL2D`Vk*-JD{c!ROU z5U6{AZ`WeH9>jI3`ys|?lR3jZDCN6S2Y7Dz-WZ-Mph`&S@4UFs&Rl6lX!d5lID&>t z3a3iNHOd_P1tKvEj2_s`-qgj_+04l9zgqvb&9Jj339FL<>}+~q78NURGctBIFpCD6 z4l5ZO8SB4qUmYA=$=G=RZAxFkEVB0I4rJ_*|I?8m(-Gj}l;GlJgFqzNxkb5HIXOAS zx!5^bIi%Rxq}aIGxFAAg|Nle&%>w@K$0KCC++_c$WZV%sGzln-kWGePE*(FEGBqQ8 zWT>$4%x%tgQ0z^=9Sx>+Gg?8#!H#1az(CItmTAZJ1~>wwg3A*YJuENvr7kwuJt&XK+jZAiXl z*ocZy3137?ikL%~Q`)`U-~0Q0-1q&sAHV;u&--ybuFw1Vx~}W>cn|VGH<%#0I>Z2H zkY?(LrSNhNrF=G$N|;&Ky8PbsPVZ{Qt*xZZm|BZfh0g{zJCwr|UhJeCSh!~GsPVRS z+<_G3e|O&Krta=}KgQ{Yp(`B&(B2oQLeb7&_3JNI zDXZGEGS=mdp!5rfJx|$Agx>f^m-jU+^=qX~eQ%_UjWX1$Vz`tOANlKZjg%>h14wu4 zaTZ89y>D%Pa=xUNIoa5F#eHDFAHF%R&1knSFYRP=#^-BYDU=_+yh4}szH&yFK-(tt zhMA!L$ExxA(g!oj&*eU!j-EtJx8mi(>USq681)*8wc%$gocCt!WYRrsR4%X;tCH_TDOE*5=D;gLI2?>7mHEa~L>6I8CL#qOnDww{@b^)biT<8^3+8 z6iBB=ajj{r2gIhgoTjpB_`2+AA|8IlL)1O_r55k}qmFk>iwg@oBscj5FKqQmf5Sh^ zSL~VofNvJ0PR6V@vffv&*bR40?DecqrPdO?*o#EN1n&QZb7>>yK^T*W=d{Pt3vML| zVyH1{e#ME-EH^c;vJ*-(*Mmy=3a+W*l*|D0tB&>7kld96B~y1|iogMlozcBlm}(DZ zzj&}PuF~4#3NY8}YiGajmUp1XgBMJ`9Mt@Sw==GhZ0XGVsnl}S@uAFS|0kaFDQrcI zlPh!oNQL5-zz+da7qC2B^s8MIn5~&z- zX^glu%$(&`p;L2B!tli>PShU^%2_{=M*8F;-}~OtnzfYen}9xX@tO@$5t5qa>PXkg z(AU+y(ef>Eopl?MN^e63jjZ<)c_)?MVG*L^;kgZO-}(85Hh`LT4s4}kl}Yzyq*$&^ z>-zKY;`+l{vaT~WEm1Spa+{*&!J?p85eq6HV)+8tMR*=3>qWUJVj5Nr0M26(;Su;_ zb?Z)_L@p&q;7gU z-WS=mHsdWvQCNkEqePKl7^rz4YU&&LnndMCOUYnYmX<+#v75Fi!tvcO`QtGq&o^{e zju%Ax6kK_Y;?>B8M6{Y((n38-OlKMxGWdvUUA#0_Tuu}Y!DjLbtvv_z+fm+?BvSa1 zFa^Zy%_nmcQizgosH9uZz?xghAcW@L*>VsRNzwl)gDe;9or@IICxNX#h=Ag#790!- zMdensmC)UF?qF_0xAvevX)6R1xLNzOvr9d-VX}zKb626-5mSQO>)`k;OXASpm>fQP zjc998Q2X~qBA6tt&^{&dofh!IV6=WBlv(jsbC^`{;1)L%t9>dpnMI{QH!DT-Qo#vZ z1oB9>K&@`>Lpv5&kdy{CR7n7#EU%K@K80E(SCObKUq4OtLjz+^t`GIc7w)|Pw#yA^ z*uIta7tQ~KA=e>%k?Sk*Xm2iS=zMn4JupS_aF3pXP$nlMPE+wnrNEBgwPoL!aslTlvpYBZ zL%TSZ-LJUOWNbwQ6$PRrFy0rO~NN@AFDWyG6%cZUg<-;Wfl2 zf&Lm4v3dG7ynJo%bmUTfQlX`fM?Pj_T3~nzHE}}yT!{kQu+5Td0XrZO&uW^f{UQao z2~BFTxA>TPPBi|c?ngnEu+I`p@^JQ=THQrqi?AVlC>#u>#hQ~vpn3AxQ{hGUd)jhr z7mF@pAv)x0L1=iQzq68xfmK7-O6oalsCMQ!ry3@w{c71xhxK!k^L2d*cLNbafo#lv z9F;7R@H;PuTch$?2!vGC`g(tpqV^BY(7u7gZ}b!<;^Oc6TSLn;Sb|qE1x-njMPQ$X z!_mE$OA6_)>lC+(%Zf_GUIob#MBA_Mh~}lv3K9|ud12M|LCVOl`!uslM@OH(=!P@A z)OV4%)?&Ga`FL{c0RnB2;vr@>)5vfpjc>(}{yB6rq*+!L!69JnAvCFq^uoCxh?Xb( z!M_q7E>Cb)io4B*PY6|k{RspJfdC=UvtK}PWX#_@Fdm69bk-k|fF9$F)SMXT7}nXu zKOw(3#QT2Z+j4}%_tOZ57X<>Gf^Y2N*X*3{DI}pWB>pl6QPeQ{Ul)P^9BfkS6aJM* z;nGAI_Q5YmOlbAVA5E@zdwIdADd7b)BM;NWzp z{jVC;xaVsnnjGm`7s~lt3}X}^*E2^;|GX#R-zzo7(w02DjDJRNfhIJ7gckM78vv2G zO@rNId>BetX@tkGG^{4QX1xjQ(i0Y$NH;(M{o+X1e|jBB=yiV~$)WzTI;%SIkuE{X zig=5XMf&2L?(OOKM7Z|_uS+4p-sJPYqQEo$a6O|`N4e@j4RwvQFt}p1yd$tJtyM#| z+QVNJ0@ACdoyS4aoctxzI6>hszyzlcn53CrRQgv)y2wK7nZR{z{emxrVDxZ$a9tD zmL|iqMNh)74_zx-jL`X-orSz6qDGP<SwbP zl#^-tQU>u@viZ*Ki6V-MS7q=%iGWOQGbWz?1iX9`q)oA}zo(Az#O#PFq#;RYRk{ql zpi1AwtTiCT=?X*kh4*8+^2B6QTNBzoJI~Jc?RaRqW1MS1b5?d)d5JL~`5Hs`cjJf=E8qSkdF@=mo)1!8vQlBW6`RXqaNM@a;=T(2czX9A|hC_6#lZVBhD5 z#?Ci#*UNvX^_=k=aw?dvdNPR*U+Fokl^%Yx#Q}U@#eHQK(!4)-s5Qt|uLW0@O%N+G zN{wE`zBE0I*m+DfvGw^2J2&ZjM$dG#b|$VDzf^IXXoh{mlR;?Stv0)7M*z;cWB@# znGR#)W9gL-wP&BHm$*esKj0iOtaThUvf=G{;}YMtc*+v><3OhA#U)PB8cD4ZqIu&n zX;}+cFhtb`Cb^pg)avg4e!An(+TsBwr0XUX zesnQ^Dt9KWJFMP5&WyZ_K6IdYcrw0^6E)zmo60hMQm6mf>R}Swbx{7+9^CI(?>8M4 zZ=tg#&nTdr=NVhm&YxGI9E%L{#^|~dywAdQ4_@%{j=;DB7@YBGxb9KEC~si|*LA_T z>tS#hJ>eN4FfaszGr#~C!msqRff$_OpC8s3_x-juhQ|5^wnjJ`E5O9q$kxWz*1~9y zm4&UIg^{tLp0OF`KT|OOog@6spX+C$kJ(tiNToKOq`5f?GQu~>W_rqQ&NNq3C2Lw` zH5+|eU7agBbW$WQZi!&ObL6Mx!Iz1?LkBf0Lf$%R&^}hye_0Tqb;N!r_TEF{g6p`K iY{7vHG1h-u$fXc+a7aY3PzD?hFgAv3XxJRFh5rLp>2T`+ diff --git a/sliderule.tex b/sliderule.tex index ae0aee5..9c5a784 100644 --- a/sliderule.tex +++ b/sliderule.tex @@ -22,10 +22,11 @@ \makebox[\textwidth][c]{ \begin{tikzpicture} -\draw[draw=none] (-7,-2)--(7,23); -\draw (0,-1) -- (0,21); +\draw[draw=none] (-7,-2)--(7,25); +\draw (0,-1) -- (0,23); % for x in range(1,12): print(f"{x}/{math.log(x)}") -\foreach \x/\y in {1/0.000,2/3.004,3/4.761,4/6.008,5/6.975,6/7.765,7/8.433,8/9.011,9/9.522,10/9.978,12/10.769,14/11.437,16/12.015,18/12.526,20/12.982,23/13.588,26/14.119,29/14.592,33/15.152,37/15.648,42/16.197,47/16.685,53/17.206,59/17.670,66/18.156,74/18.652,83/19.149,93/19.642}{ +\foreach \x/\y in {% +{1/10}/0.000,{1/8}/0.710,{1/6}/1.625,{1/4}/2.914,{1/3}/3.829,{1/2}/5.118,1/7.323,2/9.527,3/10.817,4/11.732,5/12.441,6/13.021,7/13.511,9/14.310,11/14.949,13/15.480,15/15.935,18/16.515,21/17.005,25/17.560,29/18.032,34/18.537,40/19.054,47/19.567,55/20.067,64/20.549,74/21.011,86/21.489,100/21.968}{ \draw (0,\y)--+(-1,0) node[left] {$\x$}; \draw (0,\y)--+(1,0) node[right] {$\x$}; \node[draw,circle] at (-5, 10) {\Huge A}; -- 2.39.5