summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2023-05-27 21:26:54 +0200
committerTom Smeding <tom@tomsmeding.com>2023-05-27 21:26:54 +0200
commit99891f6982d25adfe64eaac2b4dbf146e6bfcb42 (patch)
tree32518e78aadb7bee1f4a8b1cfe579014b7e62904
parentb00b5abfbbbd14afa559452b909b23348e35c9fc (diff)
Fix spelling
Thanks Daniel :)
-rw-r--r--ad/intro.html6
-rw-r--r--ad/intro.md6
-rw-r--r--haskell/composition.html2
-rw-r--r--haskell/composition.md2
-rw-r--r--tools.html8
5 files changed, 12 insertions, 12 deletions
diff --git a/ad/intro.html b/ad/intro.html
index 7ea60b8..d7fb691 100644
--- a/ad/intro.html
+++ b/ad/intro.html
@@ -1,6 +1,6 @@
<h2>An intro to Automatic Differentiation</h2>
<p>I originally wrote the text below to put on my homepage, but then I decided it would just clutter up the page without tremendous benefit.
-So the text is now here fofr you to enjoy.</p>
+So the text is now here for you to enjoy.</p>
<p>In automatic differentiation (AD), we study how to generalise taking symbolic/algebraic derivatives from simple mathematical expressions to whole computer programs, while keeping computational efficiency in mind.
Being able to take the derivative of a numerical function implemented as a program is useful whenever you want to get some idea a program's local behaviour when you change its inputs a little; in the case of AD, we consider continuous inputs — in practice, floating point numbers.
(If you're interested in the case where inputs are discrete, such as integers, look to <em>incremental computation</em> instead — about which I know very little.)</p>
@@ -8,9 +8,9 @@ Being able to take the derivative of a numerical function implemented as a progr
This model is a computer program; neural networks (as considered in machine learning) are simply computer programs of a particular, quite structured form.
Optimising a model involves changing the parameters in such a way as to get the output closer to the desired output on some set of inputs, and the derivative (gradient, in this case) of the model tells you, at least locally, how to change the parameters to make the model a <em>little bit</em> better.
Gradient descent, and other more sophisticated algorithms, use this derivative information to optimise a model in some fashion.
-AD allows model implementors to have a lot of freedom in designing their models, because whatever they do, the AD algorithm will let the system compute the model's derivative.</p>
+AD allows model implementers to have a lot of freedom in designing their models, because whatever they do, the AD algorithm will let the system compute the model's derivative.</p>
<p>Another application of AD is in statistical inference, such as in <a href="https://mc-stan.org/">Stan</a>, where users formulate a <em>statistical</em> model (with some parameters) of some part of the real world and then try to determine, given some real-world observations, where the parameters will approximately lie.
(This is the Bayesian inference approach to statistical inference — frequentist inference fairly directly reduces to optimisation, for example using gradient descent.)
Such inference algorithms need to compute a probability distribution (namely, the result: the distribution telling you where the parameters lie), and while it is relatively easy to give an indication of where these distributions are high (likely parameter values) and where they are low (unlikely ones), it's harder to <em>normalise</em> this distribution, which means computing what the actual <em>probability</em> of some parameter value is (as opposed to just being more or less likely than another parameter value).
This normalisation involves integrating the produced unnormalised probability distribution, and clever integration algorithms (for continuous parameters, <a href="https://en.wikipedia.org/wiki/Hamiltonian_Monte_Carlo">HMC</a>) use the local &quot;relief&quot; (derivative) of your statistical model to more quickly find areas of interest, and more quickly converge to a good estimate of the overall integral (and thus the actual probabilities).
-Here, again, AD allows model implementors to not have to worry about writing their models in a specific form — any computation will do.</p>
+Here, again, AD allows model implementers to not have to worry about writing their models in a specific form — any computation will do.</p>
diff --git a/ad/intro.md b/ad/intro.md
index e81bf2f..e4d0659 100644
--- a/ad/intro.md
+++ b/ad/intro.md
@@ -1,7 +1,7 @@
## An intro to Automatic Differentiation
I originally wrote the text below to put on my homepage, but then I decided it would just clutter up the page without tremendous benefit.
-So the text is now here fofr you to enjoy.
+So the text is now here for you to enjoy.
In automatic differentiation (AD), we study how to generalise taking symbolic/algebraic derivatives from simple mathematical expressions to whole computer programs, while keeping computational efficiency in mind.
Being able to take the derivative of a numerical function implemented as a program is useful whenever you want to get some idea a program's local behaviour when you change its inputs a little; in the case of AD, we consider continuous inputs &mdash; in practice, floating point numbers.
@@ -11,10 +11,10 @@ For example, in machine learning, the usual approach is to formulate a _model_ w
This model is a computer program; neural networks (as considered in machine learning) are simply computer programs of a particular, quite structured form.
Optimising a model involves changing the parameters in such a way as to get the output closer to the desired output on some set of inputs, and the derivative (gradient, in this case) of the model tells you, at least locally, how to change the parameters to make the model a _little bit_ better.
Gradient descent, and other more sophisticated algorithms, use this derivative information to optimise a model in some fashion.
-AD allows model implementors to have a lot of freedom in designing their models, because whatever they do, the AD algorithm will let the system compute the model's derivative.
+AD allows model implementers to have a lot of freedom in designing their models, because whatever they do, the AD algorithm will let the system compute the model's derivative.
Another application of AD is in statistical inference, such as in [Stan](https://mc-stan.org/), where users formulate a _statistical_ model (with some parameters) of some part of the real world and then try to determine, given some real-world observations, where the parameters will approximately lie.
(This is the Bayesian inference approach to statistical inference &mdash; frequentist inference fairly directly reduces to optimisation, for example using gradient descent.)
Such inference algorithms need to compute a probability distribution (namely, the result: the distribution telling you where the parameters lie), and while it is relatively easy to give an indication of where these distributions are high (likely parameter values) and where they are low (unlikely ones), it's harder to _normalise_ this distribution, which means computing what the actual _probability_ of some parameter value is (as opposed to just being more or less likely than another parameter value).
This normalisation involves integrating the produced unnormalised probability distribution, and clever integration algorithms (for continuous parameters, [HMC](https://en.wikipedia.org/wiki/Hamiltonian_Monte_Carlo)) use the local "relief" (derivative) of your statistical model to more quickly find areas of interest, and more quickly converge to a good estimate of the overall integral (and thus the actual probabilities).
-Here, again, AD allows model implementors to not have to worry about writing their models in a specific form &mdash; any computation will do.
+Here, again, AD allows model implementers to not have to worry about writing their models in a specific form &mdash; any computation will do.
diff --git a/haskell/composition.html b/haskell/composition.html
index 1d3d013..3772492 100644
--- a/haskell/composition.html
+++ b/haskell/composition.html
@@ -1,5 +1,5 @@
<h2>Function composition in Haskell</h2>
-<p>(This post is intended for for Haskell beginners.)</p>
+<p>(This post is intended for Haskell beginners.)</p>
<p>In Haskell, the dot operator <code>(.)</code>, written infix like <code>f . g</code>, is <em>function composition</em>.
For example, suppose you have two functions:</p>
<pre><code class="language-haskell">addone :: Int -&gt; Int
diff --git a/haskell/composition.md b/haskell/composition.md
index 14f84cb..c7348a2 100644
--- a/haskell/composition.md
+++ b/haskell/composition.md
@@ -1,6 +1,6 @@
## Function composition in Haskell
-(This post is intended for for Haskell beginners.)
+(This post is intended for Haskell beginners.)
In Haskell, the dot operator `(.)`, written infix like `f . g`, is _function composition_.
For example, suppose you have two functions:
diff --git a/tools.html b/tools.html
index 874c79f..978101b 100644
--- a/tools.html
+++ b/tools.html
@@ -6,17 +6,17 @@
<ul>
<li><p>
- <b>pulseaudio-equalizer-ladspa</b>. [<a href="https://www.archlinux.org/packages/community/any/pulseaudio-equalizer-ladspa/" target="_blank">Arch repos</a>]
+ <b>pulseaudio-equalizer-ladspa</b>. [<a href="https://www.archlinux.org/packages/extra/any/pulseaudio-equalizer-ladspa/" target="_blank">Arch repos</a>]
Assuming you use PulseAudio, if you want to run a very simple equalizer over whatever comes out of your speakers, use this package.
The GUI executable is called <code>pulseaudio-equalizer-gtk</code>.
</p></li>
<li><p>
- <b>nload</b>. [<a href="https://www.archlinux.org/packages/community/x86_64/nload/" target="_blank">Arch repos</a>]
+ <b>nload</b>. [<a href="https://archlinux.org/packages/extra/x86_64/nload/" target="_blank">Arch repos</a>]
For nice graphs/statistics on current network usage (mbits incoming/outgoing).
To show all interfaces, invoke it as <code>nload -m</code>; to show only a single interface, use e.g. <code>nload enp3s0f1</code>.
</p></li>
<li><p>
- <b>paccache</b>. [<a href="https://www.archlinux.org/packages/community/x86_64/pacman-contrib/" target="_blank">in pacman-contrib</a>]
+ <b>paccache</b>. [<a href="https://www.archlinux.org/packages/extra/x86_64/pacman-contrib/" target="_blank">in pacman-contrib</a>]
To flexibly purge package files from the Pacman cache.
Pacman proper has <code>--clean</code>, but paccache allows you to remove e.g. all but the most recent three versions of all packages, ignoring stuff related to nvidia:
<blockquote>
@@ -25,7 +25,7 @@ paccache -r -k 3 -i nvidia,nvidia-settings,nvidia-utils,opencl-nvidia,linux,linu
Also check out the other scripts in pacman-contrib, like pacdiff and rankmirrors.
</p></li>
<li><p>
- <b>pdfpc</b>. [<a href="https://www.archlinux.org/packages/community/x86_64/pdfpc/" target="_blank">Arch repos</a>]
+ <b>pdfpc</b>. [<a href="https://www.archlinux.org/packages/extra/x86_64/pdfpc/" target="_blank">Arch repos</a>]
Lightweight PDF presenting, with even some really esoteric features like detecting animated slides in a LaTeX beamer presentation (that doesn't really work in my experience).
Multi-monitor support.
</p></li>