├── LICENSE ├── README.md ├── code ├── .ipynb_checkpoints │ ├── Multifidelity_regression-checkpoint.ipynb │ └── Regression-checkpoint.ipynb ├── ActiveLearning.py ├── BayesianOptimization.py ├── Multifidelity_regression.ipynb ├── Multifidelity_regression.py ├── Regression.ipynb ├── Regression.py ├── gaussian_process.py └── gaussian_process.pyc ├── figures ├── AL_it_1.png ├── AL_it_2.png ├── AL_it_3.png ├── AL_it_4.png ├── AL_it_5.png ├── AL_it_6.png ├── AL_it_7.png ├── AL_it_8.png ├── BO_it_1.png ├── BO_it_2.png ├── BO_it_3.png ├── BO_it_4.png ├── BO_it_5.png ├── BO_it_6.png ├── BO_it_7.png └── BO_it_8.png └── slides.pdf /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Paris Perdikaris 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GPTutorial 2 | 3 | Dependencies: 4 | 5 | Numpy: https://github.com/numpy/numpy 6 | 7 | SciPy: https://github.com/scipy/scipy 8 | 9 | Autograd: https://github.com/HIPS/autograd 10 | 11 | PyDOE: https://github.com/tisimst/pyDOE 12 | 13 | Matplotlib: https://github.com/matplotlib/matplotlib 14 | -------------------------------------------------------------------------------- /code/.ipynb_checkpoints/Multifidelity_regression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import autograd.numpy as np\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "from pyDOE import lhs\n", 14 | "from gaussian_process import Multifidelity_GP\n", 15 | "%matplotlib inline \n", 16 | "np.random.seed(1234)" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 2, 22 | "metadata": { 23 | "collapsed": true 24 | }, 25 | "outputs": [], 26 | "source": [ 27 | "def f_H(x):\n", 28 | " return (6.0*x-2.0)**2 * np.sin(12.*x-4.0)\n", 29 | "\n", 30 | "def f_L(x):\n", 31 | " return 0.5*f_H(x) + 10.0*(x-0.5) - 5.0\n", 32 | "\n", 33 | "def Normalize(X, X_m, X_s):\n", 34 | " return (X-X_m)/(X_s)" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 3, 40 | "metadata": { 41 | "collapsed": true 42 | }, 43 | "outputs": [], 44 | "source": [ 45 | "N_H = 3\n", 46 | "N_L = 8\n", 47 | "D = 1\n", 48 | "lb = 0.0*np.ones(D)\n", 49 | "ub = 1.0*np.ones(D)\n", 50 | "noise_L = 0.00\n", 51 | "noise_H = 0.00\n", 52 | "\n", 53 | "Normalize_input_data = 1\n", 54 | "Normalize_output_data = 1" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 4, 60 | "metadata": { 61 | "collapsed": false 62 | }, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "text/plain": [ 67 | "" 68 | ] 69 | }, 70 | "execution_count": 4, 71 | "metadata": {}, 72 | "output_type": "execute_result" 73 | }, 74 | { 75 | "data": { 76 | "image/png": "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\nRK5CYII=\n", 77 | "text/plain": [ 78 | "" 79 | ] 80 | }, 81 | "metadata": {}, 82 | "output_type": "display_data" 83 | } 84 | ], 85 | "source": [ 86 | "# Training data \n", 87 | "X_L = lb + (ub-lb)*lhs(D, N_L)\n", 88 | "y_L = f_L(X_L) + noise_L*np.random.randn(N_L,D)\n", 89 | "\n", 90 | "X_H = lb + (ub-lb)*lhs(D, N_H)\n", 91 | "y_H = f_H(X_H) + noise_H*np.random.randn(N_H,D)\n", 92 | "\n", 93 | "# Test data\n", 94 | "nn = 200\n", 95 | "X_star = np.linspace(lb, ub, nn)[:,None]\n", 96 | "y_star = f_H(X_star)\n", 97 | "\n", 98 | " # Normalize Input Data\n", 99 | "if Normalize_input_data == 1:\n", 100 | " X = np.vstack((X_L,X_H))\n", 101 | " X_m = np.mean(X, axis = 0)\n", 102 | " X_s = np.std(X, axis = 0) \n", 103 | " X_L = Normalize(X_L, X_m, X_s)\n", 104 | " X_H = Normalize(X_H, X_m, X_s)\n", 105 | " lb = Normalize(lb, X_m, X_s)\n", 106 | " ub = Normalize(ub, X_m, X_s)\n", 107 | " X_star = Normalize(X_star, X_m, X_s)\n", 108 | "\n", 109 | "# Normalize Output Data\n", 110 | "if Normalize_output_data == 1:\n", 111 | " y = np.vstack((y_L,y_H))\n", 112 | " y_m = np.mean(y, axis = 0)\n", 113 | " y_s = np.std(y, axis = 0) \n", 114 | " y_L = Normalize(y_L, y_m, y_s)\n", 115 | " y_H = Normalize(y_H, y_m, y_s)\n", 116 | " y_star = Normalize(y_star, y_m, y_s)\n", 117 | " \n", 118 | "# Plot the training data\n", 119 | "plt.figure(facecolor='w')\n", 120 | "plt.rc('text', usetex=True)\n", 121 | "plt.rc('font', family='serif', size=16)\n", 122 | "plt.plot(X_H,y_H,'bo', markersize = 12, alpha = 0.5, label = \"Data\")\n", 123 | "plt.plot(X_L,y_L,'ms', markersize = 8, alpha = 0.5, label = \"Data\")\n", 124 | "plt.title(\"Training data\")\n", 125 | "ax = plt.gca()\n", 126 | "ax.set_xlim([lb[0], ub[0]])\n", 127 | "plt.xlabel('$x$')\n", 128 | "plt.ylabel('$f(x)$')" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 5, 134 | "metadata": { 135 | "collapsed": false 136 | }, 137 | "outputs": [ 138 | { 139 | "name": "stdout", 140 | "output_type": "stream", 141 | "text": [ 142 | "Total number of parameters: 7\n" 143 | ] 144 | } 145 | ], 146 | "source": [ 147 | "# Define model\n", 148 | "model = Multifidelity_GP(X_L, y_L, X_H, y_H)" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 6, 154 | "metadata": { 155 | "collapsed": false 156 | }, 157 | "outputs": [ 158 | { 159 | "name": "stdout", 160 | "output_type": "stream", 161 | "text": [ 162 | "Log likelihood 14.634070904\n", 163 | "Log likelihood 13.6691445427\n", 164 | "Log likelihood 13.5849281646\n", 165 | "Log likelihood 13.4800479832\n", 166 | "Log likelihood 13.3749066328\n", 167 | "Log likelihood 13.3090152399\n", 168 | "Log likelihood 13.1702384248\n", 169 | "Log likelihood 13.0866244712\n", 170 | "Log likelihood 13.0173910488\n", 171 | "Log likelihood 12.6832985422\n", 172 | "Log likelihood 12.40799591\n", 173 | "Log likelihood 12.271475126\n", 174 | "Log likelihood 12.2283962562\n", 175 | "Log likelihood 12.1922457933\n", 176 | "Log likelihood 12.1393062002\n", 177 | "Log likelihood 12.1148192962\n", 178 | "Log likelihood 12.1037718096\n", 179 | "Log likelihood 12.0891465684\n", 180 | "Log likelihood 12.0703934875\n", 181 | "Log likelihood 12.0246583837\n", 182 | "Log likelihood 11.9862755062\n", 183 | "Log likelihood 11.8598884337\n", 184 | "Log likelihood 11.8523419218\n", 185 | "Log likelihood 11.8166469357\n", 186 | "Log likelihood 11.8102483218\n", 187 | "Log likelihood 11.7931529052\n", 188 | "Log likelihood 11.7810199139\n", 189 | "Log likelihood 11.7670532374\n", 190 | "Log likelihood 11.7532781973\n", 191 | "Log likelihood 11.7441667477\n", 192 | "Log likelihood 11.7433008873\n", 193 | "Log likelihood 11.7392189445\n", 194 | "Log likelihood 11.7386947705\n", 195 | "Log likelihood 11.7385778208\n", 196 | "Log likelihood 11.7380307166\n", 197 | "Log likelihood 11.7375975892\n", 198 | "Log likelihood 11.7371870563\n", 199 | "Log likelihood 11.737001198\n", 200 | "Log likelihood 11.7369178266\n", 201 | "Log likelihood 11.7368863652\n", 202 | "Log likelihood 11.7368404074\n", 203 | "Log likelihood 11.7368245671\n", 204 | "Log likelihood 11.7368187191\n", 205 | "Log likelihood 11.7368116296\n", 206 | "Log likelihood 11.7368104606\n", 207 | "Log likelihood 11.7368094941\n", 208 | "Log likelihood 11.7368091334\n", 209 | "Log likelihood 11.736808112\n", 210 | "Log likelihood 11.7368073616\n", 211 | "Log likelihood 11.7368069394\n", 212 | "Log likelihood 11.7368067655\n", 213 | "Log likelihood 11.7368067463\n" 214 | ] 215 | } 216 | ], 217 | "source": [ 218 | "# Train \n", 219 | "model.train()" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": 9, 225 | "metadata": { 226 | "collapsed": false 227 | }, 228 | "outputs": [ 229 | { 230 | "name": "stdout", 231 | "output_type": "stream", 232 | "text": [ 233 | "Relative L2 error u: 7.424375e-02\n" 234 | ] 235 | }, 236 | { 237 | "data": { 238 | "text/plain": [ 239 | "" 240 | ] 241 | }, 242 | "execution_count": 9, 243 | "metadata": {}, 244 | "output_type": "execute_result" 245 | }, 246 | { 247 | "data": { 248 | "image/png": "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\nJSXs37+f9PR0Dh74kUMH9nLUlY3HU0iJtwiwERjUnGbNQwlr0ZaomHOJbt+eqKgoAgMDzY4vFqOh\nAiIiIlJtdrudmJgYYmJigEGlrxuGgdfrBdADVlKndLaJiIhIldhsNhVWMUXNLIshIiIiIlLLVFxF\nRERExBJUXEVERETEElRcRURERMQSVFxFRERExBJUXEVERETEElRcRURERMQSNAmbSANx3+T7cO11\nnXZ7WFwYC15fUIeJREREapaKq0gD4drr4sb/3Xja7a/xWh2mERERqXkaKiAiIiIilqDiKiIiIiKW\noOIqIiIiIpag4ioiIiIilqDiKiIiIiKWoOIqIiIiIpag6bBEGoiwuLAzTnkVFhdWh2lERERqnoqr\nSAOhxQVERKSh01ABEREREbEEFVcRERERsQQVVxERERGxBBVXEREREbEESxdXp9NJ3759zY4hIiIi\nInXAkrMKbN68mWXLlpV+nZeXR0hIiMmpRERERKQ22QzDMMwOUV2pqal06tSJ3NzcMxbXvLw8QkND\ncbvdKrgiIiIi9VBl+pqlhwqIiIiISOOh4ioiIiIilqDiKiIiIiKWYMmHs6pr9uzZBAQEADBq1ChG\njRplciIRERGRxmv16tWsXr0aAI/HU+H+pj6clZSUxKJFi7DZbKfdxzAMbDYbK1asOGWgrh7Okl+7\nb/J9uPa6Trs9LC6MBa8vqMNEIiIiUhmV6Wum3nGNj48nPj7ezAjSwLj2urjxfzeedvtrvFaHaURE\nRKQmaYyriIiIiFiCpYurYRhYeBpaEREREakCSxbX1NRUZs6cSUJCAjabjQkTJjBr1izy8vLMjiYi\nIiIitcSSswp07NiRuXPnmh1DREREROqQJe+4ioiIiEjjo+IqIiIiIpZgyaECIqcTFhd2ximvwuLC\n6jCNiIiI1CQV13JoEnvr0vdFRESk4VJxLYcmsRcRERGpfzTGVUREREQsQcVVRERERCxBxVVERERE\nLEHFVUREREQsQcVVRERERCxBxVVERERELEHTYZVDk9iLiIiI1D8qruXQJPYiIiIi9Y+GCoiIiIiI\nJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIgl\nqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWo\nuIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4\nioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiK\niIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqI\niIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiI\niIglqLiKiIiIiCWouIqIiIiIJfiZHaC6EhMTsdls7Nmzh9TUVJ577jk6duxodiwRERERqSWWvOOa\nmJjItGnTmDFjBs899xxTp04lLi6OvLw8s6OdldWrV5sdocHSsa1dOr61R8e29ujY1i4d39rTmI+t\nJYvrokWLcDqdpb+Oj48nLCyMOXPmmJjq7DXmE7G26djWLh3f2qNjW3t0bGuXjm/taczH1pLFNTc3\nt0xxBYiNjSUlJcWkRCIiIiJS2yw5xjU7O/uU15xOJyNHjix3f8MwAOr9UAKPx1PvM1qVjm3t0vGt\nPTq2tUfHtnbp+Naehnpsf/oz/dTbymMzzrTVItauXcuoUaNwuVwEBwefsj09PZ3o6GgTkomIiIhI\nVaSlpREVFVXutgZRXDt16sQLL7zAkCFDyt1eUlJCRkYGwcHB2Gy2Ok4nIiIiIhUxDIOjR48SGRmJ\n3V7+aFZTi2tSUhKLFi06Y5k0DAObzcaKFSsICQk5Zfv06dOZOHHiaUuriIiIiDQMlr7jmpiYSFxc\nHOPGjTM7ioiIiIjUMkvOKgC+u7W/Lq0vvPCCiYlEREREzON2u82OUOssWVxTUlL46KOPCA0NJTk5\nmeTkZF544YVG8Q37tcb4ZxYRqW26tp6Z0+mkb9++VXpPUlISixcv5oUXXmDWrFmkpqbWUjprq+qx\n3bx5M3a7HbvdTnh4OC1atGD+/Pm1mNBclpsOy+12M3z4cNxu9yl3WFesWGFSqrPjdDpJSEhg48aN\nldp/8+bN9OnTp/TX4eHhzJo1ixkzZtRWRMuq6rEF38U1NzcXwzBwOp1MnTpVywnXArfbTWhoqNkx\nTFXdc03naMWqc4x0ba3Y5s2bWbZsWenXeXl55T5/8mtJSUmsXbuWZ599FvD9/R82bFiVrs0NXXWP\nLfhmV4qIiCAsLIyYmJhaTGk+S49xtbpfnqSJiYnk5uZW6iTdvHkzubm5jeYkrY7qHltdXCtPxeDs\nVPdc0zlaseoeI11bKy81NZVOnTpV+trat29f/va3vzF06NDS1xISEpg0aZKeU/mVqh7bn87bXx7b\nhsySQwUait69ezN37lymTZtWrff36tVLF9bTqO6xnTNnDhMmTCj9dWhoKLGxsaxataqmI1raT8Vg\nypQp3HHHHcycObPMcTuTtWvXkpKSgtPpJDs7u1GWVqj+uaZztGJne4x0ba1ZbreblJQUYmNjy7we\nGxtbeoNBpLJUXEVO0sW18lQMzk51zzWdoxXTMap/nE4nNpuNiIiIMq+3aNHilOXbpXo2bdrE4sWL\nSUpKavDjhy03xlV8Nm3ahNPpJDw8nI0bN2qMWw0408U1OTnZpFT1T0XFQB/7Vay655rO0Yqd7THS\ntbXm5eTknHaby+WqwyQNU1hYWJlZloYPH07Hjh3PeNytTMXVghrbSVpXdHGtHBWDs1fdc03naMXO\n5hjp2ipW1LFjxzLX0J8+AZs/f36DHIql4mpBje0klfpFxUAaKl1ba8dPP+Tm5OSUedgoOzubsLAw\ns2I1aBEREWzYsMHsGLVCxbUG1MTStWeroZ6kdXlsdXGtfSoGPtU913SOVqymj1FDvbbWpdjYWAzD\nOOUHW5fLdcqQI6m6iIgIVq5c2WhmFVBxrQHx8fHEx8fX2f+vMZ2kdXlsG+PFtTo/GKgYnL3qnmuN\n8RytqrM5Ro3p2lqXQkND6dOnzymfrDidTqZPn25SqoajX79+pyxYsHHjRhITE01KVLtUXC2osZ2k\ndaUxXlyr84OBisHZq+651hjP0ao6m2Oka2vlGYbB6aaBT01N5YEHHmD58uWlr82cOZNFixaV/t13\nuVzk5ubqYc5yVPXYTpgwocz+K1euJC4ujttvv73Ws5pB02HVAxWdpAkJCWVea2wn6dmo6rH96eL6\nE11cT3WmYjBx4sQzvvd0xWDkyJE1nrO+q8y5pnO0eqp7bHVtrVhqaiozZ84kISEBm83GhAkTmDVr\nFnl5eaX7OJ1OkpOTy7wWHx/PiBEjmD9/fumSr1Zd7bK2VPfYTpkyheeff5758+czc+ZMkpOTG/Sn\nWFo5y0SpqaksWrSItWvXsnnzZoYPH84FF1zArFmzSj+CTU5OJiEhgdTU1DIfyyYmJmKz2cjKysLt\ndpeuECM+Z3NsFy9ejMvlIjQ0lJSUFB544IFGPedoeZKSkli+fHnpvJgul4sRI0aUuViWd2dg8eLF\nTJgwoXSp15UrVzJv3rwGfZE9k4rONZ2j1VfdY6trq0j9puIqItWiYiAiInVNxVVERERELEFjXEVE\nRETEElRcRURERMQSVFxFRERExBJUXEVERETEElRcRURERMQSVFxFRERExBJUXEVERETEElRcRURE\nRMQSVFxFRERExBJUXEVERETEElRcRURERMQSVFxFRERExBL8zA4gIiKVl5SURE5ODikpKdx///2s\nXbsWgE2bNvHcc8+ZnE5EpHapuIqIWERycjJ9+vQhJiaGpKQk+vTpQ0pKCps2bSI5OdnseCIitU7F\nVUTEItxuNzExMQA4nU769etHTEwMMTExxMfHmxtORKQOaIyriIhFjBs3rvTrDRs2MGLECBPTiIjU\nPZthGIbZIUREpGoiIiJYt24dvXr1MjuKiEid0R1XERGLSUlJwe12l5ZWt9vNli1bTE4lIlL7VFxF\nRCwgOTmZTp06lX4dGxtbum358uW68yoijYIezhIRsYCIiAhGjBjBqlWrGDFiBDabjcWLF5e+LiLS\nGGiMq4iIiIhYgoYKiIiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiI\nJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIgl/D872oxfvXuK/wAAAABJRU5ErkJggg==\n", 249 | "text/plain": [ 250 | "" 251 | ] 252 | }, 253 | "metadata": {}, 254 | "output_type": "display_data" 255 | } 256 | ], 257 | "source": [ 258 | "# Predict\n", 259 | "y_pred, y_var = model.predict(X_star)\n", 260 | "y_var = np.abs(np.diag(y_var))\n", 261 | "\n", 262 | "# Check accuracy \n", 263 | "error = np.linalg.norm(y_pred-y_star,2)/np.linalg.norm(y_star,2)\n", 264 | "print(\"Relative L2 error u: %e\" % (error))\n", 265 | "\n", 266 | "# Plot\n", 267 | "plt.figure(1, figsize=(10, 8), dpi=80, facecolor='w', edgecolor='k')\n", 268 | "plt.rc('text', usetex=True)\n", 269 | "plt.rc('font', family='serif', size=16)\n", 270 | "plt.plot(X_star, y_star, 'b-', label = \"Exact\", linewidth=2)\n", 271 | "plt.plot(X_star, y_pred, 'r--', label = \"Prediction\", linewidth=2)\n", 272 | "lower = y_pred - 2.0*np.sqrt(y_var[:,None])\n", 273 | "upper = y_pred + 2.0*np.sqrt(y_var[:,None])\n", 274 | "plt.fill_between(X_star.flatten(), lower.flatten(), upper.flatten(), \n", 275 | " facecolor='orange', alpha=0.5, label=\"Two std band\")\n", 276 | "plt.plot(X_H,y_H,'bo', markersize = 12, label = \"High-fidelity data\")\n", 277 | "plt.plot(X_L,y_L,'ms', markersize = 8, label = \"Low-fidelity data\")\n", 278 | "plt.legend(frameon=False,loc='upper left')\n", 279 | "ax = plt.gca()\n", 280 | "ax.set_xlim([lb[0], ub[0]])\n", 281 | "plt.xlabel('$x$')\n", 282 | "plt.ylabel('$f(x)$')" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": null, 288 | "metadata": { 289 | "collapsed": true 290 | }, 291 | "outputs": [], 292 | "source": [] 293 | } 294 | ], 295 | "metadata": { 296 | "kernelspec": { 297 | "display_name": "Python 2", 298 | "language": "python", 299 | "name": "python2" 300 | }, 301 | "language_info": { 302 | "codemirror_mode": { 303 | "name": "ipython", 304 | "version": 2 305 | }, 306 | "file_extension": ".py", 307 | "mimetype": "text/x-python", 308 | "name": "python", 309 | "nbconvert_exporter": "python", 310 | "pygments_lexer": "ipython2", 311 | "version": "2.7.12" 312 | } 313 | }, 314 | "nbformat": 4, 315 | "nbformat_minor": 2 316 | } 317 | -------------------------------------------------------------------------------- /code/ActiveLearning.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Thu Jun 1 09:02:36 2017 5 | 6 | @author: Paris 7 | """ 8 | 9 | import autograd.numpy as np 10 | import matplotlib.pyplot as plt 11 | from pyDOE import lhs 12 | from gaussian_process import GP 13 | 14 | np.random.seed(1234) 15 | 16 | def f(x): 17 | return x * np.sin(4.0*np.pi*x) 18 | 19 | def Normalize(X, X_m, X_s): 20 | return (X-X_m)/(X_s) 21 | 22 | def Denormalize(X, X_m, X_s): 23 | return X_s*X + X_m 24 | 25 | 26 | if __name__ == "__main__": 27 | 28 | N = 8 29 | D = 1 30 | lb = -0.5*np.ones(D) 31 | ub = 1.0*np.ones(D) 32 | noise = 0.00 33 | tol = 1e-4 34 | nsteps = 20 35 | 36 | Normalize_input_data = 1 37 | Normalize_output_data = 1 38 | 39 | # Training data 40 | X = lb + (ub-lb)*lhs(D, N) 41 | y = f(X) + noise*np.random.randn(N,D) 42 | 43 | # Test data 44 | nn = 200 45 | X_star = np.linspace(lb, ub, nn)[:,None] 46 | y_star = f(X_star) 47 | 48 | # Normalize Input Data 49 | if Normalize_input_data == 1: 50 | X_m = np.mean(X, axis = 0) 51 | X_s = np.std(X, axis = 0) 52 | X = Normalize(X, X_m, X_s) 53 | lb = Normalize(lb, X_m, X_s) 54 | ub = Normalize(ub, X_m, X_s) 55 | X_star = Normalize(X_star, X_m, X_s) 56 | 57 | # Normalize Output Data 58 | if Normalize_output_data == 1: 59 | y_m = np.mean(y, axis = 0) 60 | y_s = np.std(y, axis = 0) 61 | y = Normalize(y, y_m, y_s) 62 | y_star = Normalize(y_star, y_m, y_s) 63 | 64 | # Define model 65 | model = GP(X, y) 66 | 67 | plt.figure(1, facecolor = 'w') 68 | 69 | for i in range(0,nsteps): 70 | # Train 71 | model.train() 72 | 73 | # Predict 74 | y_pred, y_var = model.predict(X_star) 75 | y_var = np.abs(np.diag(y_var))[:,None] 76 | 77 | # Sample where posterior variance is maximized 78 | new_X = X_star[np.argmax(y_var),:] 79 | 80 | # Check for convergence 81 | if np.max(y_var) < tol: 82 | print("Converged!") 83 | break 84 | 85 | # Normalize new point if needed 86 | if Normalize_input_data == 1: 87 | xx = Denormalize(new_X, X_m, X_s) 88 | new_y = f(xx) + + noise*np.random.randn(1,D) 89 | else: 90 | new_y = f(new_X) + + noise*np.random.randn(1,D) 91 | if Normalize_output_data == 1: 92 | new_y = Normalize(new_y, y_m, y_s) 93 | 94 | # Plot 95 | plt.cla() 96 | plt.rc('text', usetex=True) 97 | plt.rc('font', family='serif', size=16) 98 | plt.plot(X_star, y_star, 'b-', label = "Exact", linewidth=2) 99 | plt.plot(X_star, y_pred, 'r--', label = "Prediction", linewidth=2) 100 | lower = y_pred - 2.0*np.sqrt(y_var) 101 | upper = y_pred + 2.0*np.sqrt(y_var) 102 | plt.fill_between(X_star.flatten(), lower.flatten(), upper.flatten(), 103 | facecolor='orange', alpha=0.5, label="Two std band") 104 | plt.plot(model.X,model.y,'bo', label = "Data") 105 | plt.plot(new_X*np.ones(2), np.linspace(-4,4,2),'k--') 106 | ax = plt.gca() 107 | ax.set_xlim([lb[0], ub[0]]) 108 | ax.set_ylim([-4,4]) 109 | plt.xlabel('$x$') 110 | plt.ylabel('$f(x)$') 111 | plt.title("Iteration #%d" % (i+1)) 112 | plt.pause(0.5) 113 | plt.savefig("../figures/AL_it_%d.png" % (i+1), format='png', dpi=300) 114 | 115 | # Add new point to the training set 116 | model.X = np.vstack((model.X, new_X)) 117 | model.y = np.vstack((model.y, new_y)) 118 | 119 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /code/BayesianOptimization.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Thu Jun 1 09:02:36 2017 5 | 6 | @author: Paris 7 | """ 8 | 9 | import autograd.numpy as np 10 | import matplotlib.pyplot as plt 11 | from pyDOE import lhs 12 | from gaussian_process import GP 13 | 14 | np.random.seed(1234) 15 | 16 | def f(x): 17 | return x * np.sin(4.0*np.pi*x) 18 | 19 | def Normalize(X, X_m, X_s): 20 | return (X-X_m)/(X_s) 21 | 22 | def Denormalize(X, X_m, X_s): 23 | return X_s*X + X_m 24 | 25 | 26 | if __name__ == "__main__": 27 | 28 | N = 8 29 | D = 1 30 | lb = -0.5*np.ones(D) 31 | ub = 1.0*np.ones(D) 32 | noise = 0.00 33 | tol = 1e-4 34 | nsteps = 20 35 | 36 | Normalize_input_data = 1 37 | Normalize_output_data = 1 38 | 39 | # Training data 40 | X = lb + (ub-lb)*lhs(D, N) 41 | y = f(X) + noise*np.random.randn(N,D) 42 | 43 | # Test data 44 | nn = 200 45 | X_star = np.linspace(lb, ub, nn)[:,None] 46 | y_star = f(X_star) 47 | 48 | # Normalize Input Data 49 | if Normalize_input_data == 1: 50 | X_m = np.mean(X, axis = 0) 51 | X_s = np.std(X, axis = 0) 52 | X = Normalize(X, X_m, X_s) 53 | lb = Normalize(lb, X_m, X_s) 54 | ub = Normalize(ub, X_m, X_s) 55 | X_star = Normalize(X_star, X_m, X_s) 56 | 57 | # Normalize Output Data 58 | if Normalize_output_data == 1: 59 | y_m = np.mean(y, axis = 0) 60 | y_s = np.std(y, axis = 0) 61 | y = Normalize(y, y_m, y_s) 62 | y_star = Normalize(y_star, y_m, y_s) 63 | 64 | # Define model 65 | model = GP(X, y) 66 | 67 | plt.figure(1, facecolor = 'w') 68 | 69 | for i in range(0,nsteps): 70 | # Train 71 | model.train() 72 | 73 | # Predict 74 | y_pred, y_var = model.predict(X_star) 75 | y_var = np.abs(np.diag(y_var))[:,None] 76 | 77 | # Compute expected improvement 78 | EI = model.ExpectedImprovement(X_star) 79 | 80 | # Sample where EI is maximized 81 | new_X = X_star[np.argmax(EI),:] 82 | 83 | # Check for convergence 84 | dlf = np.linalg.norm(model.X[-1,:] - new_X, 2)/np.linalg.norm(model.X[-1,:],2) 85 | if dlf < tol: 86 | print("Converged!") 87 | break 88 | 89 | # Normalize new point if needed 90 | if Normalize_input_data == 1: 91 | xx = Denormalize(new_X, X_m, X_s) 92 | new_y = f(xx) + + noise*np.random.randn(1,D) 93 | else: 94 | new_y = f(new_X) + + noise*np.random.randn(1,D) 95 | if Normalize_output_data == 1: 96 | new_y = Normalize(new_y, y_m, y_s) 97 | 98 | # Plot prediction 99 | plt.subplot(2,1,1) 100 | plt.cla() 101 | plt.rc('text', usetex=True) 102 | plt.rc('font', family='serif', size=16) 103 | plt.plot(X_star, y_star, 'b-', label = "Exact", linewidth=2) 104 | plt.plot(X_star, y_pred, 'r--', label = "Prediction", linewidth=2) 105 | lower = y_pred - 2.0*np.sqrt(y_var) 106 | upper = y_pred + 2.0*np.sqrt(y_var) 107 | plt.fill_between(X_star.flatten(), lower.flatten(), upper.flatten(), 108 | facecolor='orange', alpha=0.5, label="Two std band") 109 | plt.plot(model.X,model.y,'bo', label = "Data") 110 | ax = plt.gca() 111 | ax.set_xlim([lb[0], ub[0]]) 112 | plt.xlabel('$x$') 113 | plt.ylabel('$f(x)$') 114 | plt.title("Iteration #%d" % (i+1)) 115 | 116 | # Plot EI 117 | plt.subplot(2,1,2) 118 | plt.cla() 119 | plt.rc('text', usetex=True) 120 | plt.rc('font', family='serif', size=16) 121 | plt.plot(X_star, EI, 'b-', linewidth=2) 122 | ax = plt.gca() 123 | ymin, ymax = ax.get_ylim() 124 | plt.plot(new_X*np.ones(2), np.linspace(ymin,ymax,2),'k--') 125 | ax.set_xlim([lb[0], ub[0]]) 126 | plt.xlabel('$x$') 127 | plt.ylabel('$EI(x)$') 128 | plt.pause(0.5) 129 | plt.savefig("../figures/BO_it_%d.png" % (i+1), format='png', dpi=300) 130 | 131 | # Add new point to the training set 132 | model.X = np.vstack((model.X, new_X)) 133 | model.y = np.vstack((model.y, new_y)) 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /code/Multifidelity_regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import autograd.numpy as np\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "from pyDOE import lhs\n", 14 | "from gaussian_process import Multifidelity_GP\n", 15 | "%matplotlib inline \n", 16 | "np.random.seed(1234)" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 2, 22 | "metadata": { 23 | "collapsed": true 24 | }, 25 | "outputs": [], 26 | "source": [ 27 | "def f_H(x):\n", 28 | " return (6.0*x-2.0)**2 * np.sin(12.*x-4.0)\n", 29 | "\n", 30 | "def f_L(x):\n", 31 | " return 0.5*f_H(x) + 10.0*(x-0.5) - 5.0\n", 32 | "\n", 33 | "def Normalize(X, X_m, X_s):\n", 34 | " return (X-X_m)/(X_s)" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 3, 40 | "metadata": { 41 | "collapsed": true 42 | }, 43 | "outputs": [], 44 | "source": [ 45 | "N_H = 3\n", 46 | "N_L = 8\n", 47 | "D = 1\n", 48 | "lb = 0.0*np.ones(D)\n", 49 | "ub = 1.0*np.ones(D)\n", 50 | "noise_L = 0.00\n", 51 | "noise_H = 0.00\n", 52 | "\n", 53 | "Normalize_input_data = 1\n", 54 | "Normalize_output_data = 1" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 4, 60 | "metadata": { 61 | "collapsed": false 62 | }, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "text/plain": [ 67 | "" 68 | ] 69 | }, 70 | "execution_count": 4, 71 | "metadata": {}, 72 | "output_type": "execute_result" 73 | }, 74 | { 75 | "data": { 76 | "image/png": "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\nRK5CYII=\n", 77 | "text/plain": [ 78 | "" 79 | ] 80 | }, 81 | "metadata": {}, 82 | "output_type": "display_data" 83 | } 84 | ], 85 | "source": [ 86 | "# Training data \n", 87 | "X_L = lb + (ub-lb)*lhs(D, N_L)\n", 88 | "y_L = f_L(X_L) + noise_L*np.random.randn(N_L,D)\n", 89 | "\n", 90 | "X_H = lb + (ub-lb)*lhs(D, N_H)\n", 91 | "y_H = f_H(X_H) + noise_H*np.random.randn(N_H,D)\n", 92 | "\n", 93 | "# Test data\n", 94 | "nn = 200\n", 95 | "X_star = np.linspace(lb, ub, nn)[:,None]\n", 96 | "y_star = f_H(X_star)\n", 97 | "\n", 98 | " # Normalize Input Data\n", 99 | "if Normalize_input_data == 1:\n", 100 | " X = np.vstack((X_L,X_H))\n", 101 | " X_m = np.mean(X, axis = 0)\n", 102 | " X_s = np.std(X, axis = 0) \n", 103 | " X_L = Normalize(X_L, X_m, X_s)\n", 104 | " X_H = Normalize(X_H, X_m, X_s)\n", 105 | " lb = Normalize(lb, X_m, X_s)\n", 106 | " ub = Normalize(ub, X_m, X_s)\n", 107 | " X_star = Normalize(X_star, X_m, X_s)\n", 108 | "\n", 109 | "# Normalize Output Data\n", 110 | "if Normalize_output_data == 1:\n", 111 | " y = np.vstack((y_L,y_H))\n", 112 | " y_m = np.mean(y, axis = 0)\n", 113 | " y_s = np.std(y, axis = 0) \n", 114 | " y_L = Normalize(y_L, y_m, y_s)\n", 115 | " y_H = Normalize(y_H, y_m, y_s)\n", 116 | " y_star = Normalize(y_star, y_m, y_s)\n", 117 | " \n", 118 | "# Plot the training data\n", 119 | "plt.figure(facecolor='w')\n", 120 | "plt.rc('text', usetex=True)\n", 121 | "plt.rc('font', family='serif', size=16)\n", 122 | "plt.plot(X_H,y_H,'bo', markersize = 12, alpha = 0.5, label = \"Data\")\n", 123 | "plt.plot(X_L,y_L,'ms', markersize = 8, alpha = 0.5, label = \"Data\")\n", 124 | "plt.title(\"Training data\")\n", 125 | "ax = plt.gca()\n", 126 | "ax.set_xlim([lb[0], ub[0]])\n", 127 | "plt.xlabel('$x$')\n", 128 | "plt.ylabel('$f(x)$')" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 5, 134 | "metadata": { 135 | "collapsed": false 136 | }, 137 | "outputs": [ 138 | { 139 | "name": "stdout", 140 | "output_type": "stream", 141 | "text": [ 142 | "Total number of parameters: 7\n" 143 | ] 144 | } 145 | ], 146 | "source": [ 147 | "# Define model\n", 148 | "model = Multifidelity_GP(X_L, y_L, X_H, y_H)" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 6, 154 | "metadata": { 155 | "collapsed": false 156 | }, 157 | "outputs": [ 158 | { 159 | "name": "stdout", 160 | "output_type": "stream", 161 | "text": [ 162 | "Log likelihood 14.634070904\n", 163 | "Log likelihood 13.6691445427\n", 164 | "Log likelihood 13.5849281646\n", 165 | "Log likelihood 13.4800479832\n", 166 | "Log likelihood 13.3749066328\n", 167 | "Log likelihood 13.3090152399\n", 168 | "Log likelihood 13.1702384248\n", 169 | "Log likelihood 13.0866244712\n", 170 | "Log likelihood 13.0173910488\n", 171 | "Log likelihood 12.6832985422\n", 172 | "Log likelihood 12.40799591\n", 173 | "Log likelihood 12.271475126\n", 174 | "Log likelihood 12.2283962562\n", 175 | "Log likelihood 12.1922457933\n", 176 | "Log likelihood 12.1393062002\n", 177 | "Log likelihood 12.1148192962\n", 178 | "Log likelihood 12.1037718096\n", 179 | "Log likelihood 12.0891465684\n", 180 | "Log likelihood 12.0703934875\n", 181 | "Log likelihood 12.0246583837\n", 182 | "Log likelihood 11.9862755062\n", 183 | "Log likelihood 11.8598884337\n", 184 | "Log likelihood 11.8523419218\n", 185 | "Log likelihood 11.8166469357\n", 186 | "Log likelihood 11.8102483218\n", 187 | "Log likelihood 11.7931529052\n", 188 | "Log likelihood 11.7810199139\n", 189 | "Log likelihood 11.7670532374\n", 190 | "Log likelihood 11.7532781973\n", 191 | "Log likelihood 11.7441667477\n", 192 | "Log likelihood 11.7433008873\n", 193 | "Log likelihood 11.7392189445\n", 194 | "Log likelihood 11.7386947705\n", 195 | "Log likelihood 11.7385778208\n", 196 | "Log likelihood 11.7380307166\n", 197 | "Log likelihood 11.7375975892\n", 198 | "Log likelihood 11.7371870563\n", 199 | "Log likelihood 11.737001198\n", 200 | "Log likelihood 11.7369178266\n", 201 | "Log likelihood 11.7368863652\n", 202 | "Log likelihood 11.7368404074\n", 203 | "Log likelihood 11.7368245671\n", 204 | "Log likelihood 11.7368187191\n", 205 | "Log likelihood 11.7368116296\n", 206 | "Log likelihood 11.7368104606\n", 207 | "Log likelihood 11.7368094941\n", 208 | "Log likelihood 11.7368091334\n", 209 | "Log likelihood 11.736808112\n", 210 | "Log likelihood 11.7368073616\n", 211 | "Log likelihood 11.7368069394\n", 212 | "Log likelihood 11.7368067655\n", 213 | "Log likelihood 11.7368067463\n" 214 | ] 215 | } 216 | ], 217 | "source": [ 218 | "# Train \n", 219 | "model.train()" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": 9, 225 | "metadata": { 226 | "collapsed": false 227 | }, 228 | "outputs": [ 229 | { 230 | "name": "stdout", 231 | "output_type": "stream", 232 | "text": [ 233 | "Relative L2 error u: 7.424375e-02\n" 234 | ] 235 | }, 236 | { 237 | "data": { 238 | "text/plain": [ 239 | "" 240 | ] 241 | }, 242 | "execution_count": 9, 243 | "metadata": {}, 244 | "output_type": "execute_result" 245 | }, 246 | { 247 | "data": { 248 | "image/png": "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\nJSXs37+f9PR0Dh74kUMH9nLUlY3HU0iJtwiwERjUnGbNQwlr0ZaomHOJbt+eqKgoAgMDzY4vFqOh\nAiIiIlJtdrudmJgYYmJigEGlrxuGgdfrBdADVlKndLaJiIhIldhsNhVWMUXNLIshIiIiIlLLVFxF\nRERExBJUXEVERETEElRcRURERMQSVFxFRERExBJUXEVERETEElRcRURERMQSNAmbSANx3+T7cO11\nnXZ7WFwYC15fUIeJREREapaKq0gD4drr4sb/3Xja7a/xWh2mERERqXkaKiAiIiIilqDiKiIiIiKW\noOIqIiIiIpag4ioiIiIilqDiKiIiIiKWoOIqIiIiIpag6bBEGoiwuLAzTnkVFhdWh2lERERqnoqr\nSAOhxQVERKSh01ABEREREbEEFVcRERERsQQVVxERERGxBBVXEREREbEESxdXp9NJ3759zY4hIiIi\nInXAkrMKbN68mWXLlpV+nZeXR0hIiMmpRERERKQ22QzDMMwOUV2pqal06tSJ3NzcMxbXvLw8QkND\ncbvdKrgiIiIi9VBl+pqlhwqIiIiISOOh4ioiIiIilqDiKiIiIiKWYMmHs6pr9uzZBAQEADBq1ChG\njRplciIRERGRxmv16tWsXr0aAI/HU+H+pj6clZSUxKJFi7DZbKfdxzAMbDYbK1asOGWgrh7Okl+7\nb/J9uPa6Trs9LC6MBa8vqMNEIiIiUhmV6Wum3nGNj48nPj7ezAjSwLj2urjxfzeedvtrvFaHaURE\nRKQmaYyriIiIiFiCpYurYRhYeBpaEREREakCSxbX1NRUZs6cSUJCAjabjQkTJjBr1izy8vLMjiYi\nIiIitcSSswp07NiRuXPnmh1DREREROqQJe+4ioiIiEjjo+IqIiIiIpZgyaECIqcTFhd2ximvwuLC\n6jCNiIiI1CQV13JoEnvr0vdFRESk4VJxLYcmsRcRERGpfzTGVUREREQsQcVVRERERCxBxVVERERE\nLEHFVUREREQsQcVVRERERCxBxVVERERELEHTYZVDk9iLiIiI1D8qruXQJPYiIiIi9Y+GCoiIiIiI\nJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIgl\nqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWo\nuIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4\nioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiK\niIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqI\niIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiI\niIglqLiKiIiIiCWouIqIiIiIJfiZHaC6EhMTsdls7Nmzh9TUVJ577jk6duxodiwRERERqSWWvOOa\nmJjItGnTmDFjBs899xxTp04lLi6OvLw8s6OdldWrV5sdocHSsa1dOr61R8e29ujY1i4d39rTmI+t\nJYvrokWLcDqdpb+Oj48nLCyMOXPmmJjq7DXmE7G26djWLh3f2qNjW3t0bGuXjm/taczH1pLFNTc3\nt0xxBYiNjSUlJcWkRCIiIiJS2yw5xjU7O/uU15xOJyNHjix3f8MwAOr9UAKPx1PvM1qVjm3t0vGt\nPTq2tUfHtnbp+Naehnpsf/oz/dTbymMzzrTVItauXcuoUaNwuVwEBwefsj09PZ3o6GgTkomIiIhI\nVaSlpREVFVXutgZRXDt16sQLL7zAkCFDyt1eUlJCRkYGwcHB2Gy2Ok4nIiIiIhUxDIOjR48SGRmJ\n3V7+aFZTi2tSUhKLFi06Y5k0DAObzcaKFSsICQk5Zfv06dOZOHHiaUuriIiIiDQMlr7jmpiYSFxc\nHOPGjTM7ioiIiIjUMkvOKgC+u7W/Lq0vvPCCiYlEREREzON2u82OUOssWVxTUlL46KOPCA0NJTk5\nmeTkZF544YVG8Q37tcb4ZxYRqW26tp6Z0+mkb9++VXpPUlISixcv5oUXXmDWrFmkpqbWUjprq+qx\n3bx5M3a7HbvdTnh4OC1atGD+/Pm1mNBclpsOy+12M3z4cNxu9yl3WFesWGFSqrPjdDpJSEhg48aN\nldp/8+bN9OnTp/TX4eHhzJo1ixkzZtRWRMuq6rEF38U1NzcXwzBwOp1MnTpVywnXArfbTWhoqNkx\nTFXdc03naMWqc4x0ba3Y5s2bWbZsWenXeXl55T5/8mtJSUmsXbuWZ599FvD9/R82bFiVrs0NXXWP\nLfhmV4qIiCAsLIyYmJhaTGk+S49xtbpfnqSJiYnk5uZW6iTdvHkzubm5jeYkrY7qHltdXCtPxeDs\nVPdc0zlaseoeI11bKy81NZVOnTpV+trat29f/va3vzF06NDS1xISEpg0aZKeU/mVqh7bn87bXx7b\nhsySQwUait69ezN37lymTZtWrff36tVLF9bTqO6xnTNnDhMmTCj9dWhoKLGxsaxataqmI1raT8Vg\nypQp3HHHHcycObPMcTuTtWvXkpKSgtPpJDs7u1GWVqj+uaZztGJne4x0ba1ZbreblJQUYmNjy7we\nGxtbeoNBpLJUXEVO0sW18lQMzk51zzWdoxXTMap/nE4nNpuNiIiIMq+3aNHilOXbpXo2bdrE4sWL\nSUpKavDjhy03xlV8Nm3ahNPpJDw8nI0bN2qMWw0408U1OTnZpFT1T0XFQB/7Vay655rO0Yqd7THS\ntbXm5eTknHaby+WqwyQNU1hYWJlZloYPH07Hjh3PeNytTMXVghrbSVpXdHGtHBWDs1fdc03naMXO\n5hjp2ipW1LFjxzLX0J8+AZs/f36DHIql4mpBje0klfpFxUAaKl1ba8dPP+Tm5OSUedgoOzubsLAw\ns2I1aBEREWzYsMHsGLVCxbUG1MTStWeroZ6kdXlsdXGtfSoGPtU913SOVqymj1FDvbbWpdjYWAzD\nOOUHW5fLdcqQI6m6iIgIVq5c2WhmFVBxrQHx8fHEx8fX2f+vMZ2kdXlsG+PFtTo/GKgYnL3qnmuN\n8RytqrM5Ro3p2lqXQkND6dOnzymfrDidTqZPn25SqoajX79+pyxYsHHjRhITE01KVLtUXC2osZ2k\ndaUxXlyr84OBisHZq+651hjP0ao6m2Oka2vlGYbB6aaBT01N5YEHHmD58uWlr82cOZNFixaV/t13\nuVzk5ubqYc5yVPXYTpgwocz+K1euJC4ujttvv73Ws5pB02HVAxWdpAkJCWVea2wn6dmo6rH96eL6\nE11cT3WmYjBx4sQzvvd0xWDkyJE1nrO+q8y5pnO0eqp7bHVtrVhqaiozZ84kISEBm83GhAkTmDVr\nFnl5eaX7OJ1OkpOTy7wWHx/PiBEjmD9/fumSr1Zd7bK2VPfYTpkyheeff5758+czc+ZMkpOTG/Sn\nWFo5y0SpqaksWrSItWvXsnnzZoYPH84FF1zArFmzSj+CTU5OJiEhgdTU1DIfyyYmJmKz2cjKysLt\ndpeuECM+Z3NsFy9ejMvlIjQ0lJSUFB544IFGPedoeZKSkli+fHnpvJgul4sRI0aUuViWd2dg8eLF\nTJgwoXSp15UrVzJv3rwGfZE9k4rONZ2j1VfdY6trq0j9puIqItWiYiAiInVNxVVERERELEFjXEVE\nRETEElRcRURERMQSVFxFRERExBJUXEVERETEElRcRURERMQSVFxFRERExBJUXEVERETEElRcRURE\nRMQSVFxFRERExBJUXEVERETEElRcRURERMQSVFxFRERExBL8zA4gIiKVl5SURE5ODikpKdx///2s\nXbsWgE2bNvHcc8+ZnE5EpHapuIqIWERycjJ9+vQhJiaGpKQk+vTpQ0pKCps2bSI5OdnseCIitU7F\nVUTEItxuNzExMQA4nU769etHTEwMMTExxMfHmxtORKQOaIyriIhFjBs3rvTrDRs2MGLECBPTiIjU\nPZthGIbZIUREpGoiIiJYt24dvXr1MjuKiEid0R1XERGLSUlJwe12l5ZWt9vNli1bTE4lIlL7VFxF\nRCwgOTmZTp06lX4dGxtbum358uW68yoijYIezhIRsYCIiAhGjBjBqlWrGDFiBDabjcWLF5e+LiLS\nGGiMq4iIiIhYgoYKiIiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIglqLiKiIiIiCWouIqIiIiI\nJai4ioiIiIglqLiKiIiIiCWouIqIiIiIJai4ioiIiIgl/D872oxfvXuK/wAAAABJRU5ErkJggg==\n", 249 | "text/plain": [ 250 | "" 251 | ] 252 | }, 253 | "metadata": {}, 254 | "output_type": "display_data" 255 | } 256 | ], 257 | "source": [ 258 | "# Predict\n", 259 | "y_pred, y_var = model.predict(X_star)\n", 260 | "y_var = np.abs(np.diag(y_var))\n", 261 | "\n", 262 | "# Check accuracy \n", 263 | "error = np.linalg.norm(y_pred-y_star,2)/np.linalg.norm(y_star,2)\n", 264 | "print(\"Relative L2 error u: %e\" % (error))\n", 265 | "\n", 266 | "# Plot\n", 267 | "plt.figure(1, figsize=(10, 8), dpi=80, facecolor='w', edgecolor='k')\n", 268 | "plt.rc('text', usetex=True)\n", 269 | "plt.rc('font', family='serif', size=16)\n", 270 | "plt.plot(X_star, y_star, 'b-', label = \"Exact\", linewidth=2)\n", 271 | "plt.plot(X_star, y_pred, 'r--', label = \"Prediction\", linewidth=2)\n", 272 | "lower = y_pred - 2.0*np.sqrt(y_var[:,None])\n", 273 | "upper = y_pred + 2.0*np.sqrt(y_var[:,None])\n", 274 | "plt.fill_between(X_star.flatten(), lower.flatten(), upper.flatten(), \n", 275 | " facecolor='orange', alpha=0.5, label=\"Two std band\")\n", 276 | "plt.plot(X_H,y_H,'bo', markersize = 12, label = \"High-fidelity data\")\n", 277 | "plt.plot(X_L,y_L,'ms', markersize = 8, label = \"Low-fidelity data\")\n", 278 | "plt.legend(frameon=False,loc='upper left')\n", 279 | "ax = plt.gca()\n", 280 | "ax.set_xlim([lb[0], ub[0]])\n", 281 | "plt.xlabel('$x$')\n", 282 | "plt.ylabel('$f(x)$')" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": null, 288 | "metadata": { 289 | "collapsed": true 290 | }, 291 | "outputs": [], 292 | "source": [] 293 | } 294 | ], 295 | "metadata": { 296 | "kernelspec": { 297 | "display_name": "Python 2", 298 | "language": "python", 299 | "name": "python2" 300 | }, 301 | "language_info": { 302 | "codemirror_mode": { 303 | "name": "ipython", 304 | "version": 2 305 | }, 306 | "file_extension": ".py", 307 | "mimetype": "text/x-python", 308 | "name": "python", 309 | "nbconvert_exporter": "python", 310 | "pygments_lexer": "ipython2", 311 | "version": "2.7.12" 312 | } 313 | }, 314 | "nbformat": 4, 315 | "nbformat_minor": 2 316 | } 317 | -------------------------------------------------------------------------------- /code/Multifidelity_regression.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Thu Jun 1 09:02:36 2017 5 | 6 | @author: Paris 7 | """ 8 | 9 | import autograd.numpy as np 10 | import matplotlib.pyplot as plt 11 | from pyDOE import lhs 12 | from gaussian_process import Multifidelity_GP 13 | 14 | np.random.seed(1234) 15 | 16 | def f_H(x): 17 | return (6.0*x-2.0)**2 * np.sin(12.*x-4.0) 18 | 19 | def f_L(x): 20 | return 0.5*f_H(x) + 10.0*(x-0.5) - 5.0 21 | 22 | def Normalize(X, X_m, X_s): 23 | return (X-X_m)/(X_s) 24 | 25 | 26 | if __name__ == "__main__": 27 | 28 | N_H = 3 29 | N_L = 8 30 | D = 1 31 | lb = 0.0*np.ones(D) 32 | ub = 1.0*np.ones(D) 33 | noise_L = 0.00 34 | noise_H = 0.00 35 | 36 | Normalize_input_data = 1 37 | Normalize_output_data = 1 38 | 39 | # Training data 40 | X_L = lb + (ub-lb)*lhs(D, N_L) 41 | y_L = f_L(X_L) + noise_L*np.random.randn(N_L,D) 42 | 43 | X_H = lb + (ub-lb)*lhs(D, N_H) 44 | y_H = f_H(X_H) + noise_H*np.random.randn(N_H,D) 45 | 46 | # Test data 47 | nn = 200 48 | X_star = np.linspace(lb, ub, nn)[:,None] 49 | y_star = f_H(X_star) 50 | 51 | # Normalize Input Data 52 | if Normalize_input_data == 1: 53 | X = np.vstack((X_L,X_H)) 54 | X_m = np.mean(X, axis = 0) 55 | X_s = np.std(X, axis = 0) 56 | X_L = Normalize(X_L, X_m, X_s) 57 | X_H = Normalize(X_H, X_m, X_s) 58 | lb = Normalize(lb, X_m, X_s) 59 | ub = Normalize(ub, X_m, X_s) 60 | X_star = Normalize(X_star, X_m, X_s) 61 | 62 | # Normalize Output Data 63 | if Normalize_output_data == 1: 64 | y = np.vstack((y_L,y_H)) 65 | y_m = np.mean(y, axis = 0) 66 | y_s = np.std(y, axis = 0) 67 | y_L = Normalize(y_L, y_m, y_s) 68 | y_H = Normalize(y_H, y_m, y_s) 69 | y_star = Normalize(y_star, y_m, y_s) 70 | 71 | # Define model 72 | model = Multifidelity_GP(X_L, y_L, X_H, y_H) 73 | 74 | # Train 75 | model.train() 76 | 77 | # Predict 78 | y_pred, y_var = model.predict(X_star) 79 | y_var = np.abs(np.diag(y_var)) 80 | 81 | # Check accuracy 82 | error = np.linalg.norm(y_pred-y_star,2)/np.linalg.norm(y_star,2) 83 | print("Relative L2 error u: %e" % (error)) 84 | 85 | # Plot 86 | plt.figure(1, facecolor = 'w') 87 | plt.rc('text', usetex=True) 88 | plt.rc('font', family='serif', size=16) 89 | plt.plot(X_star, y_star, 'b-', label = "Exact", linewidth=2) 90 | plt.plot(X_star, y_pred, 'r--', label = "Prediction", linewidth=2) 91 | lower = y_pred - 2.0*np.sqrt(y_var[:,None]) 92 | upper = y_pred + 2.0*np.sqrt(y_var[:,None]) 93 | plt.fill_between(X_star.flatten(), lower.flatten(), upper.flatten(), 94 | facecolor='orange', alpha=0.5, label="Two std band") 95 | plt.plot(X_H,y_H,'bo', label = "High-fidelity data") 96 | plt.plot(X_L,y_L,'ms', label = "Low-fidelity data") 97 | plt.legend(frameon=False,loc='upper left') 98 | ax = plt.gca() 99 | ax.set_xlim([lb[0], ub[0]]) 100 | plt.xlabel('$x$') 101 | plt.ylabel('$f(x)$') 102 | 103 | -------------------------------------------------------------------------------- /code/Regression.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Thu Jun 1 09:02:36 2017 5 | 6 | @author: Paris 7 | """ 8 | 9 | import autograd.numpy as np 10 | import matplotlib.pyplot as plt 11 | from pyDOE import lhs 12 | from gaussian_process import GP 13 | 14 | np.random.seed(1234) 15 | 16 | def f(x): 17 | return x * np.sin(4.0*np.pi*x) 18 | 19 | def Normalize(X, X_m, X_s): 20 | return (X-X_m)/(X_s) 21 | 22 | 23 | if __name__ == "__main__": 24 | 25 | N = 12 26 | D = 1 27 | lb = -0.5*np.ones(D) 28 | ub = 1.0*np.ones(D) 29 | noise = 0.00 30 | 31 | Normalize_input_data = 1 32 | Normalize_output_data = 1 33 | 34 | # Training data 35 | X = lb + (ub-lb)*lhs(D, N) 36 | y = f(X) + noise*np.random.randn(N,D) 37 | 38 | # Test data 39 | nn = 200 40 | X_star = np.linspace(lb, ub, nn)[:,None] 41 | y_star = f(X_star) 42 | 43 | # Normalize Input Data 44 | if Normalize_input_data == 1: 45 | X_m = np.mean(X, axis = 0) 46 | X_s = np.std(X, axis = 0) 47 | X = Normalize(X, X_m, X_s) 48 | lb = Normalize(lb, X_m, X_s) 49 | ub = Normalize(ub, X_m, X_s) 50 | X_star = Normalize(X_star, X_m, X_s) 51 | 52 | # Normalize Output Data 53 | if Normalize_output_data == 1: 54 | y_m = np.mean(y, axis = 0) 55 | y_s = np.std(y, axis = 0) 56 | y = Normalize(y, y_m, y_s) 57 | y_star = Normalize(y_star, y_m, y_s) 58 | 59 | # Define model 60 | model = GP(X, y) 61 | 62 | # Train 63 | model.train() 64 | 65 | # Predict 66 | y_pred, y_var = model.predict(X_star) 67 | y_var = np.abs(np.diag(y_var)) 68 | 69 | # Check accuracy 70 | error = np.linalg.norm(y_pred-y_star,2)/np.linalg.norm(y_star,2) 71 | print("Relative L2 error u: %e" % (error)) 72 | 73 | # Draw samples from the prior and posterior 74 | Y0 = model.draw_prior_samples(X_star, 100) 75 | YP = model.draw_posterior_samples(X_star, 100) 76 | 77 | # Plot predictions 78 | plt.figure(1, figsize=(10, 8), dpi=80, facecolor='w', edgecolor='k') 79 | plt.rc('text', usetex=True) 80 | plt.rc('font', family='serif', size=16) 81 | plt.plot(X_star, y_star, 'b-', label = "Exact", linewidth=2) 82 | plt.plot(X_star, y_pred, 'r--', label = "Prediction", linewidth=2) 83 | lower = y_pred - 2.0*np.sqrt(y_var[:,None]) 84 | upper = y_pred + 2.0*np.sqrt(y_var[:,None]) 85 | plt.fill_between(X_star.flatten(), lower.flatten(), upper.flatten(), 86 | facecolor='orange', alpha=0.5, label="Two std band") 87 | plt.plot(X,y,'bo', markersize = 12, alpha = 0.5, label = "Data") 88 | plt.legend(frameon=False,loc='upper left') 89 | ax = plt.gca() 90 | ax.set_xlim([lb[0], ub[0]]) 91 | plt.xlabel('$x$') 92 | plt.ylabel('$f(x)$') 93 | 94 | # Plot samples 95 | plt.figure(2, figsize=(10, 8), dpi=80, facecolor='w', edgecolor='k') 96 | plt.subplot(2,1,1) 97 | plt.rc('text', usetex=True) 98 | plt.rc('font', family='serif', size=16) 99 | plt.plot(X_star,Y0) 100 | ax = plt.gca() 101 | ax.set_xlim([lb[0], ub[0]]) 102 | plt.ylabel('$f(x)$') 103 | plt.title("Prior samples") 104 | plt.subplot(2,1,2) 105 | plt.rc('text', usetex=True) 106 | plt.rc('font', family='serif', size=16) 107 | plt.plot(X_star,YP) 108 | plt.plot(X,y,'bo', markersize = 12, alpha = 0.5, label = "Data") 109 | ax = plt.gca() 110 | ax.set_xlim([lb[0], ub[0]]) 111 | plt.xlabel('$x$') 112 | plt.ylabel('$f(x)$') 113 | plt.title("Posterior samples") 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /code/gaussian_process.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Created on Sat May 20 20:56:05 2017 5 | 6 | @author: Paris 7 | """ 8 | 9 | import autograd.numpy as np 10 | from autograd import value_and_grad 11 | from scipy.optimize import minimize 12 | from scipy.stats import norm 13 | 14 | # A minimal Gaussian process class 15 | class GP: 16 | # Initialize the class 17 | def __init__(self, X, y): 18 | self.D = X.shape[1] 19 | self.X = X 20 | self.y = y 21 | 22 | self.hyp = self.init_params() 23 | 24 | self.jitter = 1e-8 25 | 26 | self.likelihood(self.hyp) 27 | print("Total number of parameters: %d" % (self.hyp.shape[0])) 28 | 29 | # Initialize hyper-parameters 30 | def init_params(self): 31 | hyp = np.log(np.ones(self.D+1)) 32 | self.idx_theta = np.arange(hyp.shape[0]) 33 | logsigma_n = np.array([-4.0]) 34 | hyp = np.concatenate([hyp, logsigma_n]) 35 | return hyp 36 | 37 | # A simple vectorized rbf kernel 38 | def kernel(self,x,xp,hyp): 39 | output_scale = np.exp(hyp[0]) 40 | lengthscales = np.exp(hyp[1:]) 41 | diffs = np.expand_dims(x /lengthscales, 1) - \ 42 | np.expand_dims(xp/lengthscales, 0) 43 | return output_scale * np.exp(-0.5 * np.sum(diffs**2, axis=2)) 44 | 45 | # Computes the negative log-marginal likelihood 46 | def likelihood(self, hyp): 47 | X = self.X 48 | y = self.y 49 | 50 | N = y.shape[0] 51 | 52 | logsigma_n = hyp[-1] 53 | sigma_n = np.exp(logsigma_n) 54 | 55 | theta = hyp[self.idx_theta] 56 | 57 | K = self.kernel(X, X, theta) + np.eye(N)*sigma_n 58 | L = np.linalg.cholesky(K + np.eye(N)*self.jitter) 59 | self.L = L 60 | 61 | alpha = np.linalg.solve(np.transpose(L), np.linalg.solve(L,y)) 62 | NLML = 0.5*np.matmul(np.transpose(y),alpha) + \ 63 | np.sum(np.log(np.diag(L))) + 0.5*np.log(2.*np.pi)*N 64 | return NLML[0,0] 65 | 66 | # Minimizes the negative log-marginal likelihood 67 | def train(self): 68 | result = minimize(value_and_grad(self.likelihood), self.hyp, jac=True, 69 | method='L-BFGS-B', callback=self.callback) 70 | self.hyp = result.x 71 | 72 | # Return posterior mean and variance at a set of test points 73 | def predict(self,X_star): 74 | X = self.X 75 | y = self.y 76 | 77 | L = self.L 78 | 79 | theta = self.hyp[self.idx_theta] 80 | 81 | psi = self.kernel(X_star, X, theta) 82 | 83 | alpha = np.linalg.solve(np.transpose(L), np.linalg.solve(L,y)) 84 | pred_u_star = np.matmul(psi,alpha) 85 | 86 | beta = np.linalg.solve(np.transpose(L), np.linalg.solve(L,psi.T)) 87 | var_u_star = self.kernel(X_star, X_star, theta) - np.matmul(psi,beta) 88 | 89 | return pred_u_star, var_u_star 90 | 91 | def ExpectedImprovement(self, X_star): 92 | X = self.X 93 | y = self.y 94 | 95 | L = self.L 96 | 97 | theta = self.hyp[self.idx_theta] 98 | 99 | psi = self.kernel(X_star, X, theta) 100 | 101 | alpha = np.linalg.solve(np.transpose(L), np.linalg.solve(L,y)) 102 | pred_u_star = np.matmul(psi,alpha) 103 | 104 | beta = np.linalg.solve(np.transpose(L), np.linalg.solve(L,psi.T)) 105 | var_u_star = self.kernel(X_star, X_star, theta) - np.matmul(psi,beta) 106 | var_u_star = np.abs(np.diag(var_u_star))[:,None] 107 | 108 | # Expected Improvement 109 | best = np.min(y) 110 | Z = (best - pred_u_star)/var_u_star 111 | EI_acq = (best - pred_u_star)*norm.cdf(Z) + var_u_star*norm.pdf(Z) 112 | 113 | return EI_acq 114 | 115 | def draw_prior_samples(self, X_star, N_samples = 1): 116 | N = X_star.shape[0] 117 | theta = self.hyp[self.idx_theta] 118 | K = self.kernel(X_star, X_star, theta) 119 | return np.random.multivariate_normal(np.zeros(N), K, N_samples).T 120 | 121 | def draw_posterior_samples(self, X_star, N_samples = 1): 122 | X = self.X 123 | y = self.y 124 | 125 | L = self.L 126 | 127 | theta = self.hyp[self.idx_theta] 128 | 129 | psi = self.kernel(X_star, X, theta) 130 | 131 | alpha = np.linalg.solve(np.transpose(L), np.linalg.solve(L,y)) 132 | pred_u_star = np.matmul(psi,alpha) 133 | 134 | beta = np.linalg.solve(np.transpose(L), np.linalg.solve(L,psi.T)) 135 | var_u_star = self.kernel(X_star, X_star, theta) - np.matmul(psi,beta) 136 | 137 | return np.random.multivariate_normal(pred_u_star.flatten(), 138 | var_u_star, N_samples).T 139 | 140 | # Prints the negative log-marginal likelihood at each training step 141 | def callback(self,params): 142 | print("Log likelihood {}".format(self.likelihood(params))) 143 | 144 | 145 | # A minimal GP multi-fidelity class (two levels of fidelity) 146 | class Multifidelity_GP: 147 | # Initialize the class 148 | def __init__(self, X_L, y_L, X_H, y_H): 149 | self.D = X_H.shape[1] 150 | self.X_L = X_L 151 | self.y_L = y_L 152 | self.X_H = X_H 153 | self.y_H = y_H 154 | 155 | self.hyp = self.init_params() 156 | print("Total number of parameters: %d" % (self.hyp.shape[0])) 157 | 158 | self.jitter = 1e-8 159 | 160 | # Initialize hyper-parameters 161 | def init_params(self): 162 | hyp = np.log(np.ones(self.D+1)) 163 | self.idx_theta_L = np.arange(hyp.shape[0]) 164 | 165 | hyp = np.concatenate([hyp, np.log(np.ones(self.D+1))]) 166 | self.idx_theta_H = np.arange(self.idx_theta_L[-1]+1, hyp.shape[0]) 167 | 168 | rho = np.array([1.0]) 169 | logsigma_n = np.array([-4.0, -4.0]) 170 | hyp = np.concatenate([hyp, rho, logsigma_n]) 171 | return hyp 172 | 173 | # A simple vectorized rbf kernel 174 | def kernel(self,x,xp,hyp): 175 | output_scale = np.exp(hyp[0]) 176 | lengthscales = np.exp(hyp[1:]) 177 | diffs = np.expand_dims(x /lengthscales, 1) - \ 178 | np.expand_dims(xp/lengthscales, 0) 179 | return output_scale * np.exp(-0.5 * np.sum(diffs**2, axis=2)) 180 | 181 | # Computes the negative log-marginal likelihood 182 | def likelihood(self, hyp): 183 | X_L = self.X_L 184 | y_L = self.y_L 185 | X_H = self.X_H 186 | y_H = self.y_H 187 | 188 | y = np.vstack((y_L,y_H)) 189 | 190 | NL = y_L.shape[0] 191 | NH = y_H.shape[0] 192 | N = y.shape[0] 193 | 194 | rho = hyp[-3] 195 | logsigma_n_L = hyp[-2] 196 | logsigma_n_H = hyp[-1] 197 | sigma_n_L = np.exp(logsigma_n_L) 198 | sigma_n_H = np.exp(logsigma_n_H) 199 | 200 | theta_L = hyp[self.idx_theta_L] 201 | theta_H = hyp[self.idx_theta_H] 202 | 203 | K_LL = self.kernel(X_L, X_L, theta_L) + np.eye(NL)*sigma_n_L 204 | K_LH = rho*self.kernel(X_L, X_H, theta_L) 205 | K_HH = rho**2 * self.kernel(X_H, X_H, theta_L) + \ 206 | self.kernel(X_H, X_H, theta_H) + np.eye(NH)*sigma_n_H 207 | K = np.vstack((np.hstack((K_LL,K_LH)), 208 | np.hstack((K_LH.T,K_HH)))) 209 | L = np.linalg.cholesky(K + np.eye(N)*self.jitter) 210 | self.L = L 211 | 212 | alpha = np.linalg.solve(np.transpose(L), np.linalg.solve(L,y)) 213 | NLML = 0.5*np.matmul(np.transpose(y),alpha) + \ 214 | np.sum(np.log(np.diag(L))) + 0.5*np.log(2.*np.pi)*N 215 | return NLML[0,0] 216 | 217 | # Minimizes the negative log-marginal likelihood 218 | def train(self): 219 | result = minimize(value_and_grad(self.likelihood), self.hyp, jac=True, 220 | method='L-BFGS-B', callback=self.callback) 221 | self.hyp = result.x 222 | 223 | # Return posterior mean and variance at a set of test points 224 | def predict(self,X_star): 225 | X_L = self.X_L 226 | y_L = self.y_L 227 | X_H = self.X_H 228 | y_H = self.y_H 229 | L = self.L 230 | 231 | y = np.vstack((y_L,y_H)) 232 | 233 | rho = self.hyp[-3] 234 | theta_L = self.hyp[self.idx_theta_L] 235 | theta_H = self.hyp[self.idx_theta_H] 236 | 237 | psi1 = rho*self.kernel(X_star, X_L, theta_L) 238 | psi2 = rho**2 * self.kernel(X_star, X_H, theta_L) + \ 239 | self.kernel(X_star, X_H, theta_H) 240 | psi = np.hstack((psi1,psi2)) 241 | 242 | alpha = np.linalg.solve(np.transpose(L), np.linalg.solve(L,y)) 243 | pred_u_star = np.matmul(psi,alpha) 244 | 245 | beta = np.linalg.solve(np.transpose(L), np.linalg.solve(L,psi.T)) 246 | var_u_star = rho**2 * self.kernel(X_star, X_star, theta_L) + \ 247 | self.kernel(X_star, X_star, theta_H) - np.matmul(psi,beta) 248 | 249 | return pred_u_star, var_u_star 250 | 251 | # Prints the negative log-marginal likelihood at each training step 252 | def callback(self,params): 253 | print("Log likelihood {}".format(self.likelihood(params))) 254 | 255 | -------------------------------------------------------------------------------- /code/gaussian_process.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/code/gaussian_process.pyc -------------------------------------------------------------------------------- /figures/AL_it_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_1.png -------------------------------------------------------------------------------- /figures/AL_it_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_2.png -------------------------------------------------------------------------------- /figures/AL_it_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_3.png -------------------------------------------------------------------------------- /figures/AL_it_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_4.png -------------------------------------------------------------------------------- /figures/AL_it_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_5.png -------------------------------------------------------------------------------- /figures/AL_it_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_6.png -------------------------------------------------------------------------------- /figures/AL_it_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_7.png -------------------------------------------------------------------------------- /figures/AL_it_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/AL_it_8.png -------------------------------------------------------------------------------- /figures/BO_it_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_1.png -------------------------------------------------------------------------------- /figures/BO_it_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_2.png -------------------------------------------------------------------------------- /figures/BO_it_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_3.png -------------------------------------------------------------------------------- /figures/BO_it_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_4.png -------------------------------------------------------------------------------- /figures/BO_it_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_5.png -------------------------------------------------------------------------------- /figures/BO_it_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_6.png -------------------------------------------------------------------------------- /figures/BO_it_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_7.png -------------------------------------------------------------------------------- /figures/BO_it_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/figures/BO_it_8.png -------------------------------------------------------------------------------- /slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paraklas/GPTutorial/3f73a320f12bf01ed67025497861a747319dcf3a/slides.pdf --------------------------------------------------------------------------------