{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fast fixed-point Gaussian Naive Bayes \n", "for implementation in microcontrollers\n", "\n", "Jon Nordby , April 2018\n", "\n", "\n", "## Summary\n", "\n", "A fast simplification to `normpdf(x, mean, std)` can be derived sing the minus log-likelihood for calculating the class probability in Gaussian Naive Bayes. Increasing the model size by 50% allows classification to be done without needing to compute any logarithm or exponentiation. The algorithm can be implemented in fixed-point arithmetics using only multiplication, subtraction and addition.\n", "The speed and simplicity makes it especially suited for use on constrained devices without a floating-point unit,\n", "such as microcontrollers typically used for Internet of Things.\n", "\n", "When used in [embayes](https://github.com/jonnor/embayes) Naive Bayes classifier, a 16x speedup was observed on ESP8266 microcontrollers.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prior art\n", "This simplification is used for instance in [Fast Gaussian Naïve Bayes for searchlight classification analysis](https://www.sciencedirect.com/science/article/pii/S1053811917307371) (equation 2), but without mention of whether they precompute to avoid all logarithms.\n", "\n", "## Background\n", "\n", "[Naive Bayes classifier](https://en.wikipedia.org/wiki/Naive_Bayes_classifier) is based on finding which class has the highest (conditional) probability when considering all features.\n", "\n", "Mathematically this amounts to multiplying each of the individual probabilities.\n", "\n", "$ P_{class} = P_1 * P_2 * ... * P_n \\tag{1} $\n", "\n", "In practice multiplying probabilities is vunerable to underflow when performed on a computer with finite precision arithmetics. Instead the calculation is performed by taking the log of each probability. The multiplication then becomes an addition.\n", "\n", "$ P_{class} = \\log(P_1) + \\log(P_2) + ... + \\log(P_n) \\tag{2} $ \n", "\n", "For *Gaussian* Naive Bayes, individual probability is calculated using the Normal Probability Density Function.\n", "\n", "$ normpdf(x,\\mu,\\sigma^2) = \\frac{1}{\\sigma\\sqrt{2\\pi}} e^{ -\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2 } \\tag{3} $\n", "\n", "Probability for a given feature $x_n$ for a given class $A$\n", "\n", "$ P_n = \\log(normpdf(x_n, \\mu_A, \\sigma_A)) \\tag{4} $\n", "\n", "The logarithm in `(4)` and exponent in `(3)` are both relatively complex calculations compared to the other operations needed.\n", "\n", "## Simplification\n", "\n", "However it [can be shown][1] that this is equivalent to:\n", "\n", "$ P_n(x_n, \\mu, \\sigma) = -\\frac{(x - \\mu)^2}{2 \\sigma^2} - \\log(\\sigma) + \\frac{1}{2} (-\\log(2) - \\log(\\pi)) \\tag{5} $\n", "\n", "The last term is a constant ($C$) which can be precomputed. $log(σ)$ depends only on a model coefficient $σ$ and can be computed at training time. By storing that as an additional coefficient $b$ (increasing model size by 50%), we simplify the computation done at prediction time to:\n", "\n", "$ P_n(x_n, \\mu, \\sigma, b) = -\\frac{(x - \\mu)^2}{2 \\sigma^2} - b + C \\tag{6} $ \n", "\n", "Which should be significantly faster than `(4)` and easy to implement using fixed-point arithmetics.\n", "\n", "\n", "Storing $ a = \\frac{1}{2 \\sigma^2} $ as a model coefficient instead of $\\sigma$ allows to further simplify.\n", "\n", "$ P_n(x_n, \\mu, a, b) = -({a(x - \\mu)^2}) - b + C \\tag{7} $\n", "\n", "Removal two multiplications and conversion of division to multiplication should make it slightly faster.\n", "\n", "[1]: https://www.wolframalpha.com/input/?i=%5Clog(%5Cfrac%7B1%7D%7B%5Csigma%5Csqrt%7B2%5Cpi%7D%7D+e%5E%7B+-%5Cfrac%7B1%7D%7B2%7D%5Cleft(%5Cfrac%7Bx-%5Cmu%7D%7B%5Csigma%7D%5Cright)%5E2)\n", "\n", "### Specialization for comparisons\n", "\n", "Naive Bayes only care about which probability is the highest. This means that the `C` term which is common to all the probabilities can be dropped. And by searching for the minimum instead of maximum one can flip the signs to remove one subtraction.\n", "\n", "$ Q_{min}(x_n, \\mu, a, b) = {a(x - \\mu)^2} + b \\tag{8} $\n", "\n", "This however cannot be used as a general replacement for `log(normpdf(x, mean, std))` " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Python example" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import pandas\n", "import numpy\n", "import scipy.stats\n", "import matplotlib.pyplot as plt\n", "\n", "# Reference implementation\n", "def normpdf_scipy(x, mean, std):\n", " norm = scipy.stats.norm.pdf(x, mean, std)\n", " return numpy.log(norm)\n", "\n", "def normpdf_ref(x, mean, std):\n", " exponent = -( (x - mean)**2 / (2 * std**2) )\n", " norm = numpy.exp(exponent) / (numpy.sqrt(2*numpy.pi) * std)\n", " return numpy.log(norm)\n", "\n", "# Our simplified function\n", "C = 1/2*(-numpy.log(2)-numpy.log(numpy.pi))\n", "def normpdf_quadratic(x, mean, std, logstd):\n", " return -( (x-mean)**2/(2* std**2) ) - logstd + C\n", "\n", "sigma = 8\n", "means, stds = ((0, 100, 100, 0), (1.0, 1.0, 0.001, 0.001))\n", "figure, subplots = plt.subplots(1, len(means), figsize=(16,4)) \n", "for mean, std, ax in zip(means, stds, subplots):\n", " points = numpy.linspace(mean-(sigma*std), mean+(sigma*std), 100)\n", " \n", " df = pandas.DataFrame({\n", " 'x': points,\n", " 'scipy': normpdf_ref(points, mean, std) + 0.5, # translate so can be seen\n", " 'reference': normpdf_scipy(points, mean, std) - 0.5, # translate so can be seen\n", " 'quadratic': normpdf_quadratic(points, mean, std, numpy.log(std))\n", " })\n", " df.plot(ax=ax, x='x', title='mean={}, std={}'.format(mean, std))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simplified function is identical to references.\n", "\n", "NOTE: height difference added manually, so that the different curves can actually be seen." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**! Preliminary results **\n", "\n", "On ESP8266, a 32-bit microcontroller without an FPU.\n", "Dataset with 30 features and 2 classes.\n", "\n", "Average classification time per instance:\n", "\n", "* Original `log(normpdf())` with 32bit floating point: 6.85 ms\n", "* Simplified quadratic function `(6)` in 32bit fixed-point: 0.41 ms\n", "\n", "For a speedup of 16x\n", "\n", "### TODO\n", "\n", "* Implement and test `(7)` or `(8)`\n", "* Show code used inline\n", "* Show classification results\n", "* Do classification tests on multiple datasets\n", "\n", "Performance comparison on\n", "\n", "* ESP8266, AVR8, ARM Cortex-M0, x86_64(Linux) in C\n", "* For original 6,8 in floating-point and 6/8 with fixed-point.\n", "* Execution time, code size, model size\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Further work\n", "\n", "Find out if there the optimization can be used in other Gaussian-based machine learning methods.\n", "\n", "Investigate a version which does not require additional model coefficient.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }