{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Orthogonal Projections\n", "\n", "> In this post, We will write function that implement orthogonal projections. This post is a summary of homework in \"Mathmatics for Machine Learning - PCA\", offered from Imperial College London.\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Chanseok Kang\n", "- categories: [Python, Mathematics, ICL]\n", "- image: images/op.png" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Orthogonal Projections" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\kcsgo\\anaconda3\\lib\\site-packages\\sklearn\\utils\\validation.py:70: FutureWarning: Pass data_home=./dataset as keyword args. From version 0.25 passing these as positional arguments will result in an error\n", " FutureWarning)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "downloading Olivetti faces from https://ndownloader.figshare.com/files/5976027 to ./dataset\n" ] } ], "source": [ "from sklearn.datasets import fetch_olivetti_faces\n", "image_shape = (64, 64)\n", "# Load faces data\n", "dataset = fetch_olivetti_faces('./dataset')\n", "faces = dataset.data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advice for testing numerical algorithms\n", "Before we begin this week's assignment, there are some advice that we would like to give for writing functions that work with numerical data. They are useful for finding bugs in your implementation.\n", "\n", "Testing machine learning algorithms (or numerical algorithms in general)\n", "is sometimes really hard as it depends on the dataset\n", "to produce an answer, and you will never be able to test your algorithm on all the datasets\n", "we have in the world. Nevertheless, we have some tips for you to help you identify bugs in\n", "your implementations.\n", "\n", "#### 1. Test on small dataset\n", "Test your algorithms on small dataset: datasets of size 1 or 2 sometimes will suffice. This\n", "is useful because you can (if necessary) compute the answers by hand and compare them with\n", "the answers produced by the computer program you wrote. In fact, these small datasets can even have special numbers,\n", "which will allow you to compute the answers by hand easily.\n", "\n", "#### 2. Find invariants\n", "Invariants refer to properties of your algorithm and functions that are maintained regardless\n", "of the input. We will highlight this point later in this notebook where you will see functions,\n", "which will check invariants for some of the answers you produce.\n", "\n", "Invariants you may want to look for:\n", "1. Does your algorithm always produce a positive/negative answer, or a positive definite matrix?\n", "2. If the algorithm is iterative, do the intermediate results increase/decrease monotonically?\n", "3. Does your solution relate with your input in some interesting way, e.g. orthogonality? \n", "\n", "Finding invariants is hard, and sometimes there simply isn't any invariant. However, DO take advantage of them if you can find them. They are the most powerful checks when you have them." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can find some invariants for projections. In the cell below, we have written two functions which check for invariants of projections. See the docstrings which explain what each of them does. You should use these functions to test your code." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy.testing as np_test\n", "def test_property_projection_matrix(P):\n", " \"\"\"Test if the projection matrix satisfies certain properties.\n", " In particular, we should have P @ P = P, and P = P^T\n", " \"\"\"\n", " np_test.assert_almost_equal(P, P @ P)\n", " np_test.assert_almost_equal(P, P.T)\n", "\n", "def test_property_projection(x, p):\n", " \"\"\"Test orthogonality of x and its projection p.\"\"\"\n", " np_test.assert_almost_equal(p.T @ (p-x), 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Orthogonal Projections\n", "\n", "Recall that for projection of a vector $\\boldsymbol x$ onto a 1-dimensional subspace $U$ with basis vector $\\boldsymbol b$ we have\n", "\n", "$${\\pi_U}(\\boldsymbol x) = \\frac{\\boldsymbol b\\boldsymbol b^T}{{\\lVert\\boldsymbol b \\rVert}^2}\\boldsymbol x $$\n", "\n", "And for the general projection onto an M-dimensional subspace $U$ with basis vectors $\\boldsymbol b_1,\\dotsc, \\boldsymbol b_M$ we have\n", "\n", "$${\\pi_U}(\\boldsymbol x) = \\boldsymbol B(\\boldsymbol B^T\\boldsymbol B)^{-1}\\boldsymbol B^T\\boldsymbol x $$\n", "\n", "where \n", "\n", "$$\\boldsymbol B = [\\boldsymbol b_1,...,\\boldsymbol b_M]$$\n", "\n", "\n", "Your task is to implement orthogonal projections. We can split this into two steps\n", "1. Find the projection matrix $\\boldsymbol P$ that projects any $\\boldsymbol x$ onto $U$.\n", "2. The projected vector $\\pi_U(\\boldsymbol x)$ of $\\boldsymbol x$ can then be written as $\\pi_U(\\boldsymbol x) = \\boldsymbol P\\boldsymbol x$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def projection_matrix_1d(b):\n", " \"\"\"Compute the projection matrix onto the space spanned by `b`\n", " Args:\n", " b: ndarray of dimension (D,), the basis for the subspace\n", " \n", " Returns:\n", " P: the projection matrix\n", " \"\"\"\n", " D, = b.shape\n", " # Notice that this b is a 1D ndarray, so b.T is an no-op. Use np.outer instead\n", " # to implement the outer product.\n", " numerator = np.outer(b, b.T)\n", " denominator = np.linalg.norm(b) ** 2\n", " \n", " P = numerator / denominator\n", " return P " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def project_1d(x, b):\n", " \"\"\"Compute the projection matrix onto the space spanned by `b`\n", " Args:\n", " x: the vector to be projected\n", " b: ndarray of dimension (D,), the basis for the subspace\n", " \n", " Returns:\n", " y: ndarray of shape (D,) projection of x in space spanned by b\n", " \"\"\"\n", " p = projection_matrix_1d(b) @ x\n", " return p" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Test 1D\n", "# Test that we computed the correct projection matrix\n", "from numpy.testing import assert_allclose\n", "\n", "assert_allclose(\n", " projection_matrix_1d(np.array([1, 2, 2])), \n", " np.array([[1, 2, 2],\n", " [2, 4, 4],\n", " [2, 4, 4]]) / 9\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Test that we project x on to the 1d subspace correctly\n", "assert_allclose(\n", " project_1d(np.ones(3), np.array([1, 2, 2])),\n", " np.array([5, 10, 10]) / 9\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def projection_matrix_general(B):\n", " \"\"\"Compute the projection matrix onto the space spanned by the columns of `B`\n", " Args:\n", " B: ndarray of dimension (D, M), the basis for the subspace\n", " \n", " Returns:\n", " P: the projection matrix\n", " \"\"\"\n", " P = B.dot(np.linalg.inv(B.T.dot(B))).dot(B.T)\n", " return P" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def project_general(x, B):\n", " \"\"\"Compute the projection matrix onto the space spanned by the columns of `B`\n", " Args:\n", " x: ndarray of dimension (D, 1), the vector to be projected\n", " B: ndarray of dimension (D, M), the basis for the subspace\n", " \n", " Returns:\n", " p: projection of x onto the subspac spanned by the columns of B; size (D, 1)\n", " \"\"\"\n", " p = projection_matrix_general(B) @ x\n", " return p" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from numpy.testing import assert_allclose\n", "\n", "B = np.array([[1, 0],\n", " [1, 1],\n", " [1, 2]])\n", "\n", "assert_allclose(\n", " projection_matrix_general(B), \n", " np.array([[5, 2, -1],\n", " [2, 2, 2],\n", " [-1, 2, 5]]) / 6\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# Test 2D\n", "# Test that we computed the correct projection matrix\n", "\n", "# Test that we project x on to the 2d subspace correctly\n", "assert_allclose(\n", " project_general(np.array([6, 0, 0]).reshape(-1,1), B), \n", " np.array([5, 2, -1]).reshape(-1,1)\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Eigenfaces\n", "\n", "Next, we will take a look at what happens if we project some dataset consisting of human faces onto some basis we call\n", "the \"eigenfaces\". You do not need to know what `eigenfaces` are for now but you will know what they are towards the end of the course!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's visualize some faces in the dataset." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,10))\n", "plt.imshow(np.hstack(faces[:5].reshape(5,64,64)), cmap='gray')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "mean = faces.mean(axis=0)\n", "std = faces.std(axis=0)\n", "faces_normalized = (faces - mean) / std" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data for the basis has been saved in a file named `eigenfaces.npy`, first we load it into the variable B." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "the eigenfaces have shape (50, 64, 64)\n" ] } ], "source": [ "B = np.load('./dataset/eigenfaces.npy')[:50] # we use the first 50 basis vectors --- you should play around with this.\n", "print(\"the eigenfaces have shape {}\".format(B.shape))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each instance in $\\boldsymbol B$ is a `64x64` image, an \"eigenface\", which we determined using an algorithm called Principal Component Analysis. Let's visualize \n", "a few of those \"eigenfaces\"." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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FldddVU88MADceihh8YFF1wQ73vf+zpe6tdcc018/etf73B+vmDBglrSiUQikUgkEonnAHr6qEwkEolEIpFIJMZDb94sE4lEIpFIJBKJcZAflYlEIpFIJBKJCSM/KhOJRCKRSCQSE0Z+VCYSiUQikUgkJoz8qEwkEolEIpFITBj7/KPy5ptvjuOPPz7mzp0bp512Wtx55537Ogt/Mrj66qtj1qxZHf9e/OIXt//earXi6quvjqOPPjoOPvjgOOuss+JXv/rVJOb4uYGf/exn8Y53vCOOOeaYmDVrVnzzm9/s+Hsv9b5hw4a48MIL4/DDD4/DDz88LrzwwtiwYcO+LMazHrV2uOiii7rGx2te85qOa3bs2BGXXXZZvOhFL4pDDjkk3vGOd8QjjzyyL4vxrMfnPve5ePWrXx2HHXZYHHXUUfH2t789/ud//qfjmhwTTy96aYMcD08/brrppjj11FPjsMMOi8MOOyxe+9rXxm233db++3NhHOzTj8rly5fHFVdcER/96EfjJz/5SZxyyinx1re+NX73u9/ty2z8SWH+/Pnx61//uv2v/Ii/4YYbYsmSJfHZz342br/99phh1y5bAAAH+0lEQVQzZ06cc845sWnTpknM8bMfW7ZsiQULFsQ111zT6HC3l3o///zz4957743vfve7sWzZsrj33nvjfe97374sxrMetXaIiPjrv/7rjvHx3e9+t+PvixYtiltvvTW++tWvxr/+67/Gpk2b4u1vf3s11GRiN37605/Ge9/73rjttttixYoVMTg4GG9605vi8ccfb1+TY+LpRS9tEJHj4enGIYccEp/+9Kfj3//932PlypXxqle9Ks4999z4r//6r4h4boyDfeqn8owzzohjjz02brzxxvZvJ554Ypx99tlx5ZVX7qts/Mng6quvjhUrVsSqVau6/tZqteLoo4+OCy64IC699NKIeDL28Pz58+Pv//7v47zzztvX2X1O4s/+7M/i2muvjXPPPTcieqv3X//617Fw4cL44Q9/GC9/+csjImLVqlVx5plnxs9//vOYP3/+pJXn2Qq2Q8STzMxjjz0W3/72txvv2bhxY8ybNy+WLFkSb3vb2yIi4ve//30cd9xxsWzZsjjjjDP2Sd6fa9i8eXMcfvjh8c1vfjPOPPPMHBOTALZBRI6HycKRRx4ZV155Zbz73e9+ToyDfcZU7ty5M37xi1/E6aef3vH76aefHnffffe+ysafHB566KE45phj4vjjj4/3vOc98dBDD0VExMMPPxxr1qzpaI9p06bFqaeemu3xNKKXer/nnnti5syZsXDhwvY1L3/5y2PGjBnZNnsZq1atinnz5sVJJ50UH/zgB+OPf/xj+2+/+MUvYteuXR1tdeihh8ZLXvKSbIcJYPPmzTE2NhazZs2KiBwTkwG2gZDjYd9hdHQ0vve978WWLVvilFNOec6Mg2rs772F9evXx+joaMyZM6fj9zlz5sTatWv3VTb+pHDyySfHl770pZg/f36sW7currvuunjd614Xd911V6xZsyYiorE9Vq9ePRnZ/ZNAL/W+du3amD17dkd8176+vjjooINyrOxFvOY1r4k3vOENccQRR8Rvf/vb+MxnPhNvfOMb48c//nEMDw/H2rVrY2BgIGbPnt1xX85ZE8MVV1wRxx13XJxyyikRkWNiMsA2iMjxsK/w3//93/G6170utm/fHjNmzIhvfOMbceyxx7Y/Cp/t42CffVQKTYHqXXD0xMTw2te+tuP85JNPjhNOOCG+9a1vxV/8xV9ERLbHZKFW701tkG2zd/E3f/M37f8fe+yxccIJJ8Rxxx0Xt912W7zxjW+092U7PHV87GMfi7vuuit++MMfxsDAQMffckzsG7g2yPGwbzB//vy44447YuPGjbFixYq46KKL4vvf/37778/2cbDPtr9nz54dAwMDXV/T69at6/oyTzw9mDlzZhx99NHx4IMPxty5cyMisj32MXqp9+c///mxbt26aLV2y51brVasX78+2+ZpxAte8II45JBD4sEHH4yIJ9thdHQ01q9f33FdjpGnhkWLFsX3vve9WLFiRRx55JHt33NM7Du4NmhCjoenB0NDQ/GiF70oXvayl8WVV14Zxx13XHzpS196zoyDffZROTQ0FCeccEKsXLmy4/eVK1d26AMSTx+2b98e999/f8ydOzeOOOKImDt3bkd7bN++PVatWpXt8TSil3o/5ZRTYvPmzXHPPfe0r7nnnntiy5Yt2TZPI9avXx+rV69uT+4nnHBCTJkypaOtHnnkkbZYPtE7Lr/88li2bFmsWLGiw61ZRI6JfYXx2qAJOR72DcbGxmLnzp3PmXEwcMUVV3xqXz1sv/32i6uvvjoOPvjgmDp1alx33XVx5513xhe/+MU44IAD9lU2/mTwiU98IoaGhmJsbCweeOCBuOyyy+LBBx+Mz3/+8zFr1qwYHR2Nz3/+8zFv3rwYHR2Nj3/847FmzZr4h3/4hxgeHp7s7D9rsXnz5vjf//3fWLNmTfzTP/1TLFiwIPbff//YuXNnHHDAAdV6P+igg+I//uM/YtmyZXH88cfHI488Eh/+8IfjxBNPfEa5jnimY7x2GBgYiKuuuipmzpwZIyMjcd9998UHPvCBGB0djeuuuy6Gh4dj6tSp8eijj8ZNN90Uf/7nfx4bN26MD3/4w7H//vvHpz/96ejvz9gRveDSSy+Nf/7nf46vf/3rceihh8aWLVtiy5YtEfEk2dDX15dj4mlGrQ02b96c42Ef4FOf+lT7nfzII4/E0qVL4zvf+U586lOfiqOOOuo5MQ72qUuhiCedn99www2xZs2aOOaYY+L//b//F694xSv2ZRb+ZPCe97wn7rzzzli/fn0cdNBBcfLJJ8fHP/7xOProoyPiSdr8mmuuia9//euxYcOGOOmkk2Lx4sWxYMGCSc75sxt33HFHvOENb+j6/Z3vfGcsXbq0p3p//PHH4/LLL48f/OAHERFx5plnxrXXXttlrZnwGK8dPve5z8W5554b9957b2zcuDHmzp0br3zlK+PjH/94HHrooe1rt2/fHp/85Cdj2bJlsX379njVq14V119/fcc1ifHh+uzll18eixYtioje5qIcE08dtTbYtm1bjod9gIsuuijuuOOOWLt2bey///5x7LHHxgc/+MG2O6bnwjjY5x+ViUQikUgkEonnHpKvTiQSiUQikUhMGPlRmUgkEolEIpGYMPKjMpFIJBKJRCIxYeRHZSKRSCQSiURiwsiPykQikUgkEonEhJEflYlEIpFIJBKJCSM/KhOJRCKRSCQSE0Z+VCYSiUQikUgkJoz/Dy1S+NQrPGl/AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,10))\n", "plt.imshow(np.hstack(B[:5].reshape(-1, 64, 64)), cmap='gray')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Take a look at what happens if we project our faces onto the basis $\\boldsymbol B$ spanned by these 50 \"eigenfaces\". In order to do this, we need to reshape $\\boldsymbol B$ from above, which is of size (50, 64, 64), into the same shape as the matrix representing the basis as we have done earlier, which is of size (4096, 50). Here 4096 is the dimensionality of the data and 50 is the number of data points. \n", "\n", "Then we can reuse the functions we implemented earlier to compute the projection matrix and the projection. Complete the code below to visualize the reconstructed faces that lie on the subspace spanned by the \"eigenfaces\"." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def show_face_face_reconstruction(i):\n", " original_face = faces_normalized[i].reshape(64, 64)\n", " # reshape the data we loaded in variable `B` \n", " B_basis = B.reshape(B.shape[0], -1).T\n", " face_reconstruction = project_general(faces_normalized[i], B_basis).reshape(64, 64)\n", " plt.figure()\n", " plt.imshow(np.hstack([original_face, face_reconstruction]), cmap='gray')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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4cyZM/g+E6s75SBAynpN3oR0f4rXK71HhXtSsmTTdQoQbjRvtOeee86GDRtmEydOtMrKSrvmmmvs8ccfzxrbuXOn7d+/30aNGpW9pl27djZy5EjbsGFDUiccx3Gc5k1JdXV1vfkNysvLzczsrrvusuuvv962bNliM2bMsPvuu88mT55sGzZssDFjxtiWLVusV69e2eumTJlie/futeXLl0fr3bZtWyMOw3Ecx2lKqqqq6v17QRntzJkzduWVV9p9991nZmZDhgyxHTt22NKlS23y5MnZffmeErW1teg9EZg3b15WJu8nNdcOHjwYbS9IdQMGDMiuqYxG3h0qcaik1qlTp2g7KYeRHTp0KNoWBUEFeUI9i0hSSzlMiszblEBOytEV82rRMQXZsWPHjjm/09GYSYZISTVPwYBaT9euXbNyLIdefjnGb3/726z885//PCuH8X/nO9+xBx54INq+zpdKXSStqESlsp+OQ/dk+FJXUVGRXevWrVtWLi0tzcq691VeJBlW9164p127djn7miRsHXchyZkOhks5BiFFWlJISsyXkLt06VJHWo/VSbI8PZO6vuTRRe9Lun4alEySnY7p8OHDdfpQXV1tZp++V77yyivZ3/fv35+V9X1Wj3XRumNecg8//LDVR0EZrby83Pr3759zrV+/frZ79+7s72ZmBw4cyLnn0KFDOU4EjuM4zueXgh82I0aMsO3bt+dc2759e/btqk+fPlZeXm6rVq3K/l5TU2Pr16+34cOHN3J3HcdxnPORgjLaXXfdZV/96ldtwYIFduONN9rmzZvt8ccft+9+97tm9qkJdeedd9rChQutqqrKKisrbcGCBda+fXubMGFCvXVTYBvlPlKpSdPFx/L+kEcOnXynaDuxIEazXJO2UI6qM2fOYFBnKGt9FHBHAZ56XWUQyuvW0PPqKVhOTyLNH08+FPil65siOZHnm86flmntQz0UWEeBg4XOp8+/nzzvUoJfC3kW0trpPNJ66N6n9aPgTfIYI2JeZZRTjfqbclRDShAxzW94bYsWLQp6g6WsFwWVkwSY4kH4WeqJ5WDUfULvM5RzL+WYiXwKftgMHTrUnnzySZs9e7bNnz/fevbsaffee69NmjQpu+fuu++2EydO2PTp0626utqGDRtmy5cvt4suuiipE47jOE7zJildzZgxY2zMmDH495KSEps1a5bNmjWr0TrmOI7jNB/OmdxoJO0E74n8e9QLJJh9FFyk7VB69I4dO2ZlChZU1BxVCy4mzdXU1OR4RcW8x8jjSz1KyEROSf2tbaako9fr2nf1aIrJeinBYTrvasqr5wuZ6eRlSMcHkPRA6xpIOQGSIDmF5FaSywpJNCSrxvKb5ddB8iIFsFKwLs1HoX2QEnxMdaQEdaZ4WcbksBYtWhRMq59y/ATJkSknpGqb+j6ne1mhPIKx51/3PZ2Qqn3R9lMk0/rwrM+O4zhO0SkY1Ok4juM4nxW3bBzHcZyi4x82juM4TtHxDxvHcRyn6PiHjeM4jlN0/MPGcRzHKTr+YeM4juMUnbP+YbN06VIbPHiwlZeX27XXXmvr1q07211odB566CH78pe/bL169bK+ffvaTTfdZG+99VbOPbW1tTZnzhwbMGCAVVRU2NixY+3tt99uoh43DgsXLrTOnTvb9OnTs2vNaZz79u2zO+64w/r27Wvl5eU2fPhwW7NmTfb35jLW06dP2wMPPJA9l4MHD7YHHnigTgDi+TjWtWvX2s0332yXXXaZde7c2Z588smcv6eMq7q62iZPnmy9e/e23r172+TJk3OCzc8F6hvnxx9/bPfdd5+NHDnSunfvbv3797dJkybZrl27cuo4efKkTZ8+3b74xS9a9+7d7eabb7Y9e/Y0Wh/P6ofN8uXLbebMmfatb33LXnnlFbvqqqvs61//ep1Bn2+sWbPGbr31VnvxxRdtxYoV1qpVK7v++utzzsZYtGiRLV682ObOnWsvv/yylZWV2Q033JBz/sv5xKZNm+yJJ56wQYMG5VxvLuOsrq62MWPGWG1trT3zzDO2YcMGmzdvXs6xGc1lrI888ogtXbrU5s6daxs3brQHH3zQfvjDH9pDDz2U3XO+jvX48eM2cOBAe/DBB3Oi4QMp45o0aZJt3rzZfvGLX9iyZcts8+bNdvvtt5/NYRSkvnF+9NFH9sYbb9i0adPs17/+tf385z+3PXv22IQJE3K+UMyaNctWrlxpP/rRj+x//ud/7MMPP7SbbroJs2k0lLMa1Dl69GgbNGiQPfroo9m1oUOH2rhx47LD2ZoDx44ds969e9uTTz5p1113ndXW1tqAAQPstttus2nTppmZ2YkTJ6yqqsq+973vZYe/nS8cPXrUrr32Wlu0aJHNmzfPBg4caPPnz29W45w9e7atXbvWXnzxxejfm9NYb7rpJuvSpYv94Ac/yK7dcccdduTIEXv66aebzVh79Ohh8+bNs1tuucXM0tbwnXfeseHDh9sLL7xgI0aMMDOz9evX23XXXWebNm0qeDplU5A/zhhbt261ESNG2Nq1a23QoEF29OhRq6ystMWLF9s3vvENMzPbvXu3XX755bZs2TIbPXr0Z+7XWbNsTp06Za+//rqNGjUq5/qoUaNsw4YNZ6sbZ4Vjx47ZmTNnrHPnzmZmtnPnTtu/f3/O2Nu1a2cjR448L8c+depUGzdunF177bU515vTOJ977jkbNmyYTZw40SorK+2aa66xxx9/PMsP1ZzGOmLECFuzZk12OunWrVtt9erV9pWvfMXMmtdYlZRxbdy40Tp06JBzNteIESOsffv25/XYg+UW3qNef/11+/jjj3PmomfPnta/f/9GG+dZS8R5+PBhRIbCaQAABWhJREFUO336dJ3TO8vKyuqc8nm+M3PmTLv88svtqquuMrM/HrkaG/vevXvPev8+C0888YTt2LHDHnvssTp/a07jfO+99+xHP/qR3XXXXTZ16lTbsmWLzZgxw8zMJk+e3KzGOnXqVDt27JgNHz7cWrZsaZ988olNmzYtO0akOY1VSRnXgQMHrLS0tE7Cz4svvvi8fd86deqUfec737G//Mu/tB49epjZp+Ns2bJlzpHiZo37/nzWsz7nH2pUW1uLBx2dj9x777326quv2gsvvFDnIKjzfezbtm2z2bNn2/PPP48ZaM3O/3GafZox98orr8zk3SFDhtiOHTts6dKlNnny5Oy+5jDW5cuX21NPPWVLly61AQMG2JYtW2zmzJnWu3dv+7u/+7vsvuYw1hiFxhUb4/k69k8++cQmT55sR48etf/8z/8seH9jjvOsyWilpaXWsmXLOp+Shw4dqvPN4nxl1qxZ9uyzz9qKFSvs0ksvza6Xl5ebmZ33Y9+4caMdPnzYrr76aistLbXS0lJbu3atLV261EpLS61r165mdv6P0+zTNevfv3/OtX79+tnu3buzv5s1j7H+y7/8i33zm9+08ePH26BBg+zmm2+2KVOm2MMPP2xmzWusSsq4unXrZocOHapzJMLhw4fPu7F/8sknduutt9qbb75p//Vf/5U9r2afjvP06dM5R5qYNe4an7UPmzZt2tgVV1xhq1atyrm+atWqHD30fGXGjBm2bNkyW7FihfXr1y/nb3369LHy8vKcsdfU1Nj69evPq7GPHTvW1q1bZ6tXr87+u/LKK238+PG2evVqq6ysbBbjNPtUl9++fXvOte3bt1uvXr3MrPmsqdmn3kr5VnjLli2z81Ca01iVlHFdddVVduzYMdu4cWN2z8aNG+348ePn1dg//vhjmzhxor355pu2cuXK7IM2cMUVV1jr1q1z5mLPnj2Zg0Rj0HLmzJn/r1FqSuCiiy6yOXPmWEVFhbVt29bmz59v69ats3//93+3Tp06na1uNDrTpk2zp556yn7yk59Yz5497fjx49lBYG3atLGSkhI7ffq0Pfzww1ZZWWmnT5+2b3/727Z//3575JFHogeunYu0bdvWysrKcv77xS9+Yb1797Zbbrml2YzT7NMfR+fOnWstWrSwiooK+/Wvf20PPPCA3XPPPTZs2LBmNdZ33nnHnn76aausrLTWrVvb6tWr7Xvf+57deOONNnr06PN6rMeOHbOtW7fa/v377T/+4z9s4MCB1rFjRzt16pR16tSp4Lguvvhi+81vfmPLli2zwYMH2549e+yee+6xoUOHnlPuz/WNs3379vb3f//39tprr9lPf/pTu+iii7L3qJYtW1rr1q2tbdu2tm/fPvvhD39of/Inf2JHjx61e+65xzp27Gj3338/HmTXEM76eTZLly61RYsW2f79++2yyy6zf/3Xf7UvfelLZ7MLjU7w6MhnxowZ2VHZtbW19uCDD9pPfvITq66utmHDhtmCBQts4MCBZ7Orjc7YsWMz12ez5jXOF1980WbPnm3bt2+3nj172m233Wa33357pmE3l7F++OGH9v3vf9/++7//2w4dOmTl5eU2fvx4++d//ufslNbzdayrV6+2r33ta3Wu/83f/I0tWbIkaVxHjhyxGTNm2PPPP29mZtddd53NmzcPn/umoL5xzpw504YMGRJ93eLFizMX6ZqaGvvud79ry5Yts5qaGvvzP/9zW7hwofXs2bNR+uiHpzmO4zhFx3OjOY7jOEXHP2wcx3GcouMfNo7jOE7R8Q8bx3Ecp+j4h43jOI5TdPzDxnEcxyk6/mHjOI7jFB3/sHEcx3GKzv8Hyt8WCD73X9kAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_face_face_reconstruction(0)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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77QxnteXzYYNG2zx4sX2rW99y371q1/ZpEmT7Gtf+1q7SV9sbN261e666y7btGmTbdy40Xr27Gk333xzTgaBNWvW2Nq1a2358uX28ssvW2Vlpd1yyy05tXMuJl577TV75plnbNy4cTnHu8s8m5qabMaMGdbW1mbPP/+87dixw1asWJFTNqO7zPUHP/iB1dXV2fLly23nzp326KOP2o9+9CN77LHHsnMu1rkeO3bMxo4da48++mhONo5AyrzmzJljb7zxhv3sZz+z9evX2xtvvGH33HPP+ZxGQTqa5/Hjx+03v/mNLViwwH75y1/aT37yE9u/f7/dfvvtOX9QLFmyxH7xi1/YU089Zf/2b/9mR48etTvuuAOzJBTLeQ3qnD59uo0bN84ef/zx7NiECRNs1qxZWXG27kBLS4tVV1fbs88+azfeeKO1tbXZmDFj7O67786KaZ04ccJqa2vte9/7ns2ePbuLR1wczc3NNnXqVFuzZo2tWLHCxo4daytXruxW81y6dKlt27bNNm3aFP337jTXO+64wwYNGmQ//OEPs2P33nuvHTlyxJ577rluM9crrrjCVqxYYd/4xjfMLO0evvPOOzZ58mR76aWXbMqUKWZmtn37drvxxhvttddeK1idsivIn2eMt99+26ZMmWLbtm2zcePGWXNzs9XU1NjatWvt61//upmZffDBB/alL33J1q9fb9OnT//U4zpvls2pU6fs9ddft2nTpuUcnzZtmu3YseN8DeO80NLSYmfPns2q3+3bt8/q6+tz5t63b1+74YYbLsq5z58/32bNmmVTp07NOd6d5vnCCy/YxIkTbfbs2VZTU2Nf+cpX7Mknn8xyT3WnuU6ZMsW2bt1q//M//2Nm576ItmzZYn/wB39gZt1rrkrKvHbu3GmXXHJJTm2uKVOmWL9+/S7quQfLLXxHvf7663b69OmctRg2bJiNHj260+Z53hJxNjY2Wmtra7vqnZWVle2qfF7sLF682L70pS/ZpEmTzMysvr7ezCw69wMHDpz38X0annnmGdu7d6898cQT7f6tO83zvffes6eeesruv/9+mz9/vu3atcsWLVpkZmZz587tVnOdP3++tbS02OTJk628vNzOnDljCxYsyMqIdKe5KinzOnTokFVUVLRLBjt48OCL9nvr1KlT9jd/8zf2R3/0R3bFFVeY2bl5lpeX55T5Nuvc7+fznvU5PwtufrGii52HHnrIXn31VXvppZfaZe292Oe+e/duW7p0qb344otYXMzs4p+n2bnMt+PHj8/k3euuu8727t1rdXV1Nnfu3Oy87jDXDRs22E9/+lOrq6uzMWPG2K5du2zx4sVWXV1t3/zmN7PzusNcYxSaV2yOF+vcz5w5Y3PnzrXm5mb753/+54Lnd+Y8z5uMVlFRYeXl5e3ekg0NDe3+srhYWbJkif385z+3jRs32pVXXpkdr6qqMjO76Oe+c+dOa2xstC9/+ctWUVFhFRUVtm3bNqurq7OKigq77LLLzOzin6fZuXs2evTonGOjRo2yDz74IPt3s+4x1+985zv2F3/xF3bbbbfZuHHj7M4777R58+bZ97//fTPrXnNVUuY1ZMgQa2hoaJfev7Gx8aKb+5kzZ+yuu+6y3/72t/Yv//Iv2fNqdm6era2tOZWGkZBqSQAAA2ZJREFUzTr3Hp+3l03v3r3t+uuvt82bN+cc37x5c44eerGyaNEiW79+vW3cuNFGjRqV828jRoywqqqqnLmfPHnStm/fflHNfebMmfbKK6/Yli1bsv+NHz/ebrvtNtuyZYvV1NR0i3mandPl9+zZk3Nsz549Nnz4cDPrPvfU7Jy3Ur4VXl5entU16U5zVVLmNWnSJGtpabGdO3dm5+zcudOOHTt2Uc399OnTNnv2bPvtb39rv/jFL7IXbeD666+3Xr165azF/v37MweJzqB88eLF/1+n9JTApZdeasuWLbOhQ4danz59bOXKlfbKK6/Y3//939uAAQPO1zA6nQULFthPf/pTe/rpp23YsGF27NgxO3bsmJmde8mWlZVZa2urff/737eamhprbW21v/7rv7b6+nr7wQ9+YJ/73Oe6eAZp9OnTxyorK3P+97Of/cyqq6vtG9/4RreZp9m5H0eXL19uPXr0sKFDh9ovf/lLe+SRR+zBBx+0iRMndqu5vvPOO/bcc89ZTU2N9erVy7Zs2WLf+9737NZbb7Xp06df1HNtaWmxt99+2+rr6+2f/umfbOzYsda/f387deqUDRgwoOC8Bg8ebL/+9a9t/fr1du2119r+/fvtwQcftAkTJlxQ7s8dzbNfv372Z3/2Z/af//mf9o//+I926aWXZt9R5eXl1qtXL+vTp48dPHjQfvSjH9k111xjzc3N9uCDD1r//v3tu9/9LhZiLIbzXs+mrq7O1qxZY/X19Xb11Vfb//t//89+7/d+73wOodMJHh35LFq0KCuV3dbWZo8++qg9/fTT1tTUZBMnTrRVq1bZ2LFjz+dQO52ZM2dmrs9m3WuemzZtsqVLl9qePXts2LBhdvfdd9s999yTadjdZa5Hjx61v/3bv7V//dd/tYaGBquqqrLbbrvN/uqv/iqrVHuxznXLli120003tTv+J3/yJ7Zu3bqkeR05csQWLVpkL774opmZ3XjjjbZixQp87ruCjua5ePFiu+6666KfW7t2beYiffLkSfv2t79t69evt5MnT9rv//7v2+rVq23YsGGdMkYvnuY4juOUHM+N5jiO45Qcf9k4juM4JcdfNo7jOE7J8ZeN4ziOU3L8ZeM4juOUHH/ZOI7jOCXHXzaO4zhOyfGXjeM4jlNy/n/mGZNlQLqTowAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_face_face_reconstruction(3)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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rF1RUZH1JaAeI2oiUqEo9arRgm16LHnY6HbKh0YBg+GFnJITSqGCRSQFNTa7c0om3tCmoEDKjUaF3BSSbVICWFOydgcvG7ov6umVEvRIc5ciueiaoeC6WPZd3UZ5uXQcBAVXkxxHY0qR4GLno0Jreg6a95Tsw+TpFZOfW7duXTAYmYJjycuTZF2dL5KQ6bmhQFgllkmectlRBmiSKWkOGqKgZfP888/biBEjbOLEiVZRUWEf//jH7Yknnsg6unv3bquurrYxY8Zkx3To0MGuv/76HLdlx3Ec58NLq5qamgZ/6SkvLzczswceeMBuueUW27p1q82YMcMeeeQRmzx5sm3atMnGjh1rW7dutT59+mTHTZkyxfbu3WsrV66Mnnf79u1NOAzHcRynOdHaYzEKymhnzpyxYcOG2SOPPGJmZtdcc43t3LnTqqqqbPLkydl++aZUXV1dQfPqs5/9bNamQCrd/t5772XtT3ziE1l71KhRZmZWWlqabdNyACqLqaygUhuZkSplqMShZqT+NhX7naqystJef/317N+xGt9qopIUR1IYyTYkT1BAX6G8UfnnDNvDcf369bO33347ej4qZkXXUWh8VICLZAC9NyH/Hp1b+65r6amnnjIzs0cffdQ+97nPRfuiY9U1k+IF2L1796ytv4v269cva1966aVmZta1a9dsm86p9r1z587RftGzqX0Jcl3btm1zngPyrCQ5MLYPnYNkTZKKUryiSM7NX+/Dhw+3n/70pyi1h2NVcqccgiRrUrkMCh6P5cTL34c+LzTHZPBsDIHCN9xwg33ve9+r93fdx4yLBcbG+q//+q/WEAVltPLy8pzIfbOzv5e8++672d/NzPbv35+zz4EDB3IeFsdxHOfDS8GXzahRo2zHjh0523bs2JFJZpdffrmVl5fbmjVrsr8fP37cNm7caCNHjmzi7jqO4zgXIgVltAceeMD+9E//1BYuXGi33Xabvf766/bEE0/Yl770JTM7a0Ldf//9tmjRIqusrLSKigpbuHChdezY0SZMmNDgucmUT0kRryZiOI9uU6gud4pspFKb9ldNTYU8p4hC5QZScpRRuu+UlOvkHUPmfqxEA5nXCqXATwk8VSj9O7VJ2gnbaS60rfIb5aFTaP2meBxSeYlYAJ5uS/HQohT1OqeUA43uH91vlZpia5I8m0gepvIM1F8lpZxCWO8XXXQRSsvhWuQhRh5lKfNLUHAsSWcaFByryklrkOaX+pjiBZhPwb2GDx9uTz31lM2ePdsWLFhgvXv3tocfftgmTZqU7fPggw/asWPHbPr06VZTU2MjRoywlStX5mjdjuM4zoeXpFfS2LFjbezYsfj3Vq1a2axZs2zWrFlN1jHHcRyn5dCsudEoMIgC99Qc3bdvX9YOpqyakOpFQedTDxuSG7SPKqmp9wal71czlszq0J+UPFDkfUUVFcncp76QxEhVF8N2vWZK3rPGljJImRvyzqHAyMbIOSkyGo2D8laleC6RNBa263hoLnR8KsulpK4vFACZ39Zz6vypd2A4j55b+0uBi5TrLKUCLeVGjElq7dq1Kyg/k7csSbIpAZ7knUdSPMnGeo9pfcSOSykPQXOq97chPOuz4ziOU3QKBnU6juM4zu+KWzaO4zhO0fGXjeM4jlN0/GXjOI7jFB1/2TiO4zhFx182juM4TtHxl43jOI5TdM75y6aqqsquvvpqKy8vt9GjR9uGDRvOdReanMcee8xuuOEG69Onj/Xv39/uvPNO+/nPf56zT11dnc2ZM8cGDRpkPXv2tHHjxtm2bduaqcdNw6JFi6xr1642ffr0bFtLGue+ffvsvvvus/79+1t5ebmNHDnS1q1bl/29pYz19OnT9uijj2bP5dVXX22PPvpovfxtF+JY169fb3fddZddeeWV1rVr16xERCBlXDU1NTZ58mTr27ev9e3b1yZPnox5GJuLhsZ58uRJe+SRR+z666+3Xr162cCBA23SpEn2zjvv5JzjN7/5jU2fPt369etnvXr1srvuusv27NnTZH08py+blStX2syZM+3zn/+8/ehHP7Jrr73WPvnJT9Yb9IXGunXr7O6777aXXnrJVq1aZW3atLFbbrnFDh06lO2zePFiW7Jkic2bN89Wr15tZWVlduutt0br31wIvPrqq7Z8+XIbMmRIzvaWMs6amhobO3as1dXV2bPPPmubNm2y+fPn55TNaClj/drXvmZVVVU2b94827x5s82dO9e+8Y1v2GOPPZbtc6GO9ejRozZ48GCbO3duTnLQQMq4Jk2aZK+//rp997vftRUrVtjrr79u995777kcRkEaGucHH3xgP/vZz2zatGn2wx/+0L7zne/Ynj17bMKECTlfKGbNmmXf//737Zvf/Kb953/+px05csTu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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_face_face_reconstruction(6)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAADfCAYAAAAgJn42AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2de7BW1Xn/H0AoBJXL4eRQBLThHEFoEKGKsTaMMClxaAdviTaZacOIeOuM2EAB29RKbJCbCaYM0Rwz2sRWzQkzxVh1bCEGEAGbWIkaAxIIIBwCclBA5Pb+/uC3tt/3ZX3OXkfPy7n4fGacWW72u/Zaa6/97vN83+fSoaGhoWCO4ziOU0Y6tvQAHMdxnPaPv2wcx3GcsuMvG8dxHKfs+MvGcRzHKTv+snEcx3HKjr9sHMdxnLLjLxvHcRyn7DTry6a2ttaGDx9uVVVVNmbMGHvxxRebs3vHcRynjdJsL5ulS5fazJkz7etf/7r9/Oc/t0suucS+9KUv2bZt25rrEo7jOE4bpUNzZRAYN26cDRs2zB544IHs2MiRI23ixIl29913N8clHMdxnDZKs1g2R44csVdeecXGjh1bdHzs2LG2du3a5riE4ziO04Y5ozk62bt3rx0/ftwqKyuLjldWVtru3bujn9m4cWNzXNpxHMdpBdTU1DT6783ysgl06NCh6P8LhcIpx5S6urro8Y4dPzS4OnfuHD3n+PHjWfvEiROnfE7bNEbqWznjjA+XKFyn9PraZ6HwoSrZpUsXMzspMS5fvjw73rVr10avo2Pv1KlT9Lhe89ixY9HjOsYPPvggelzndPTo0eh49LiOJ3w29PfFL37Rnn/++VPmVnpNRa9D69jYHsrrU+en/YS2zk3XUdu7du06pe+vfe1rNn/+/Gjfuq8GDx6ctfUe6Pxo3+oYYveP9q/2oWvxB3/wB9FzdI1ie2/cuHH27LPP5o6X9mrsHtN9T+lPx6ttXVPdb7qOdE6hULAxY8bYCy+8gOfH9iGthX5O0fGmQP3EnkOzkypTQOd3+PBhM/twH33lK1+xRx55JPt33V8HDhzI2jpnfVY+9alPZe3u3bubmdmcOXManUuzyGgVFRXWqVOnU6yYPXv2nGLtOI7jOJ88muVl06VLFxsxYoStWLGi6PiKFSts9OjRzXEJx3Ecpw3TbDLa7bffbjfffLONGjXKRo8ebT/4wQ9s165dNmnSJPyMmnwqLamJqGYcSSLB1CTzWuUGOoekBJI7qP8UeS02j5TrE3qOtlUOILmB5kefjaH3S+evUomeQ9dXUuZN65QiVeT1T/fj0KFD0XNIBiWZjqQjmkep5FPat6JyGUmQdH2F9kyKjEXPre6DAMmeTR2LoutFsnFMij527FjRusZkMlpTepZS7nVM4i2Fnknqn76LYn2kSo0B2nuN0Wwvm2uuucbeeecdmz9/vtXX19sFF1xgTz75pA0cOLC5LuE4juO0UZrVQWDy5Mk2efLk5uzScRzHaQc068umyRcH6YFMUJJfgqlHfajJ161bt2gfOpYUVDqLSQOlYyfPoZh5qyYtrRHJPORRpeh60JqSlBnzdlNTmyQZhe4vSS8p56dIGLG1JjmA1jF49aRCklPwVGzsfEXvRxhznjxlVrx/tE3SMu0HkmqaKlnGnlWSF1O8EGnvpXijxb4vOnbsmLv3yWOOxp7iGZtyXL+7SJ6lsdF3QYD2KX1O11d/DmkMT8TpOI7jlB1/2TiO4zhlp0VltBAMZMYSCpnpeQFWFBCmpARSpgRVkZxDY4sd17FQHxR0SZ43TZXIUrxdYsGZ5HWmpHjh0DkqOdHapEgusT1G907X4v3334+29RyaN10/xQNMyQtYpntAn6OgS5KZzj777KxN0lVKIG5TPLpI/qLnM0U6y+u/VDaK3TOS0MlDNUXWTfnpQK+lHockqenxsDYkA1MfeT9dlJ7fGG7ZOI7jOGXHXzaO4zhO2WlRGS1F+kjxjgnmpZqZKg2oDENymUJ5m8j7JzaW0uM6hpjZSQGCdE6K3EAePymef2pW6/HY2qhkoO0UyYv2QEpOuKZ6SMX2D3nsaB8NDQ3Rc0hWoGC6FE+6lGciJqOlyDAkf+UFS5eeTxKckuelRYGW5JmWMg/yICS5M9bnsWPHcu8ZfYeQzJWSBy5PZi/9rI6dgspjXmIkxSski5Gc7t5ojuM4TqvBXzaO4zhO2WlRGY3Szqd4oOlng8lKZqGatAqZwCQBKCkBoWTqxjzJUmQN6psCIJWUfkj2y5N29NwUL8AULxy9v9o/zTXlWjEPGso/tn///qytKdf13ql8QAGFej5JmSmePTFJK0WOTJH6FLp/OlcKSCUPrFifOi71kGpqLjfyhtN11HHleb126NAhN68ZXV/XhTxdmyotp3h6UoCufu+FsWnfZ555ZtZWqVjLDaSUe0ktm+CWjeM4jlN2/GXjOI7jlJ0WldGamhaevGBCm1Krk3mrUKAWmdQpJQEoIEuJyQYp3kxk3tIY87zhSknJFRcLSKVSEbHPlbZTzkkpPaBQoF1YA/LwUdlI5YZ33303a+uaxiSLUlLkVvK0iuU1I+9LyoFG+QJTUt3rnOhZofHo8fBZuqfk2USy6sfxtos95126dEGJPFxXq1SSPJ5SNiLl54KUQGAlT77UZ/+ss87K2vrcarC97vemetKdMraksxzHcRznY9Cilk0KFNsS+0uO/srQbKkpsTX0gzelptA3vv5llmJZhHPorymylFIsQfpLKyWTdEoKk9DWddG/isjRgqxFgn5MJ1LSB4W5UtqfioqKrN27d++s/ctf/jJr670my4LGRX8NxqwAs7h1rvta/zLVdoplTjEvelyvRX+107xja6NjUauQrG49h55DcrRI+Ss8zEPXzqx4P4c1oLHE+itt01qTCpKSRov61x/6w7V0T+ncevToER2X9qeFA1OtGcUtG8dxHKfs+MvGcRzHKTstKqOl+mcH6IfPYNY2Nd5D/fv1R2CS41LS2OhnVWah9BWxeA+q9Z2SETjFX19NY/qxl8z6mASnffTs2TN6LvWd8gN9Sioaqhuf9+OsnquywznnnJO1db1efvnlrK1SjY43JU5L0THoPlFJJyap6Z5VmYvSM9F1SKbU50Pvq2a+pv1J8U2x9aC939T0THQ+ORfo/gz3vmPHjkXn6I/oMcePPEcIM97jOl7a7wql5lFiTjBmH95LygqtTg96/L333ouOkVI7NYZbNo7jOE7Z8ZeN4ziOU3ZaVEZLyUqcksk5HCc5SfumbKVqOqpMoNehevXk3aVjyEvlkVL4KSUrM3mUkTdaU73zVNoJx/Vc9dxS0zwlrQiZ+Crn0PkfVYrRtVOPHN0DKqXkeYiZpcloKtlRtmCVyfKKs+ka6dppHx8nVYq2dYwk+VKannA/yOMpJYMwZYame50SRxQ8s7p37160b7VoXLjfKWmuyGONUgbFJC+z4jXVtdH9k+KlGsZAz5jKZZTFXaVaKsLWGG7ZOI7jOGXHXzaO4zhO2Wk16WrII4ZSf8TMQe1DA5ZS0r+oSaltMo0pC66amnqOZg6OeQipWazjbWphLYUCICl7K0l9KsVoO0glQXY4fPhwkYxG3oNqstNcdT1IVlBIKlVi1yJpiWTdqqqq6BgpFQzJRSRXpXiJhTZdX/ug9aU9EKtF37dvX9uzZ0+0Typ8RumcwrOSN7fG2impn1KKvcVSDH3qU58qktG0zyAhpwTQKnqf6HtGvysOHjwY/Sx5r1Egeew+6bNE/dF9pCJt7o3mOI7jtBr8ZeM4juOUnRaV0VJyWKVkpw3H9Zh6E1Hgospfej6Z7GpeqhREkoGa4yqj6flhfuRVQ8GQ5HmTl/VVr2l2ai6ogEoMOg+VJ0u9cw4fPlw0Ll1Tnf/evXuz9jvvvBM9R6UE7Ye82ignGwXXhXtM0hZJGRdffHHWTgnkTClIR7m+9Lq690KOKv13ytpLnpXk8ahz0uO6HvRMxoIkS88Pe4mePf2couui+5FkLJIjydMq3INOnTqhJ1tsjCR/63FdO113OkfXI88L0Yxl21jgJ12fxqLrqMcp83ZjuGXjOI7jlB1/2TiO4zhlp9XIaFRUiAIAlXC+ygdq8qmpTdckSY+Kgem1FJI+tK0maJAtyLtDvUeoJrxekwp6UbkD7VM96YhYgToKjtWU5Cqd7d69O2vv378/a5PcQPIISTUahJmXUj4mT5X2rVLf5ZdfnrVTUsGnlBsgryQKeg4yC+1lKvyma6fo3qNgxE9/+tNZW58PlXwo2FKJ3Q9do3379kWvo1AePAo+1jYFCIe5FgqFovHEvC/JQ0zXkfLHkZccyYEk6Wmf5AGbFyyrfdD3ls4/pdhbY7hl4ziO45Qdf9k4juM4ZafVyGjkdUWBa0owb9UsJJOagjTVw0VzZKkZqf2QZ1hDQ0PW/v3vf5+11dMqJgeSXEieJmRSqxSlchL1T/IPySl5VTZJ3iNvIpIA9LOUo4sCPPXe9+rVK2vHvIVIOlNPJb2nek3dJ7EAwdLx0p7R61Jgon429J9SeVNlI/JapDx4mhdMnwOSSqkd8+4kL0DdmyqxkiefovuKKkyS1yCVdtDrxjwYKf8gPT+x/sxYMtTnWdskx+l+130V9rDKe0qKR1mKl2xjuGXjOI7jlB1/2TiO4zhlp0VltKYGLJH8E8xRkhLI7KUAJzWvVf5SWUzP37VrV9YeOXJk1laTVb2xYkGKVEmTchZRgCtVGSX5QCUGXT+VAfICACmoVQNfVRJRWUrX5fzzz8/ab731VtZ+++23s3ZNTU10vH/4h38Y7V+9m1QeCXIDBfz17ds3a+/cuTPaX4r8pfeApDMKxMuTmUkiIxmPKnuS96Nec8eOHdH+33333Wg/5OEWPktBoiQh6zOTsqZ6ffUcjXlTlkJVPmPyN5UP0HXR7xBdd90n5ImpUrjeG/Kq0zXTeYecfvX19afMwYy9I3Xd9btIn6WUshBmbtk4juM4pwF/2TiO4zhlp0VlNEpzTl4PVL0xmK9q8pG01KdPn6ytJq1KJSr/UMCippqvqKjI2sOGDcva27Zty9oq/+i1grShchLlZlNznDyxqDwDBZaRpx5V8WssgKtr16724osvZv+vc1IvGfXi0r4Vvc7gwYOz9p/8yZ9EP3vuuedmbZV83nzzzay9cePGU85XjyvyGjrvvPOydrinF198cZFUkiL3klxGnoK6x1U6Cvtc7zWVh9D5aZukWpVeVI7UueozRLn1dDzqJRbmSiUkFJW89NmmPIYU4KlrRx6l4fyjR49i+v5Y3rZYrsDSc/W+q2xNuepUqu3fv3/W1jXVNdPngCrAhnnrs0dB6lQGgYLUU3HLxnEcxyk7/rJxHMdxyk6rCepUU5e8cChYLZipaq7369cva6uJqGakmrF6XD2nPvOZz0THoqgnFHm76dhVggvXVZkilo+p9BytnEjlFChflsoTej5VRVXTX9c9fHbTpk1mZvZnf/ZnRRKhjl29uyorK7P2H/3RH2Vt9fbTNdUxXnHFFVn7V7/6VdYmTySVOGNBwZTvSddLx7527dqsTRVHKWCRAvF0X1G5gZinl96vc845J2vr/tKcZpQ3S6+p91fXTvvU/an3hvZJLG+dSnSUi1CfZ52/rrteX2Vx6ofKP4T70bFjx6K1iQX0an/6jFMVUPL8U7lMz9fnQyVLzSmoa6brod5rsb1EQaWKrp16r5FkSf2U4paN4ziOU3b8ZeM4juOUnVYpo1GuHTXvYgGIlDtMzV416dX803PUjFV5jczInj17Zm01jVVWUAlMzduQvj5WzdCs2ATX9dL+UlKbU8VRynVGEqCua5BK1EtOx075xVTWVC+9QYMGZW0K+tN0/9q/epqR157OI9wz8q7Tz+nYt2/fHj2f9qz2r/uXql2S3BnzJlTvMpXLevfuHb2+9k17TNeUvN30/ukzR2U9dO+FMdDeJNmcPKcor5u2dewkIauMFvN01bGnBPAqKjvqvSGPRJ2r3huVc3Uf6r2kshShTeVI9Jp6DnmL0vdSY7hl4ziO45Qdf9k4juM4ZafVyGiUj0hRE1FN6WACUo4n9aig1PyUTl29QVSG0IBFzd1FJijlsQptyi+mUpzKFBS0SkGoVJWPcilR5VA9P6yBzkfXi4LWgveaWXEApkoMJDlt2bIla6vnm66HrjUF14U2SQAqiWzevDnat6475aRLkVxSpJiYTKfnUqkEqkSq+10lEfJWUilRvaIouI/2Z5A4KV+Y9qfnqDxMwZMpKfhJulfyJGR9rqmUCeVdVPk7VilUr2NW/Hzo3tN8jLFg01KCfKjrqPtBnzHK66bz02umVPg1S7Bs7r//frviiitswIABNmjQILv++uvt9ddfLzqnUCjYnDlzbMiQIda3b1+bMGGCvfHGG0kDcBzHcdo/uS+bVatW2Y033mjPPfecLVu2zM444wy76qqrin4IX7RokS1evNjmzp1ry5cvt8rKSrv66qvxxyXHcRznk0WujLZ06dKi/3/wwQdt4MCB9tJLL9mVV15phULBlixZYlOnTrWJEyeamdmSJUuspqbG6urqbNKkSdg3BdQ1JcW32YfSEXnSqLmY14cZp/vOk8LMWLrKSzNO3ng6du2DqjRSZU/KpUbrQWZ9rE+qQppSEkHXXf840T5VXlPPG/XAolT3un4xDxrdJ7pGupdURqN5KHScpMkUKSrWp45XA2Ip+Fj3ta6vemjFJKfhw4cXBRGT/K1rRs9HGAPtE33GqMJmSpXIlLIFseDb0nXW+xQkKHrGKNU+SYoUGKn9q1RMlVDJs1HvaziuMhpJkBrUTvs0FqibR5MdBA4cOGAnTpzIXEe3bt1q9fX1Nnbs2Oycbt262WWXXVYUbe04juN8cunQ0NCQVkD6//O1r33N3nrrLfvZz35mnTp1srVr19r48eNtw4YNNmDAgOy822+/3Xbu3HmKZRTQuAjHcRynbaMxczGa5I1211132UsvvWTPPvvsKaZ6qflZKBRyg32ef/756HEygSn/VTD11ESlHFOUy4hyVcXSo5f2o5+NjfGaa66xp556Kjr2sEbqCUYV+cjTTK+p8ggFrar8pAGsGjRG8qUeD+Z2MPW/8pWv2LJly6LXpLxRlNuKckVpn2r6k9xA3mPhnpE0oLLc448/bqX88Ic/tFtuuSU6dm3/xV/8RdaOSTJmxZ5e+szoWsfuKwU0UhAjBUkqsdx+V111lf30pz+NnkNeX4qucVhXOlf3uN47Cuim6+t6qHepSj7a7tq1q1VXV9umTZuw+mfwvtT9pWtNOR3p+4TuGVXYja1j6XgoL184HtZ0woQJ9oMf/CD7d/V6+93vfpe19R7o2DXYPcjcDz/8sDVGsow2a9Ys+8lPfmLLli0rqu8REvSpO6TZyUSR+iXhOI7jfHJJetnMmDHD6urqbNmyZUV14s1OFqGqqqqyFStWZMcOHz5sa9assdGjRzfvaB3HcZw2Sa6MNm3aNHviiSfsRz/6kfXs2TMLkOzevbudeeaZ1qFDB7v11ltt4cKFVlNTY9XV1bZgwQLr3r27XXfddckDIa8SIibtkCcGmdcpY6EqgiR3kFdJrCSC2YfyGUlVis6D8mlp32TiU6kG7V/7pOCzMHaSEWPzLB2LnkM5uhQdl8oHCnlCxYI6SbLViqN6TfJ4pOsoKZIoVfaMybOUC5DyY5F0pVCOrpT9ThKOyp3hnJinVOkYSXLSdUwJjCTvOSWs7wcffFDUT2w8VD6B1p08TfWcWJB66fmxypul/ZAEH8uNpuPSnIPaX4rHcGputNyXTW1trZlZ5tYcmDFjhs2aNcvMzO644w57//33bfr06dbQ0GCjRo2ypUuXJrvEOY7jOO2b3JeN/nhJdOjQwWbNmpW9fBzHcRxHadHcaCnSA1UrjEGBi2ouUt4qheQqSsNN0hl5H6l3TLgWBZvlBVSWHicZQiHpSPtR2YLWNZxDudmoZIH2TXKnSmQ0P11T8lqMVbjUNgX//uY3v4l+jiqxppRkoDGmeDnGxk4elyTtUC4whZ4xXWs6P0VqC2NIea51n1Cgt+43mivJ0rFnu2PHjhhkG/rU54qkXApoJqlNvcuoPAPJz7TfYvtK9wblE6TvIvqeS/0JxLM+O47jOGWnRS0b+guCUr7k/fVI8TT0F5f+laF/netfcSn1tSl+gWJFdGzhLzP6666pf03oNan4Fv1gquPSrMD6V0/MGqQMzXQdXSP111cHAfqRlqwDumf0F3Q4R8eo6XL0L00qFEV/ddJfoJTWiCxAulb4rJ6r9yDlL2B6JpSU56mpa5D3PJFjiK6XWjPaJguU0PsRrKguXbqg00zoU+dM16Hx6mdTUtfQXlbIusxLd6TPD2VKT3ESyVOcAm7ZOI7jOGXHXzaO4zhO2WlRGY1+3KMfvChbcOxchVLRUDZWMvv1OKXP0D4pVUjsfJIsUuIk9IdUkjhoTSmTNTlP6LqH66YUT9K+VaKiGASV8SimSM19ciigH2fDeujaaUE8leX0Xiu0RnT9lFgqRaWYmFxD95rSyZCsQnEd2g+tAc1V701MTqVnKaWgIhX/S3HYoDUI1yoUCuiUE9aSJHclpbCdrjtJtdQm6T4vC7bOR1Mg6feA9k1xifR93Rhu2TiO4zhlx182juM4TtlpURktxdeeYl6onwDFoagJTN5w5NVCcpmamuQtpfIP+ffH+k7JWE1yGUEebhSfofPT1CNhLcmrhuakx7Xiq/at6TvoHpBsolB8T5irSp1vv/12tA+Sc+icpkpnlHJF10PXLIw5JU2IzpkyEaekR6LnkFIykTwaixFSUjxUaSwpsUYk04Xzjx49itJcLEZIJUCSpClmTeU1ki/J243Wj34yiKU4oqKSlPFdv8P0+fQ4G8dxHKfV4C8bx3Ecp+y0qIxG5i0FL5IMEPpR2YoyGNP1Kb0EFTWia5EER9l8Q5ukjJSUOuRVp9DaaZuy6ZJkGM7XPvTfKf0NyQR6vkpIeg5JdhTASv3H0gRp0SiaP0lklB6Fsjsr2o/OT9sxiYq8rLQ/9TjKe37M2HtPva4oYJFSQcU8pyjVTl4Qbulnab+RzKzEPDSPHDmCqajCOeRZmiLRK5QuhsZOqZIUHU/Mw0zvVywbd2P9kbzmQZ2O4zhOq8FfNo7jOE7ZaTXeaCkmOJluwdxP8bAhjzIqNKZSgsoHKtvo+WQC5+X6IrksxetESanPTqY5eXpRDfWA5hRLkTVo7CRFUQDiRwksK0VlBfVGo3VvqqypkNxAkhLl2QteRJQXjNaI5MiUQGCVXBQdVyx/W+k5IXiRPMcodyGtqe43mivlQIytQan3V+wekEyaUtyMJDoKcNd+UrLkU9HDGJSfTyHPQ8rx1hhu2TiO4zhlx182juM4TtlpURlNIZOPcgPFPGgoMIpkAiVFYkiR2uh4SkG2AAVdkveTjotyGZG0op+l4Kw8Lxi9JpUJ0OuQVxZJgDTXlPxXFGwZ+lcPNPXc0nmk5NwjKZXkS/J4pEBVkn8D5BVG+12heehnU4Js9R6o3Krl4YMUpd5tlPuO9o+2aX56fSrWp0UMwzm9evUqOkf3RLiu7g39d52Hyl80dpLRyDOWpDPa47F7ox5qdE2SMnXe9DNCY7hl4ziO45Qdf9k4juM4ZafVyGgkE5DkQ1JJ7Fz9dzX/KOhQoYDGlCqUZF7G5kfBVpRvSU1ayp9E8pNC0k5KuYFY39omKUPnpHJKiseaQlIbBWRqO8gcW7duzY5RgB4F9qak71fIU4/kIgrQi8nGdB2Sk0mKSpGuUmRjlZFiJSj0OhR0TTKeQvtUr0/rod8F4fxu3brl7j3tTz0xSQIlr0KFZFsKciUPPh1bTA5LkZ5JmqSyKp4bzXEcx2k1+MvGcRzHKTstKqNRHiaFPDDUXAxmOJna1IeatCmyEcksKYF+eQGIVH1QP6fzIxkkJViPgmYpfxtJKEGS0LHrGEnWIPlL5RSSKVOqU1KAZ2zP/Pa3v43+O1WPpGumlHwg6SxFzojdb9q/JPuRpKbQeBXybKT7rYRxqnxK5TeozEVKaRKFgpVVmgxrdvz48aJrqRQcxqNj7NWrV9ZWzzQKBldSynGQpEX56XRd9bkMY9ayAvS8pZR7+Si4ZeM4juOUHX/ZOI7jOGWnRWW0lGAgkhtiwXL671RBLyWduqKmJlU9JE8k8rDTzwZTl9LMxwLiSseeElBI0grlO0qRUGL3T71qdN1JfkrJyUR5v+h8HQMFwv7+9783M7Pdu3dHP0eeWHTNlEqdeYGZpdD9C+uRV5WxsfGSdEfyKclxJNvq8xfLsaZyT1PT8dP90H7oedY1UJkpjPfo0aNFz1ks95v20bNnz+gY9X68++67WVvXgoK3U8qqKCk5EMN9VU/XlNIrKaVMvMSA4ziO02rwl43jOI5Tdlplpc4UDyklmPUkTVCa7lgfZsXmOAWHkTcYeUXpOdp/MJ91bpqzSWU0GiN57ZDXkLbV24bkAzLrw3G6RxQw2tRKhClBmuTBR1LQtm3bTvmcrjVVg9T9oGuk52ibpFoqv6CQ5BvaJJnquMjzj2Q0koJ0n5B3Ismw6gEVZBzav5TSnqDrK9qPSmdKkJSOHDmS681IgaG6f3T+KlfR9Ul61TZ5j6WUYQnX1euTrEtyGcmnKfn3zNyycRzHcU4D/rJxHMdxyk6r8UZL8TgiD5Ng0qV4U9H1yaxXc1FN5pSgSvL2iAWlkbcPkZL7jTzHSFpRqaSpuZpi/ZEEQAF/1A/JP+SBpp5OtAYbN240szQZJqXMBUmWJJ+S95jONa9kBl0nJScfySMk+9H5NA+VrjTYcf/+/aeMhdLV0/2g54o848jbLba+hw4dKnoOYt8ptJdVoqJAVZof3euY5G7G0hm1wzNB1TlTSq+keLo2hls2juM4Ttnxl43jOI5TdlpNbrSUIMm8nGXkcZUCfTYlpbyiZmpKHqIg/2gAJKUBJ+kuJd03lUpQCUPzPKk8QN40oU+qFKrn6vyoiiGNl9o0VwqEa2hoyNp79+49Zby6FinlGahKZUruLgrEpXNikhnJILT3SbYhD8IUb0aF5h27T+TxSXuDvA1T8tapLKa5+2IlBrp27YqVSMN+pqjTgg0AACAASURBVFT/Kt9S7reU/Zvy/aPPE/UZk9HIA41KE1AAtpcYcBzHcVol/rJxHMdxyk6LymgU2EaSWl5AJpmIFKRF5ipV7SS5Q/unoC2qrBmkAh1vyNtlxlX+aOxqvpPHCHnPKSmBWrH1IPNax6VBqyRdkUSVkvOK9pKua5A49b6QDEMVXZtazVMll5T8cHnSMu0BhZ4fyolHslSKNEjeYL17987aYb11P1AftGfpsyrBac4y3W96v2Oem127dsUcckG6oj1OEhbJodQm7zUK3KXvHCpDEEP3tX6OvFuVFO9ZM7dsHMdxnNOAv2wcx3GcstOiMppCpiOZkTFTPiW/D0kGFLxE0h3JCiRRqfkeu26fPn2yYyoTqNeJjktT4xMUPNmjR4+srXKDmsw6J6oWGsbz9ttvZ8dC0J5ZPCdW6fW1v5TU5uRFpdC93L59e9YOMgdVFqX+mgrJuZTKP6XsRRhPU1LLmxXLLSklFJQU707K0afrF/akrjt5X1KFzZTA0xTP0ZjsdezYsSIZSZ+/MDbdyyRlkqctSbwkx6WULImVnyhthznRd16KZ1yKxNoYbtk4juM4ZcdfNo7jOE7ZaTUyGgVtpeT3CmZcigdVSlVLMikpLXtKFcO8IDr996qqqqyteaXUpFd07bStFQJJKiGvpJTU4kGW2bp1q5mZDRo0yOrr67N/p3xzJGuozKMyDEk4lE+P8nVt2rQpawfJkO5dSjBvSqAjSb9UQZTkkVj/KbnZ8qrblrZTKsDmBVeXttUTKlxLJVuV1HQP6P6l1Pm07nq+Pjc6ltJqkwMGDLB9+/Zh0Gbos6n7NGUdyZONvBnpWaX8bGFOeeVCSseV8v3rQZ2O4zhOq8FfNo7jOE7ZaTWVOskEp3PyPGjIRCT5QqHrk1cJSS4p8wjjoYAtbSsklZB8sW/fvmg/inqPvffee1lbpYKQU8zMbNeuXWZWHCxJpn4ssM+Mqx6mrCN5xOg5Ojb14Ivtn5QKoimSCI2dggXJm1HJ88QkKYP2Pp1D+bIUyqOlEo7KvzG5UwMtyaPs7LPPztq6l7Wte4Y8Pqnip3p9hjHu378fvb70+QikVFlNkSBT8v9RoDN5PKp8GD5LcyNoXytlq9S5cOFC69mzp02fPj07VigUbM6cOTZkyBDr27evTZgwwd54442mdu04juO0U5pk2axfv94effRRGzZsWNHxRYsW2eLFi23x4sVWU1Nj8+bNs6uvvtrWr19fVJe7MVJ+1Ew5J+/fqagSWRD0QypBqXFS6n3noX9R0l+g9ENxRUVF7hgV/cuU/mIN7ZQs0hTPo3+5aT8Ud6DoX4z6167OW50CYumRmppxmazYlBQ1FANBRdXyaGr8EZ1D94D2JsXF6D2IWQFmH957ssBjMTmlxynFEZ1P89Z7E/Z4x44d8T6F+6p9kNMO7auUvUzfcwrtH7IAY1YtPWM0FlIVyAIuJdmy2b9/v91000323e9+t+iLo1Ao2JIlS2zq1Kk2ceJEGzp0qC1ZssQOHDhgdXV1qd07juM47ZgODQ0NSX5rkyZNsoEDB9o999xjEyZMsKFDh9r8+fNty5YtNmLECFu+fLmNHDkyO//LX/6y9e7d2773ve9F+wtleR3HcZy2T01NTaP/niSjPfroo7Z582Z78MEHT/m3EFdRWVlZdLyystJ27tzZaL9Lly7N2h/H1z8mo9EPxik/3NEPxfpZ8oVX0zXED1x88cW2Zs2a6LVC/xQzQnKZXl+LQyk0P5Uh9LoqfWjaGZXOdH7hs0G++MIXvmCrVq3K/l3T0qicSvIPrTVJD1TUTaWNH/3oR1l7y5YtWTv8mJwSZxMruPWtb33L7rnnnuw4xSVVV1dnbXXS0PP1x3K9x+RIEVuPlGJ+JDXmZQf//Oc/by+88EL0WrFYDrPiPaP9h71KkldK7BA509CzTXFXyoEDB2zEiBH2yiuvoLNSaFPW6ZQs3JTGh2KqaI/TcXXgeeutt045Hp7xxYsX20033RQdI0mT+gyr80Y4Z9GiRdH+sn4b/Vc7aYHMnj3bnnnmmUa1udLNXigUmvR7hOM4jtN+yf3NZt26dbZ371773Oc+ZxUVFVZRUWGrV6+22tpaq6ioyFxaSxND7tmz5xRrx3Ecx/lkkmvZTJgwwS666KKiY7fffrsNGjTI/u7v/s6qq6utqqrKVqxYkf1mc/jwYVuzZo3Nnj07eSDkPUaxCTHTOKXQGqViSClsleIlp5KWnk8eP7EMvuStRikqyJMuJY2O9kn12clDKcgKVCiLimkpJE2SrEBFqXQev/vd77K2SgmxeVMfKQX8Uiz3mOxY2o/OSWWLvGeCsh+T91VKkTb9rMqqJB0pur46D90/4Th5M+nzQ/tB2+TBSBIceeGFtSn1nlUpM3xW14XkLPL0opiqlMziFOeisrHGx8WKqqV4KqakXkr5ri0ld4Y9e/Ys8j4zO7khevXqZUOHDjUzs1tvvdUWLlxoNTU1Vl1dbQsWLLDu3bvbddddlzQIx3Ecp33TLBkE7rjjDnv//fdt+vTp1tDQYKNGjbKlS5cmx9g4juM47ZuP9LJ5+umni/6/Q4cONmvWLJs1a9ZHHgjJZSRpxczBlLQfZC6SDEF126kWPaGSQKzufUraC0oFQ/Mmzxsye1U6U2uWgkZD/zouleJiQZRmaUGtTT2uc9XsFbru6vUVxpbniVXat86DvJb0miq5kISjcgfJsHkel3Sc0pqQF5eOi6QrSv+in1UZTfd7OE4yqf6BSpngU2TCpmbhDuPp3LkzFj0M6D1KCaKkNsnTKamH9L7GAq3NivdVmCvdOyUloJn2cmN4Ik7HcRyn7PjLxnEcxyk7LZr1mQIvScaidp7EkCJ3kERHElVKQS09rrJCbB56HfKwIW+mlGysauIrNF4dg0obMZOZZDQ9TrJJrE66WVqBLB2vZnd+8803szbJqTH5ku4jyUkpmb9TpEzKxUVSaRgn7VO6DgU6kgxCAYjU1n5UpoutmfZNzxh5eqXIh+SZpsRy0h08eBADTsNx/fcU71O9/sGDB7M25c0jqYtyoKl01tDQkLV1zUI7pQgdfQ+kBNw2hls2juM4Ttnxl43jOI5TdlpURqN64E0tqhY7RtJASlEuCiYjNOCN5BEymWNeUeRNRNdRU1dzFpE8k5KLSiHJLpjblEuJvLuoP5IJyFNPZYJf/epXWfvtt9/O2nkSoELyEAXTpsgKFLyp/ehxDdDLW7OmSo0pgao0Dwp4JY8qCljMe540f9y7774bHaNek54rPV+lLh2jPk9B9jt06BD2E/akemqqtxoVlaPyCCqpaZu8EHWumrtQP6tBnbqXQpuK9jU195zS7CUGHMdxHOej4i8bx3Ecp+y0qIymAW9q6pKEocRMQDLjUyoUUn128tJQE1xN/5jpOmbMGPvtb3+bHY95pqUEUtG49Bw1qSldvUoZMZnAjNddAyPDmHUs5GVE0gAF5aXUbd+2bVvW/sUvfpG11fTP8yAkjyv9HOX5osBe8kKkFP8pcmtMRkvJzUayLu1rktoUOk551WLyJe01nb8+SykVcEkeJq9TJfR/6NChInlWrxuOkzxMFURJhqXvKJK66DtHpTP1TKNg0tg1lZQyCO6N5jiO47RK/GXjOI7jlJ0WldHURKOAPgoqikljlHOLTGeSzkgS0bGo6ar9kKeVylsaeBXkBMphRW012TWQkqo76nE6R9F7QDnhgvQZvHOqq6uL5kYBZDreFC8qXVNdx5dffjlr79mzJ2tT4GXs3qQEZqakt6fPquyo60HBm1SSIK+0Q0qAJ12fZFU9X+UZqvQak5zMiuWwML9Y+nszzr9F3l0kr+maqvxEElU4vm3bNiy7Ee53bD5mxc8JSWqxQMvSz9I5+mypTKlee/QzQRgnPQ96PCWYl56xxnDLxnEcxyk7/rJxHMdxyk6LymhqrpHnCQWWxSpopnjPUOr4lMp+So8ePbK2ehzpPNQ07tevX9ZWKShIFSSXkXeXHidTXseiJjiZw7TuasrHgvJCIGl1dbWtX78+O64SkpYIT5FGyVPm9ddfz9qvvfZadFx0L1XaiHnS6bpT8GFKBUZF10Dvh8ogJBnmpfLXMTZVcqIKtIredx0vlbpQ8rzdNNhWZS4KENTr63h1TUki0utTjrXQ5+HDh1GKCmMjiYwCcvV8ys0Y82I1M9u7d2/W1kBOPUclTrqX4X7QTwfkPZfyveTeaI7jOE6rwV82juM4TtlpURlNUVNTTWYyk2OSR14VPrO0Sp0KVQskM1nPJ2+smORDQZrat0oy2iZPlhRpJSbplX5Wx6CSYRi73ouKioroGDVnm16fvK90fXft2pW1/+d//idrq6yg16L7GgsapRxedD/oHNobFPhJn9V7oPJSXpXalGqJJLGQR1mKvEdlJJSYLKPHNKCbcnGRB5geT8nLp+sb8wbr3bt30dhVLg9jowBpkshSnkmdh3qXaekM3Q9UkTMv9xl5WZK0TgHSlNuvMdyycRzHccqOv2wcx3GcstOiMhqlNlfTTU1myi0V+iG5Q0198kyjXFVqIpLnlI6rqfmqwthozpQ/icZOAVZkXtO4yAslJvHp5zT9ugbEkRcg5a1SKfWZZ57J2iqppVROzaswmVLlNOWeEnpfVVJTySclMDIviC4lOFbbJJnqs0KyFF0rZR+G4+TJp+Oiipja1vOp1AUFzaosFebdo0cP9LoK8llK2RFF56f3lLzR6uvrs7Y+Bzp2DSonYrKp7keqpkp7n+6Ty2iO4zhOq8FfNo7jOE7ZaVEZTc0v8uBRyKsjHKdgLPJGo6A5NR0p5Tt5xlGb0qiHMZPXna6Reo4psWDFUiiFOck8lB8ploOrqaUMKPeTyjCrVq3K2hrIScFnFPBKFSZjXoAp0hntMYXWl7wWqSqpnqOST5CRyHuPghsphx+Vt9D7p7IUVRwlaSzmwUd5/ii4kWQ5kmdJcs8ro9G5c+fcFPs6XiJFNtb7q0HXeq/1+VAvNV0bqrgZ28MUuKz3Ny+fYOm4SJYvxS0bx3Ecp+z4y8ZxHMcpO62yxIBKMeQBEfOuogBByvmlZqR+ljykKCcUSRgk+cRS/FOgXIqXkZrUZCaTRKbn67hIBojlitKASpJAdX3JBFe5bPny5VlbA9g0yI5kyqakRU/xRqMAzBSvLPKyVEmUAuRITg1t+nfyOqOg55S08yQbU5ArSSt5VUZ1LShAmvLTpcw7rwpwt27dsKRE+CzJyiRZ0jzeeeedrK1elpTTUD3QUkpK6LMY2zMkZVK+O5KNU7013bJxHMdxyo6/bBzHcZyy06IyWq9evbK2mpFk9lIwVZB58qrwmTU96JI8niiQU89XDw+St4L5SoF1eq7KXOTZpCY4eaCR95HOiaQEnZOOJ3YdClrT62zcuDFrP//881l73759WVuD+KjCJO0TktfC8RS5LKXqq0ISh66XShwqK9K9Icksdi5JSNQfySmUG41kN50rSW1N8ZCiIGqSyCkAOsVbS0tO0F6KjT0lOFXbms9v9+7dWZs8zbTEgB4n8qoc03cVHae+U8sKKG7ZOI7jOGXHXzaO4zhO2WlRGU09i9Q7RyUU9XRSYqm9VY6g1OPk6UWBgBQcSvKTmppUKiEmUanprrIRSRbkXUaVPUlySgmWo/ODPKDzVzlA0XM0bfp///d/Z23NCUXeMSQzEXkSDqH7hPZGSkCo3gPySKQ9SRUew/kUDEpelgoF8aXkQyNvMLpWrMwCrVeKpxmVDCDPsKbm/KPU/7GSGuSBpt9n2seePXuytnqX6TXV+1K/Qwjyko397EDfZwp9J6RU+WwMt2wcx3GcsuMvG8dxHKfstKiMpia7VnhUs1PNyLxKivrv+jk1UTXvEHmdkalNXjAUIKekpOoOkDyk60U5i0j6IDmJAjxTqjqGMaSkq1eJU2W0t956K2urrNrUIELyMqK1jO0ZksgoPx7NOyVXnpZfoP7pfoTz6VxaOx1vXo6w0jnRfqf0+VQyI/Y5krxSvJ8ov2LKM6yE/k+cOJGb64sCvak6p8plGqSp5+j3FUnRCgW45z03KZ6aTS234jKa4ziO02poNelq9EfxPn36ZO2dO3dmbX37x37c12NqBehfKvrDHcU30I+k9GMgFbyivxhjf5FTHAX1QWlNUiybpsZb0F+eYa60LhQXoNYlOVfQX1d6bxSyUCiGIxwnp4GmrqlCqYwoViWlWCClDApQgUBK/5Ly4ztZd5SKRaH9GeaRl86mdFxkoeWln2msf4q7oti6sGZ6jLJU67rod4629RyNvyE1RyErg+5f2GP6PUtOQylpmD4Kbtk4juM4ZcdfNo7jOE7ZaVEZjWQb/fG0srIya2/bti1rq6kZTEr9sZviNNSMVDmHCpMplDIjpYY7SSLhHJKQqNhbXkEzM87cTDEFlLWX5heOU7ockmdUMqAfW/U+pfw4nCIZxmSZFGcCynZL8iI5b5BkR/E3NL8ApWqheBfKLE57Q/vUZyUlI7gSm3deGqFSUu6vQs4/ebFRHTp0wHmE/Z6SkknldI2boeznlGaKsl0reZnNta37K5Z93iwtmzrt98Zwy8ZxHMcpO/6ycRzHccpOi8po5Guvcpimq+nXr1/W3rFjR9YOJr6apdqfylkqz6iJqL7wKtFRP2S+U2wCyRaxbKxqCpPMpZA8Qx5HMSmstE3efLrGwawmCYDq1muczceZR8p60PmhTRILfS4llkOhPa6Q95ruVU3hFPPkovRJKn/RGHWP6d6ntDcpMTLkURmTolJkLoXugdLU/sN3TpcuXVAiD/OjQouU5kZltJQ4rRS5XiUwSkGjPyWEZ1GfSYqxI5ldIQ/NxnDLxnEcxyk7/rJxHMdxyk6LymgKeY9QRtqqqqqsHYoQqbmqHk8q/agsp9fRVCmaLkJlCDV7VeIgE5S8uPScYJKneC2RN0hKKhzycEsJ5KTswmGNKUOyovKMymhUYI6kkrxgwdLzaW2CDEBrQfJQU72vKKNzbA/QGM2K1zXsyZSgS3quKFiZAhOpTYGqedKrziclSDMlCDVFbs37bKFQwH7COGktdJ56T9XTldIapRynQm7kgaZrHJ6zphYFpHMorVBjJFk2u3btsltuucUGDRpkVVVVNnr0aFu1alXRhefMmWNDhgyxvn372oQJE+yNN95IGoDjOI7T/sl92TQ0NNj48eOtUCjYk08+aWvXrrV58+YVxb8sWrTIFi9ebHPnzrXly5dbZWWlXX311UU/ujuO4zifXHJltAceeMD69u1rDz74YHbsvPPOy9qFQsGWLFliU6dOtYkTJ5qZ2ZIlS6ympsbq6ups0qRJ2DcV41HIOyeGykCaXVXlNfKWUu+Onj17Zm2V46gfGhdJLjrvYJqS3KKQ5JRSFIykPuqTsmZrO0gF5OGn89iyZUvW1rrqJO3QeEm2oTGqlBALkKXcYbqXUrI4ExRkSwG0ujdiRfa0nSJfNFW2Ie8q/cOR8nXRXGM5CFPyDKasO8mETfXiDGM4duwY5uUL+508SxVdL5pfiheX7l8qYpiSxy92rZSicuQpqaTkpDNLsGyefvppGzVqlE2aNMmqq6vt8ssvt4ceeigb6NatW62+vt7Gjh2bfaZbt2522WWX2dq1a5MG4TiO47RvOjQ0NDSaayD8EH/bbbfZVVddZRs2bLAZM2bY3XffbVOmTLG1a9fa+PHjbcOGDTZgwIDsc7fffrvt3LnTli5dGu1348aNzTgNx3EcpyWpqalp9N9zZbQTJ07YRRddZHfffbeZmV144YW2efNmq62ttSlTpmTnlUoKhUIhV2ZYv3599PPkHaOmYCy1t5q3KnlpQBwFuakUpB5rKjNRGnA1XVWOC7LC5MmT7ZFHHonOI5jAlB9L88SptEMp6qmuOHn4kbRCueLUU+/ss88u6nv48OFFjiFaHuJnP/tZ1v7f//3f6Fho3VXW1OtTMTntU9cvFqhKEgCtaVivO+64w7773e9Gr6/3d9SoUVmbJBGVXHSvUtmJsA8pB5o+G5STLy+Hll7ztttus/vvvz96LQqS1PXTeYc2SYSU35C8rLSdIpdRsGehULCLLrrIfvnLXxadr+sXnnldX+1P7119fX3W1u8NCt4MHrWlNLWMhe539bA966yzij5fek8pkF7XVOXQmGQ6d+7c6Fizvhr9Vztp2QwePLjo2Pnnn2/bt2/P/t3s1MXas2dPkROB4ziO88kl92Vz6aWX2qZNm4qObdq0KZPMzj33XKuqqrIVK1Zk/3748GFbs2aNjR49upmH6ziO47RFcmW02267zf78z//cFixYYNdcc429+uqr9tBDD9k3vvENMztpot566622cOFCq6mpserqaluwYIF1797drrvuukb7TklNTVJCXrVLNRvVHFf5S81eqtqpZrJKbSrJqFmt8pOat+RlFIhVwDRj6YX6Jo8gquSon6V+dK179ep1ynEKLtTf5dQDLUUSoQBBlQmaWh5A22FP6HhTqqKSp5JC+fEoDx1JKyrhxOaaIh2SVxjtH4W8rsiTjCTcmFSbskbaNwWBUkBxXmCmWTzQ+dChQ+jlF55z/XeV5VW617VO8TojmZuCbxXy3IxJwfRcp5QpUfI83WLkvmxGjhxpjz32mM2ePdvmz59v/fv3t7vuussmT56cnXPHHXfY+++/b9OnT7eGhgYbNWqULV269BSd0HEcx/lkkpSuZvz48TZ+/Hj89w4dOtisWbNs1qxZzTYwx3Ecp/3QakoMpEA5qoL5TNUE1bymIEKVv9Q0p3ID5L2hUhvlfIrNg7yZqByASiyUH4o8WVKCtnQeuk6xdPE6xldeeSVrqzcaVfAkTyiVKbV/9UzTe0YlEfLyqpH0k1JuIMX7ifasQvJlXip/kntpb1IQLF2TAmXp/pEUre1Y7jxaF90zVN6D9qaS8hzoNSnwMtwnffbeeeedrK3fFbQ3dCxU1VfR+ZEERuuRV9GU9nVKHrqPIqN51mfHcRyn7OQGdTqO4zjOx8UtG8dxHKfs+MvGcRzHKTv+snEcx3HKjr9sHMdxnLLjLxvHcRyn7PjLxnEcxyk7p/1lU1tba8OHD7eqqiobM2aMvfjii6d7CM3O/fffb1dccYUNGDDABg0aZNdff729/vrrRecUCgWbM2eODRkyxPr27WsTJkwoSsffFlm4cKH17NnTpk+fnh1rT/PctWuX3XLLLTZo0CCrqqqy0aNH26pVq7J/by9zPX78uN17773Zczl8+HC79957i4JN2+pcV69ebTfccINdcMEF1rNnT3vssceK/j1lXg0NDTZlyhQbOHCgDRw40KZMmVJUCbg10Ng8jx49anfffbdddtll1q9fPxs8eLBNnjzZtm3bVtTHBx98YNOnT7fPfOYz1q9fP7vhhhtsx44dzTbG0/qyWbp0qc2cOdO+/vWv289//nO75JJL7Etf+tIpk25rrFq1ym688UZ77rnnbNmyZXbGGWfYVVddVZToc9GiRbZ48WKbO3euLV++3CorK+3qq68uqmXSlli/fr09+uijNmzYsKLj7WWeDQ0NNn78eCsUCvbkk0/a2rVrbd68eUVlM9rLXL/zne9YbW2tzZ0719atW2f33Xefff/73y+qd9JW53rw4EEbOnSo3XfffUV1ogIp85o8ebK9+uqr9uMf/9jq6urs1VdftZtvvvl0TiOXxuZ56NAh+7//+z+bNm2avfDCC/bv//7vtmPHDrvuuuuK/qCYNWuWPfXUU/bwww/bf/3Xf9l7771n119/PWZ4aCqnNahz3LhxNmzYMHvggQeyYyNHjrSJEydmxdnaAwcOHLCBAwfaY489ZldeeaUVCgUbMmSI3XTTTTZt2jQzO5lap6amxr75zW/apEmTWnjETWP//v02ZswYW7Rokc2bN8+GDh1q8+fPb1fznD17tq1evdqee+656L+3p7lef/311qtXL/ve976XHbvlllts37599sQTT7SbuZ5zzjk2b948++pXv2pmaffwzTfftNGjR9uzzz5rl156qZmZrVmzxq688kpbv359bnXKlqB0njF+/etf26WXXmqrV6+2YcOG2f79+626utoWL15sX/7yl83MbPv27fbZz37W6urqbNy4cR97XKfNsjly5Ii98sorNnbs2KLjY8eOtbVr156uYZwWDhw4YCdOnMjyeG3dutXq6+uL5t6tWze77LLL2uTcp06dahMnTrQxY8YUHW9P83z66adt1KhRNmnSJKuurrbLL7/cHnrooSxvVHua66WXXmqrVq2y3/zmN2Z28oto5cqV9oUvfMHM2tdclZR5rVu3zs4888yi2lyXXnqpde/evU3PPVhu4TvqlVdesaNHjxatRf/+/W3w4MHNNs/Tlohz7969dvz48VOqd1ZWVmJJ1LbKzJkz7bOf/axdcsklZvZhidjY3DVZZVvg0Ucftc2bN9uDDz54yr+1p3lu2bLFHn74Ybvtttts6tSptmHDBpsxY4aZmU2ZMqVdzXXq1Kl24MABGz16tHXq1MmOHTtm06ZNy8qItKe5Kinz2r17t1VUVJySWLRPnz5t9nvryJEj9o//+I/2xS9+0c455xwzOznPTp06WUVFRdG5zfn9fNqzPpdmWi0UCtHsq22Vu+66y1566SV79tlnT8lC29bnvnHjRps9e7Y988wz0ey9gbY+T7OTGXYvuuiiTN698MILbfPmzVZbW2tTpkzJzmsPc126dKk9/vjjVltba0OGDLENGzbYzJkzbeDAgfbXf/3X2XntYa4x8uYVm2NbnfuxY8dsypQptn//fvuP//iP3PObc56nTUarqKiwTp06nfKW3LNnzyl/WbRVZs2aZT/5yU9s2bJldt5552XHq6qqzMza/NzXrVtne/futc997nNWUVFhFRUVtnr1aqutrbWKigrr3bu3mbX9eZqdvGeDBw8uOnb++efb9u3bs383ax9z/ad/+if7H+FvmwAAA7FJREFU27/9W7v22mtt2LBhdsMNN9jtt99u3/72t82sfc1VSZnXpz/9aduzZ88pJR727t3b5uZ+7Ngxu/HGG+21116z//zP/8yeV7OT8zx+/HhRRV2z5r3Hp+1l06VLFxsxYoStWLGi6PiKFSuK9NC2yowZM6yurs6WLVtm559/ftG/nXvuuVZVVVU098OHD9uaNWva1NwnTJhgL774oq1cuTL776KLLrJrr73WVq5cadXV1e1inmYndflNmzYVHdu0aZMNGDDAzNrPPTU76a1UaoV36tQpq5/SnuaqpMzrkksusQMHDti6deuyc9atW2cHDx5sU3M/evSoTZo0yV577TV76qmnshdtYMSIEda5c+eitdixY0fmINEcdJo5c+Y/N0tPCZx11lk2Z84c69u3r3Xt2tXmz59vL774ov3rv/6r9ejR43QNo9mZNm2aPf744/bII49Y//797eDBg1lhry5duliHDh3s+PHj9u1vf9uqq6vt+PHj9g//8A9WX19v3/nOd4pqhbdmunbtapWVlUX//fjHP7aBAwfaV7/61XYzT7OTP47OnTvXOnbsaH379rUXXnjB7r33Xrvzzjtt1KhR7Wqub775pj3xxBNWXV1tnTt3tpUrV9o3v/lNu+aaa2zcuHFteq4HDhywX//611ZfX28//OEPbejQoXb22WfbkSNHrEePHrnz6tOnj7388stWV1dnw4cPtx07dtidd95pI0eObFXuz43Ns3v37vY3f/M39otf/ML+7d/+zc4666zsO6pTp07WuXNn69q1q+3atcu+//3v2x//8R/b/v377c4777Szzz7b7rnnnuQCaY1x2uvZ1NbW2qJFi6y+vt4uuOAC+9a3vmV/+qd/ejqH0Oxo9UhlxowZWansQqFg9913nz3yyCPW0NBgo0aNsgULFtjQoUNP51CbnQkTJmSuz2bta57PPfeczZ492zZt2mT9+/e3m266yW6++eZMw24vc33vvffsX/7lX+ynP/2p7dmzx6qqquzaa6+1v//7v88qSLbVua5cudL+8i//8pTjf/VXf2VLlixJmte+fftsxowZ9swzz5iZ2ZVXXmnz5s3D574laGyeM2fOtAsvvDD6ucWLF2cu0ocPH7ZvfOMbVldXZ4cPH7bPf/7ztnDhQuvfv3+zjNGLpzmO4zhlx3OjOY7jOGXHXzaO4zhO2fGXjeM4jlN2/GXjOI7jlB1/2TiO4zhlx182juM4Ttnxl43jOI5Tdvxl4ziO45Sd/wdXROp6dUJy0gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_face_face_reconstruction(9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Least squares regression\n", "\n", "Consider the case where we have a linear model for predicting housing prices. We are predicting the housing prices based on features in the \n", "housing dataset. If we denote the features as $\\boldsymbol x_0, \\dotsc, \\boldsymbol x_n$ and collect them into a vector $\\boldsymbol {x}$, and the price of the houses as $y$. Assuming that we have \n", "a prediction model in the way such that $\\hat{y}_i = f(\\boldsymbol {x}_i) = \\boldsymbol \\theta^T\\boldsymbol {x}_i$.\n", "\n", "\n", "If we collect the dataset into a $(N,D)$ data matrix $\\boldsymbol X$, we can write down our model like this:\n", "\n", "$$\n", "\\begin{bmatrix} \n", "\\boldsymbol{x}_1^T \\\\\n", "\\vdots \\\\ \n", "\\boldsymbol{x}_N^T \n", "\\end{bmatrix} \\boldsymbol{\\theta} = \\begin{bmatrix} \n", "y_1 \\\\\n", "\\vdots \\\\ \n", "y_2 \n", "\\end{bmatrix},\n", "$$\n", "\n", "i.e.,\n", "\n", "$$\n", "\\boldsymbol X\\boldsymbol{\\theta} = \\boldsymbol{y}.\n", "$$\n", "\n", "Note that the data points are the *rows* of the data matrix, i.e., every column is a dimension of the data. \n", "\n", "Our goal is to find the best $\\boldsymbol\\theta$ such that we minimize the following objective (least square).\n", "\n", "$$\n", "\\begin{eqnarray} \n", "& \\sum^n_{i=1}{\\lVert \\bar{y_i} - y_i \\rVert^2} \\\\\n", "&= \\sum^n_{i=1}{\\lVert \\boldsymbol \\theta^T\\boldsymbol{x}_i - y_i \\rVert^2} \\\\\n", "&= (\\boldsymbol X\\boldsymbol {\\theta} - \\boldsymbol y)^T(\\boldsymbol X\\boldsymbol {\\theta} - \\boldsymbol y).\n", "\\end{eqnarray}\n", "$$\n", "\n", "If we set the gradient of the above objective to $\\boldsymbol 0$, we have\n", "$$\n", "\\begin{eqnarray} \n", "\\nabla_\\theta(\\boldsymbol X\\boldsymbol {\\theta} - \\boldsymbol y)^T(\\boldsymbol X\\boldsymbol {\\theta} - \\boldsymbol y) &=& \\boldsymbol 0 \\\\\n", "\\nabla_\\theta(\\boldsymbol {\\theta}^T\\boldsymbol X^T - \\boldsymbol y^T)(\\boldsymbol X\\boldsymbol {\\theta} - \\boldsymbol y) &=& \\boldsymbol 0 \\\\\n", "\\nabla_\\theta(\\boldsymbol {\\theta}^T\\boldsymbol X^T\\boldsymbol X\\boldsymbol {\\theta} - \\boldsymbol y^T\\boldsymbol X\\boldsymbol \\theta - \\boldsymbol \\theta^T\\boldsymbol X^T\\boldsymbol y + \\boldsymbol y^T\\boldsymbol y ) &=& \\boldsymbol 0 \\\\\n", "2\\boldsymbol X^T\\boldsymbol X\\theta - 2\\boldsymbol X^T\\boldsymbol y &=& \\boldsymbol 0 \\\\\n", "\\boldsymbol X^T\\boldsymbol X\\boldsymbol \\theta &=& \\boldsymbol X^T\\boldsymbol y.\n", "\\end{eqnarray}\n", "$$\n", "\n", "The solution that gives zero gradient solves (which we call the maximum likelihood estimator) the following equation:\n", "\n", "$$\\boldsymbol X^T\\boldsymbol X\\boldsymbol \\theta = \\boldsymbol X^T\\boldsymbol y.$$\n", "\n", "_This is exactly the same as the normal equation we have for projections_.\n", "\n", "This means that if we solve for $\\boldsymbol X^T\\boldsymbol X\\boldsymbol \\theta = \\boldsymbol X^T\\boldsymbol y.$ we would find the best $\\boldsymbol \\theta = (\\boldsymbol X^T\\boldsymbol X)^{-1}\\boldsymbol X^T\\boldsymbol y$, i.e. the $\\boldsymbol \\theta$ which minimizes our objective.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's put things into perspective. Consider that we want to predict the true coefficient $\\boldsymbol \\theta$ \n", "of the line $\\boldsymbol y = \\boldsymbol \\theta^T \\boldsymbol x$ given only $\\boldsymbol X$ and $\\boldsymbol y$. We do not know the true value of $\\boldsymbol \\theta$.\n", "\n", "Note: In this particular example, $\\boldsymbol \\theta$ is a scalar. Still, we can represent it as an $\\mathbb{R}^1$ vector." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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HTqk4uJi06XYwpw5c5SamqqtW7f6ry1cuFDnz5/Xzp07DVZmRt++fbVu3TrNmzdP0tetsMzMTC1YsEBLliyRJNXV1cnj8WjVqlUhbyEY9y2xloM3x48fH3A9EgdvOlVtba2am5uVkpJiuhRjFi9erOnTp2vs2LGmSzFuz549ys7O1r333qvBgwfr9ttv17PPPiufLz7/PXzrrbfq4MGD+s9//iNJ+uSTT3TgwAH98Ic/NFyZPZSVlamioiLgMzYpKUljxowJy2esI7adiiQrB2/Gm6VLl+qGG27QqFGjTJdixAsvvKDS0lI988wzpkuxhc8++0zPP/+8HnjgAS1evFgffPCB8vLyJEk/+9nPDFcXfYsXL1Ztba1Gjx6txMREXbp0SUuWLGGrvG9UVFRIUpufsadOnQr5/nEfYi26cvBmPHniiSd05MgRvfHGG0pMTDRdTtR5vV6tXLlSr7/+unr06GG6HFtobm7WzTff7O9qv+mmm1RaWqpt27bFZYgVFRXppZde0rZt25SZmakPPvhAS5cuVUZGhn7yk5+YLs82IvUZG/chZpeDN+0oPz9fRUVFevXVVzVgwADT5Rjx9ttvq6qqSt///vf915qamnT48GFt375dX375pXr27Gmwwuhzu90aOnRowLUhQ4aovLzcUEVmrVixQg899JBmzpwpSRoxYoQ+//xzPfnkk4SYvv77IklnzpxRenq6/3q4PmPjfkyMgzfblpeXp127dmn37t0aMmSI6XKMmTJlig4fPqwDBw74/9x8882aOXOmDhw4EJets1tvvVUnTpwIuHbixAn169fPUEVmXbx4sVUvRWJiopqbmw1VZC/9+/eX2+0O+Iytr69XSUlJWD5j474lJnHw5pWWLFminTt36sUXX1RKSoq/T7t3797q06eP4eqiKyUlpdWElquvvlqpqakaPny4oarMeuCBBzRx4kQVFhZqxowZOnbsmJ599lktX77cdGlGTJ48WU899ZT69++vzMxMHTt2TJs3b9bcuXNNlxY1tbW1Ki0tlfR1d3N5ebmOHTum1NRU9evXT4sWLdKGDRvk8Xg0ePBgFRYWqnfv3po1a1bI780U+29s27ZNmzZt8h+8+Zvf/Ea33Xab6bKMaG8WYl5envLz86Ncjf1MmTIlrqfYS1JxcbFWrlypEydOKD09XQsWLND9998fl+PINTU1+vWvf63XXntNlZWVcrvdmjlzph5//HH16tXLdHlRceDAAU2bNq3V9dzcXG3ZskU+n09r1qzR73//e1VXVys7O1uFhYVh+YcgIQYAcKy4HxMDADgXIQYAcCxCDADgWIQYAMCxCDEAgGMRYgAAxyLEAACORYgBAByLEAMAOBYhBgBwLEIMcIC6ujqNGjVKWVlZunDhgv/6hQsXdPPNN2vUqFGqr683WCFgBiEGOEBSUpK2bt2qkydPasWKFf7ry5cv1+eff66tW7fGzWazwOU4igVwiKysLP385z/X+vXrNWXKFEnS9u3b9fjjjysrK8twdYAZ7GIPOEhjY6MmTJigyspK+Xw+uVwu/fWvf1X37t1NlwYYQYgBDvPhhx/qtttuU7du3XTw4EFlZmaaLgkwhjExwGH27t0rSbp06ZKOHz9uuBrALFpigIN88sknGjt2rKZOnaovvvhCJ06cUElJiVwul+nSACMIMcAhLl26pAkTJqiiokKHDx9WdXW1br/9do0bN047duwwXR5gBN2JgEMUFhbq/fff16ZNm5SamqqBAwfqV7/6lfbs2aM//vGPpssDjKAlBjjAv/71L02YMEG5ubl6+umn/dd9Pp9mzJihd999V4cPH1bfvn0NVglEHyEGAHAsuhMBAI5FiAEAHIsQAwA4FiEGAHAsQgwA4FiEGADAsQgxAIBjEWIAAMcixAAAjkWIAQAc6/8BTM+JTZM29zgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 10, num=50)\n", "theta = 2\n", "def f(x): \n", " random = np.random.RandomState(42) # we use the same random seed so we get deterministic output\n", " return theta * x + random.normal(scale=1.0, size=len(x)) # our observations are corrupted by some noise, so that we do not get (x,y) on a line\n", "\n", "y = f(x)\n", "plt.scatter(x, y);\n", "plt.xlabel('x');\n", "plt.ylabel('y');" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "X = x.reshape(-1,1) # size N x 1\n", "Y = y.reshape(-1,1) # size N x 1\n", "\n", "# maximum likelihood estimator\n", "theta_hat = np.linalg.solve(X.T @ X, X.T @ Y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can show how our $\\hat{\\boldsymbol \\theta}$ fits the line." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta = 2.000000\n", "theta_hat = 1.951585\n" ] }, { "data": { "image/png": "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REQSc/kQe+yxx1BVVYX169ejtLQUCQkJ+OKLLzBs2DCpm0ZERBJz+RADgKeffhpPP/201M0gIiIX49LPxIiIiNrDECMiIrfFECMiIrclq6mpETp+GRERkethT4yIiNwWQ4yIiNwWQ4yIiNwWQ4yIiNwWQ4yIiNwWQ+yerVu3YuzYsQgLC0NqaipycnKkbpJk3n//fcyaNQsREREYMWIEFi9ejEuXLkndLJfw3nvvITAwEK+99prUTZFUSUkJnn/+eYwYMQJhYWFISUlBdna21M2ShNFoxJo1a8zfH2PHjsWaNWtgMBikblqvOXnyJJYsWYKEhAQEBgZi+/btFucFQcDatWsRHx+PQYMGYcGCBbh8+XKPfDZDDMDu3buxcuVKvPLKK8jKykJycjKefPJJ3L59W+qmSSI7Oxs///nPceDAAezduxdKpRKPPPIIqqurpW6apL7++mt89tlnGD16tNRNkVRNTQ3mzp0LQRDwxRdfIC8vD++++67d7ZE83e9//3ts3boV77zzDk6fPo1169Zhy5YteP/996VuWq+pr6/HqFGjsG7dOnh7e1ud37hxIzZt2oR33nkHR48eRWhoKB599FHU1dV1+7M5TwzA7NmzMXr0aHz44YfmY4mJiVi0aBF+85vfSNgy16DVajFs2DBs374d8+fPl7o5kqitrUVqaio2btyId999F6NGjcL69eulbpYkVq9ejZMnT+LAgQNSN8UlLF68GEFBQfj444/Nx55//nlUV1dj586dErZMGkOHDsW7776LZcuWARB7YfHx8XjmmWfw6quvAgAaGxsRGxuLt99+u9s7kvT5nphOp8O5c+eQlpZmcTwtLQ15eXkStcq1aLVamEwmBAYGSt0UySxfvhyLFi1Camqq1E2R3L59+5CUlISnnnoKMTExmDZtGj799FMIQt/89/CkSZOQnZ2N77//HgBw5coVnDhxAnPmzJG4Za6hoKAApaWlFt+x3t7emDJlSo98x7rFKvbOVFlZCaPRaFUKCQ0NtdpRuq9auXIlxowZg+TkZKmbIonPPvsM169fxyeffCJ1U1zCzZs38Yc//AEvvvgili9fjgsXLmDFihUAgGeffVbi1vW+5cuXQ6vVIiUlBQqFAgaDAa+++ip33rintLQUAGx+xxYXF3f7+n0+xFrIZDKLnwVBsDrWF/3617/GqVOnsH//figUCqmb0+s0Gg1Wr16Nr776Cmq1WurmuASTyYQJEyaYS+3jxo3D9evXsXXr1j4ZYrt378aOHTuwdetWxMfH48KFC1i5ciWGDRuGn/70p1I3z2U46zu2z4dYSEgIFAqFVa+roqKizz6obrFq1Srs3r0b//jHPxAVFSV1cyRx+vRpVFZWYvLkyeZjRqMROTk52LZtG4qKiuDl5SVhC3tfWFgYRo4caXEsLi4OhYWFErVIWm+99RZ+8Ytf4PHHHwcAjB49Grdv38YHH3zAEIP49wUAysrKEB4ebj7eU9+xff6ZmFqtxvjx45GZmWlxPDMzEykpKRK1SnorVqzArl27sHfvXsTFxUndHMksWLAAOTk5OHHihPnPhAkT8Pjjj+PEiRN9snc2adIkXLt2zeLYtWvXEBERIVGLpNXQ0GBVpVAoFDCZTBK1yLVERkYiLCzM4ju2qakJubm5PfId2+d7YgDw0ksv4bnnnkNSUhJSUlKwbds2lJSUdHvUjLt69dVXsXPnTnz++ecIDAw017R9fX3h5+cncet6V2BgoNWAFh8fHwQFBWHUqFEStUpaL774IjIyMrBhwwY89thjyM/Px6effoo333xT6qZJYt68efj973+PyMhIxMfHIz8/H5s2bcKSJUukblqv0Wq1uH79OgCx3FxYWIj8/HwEBQUhIiICL7zwAt577z3ExsYiJiYGGzZsgK+vL5544olufzaH2N+zdetWbNy4EaWlpUhISMDvfvc7TJ06VepmScLeKMQVK1Zg1apVvdwa17NgwYI+PcQeAA4cOIDVq1fj2rVrCA8PxzPPPIPnnnuuTz5Hrqurw3/8x3/gyy+/REVFBcLCwvD444/j9ddfR79+/aRuXq84ceIEFi5caHV86dKl2Lx5MwRBwLp16/CnP/0JNTU1SEpKwoYNG3rkH4IMMSIiclt9/pkYERG5L4YYERG5LYYYERG5LYYYERG5LYYYERG5LYYYERG5LYYYERG5LYYYERG5LYYYERG5LYYYERG5LYYYkRtobGxEcnIyEhMTUV9fbz5eX1+PCRMmIDk5GU1NTRK2kEgaDDEiN+Dt7Y2PP/4Yt27dwltvvWU+/uabb+L27dv4+OOP+8xis0StcSsWIjeRmJiIX/3qV1i/fj0WLFgAANi2bRtef/11JCYmStw6ImlwFXsiN6LX65Geno6KigoIgoDQ0FAcPnwYKpVK6qYRSYIhRuRmLl68iKlTp0KpVCI7Oxvx8fFSN4lIMnwmRuRmjh49CgAwGAy4evWqxK0hkhZ7YkRu5MqVK0hNTcVDDz2EO3fu4Nq1a8jNzUVoaKjUTSOSBEOMyE0YDAakp6ejtLQUOTk5qKmpwbRp0zBz5kxs375d6uYRSYLlRCI3sWHDBpw7dw4bN25EUFAQoqOj8dvf/hb79u3DX/7yF6mbRyQJ9sSI3MD58+eRnp6OpUuX4sMPPzQfFwQBjz32GM6cOYOcnBwMHTpUwlYS9T6GGBERuS2WE4mIyG0xxIiIyG0xxIiIyG0xxIiIyG0xxIiIyG0xxIiIyG0xxIiIyG0xxIiIyG0xxIiIyG0xxIiIyG39f/qbxBvO5JxgAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.scatter(x, y);\n", "xx = [0, 10]\n", "yy = [0, 10 * theta_hat[0,0]]\n", "ax.plot(xx, yy, 'red', alpha=.5);\n", "ax.set(xlabel='x', ylabel='y');\n", "print(\"theta = %f\" % theta)\n", "print(\"theta_hat = %f\" % theta_hat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What would happend to $\\lVert \\hat{\\boldsymbol \\theta} - \\boldsymbol \\theta \\rVert$ if we increase the number of datapoints?" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N = np.arange(2, 10000, step=10)\n", "theta_error = np.zeros(N.shape)\n", "\n", "for i, n in enumerate(N):\n", " x = np.linspace(0, 10, num=n)\n", " y = f(x)\n", " X = x.reshape(-1, 1)\n", " Y = y.reshape(-1, 1)\n", " theta_hat = np.linalg.solve(X.T @ X, X.T @ Y)\n", " theta_error[i] = 2 - theta_hat\n", "\n", "plt.plot(theta_error)\n", "plt.hlines(y=0, xmin=0, xmax=len(N), linestyles='dashed')\n", "plt.xlabel(\"dataset size\")\n", "plt.ylabel(\"parameter error\"); " ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "PyTorch_Tutorial.ipynb", "provenance": [] }, "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }