Posts below are sorted by date published. Alternatively, explore posts by tags.
Recently, I worked on the voltage control problem for radial distribution grids (see here). More simply, the problem is to keep voltages in an electric grid within a fixed range at all locations in the grid, under the assumption that the grid is radial, meaning tree-structured. Like most other voltage control algorithms, I used the linear “Simplified DistFlow” model. It took me a while to understand the math behind this model, and I hope this post demystifies some of that complexity.
In July 2020, GitHub announced that in “Mid-2021 - Personal access or OAuth tokens will be required for all authenticated Git operations.” In December 2020, GitHub set that date for August 13, 2021–i.e., today. Effectively, GitHub users can no longer access their existing GitHub repos with their username and password using the git command line. Instead, users must use either SSH or a personal access token. This post describes how to set up personal access tokens and use them with Git.
I prove key properties of Schur Complements and use them to derive the matrix inversion lemma.
While trying to learn about the linear quadratic regulator (LQR) controller, I came across UC Berkeley’s course on deep reinforcement learning. Sadly, their lecture slides on model-based planning (Lec. 10 in the 2020 offering of CS285) are riddled with typos, equations cutoff from the slides, and dense notation. This post presents my own derivations of the LQR controller for discrete-time finite-horizon time-varying systems.
Given an undirected graph \(G = (V, E)\), a common task is to identify clusters among the nodes. It is a well-known fact that the sign of entries in the second eigenvector of the normalized Graph Laplacian matrix provides a convenient way to partition the graph into two clusters; this “spectral clustering” method has strong theoretical foundations. In this post, I highlight several theoretical works that generalize the technique for \(k\)-way clustering.
The upgrade experience to MathJax 3 was far from smooth.
In this post, I explore how terminals display color, a two-stage process involving ANSI escape codes and user-defined color schemes.
I derive the bias-variance decomposition of mean squared error for both estimators and predictors, and I show how they are related for linear models.
I’ve been taught binary logistic regression using the sigmoid function, and multi-class logistic regression using a softmax. However, I have never quite understood how the two are related. In this post, I show exactly how multi-class logistic regression generalizes the binary case.
This blog post about my .vimrc
settings is mainly for personal reference, but I thought I’d make it public in case anyone else was interested. I plan on keeping this post updated if I ever change my .vimrc
configuration.
Re-formatting a LaTeX document for use as a blog post took more work than expected. MathJax only supports the LaTeX math-mode commands, and there are additional formatting considerations as well. Here are some tools that I found to make the transition easier.
I present a derivation of efficient backpropagation equations for batch-normalization layers.
I’ve almost never been able to write correct Python import
statements on the first go. Behavior is inconsistent between Python 2.7 and Python 3.6 (the two versions that I test here), and there is no single method for guaranteeing that imports will always work. This post is my dive into how to resolve common importing problems. Unless otherwise stated, all examples here work with both Python 2.7 and 3.6.
Here is a brief summary of how I set up this blog / website using Jekyll on GitHub Pages.
This post is meant to be a running-list of useful web resources related to HTML and CSS.