diff --git a/lectures/05_adabost_demo.ipynb b/lectures/05_adabost_demo.ipynb
index ab549f1..e843249 100644
--- a/lectures/05_adabost_demo.ipynb
+++ b/lectures/05_adabost_demo.ipynb
@@ -3,7 +3,7 @@
"nbformat_minor": 0,
"metadata": {
"colab": {
- "name": "05-adabost_demo.ipynb",
+ "name": "Copy of 05-adabost_demo.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
@@ -21,20 +21,7 @@
"colab_type": "text"
},
"source": [
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "X6skjwooOn61",
- "colab_type": "text"
- },
- "source": [
- "# TODO\n",
- "\n",
- "The lecture notes are in not finished and should be expanded based on https://drive.google.com/open?id=0B5j9vIO_NjwcLVdPdUF1cU1EOHJoTExiZzZTOE40SnBHMFE4.\n",
- "If you would like to help (for extra class credit), please use the associated GitHub issue for coordination."
+ ""
]
},
{
@@ -277,12 +264,148 @@
},
"source": [
"## Adabost Details\n",
+ "Mostly based on Rojas http://www.inf.fu-berlin.de/inst/ag-ki/adaboost4.pdf\n",
+ "\n",
+ "We will discuss setting with binary classes. Assume that we are given a training set $S := \\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\\}$ where $(\\forall i \\in \\{1,...,n\\})$$(y_i \\in \\{ -1, 1 \\})$ and a set $\\mathcal{H}$ of hypothesis functions (aka weak classifiers) from which we want to pick $T$ hypotheses to form a boosted classifier $f_T$, which is a linear combination of the decisions of each of the chosen hypotheses. The decision about data point's class is then made by looking at sign of $f_T$:\n",
+ "$$f_T(x) = \\sum_{t = 1}^{T} \\gamma_{t}h_t(x)$$\n",
+ "$$H(x) = sign(f_T)$$\n",
+ "The AdaBoost algorithm sequentially chooses $h_t$ from $\\mathcal{H}$ and assigns this hypothesis a weight $\\gamma_{t}$.\n",
+ "\n",
+ "After the first $(t-1)$-th iterations we have $f_{t-1}(x) = \\sum_{k=1}^{t-1}\\gamma_{k}h_{k}$. At the $t$-th iteration we want to add add another $h_t$ with weight $\\gamma_t$ such that our boosted classifier is better. We know how to choose them from what follows:\n",
+ "\n",
+ "Let's define the total error $E$ of $f_t$ as the sum of its exponential loss on each data point:\n",
+ "$\\begin{align*}\n",
+ "E &= \\sum_{i = 1}^{n}e^{-y_{i}f_{t}(x_i)} \\\\\n",
+ " &= \\sum_{i = 1}^{n}e^{-y_{i}f_{t-1}(x_i)}e^{-y_{i}\\gamma_{t}h_{k}} && \\text{by unwrapping } f_t \\\\\n",
+ "& = \\sum_{i=1}^{n}w_{i}^{(t)}e^{-y_{i}\\gamma_{t}h_{t}} && \\text{let } w_{i}^{(1)} = \\frac{1}{n} \\text{ and } w_{i}^{(t)} = e^{-y_{i}f_{t-1}(x_{i})} \\\\\n",
+ " &= \\sum_{y_{i}=h_t(x_{i})}w_{i}^{(t)}e^{-\\gamma_t}+\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{\\gamma_t} && \\text {split by correctly } (y_{i}h_{t}(x_{i}) = 1) \\text { and incorrectly } (y_{i}h_{t}(x_{i}) = -1) \\text { classified data points}\\\\\n",
+ "&= \\sum_{y_{i}=h_t(x_{i})}w_{i}^{(t)}e^{-\\gamma_t}+ \\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{-\\gamma_t} - \\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{-\\gamma_t} + \\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{\\gamma_t} && \\text{add and subtract } \\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{-\\gamma_t} \\\\\n",
+ "&= \\sum_{i = 1}^{n}w_{i}^{(t)}e^{-\\gamma_t} + \\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}(e^{\\gamma_t} - e^{-\\gamma_t}) && \\text{group first sum with second and third with fourth}\n",
+ "\\end{align*}$\n",
+ "\n",
+ "\n",
+ "\n",
+ "We are seeking $h_t$ that minimizes $E$. But only the $\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}$ depends on $h_t$, so the best classifier is the one that minimizes this sum. \n",
+ "\n",
+ "The best weight we get by solving for $\\gamma_t$ the expression $\\frac{dE}{d\\gamma_t}=0$\n",
+ "\n",
+ "\n",
+ "$\\begin{align*}\n",
+ "\\frac{dE}{d\\gamma_t} = & -\\sum_{y_{i}=h_t(x_{i})}w_{i}^{(t)}e^{-\\gamma_t}+\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{\\gamma_t}\\\\\n",
+ "& -\\sum_{y_{i}=h_t(x_{i})}w_{i}^{(t)}e^{-\\gamma_t}+\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{\\gamma_t} &= 0 \\\\\n",
+ "& -\\sum_{y_{i}=h_t(x_{i})}w_{i}^{(t)}+\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}e^{2\\gamma_t} &=0 && \\text{multiply both sides by } e^{\\gamma_t}\n",
+ "\\end{align*}$\n",
+ "\n",
+ "\n",
"\n",
- "We follow Murphy Chp. 16.4\n",
+ "So by solving for $\\gamma_t$ we get\n",
+ "$$\\gamma_t = \\frac{1}{2}\\ln\\left(\\frac{\\sum_{y_{i}=h_t(x_{i})}w_{i}^{(t)}}{\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}} \\right)$$\n",
+ "In the rest of this notebook we are calling the rate of errors given the weights $\\frac{\\sum_{y_{i}\\neq h_{t}(x_{i})}w_{i}^{(t)}}{\\sum_{i = 1}^{n}w_{i}^{(t)}}$ as $\\epsilon_t$ and so we can rewrite the above as\n",
+ "$$\\frac{1}{2}\\ln \\left( \\frac{1 - \\epsilon_t}{\\epsilon_t} \\right)$$\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "xMVkr4McF1KG",
+ "colab_type": "text"
+ },
+ "source": [
+ "##Pseudocode\n",
+ "Set initial weights $w_i^{(1)}=\\frac{1}{n}$ to all data points $x_i$\n",
+ "\n",
+ "For $t = 1$ to $T$\n",
+ "\n",
+ "1. Select from $\\mathcal{H}$ the classifier $h_t$ which minimizes \n",
+ "$$\\sum_{y_i \\neq h_t(x_i)}w_i^{(t)}$$\n",
+ "2. Set the weight $\\gamma_t$ of the classifier to \n",
+ "$$\\gamma_t = \\frac{1}{2} \\ln\\left( \\frac{1 - \\epsilon_t}{\\epsilon_t}\\right)$$\n",
+ "3. Update the weights to \n",
+ "$$w_i^{(t+1)} = \\frac{w_i^{(t)}e^{-y_i \\gamma_t h_t(x_i)}}{Z_t}$$ for all $i$ where $Z_t$ is normalization constant to make $w_i^{(t)}$ a distribution, that is to have\n",
+ "$$\\sum_i w_i^{(t+1)} = 1$$\n",
"\n",
- "Assume that the classes are binary, and encode them as $Y\\in\\{+1, -1\\}$.\n",
"\n",
- "TODO TODO- copy form paper."
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Mvloj9jeGFp3",
+ "colab_type": "text"
+ },
+ "source": [
+ "## Proof of upper bound of error\n",
+ "We follow https://www.cs.princeton.edu/courses/archive/fall07/cos402/readings/boosting.pdf\n",
+ "\n",
+ "Here we will prove that the training error of final classifier $H$ is at most $\\exp \\left( -2 \\sum_{t=1}^{T} \\left( \\frac{1}{2} - \\epsilon_t \\right)^2 \\right)$ \n",
+ "\n",
+ "Step 1: First we show that \\\n",
+ "$$w_i^{(T+1)} = \\frac{e^{-y_i f_T (x_i)}}{n \\prod_t Z_t}$$\n",
+ "Proof: the above can be rewritten as\n",
+ "$$w_i^{(t+1)} = \\frac{w_i^t e^{-\\gamma_ty_ih_t(x_1)}}{Z_t}$$ \n",
+ "By unwrapping this recurrence we get\n",
+ "\n",
+ "\\begin{aligned}\n",
+ "w_i^{(T+1)} &=w_i^{(1)} \\cdot \\frac{e^{-\\gamma_{1} y_{i} h_{1}\\left(x_{i}\\right)}}{Z_{1}} \\cdots \\cdot \\frac{e^{ -\\gamma_{T} y_{i} h_{T}\\left(x_{i}\\right)}}{Z_{T}} \\\\\n",
+ "&=\\frac{1}{n} \\cdot \\frac{e^{ -y_{i} \\sum_{t} \\gamma_{t} h_{t}\\left(x_{i}\\right)}}{\\prod_{t} Z_{t}} \\\\\n",
+ "&=\\frac{1}{n} \\cdot \\frac{e^{ -y_{i} f_T\\left(x_{i}\\right)}}{\\prod_{t} Z_{t}}\n",
+ "\\end{aligned}\n",
+ "Step 2: Now we show that the training error of the final classifier $H$ is at most\n",
+ "$$\\prod_{t=1}^{T}Z_t$$\n",
+ "Proof:\n",
+ "\n",
+ "\n",
+ "$\\begin{align*}\n",
+ " \\text { training error }(H) &= \\frac{1}{n} \\sum_{i}\\left\\{\\begin{array}{l}{1} &{\\text { if } y_{i} \\neq H\\left(x_{i}\\right) }\n",
+ " \\\\ {0} &{\\text { else }} \\end{array}\\right.\n",
+ " && {\\text {by definition of the training error}}\n",
+ " \\\\ &= \\frac{1}{n} \\sum_{i}\\left\\{\\begin{array}{l}{1} &{\\text { if } y_{i}f(x_{i})\\leq 0} \n",
+ "\\\\{0} &{\\text{ else }} \n",
+ "\\end{array}\\right.\n",
+ "&& {\\text {since } H(x) = sign(f(x)) \\text{ and } y_i \\in \n",
+ " \\left\\{ -1, +1 \\right\\} } \n",
+ "\\\\ &\\leq \\frac{1}{n} \\sum_{i}\\begin{array}{l} \n",
+ "e^{-y_if \\left(x_i\\right)}\n",
+ " \\end{array} \n",
+ " && \\text{since } e^{-z} \\geq 1 \\text{ if } z\\leq{0}\n",
+ " \\\\ &= \\sum_{i} w_i^{(T+1)}\\prod_tZ_t && \\text{by Step 1 above}\n",
+ " \\\\ &=\\prod_tZ_t &&{\\text{since }w^{(T+1)} \\text{is a distribution}}\n",
+ "\\end{align*}$\n",
+ "\n",
+ "Step 3: The last step is to compute $Z_t$\n",
+ "\n",
+ "$\\begin{align*}\n",
+ "Z_t &= \\sum_{i} w_i^{(t)} \\times \\left\\{ \\begin{array}{l} \n",
+ "{e^{-\\gamma_{t}}} & \\text{if } h_{t}(x_{i}) = y_{i} \\\\\n",
+ "{e^{\\gamma_{t}}} & \\text{if } h_{t}(x_{i}) \\neq y_{i}\n",
+ "\\end{array} \\right.\\\\\n",
+ "&= \\sum_{y_i = h_t(x_i)}w_{i}^{(t)}e^{-\\gamma_t} + \\sum_{y_i \\neq h_t(x_i)}w_i^{(t)}e^{\\gamma_t}\\\\\n",
+ "&= e^{-\\gamma_t} \\sum_{y_i = h_t(x_i)}w_i^{(t)} + e^{\\gamma_t} \\sum_{y_i = h_t(x_i)} w_i^{(t)}\\\\\n",
+ "&= e^{-\\gamma_t}(1 - \\epsilon_t) + e^{\\gamma_t} \\epsilon_t && \\text{by definition of } \\epsilon_t\\\\\n",
+ "&= e^{-\\frac{1}{2} \\ln( \\frac{1 - \\epsilon_t} {\\epsilon_t}) } (1 - \\epsilon_t) + e^{\\frac{1}{2} \\ln(\\frac{1 - \\epsilon_t}{\\epsilon_t})} \\epsilon_t && \\text {by our choice of } \\gamma_t\\\\\n",
+ "&= \\sqrt{\\frac{\\epsilon_t}{1 - \\epsilon_t}} (1 - \\epsilon_t) + \\sqrt{\\frac{1 - \\epsilon_t}{\\epsilon_t}} \\epsilon_t \\\\\n",
+ "&= 2 \\sqrt{\\epsilon_t (1 - \\epsilon_t)}\\\\\n",
+ "&= \\sqrt{1 - 4 \\alpha_t^2} && \\text{plugging in } \\epsilon_t = \\frac{1}{2} - \\alpha_t \\\\\n",
+ "&\\leq \\sqrt{e^{-4 \\alpha_t^2}} && \\text{using } 1+x \\leq e^x \\text{ for all real } x \\\\\n",
+ "&= e^{-2 \\alpha_t^2} \\\\\n",
+ "&= e^{-2 \\left(\\frac{1}{2} - \\epsilon_t\\right)^2}\n",
+ "\\end{align*}$\n",
+ "\n",
+ "And combining all of the above we have\n",
+ "\n",
+ "$\\begin{align*}\n",
+ "\\text {training error}(H) &=\\prod_t Z_t = \\prod_t 2 \\sqrt{\\epsilon_t (1 - \\epsilon_t)} \\leq \\prod_t e^{-2 (\\frac{1}{2} - \\epsilon_t)^2} = \\exp \\left(-2 \\sum_t \\left(\\frac{1}{2} - \\epsilon_t \\right)^2 \\right)\n",
+ "\\end{align*}$\n",
+ "\n",
+ "As claimed.\n",
+ "\n"
]
},
{
@@ -659,23 +782,200 @@
"colab_type": "text"
},
"source": [
- "# Boosting uses\n",
+ "##Viola-Jones face recognizer\n",
+ "\n",
+ "Viola-Jones is the first object detection framework to provied competetive object detection rates in real-time proposed in 2001 by Paul Viola and Michael Jones. It was motivated primarly to identify human faces in digital images.\n",
+ "\n",
+ "##Details\n",
+ "The algorithm has four stages:\n",
+ "\n",
+ "\n",
+ "1. Haar-like Feature Selection\n",
+ "2. Creating an Integral Image\n",
+ "3. AdaBoost Training\n",
+ "4. Cascading Classifiers\n",
+ "\n",
+ "## Haar-like Feature Selection\n",
+ "They are called Haar-like because they are similar to so called Haar wavelets which are sequences of rescaled \"square-shaped\" functions which can essentially be used to aproximate other functions. And really the similarity is basically that both things look like rectangles.\n",
+ "\n",
+ "Mother function $\\psi(t)$ of Haar wavelet can be described as\n",
+ "$$\\psi(t) = \\left\\{ \\begin{array} {l} 1 && 0 \\leq t < \\frac{1}{2} \\\\\n",
+ "-1 && \\frac{1}{2} \\leq t < 1 \\\\\n",
+ "0 && \\text{otherwise}\n",
+ " \\end{array} \\right.\n",
+ "$$\n",
+ "\n",
+ "While the Haar-like features are black and white rectangular shapes that are used to match similarities of human faces\n",
"\n",
- "Viola-Jones face recognizer https://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework"
+ "\n",
+ "\n",
+ "\n"
]
},
+ {
+ "cell_type": "code",
+ "metadata": {
+ "id": "Dio4EPXDk06h",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "source": [
+ "##Example Haar-like Feature \n",
+ "!wget \"https://upload.wikimedia.org/wikipedia/commons/6/69/Haar_Feature_that_looks_similar_to_the_eye_region_which_is_darker_than_the_upper_cheeks_is_applied_onto_a_face.jpg\""
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
{
"cell_type": "code",
"metadata": {
"id": "JfJAPAXhLVUc",
"colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 170
+ },
+ "outputId": "9d04ba52-6b13-488a-ef3c-ecd9b4cb4ef2"
+ },
+ "source": [
+ "import cv2\n",
+ "\n",
+ "img = cv2.imread(\"Haar_Feature_that_looks_similar_to_the_eye_region_which_is_darker_than_the_upper_cheeks_is_applied_onto_a_face.jpg\")\n",
+ "img_cvt=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n",
+ "plt.imshow(img_cvt)\n",
+ "plt.show()\n",
+ "## Attribution - By Soumyanilcsc - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=37353395]"
+ ],
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nSUVORK5CYII=\n",
+ "text/plain": [
+ "