add L3.ipynb
This commit is contained in:
1 parent
f6a8f74a50
commit
d03167d134
7 files changed
+186
-7
No files matched your search
+1
-1
@@ -1,3 +1,3 @@
|
||||
[attr]lfs-file filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
*.pdf lfs-file
|
||||
"*.pdf" lfs-file
|
||||
@@ -74,6 +74,7 @@
|
||||
"id": "84468a76",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## trace \n",
|
||||
"$tr[M] = \\sum^{D}_{i=1}{M_{ii}}$"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -0,0 +1,163 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "70f73980",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e8012b5c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Numerical Optimization\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bea6fa0f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Linear Classifier\n",
|
||||
"\n",
|
||||
"$D = \\set{x_i, y_i }^N_{i=1}$ is given. ($x_i \\in \\R^D,\\, y_i\\in \\set{0, 1}$)\n",
|
||||
"\n",
|
||||
"like"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 37,
|
||||
"id": "3ad846b8",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGiCAYAAADA0E3hAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKdtJREFUeJzt3QtQ1XX+//E3ooBOgZWrKKKUlXYxNW+r5gS7bEw2hlO2bDje8rJdthGdNjVLs5vdB7cwJ7tYU6ktP2ucdKjWYqqNXSfMmWrTptRAVlDXBNMCw+9/3p/zP8Q5HJAD5/Y55/mYOR2/n/P5cr7wFc+rzzXOcRxHAAAALNAl3BcAAADQXgQXAABgDYILAACwBsEFAABYg+ACAACsQXABAADWILgAAABrEFwAAIA1CC4AAMAaBBcAABC9weWjjz6SyZMnS79+/SQuLk7efvvtM55TWloqV155pSQmJsqFF14o69ev7+j1AgCAGOZ3cDlx4oQMGzZMioqK2lV/3759ct1110lWVpbs2rVLCgoKZO7cufLuu+925HoBAEAMi+vMJova4vLWW2/JlClTWq2zePFi2bp1q3z55ZdNZX/605/k2LFjUlJS0tG3BgAAMahrsN+grKxMsrOzPcpycnJMy0tr6uvrzcPt9OnTcvToUTnvvPNMWAIAAJFP20aOHz9uhpd06dLFjuBSXV0tffr08SjT47q6Ovnpp5+ke/fuLc5ZtWqVrFy5MtiXBgAAQqCyslL69+9vR3DpiKVLl8qiRYuajmtra2XAgAHmG09OTg7rtQEAgPbRRor09HQ5++yzJVCCHlxSU1OlpqbGo0yPNYD4am1ROvtIH970HIILAAB2CeQwj6Cv4zJu3DjZvn27R9n7779vygEAAIIaXH788UczrVkf7unO+ueKioqmbp4ZM2Y01b/11ltl7969cvfdd8vu3btlzZo18uabb8rChQv9fWsAABDj/A4un332mYwYMcI8lI5F0T8vX77cHB88eLApxKjzzz/fTIfWVhZd/+Wpp56SF154wcwsAgAACNk6LqEc3JOSkmIG6TLGBQDQEfpx98svv0hjY2O4LyVqxMfHS9euXVsdwxKMz++InFUEAEAgNTQ0mB6BkydPhvtSok6PHj2kb9++kpCQEJL3I7gAAKKaLmKq4zG1dUAXQtMPWBYzDUwLlgbCw4cPm5/vRRddFLBF5tpCcAEARDX9cNXwouuJaOsAAkeXNenWrZt8//335ueclJQkwRb8aAQAQAQIRWtALOoS4p8rdxEAAFiD4AIAAKxBcAEAANYguAAAgCZHjx6VadOmmXVXevbsKXPmzDGr5kcKggsAAO2li9eVlops2OB6jsLF7KZNmyZfffWVWfH+nXfekY8++kjmz58vkYLgAgBAe2zeLJKRIZKVJZKf73rWYy0PgldffVXOO+88qa+v9yifMmWKTJ8+PSjv+fXXX0tJSYnZmmfs2LFy1VVXyTPPPCMbN26U//73vxIJCC4AAJyJhpOpU0UOHPAsr6pylQchvNx0001me4ItW7Y0lR06dMjs/3fLLbe0et5ll10mZ511VquPa6+9ttVzy8rKTPfQqFGjmsqys7PNlOd///vfEglYgA4AgLZod9CCBbpUbMvXtExX4S0oEMnN1c17Arq4W35+vrz88ssmxKjXXntNBgwYIJmZma2et23bNjl16lSbX7c11dXV0rt3b48y3Yvo3HPPNa9FAoILAABt+fjjli0t3uGlstJVr41A0RHz5s2T0aNHS1VVlaSlpcn69etl1qxZbW5ZMHDgQIlmdBUBANCWgwcDW88PI0aMkGHDhpnxLuXl5WbQrAaXtnSmqyg1NdV0RzWnO2rrTCN9LRLQ4gIAQFv69g1sPT/NnTtXCgsLTatLdna22XOpLZ3pKho3bpwcO3bMhKSRI0easg8++MDs9aSDdSNBnKPbO0a4uro6SUlJkdraWjOvHACA9vr555/N7sXnn39+xzYB1DEuOntIB+L6+sjUbpv+/UX27QvoGBc3/ezTXa215ePVV1+VvLw8CSZtkampqZG1a9eaADR79mwzWPeNN97w++cbjM9vuooAAGiLhpHVq11/9h5b4j4uLAxKaFH6wX/jjTeabp4pU6ZIsL3++usyZMgQ+f3vfy+TJk0yU6Kff/55iRR0FQEAcCY33CBSXOyaXdR8oK62tGho0deDSLuJdGG4xMRECTadQdRa60okILgAANAeGk50yrPOHtKBuDqmZeLEoLW0qB9++EFKS0vNY82aNUF7H5sQXAAAaC8NKQGe8nymWUUaXh577DEZPHhwyN43khFcAACIUPv37w/3JUQcBucCAABrEFwAAIA1CC4AAMAaBBcAAGANggsAALAGwQUAAFiD4AIAAKxBcAEAwI/9FktLRTZscD3rcbR5+OGHZfz48dKjRw/p2bOnRBqCCwAA7bB5s2uT6Kwskfx817Mea3k0aWhokJtuukluu+02iUQEFwAAzkDDydSpnvsrqqoqV3kwwsurr74q5513ntTX13uUT5kyRaZPny7BsnLlSlm4cKEMHTpUIhHBBQCANmh3kG4K7TgtX3OXFRQEvttIWz0aGxtly5YtTWWHDh2SrVu3yi233NLqeZdddpmcddZZrT6uvfZasRl7FQEA0AbdDNq7pcU7vFRWuuoFcv/F7t27S35+vrz88ssmxKjXXntNBgwYIJltvNG2bdvk1KlTbX5dmxFcAABow8GDga3nj3nz5sno0aOlqqpK0tLSZP369TJr1iyJi4tr9ZyBAwdKNKOrCACANvTtG9h6/hgxYoQMGzbMjHcpLy+Xr776ygSXttBVBABADJs4UaR/f9dAXF/jXLTxQ1/XesEwd+5cKSwsNK0u2dnZkp6e3mZ9uooAAIhh8fEiq1e7Zg9pSGkeXtw9NoWFrnrBoONc7rrrLlm3bp1peTmTznYVVVRUyNGjR82zDg7etWuXKb/wwgtNi0240VUEAAgbWxZ0u+EGkeJikbQ0z3JtadFyfT1YUlJS5MYbbzShYcqUKRJsy5cvN11UK1askB9//NH8WR+fffaZRAJaXAAAYaFrn+g04+YzdjQIaOtGMINAR+k15ea6Zg/pQFwd06LdQ8FqaWlOu4mmTZsmiYmJQX8vHQCsj0hFcAEAhG1BN+8xI+4F3YLditFRGlICOeX5TH744QcpLS01jzVr1oTujSMYwQUAEFELuum4EV3QTVs3QtGaEcm0i0bDy2OPPSaDBw8O9+VEBIILACAmFnSz0f79+8N9CRGHwbkAgJhZ0A32I7gAAGJiQTfHV98UrPu5ElwAAGFZ0K21Veu1XNdYC9SCbt26dTPPJ0+eDMwXhAf3z9X9cw42xrgAAKJ6Qbf4+Hjp2bOn2VlZ9ejRo829ftD+lhYNLfpz1Z+v/pxDgeACAAjbgm6+1nHR0BLoqdCpqanm2R1eEDgaWtw/31CIcyzo9KurqzMrB9bW1kpycnK4LwcAEMCp0aFc0E2XsG9rHx/4R7uH2mppCcbnNy0uAICYWdBNP2RD1aWB4CC4AAAQhtYfdAzBBQAQ82zbNymWMR0aABDT3Psmea/m6943SV9H5CC4AABi1pn2TVK6b5LWQ2QguAAAYpY/+yYhMhBcAAAxi32T7ENwAQDErHDtm4SOI7gAAGJWqPdNQucRXAAAEuv7Jinv8BKMfZPQeQQXAEBMc++blJbmWa4tMVrOOi6RhQXoAAAxT8NJbi4r59qA4AIAQBj2TULH0FUEAACsQXABAADRHVyKiookIyNDkpKSZOzYsbJjx4426xcWFsrgwYOle/fukp6eLgsXLpSff/65o9cMAABilN9jXDZt2iSLFi2StWvXmtCioSQnJ0f27NkjvXv3blH/jTfekCVLlshLL70k48ePl2+++UZmzZolcXFx8vTTTwfq+wAAhIHu4cOAVkR0i4uGjXnz5sns2bPl0ksvNQGmR48eJpj48umnn8qECRMkPz/ftNJcc801cvPNN5+xlQYAENl01+SMDJGsLJH8fNezHrObMiImuDQ0NEh5eblkZ2f/+gW6dDHHZWVlPs/RVhY9xx1U9u7dK9u2bZNJkya1+j719fVSV1fn8QAARA4NJ1OnttygsKrKVU54QUQElyNHjkhjY6P06dPHo1yPq6urfZ6jLS0PPPCAXHXVVdKtWzcZNGiQZGZmyj333NPq+6xatUpSUlKaHjouBgAQOd1DCxa4dk725i4rKHDVA6ybVVRaWiqPPPKIrFmzRnbu3CmbN2+WrVu3yoMPPtjqOUuXLpXa2tqmR6XuKQ4AiAg6psW7pcU7vOg/21oPCOvg3F69ekl8fLzU1NR4lOtxamqqz3Puu+8+mT59usydO9ccDx06VE6cOCHz58+XZcuWma4mb4mJieYBAIi8gbj/93/tq68DdoGwtrgkJCTIyJEjZfv27U1lp0+fNsfjxo3zec7JkydbhBMNP8rx1c4IAIjogbjPPtu+c3SWERD26dA6FXrmzJkyatQoGTNmjJkOrS0oOstIzZgxQ9LS0sw4FTV58mQzE2nEiBFm+vS3335rWmG03B1gAACRPxC3vf+vqbsq6waFOjUaCHtwycvLk8OHD8vy5cvNgNzhw4dLSUlJ04DdiooKjxaWe++916zZos9VVVXym9/8xoSWhx9+OLDfCQAgpANxWwstqrCQ9VwQHHGOBf01Oh1aZxfpQN3k5ORwXw4AxIzSUlf3UHvpJFANLbrbMlAXhM9vdocGAHR6gO1f/iJy442snIvgI7gAADo9wFZDS2ZmsK8GYHdoAEAbtAVFB9q6x65403LtHmIgLkKF4AIAaJV2+6xe7fqzd3hhIC7CgeACAGiTDrQtLhZJS/Ms15YYLWcgLkKJMS4AgDPScJKb61o5Vwfs6tgXBuIiHAguAIB20ZDCAFyEG11FAADAGgQXAABgDYILAACwBsEFAABYg8G5AICwb+TIbCW0F8EFABA2mzeLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"np.random.seed(7)\n",
|
||||
"\n",
|
||||
"y = np.random.randint(0, 2, size=20)\n",
|
||||
"\n",
|
||||
"x = np.random.normal(0, 0.08, size=(2, 20)) + np.vstack([y / 2 + 0.25, y / 2 + 0.25])\n",
|
||||
"\n",
|
||||
"plt.xlim(0, 1)\n",
|
||||
"plt.ylim(0, 1)\n",
|
||||
"\n",
|
||||
"plt.scatter(x[0, :][y == 0], x[1, :][y == 0], color=\"red\", label=\"y = 0\")\n",
|
||||
"plt.scatter(x[0, :][y == 1], x[1, :][y == 1], color=\"blue\", label=\"y = 1\")\n",
|
||||
"\n",
|
||||
"plt.legend()\n",
|
||||
"\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8b9e393c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"we want to create a **classifier**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8bb1768a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"first, set a target function\n",
|
||||
"\n",
|
||||
"$$L(w) = \\frac{1}{2}\\sum_{i}^{N}{| f(x_i; w) - y_i|^2}$$\n",
|
||||
"\n",
|
||||
"then how to get $w^* = \\text{argmin} L(w) $: $w$ to get lowest $L(w)$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "18da07bf",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Learning (Optimization)\n",
|
||||
"\n",
|
||||
"$$f(x; w) = w^Tx$$\n",
|
||||
"\n",
|
||||
"$$L(w) = \\frac{1}{2}\\sum{|w^Tx_i - y_i|^2} \\\\=\\frac{1}{2} (w^Tx - y)^2\\\\= \\frac{1}{2}{(w^Tx - y)}^T{(w^Tx - y)}$$\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = x(x^Tw-y)$$\n",
|
||||
"\n",
|
||||
"in order to minimize $L(w)$, \n",
|
||||
"$$\\left.\\frac{dL}{dw}\\right|_{w=w^*} = 0$$\n",
|
||||
"\n",
|
||||
"therefore,\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = $$\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "bcb16cc8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Analytic Method\n",
|
||||
"\n",
|
||||
"$$\\frac{dL}{dw} = 0 \\to$$\n",
|
||||
"\n",
|
||||
"Numerical Method\n",
|
||||
"\n",
|
||||
"* gradient descent\n",
|
||||
"\n",
|
||||
"$$w_{t+1} = w_t - \\eta \\left . \\frac{dL}{dw} \\right |_{w=w_t}$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "71cb6971",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "6577fc8a",
|
||||
"metadata": {},
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "2025-02-AI (3.12.11)",
|
||||
"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.12.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
def main():
|
||||
print("Hello from 2025-02-ai!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
LFS
BIN
Binary file not shown.
@@ -8,4 +8,5 @@ dependencies = [
|
||||
"jupyter>=1.1.1",
|
||||
"matplotlib>=3.10.6",
|
||||
"numpy>=2.3.3",
|
||||
"pymupdf>=1.26.4",
|
||||
]
|
||||
@@ -14,6 +14,7 @@ dependencies = [
|
||||
{ name = "jupyter" },
|
||||
{ name = "matplotlib" },
|
||||
{ name = "numpy" },
|
||||
{ name = "pymupdf" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
@@ -21,6 +22,7 @@ requires-dist = [
|
||||
{ name = "jupyter", specifier = ">=1.1.1" },
|
||||
{ name = "matplotlib", specifier = ">=3.10.6" },
|
||||
{ name = "numpy", specifier = ">=2.3.3" },
|
||||
{ name = "pymupdf", specifier = ">=1.26.4" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1419,6 +1421,21 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pymupdf"
|
||||
version = "1.26.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/90/35/031556dfc0d332d8e9ed9b61ca105138606d3f8971b9eb02e20118629334/pymupdf-1.26.4.tar.gz", hash = "sha256:be13a066d42bfaed343a488168656637c4d9843ddc63b768dc827c9dfc6b9989", size = 83077563, upload-time = "2025-08-25T14:20:29.499Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/27/ae/3be722886cc7be2093585cd94f466db1199133ab005645a7a567b249560f/pymupdf-1.26.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cb95562a0a63ce906fd788bdad5239063b63068cf4a991684f43acb09052cb99", size = 23061974, upload-time = "2025-08-25T14:16:58.811Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fc/b0/9a451d837e1fe18ecdbfbc34a6499f153c8a008763229cc634725383a93f/pymupdf-1.26.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:67e9e6b45832c33726651c2a031e9a20108fd9e759140b9e843f934de813a7ff", size = 22410112, upload-time = "2025-08-25T14:17:24.511Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d8/13/0916e8e02cb5453161fb9d9167c747d0a20d58633e30728645374153f815/pymupdf-1.26.4-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2604f687dd02b6a1b98c81bd8becfc0024899a2d2085adfe3f9e91607721fd22", size = 23454948, upload-time = "2025-08-25T21:20:07.71Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4e/c6/d3cfafc75d383603884edeabe4821a549345df954a88d79e6764e2c87601/pymupdf-1.26.4-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:973a6dda61ebd34040e4df3753bf004b669017663fbbfdaa294d44eceba98de0", size = 24060686, upload-time = "2025-08-25T14:17:56.536Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/72/08/035e9d22c801e801bba50c6745bc90ba8696a042fe2c68793e28bf0c3b07/pymupdf-1.26.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:299a49797df5b558e695647fa791329ba3911cbbb31ed65f24a6266c118ef1a7", size = 24265046, upload-time = "2025-08-25T14:18:21.238Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/28/8c/c201e4846ec0fb6ae5d52aa3a5d66f9355f0c69fb94230265714df0de65e/pymupdf-1.26.4-cp39-abi3-win32.whl", hash = "sha256:51b38379aad8c71bd7a8dd24d93fbe7580c2a5d9d7e1f9cd29ebbba315aa1bd1", size = 17127332, upload-time = "2025-08-25T14:18:39.132Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d1/c4/87d27b108c2f6d773aa5183c5ae367b2a99296ea4bc16eb79f453c679e30/pymupdf-1.26.4-cp39-abi3-win_amd64.whl", hash = "sha256:0b6345a93a9afd28de2567e433055e873205c52e6b920b129ca50e836a3aeec6", size = 18743491, upload-time = "2025-08-25T14:19:01.104Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "3.2.3"
|
||||
|
||||
Reference in new issue
Block a user