{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Backpropagation!\n", "\n", "7 x 6 x 5 x 2 의 4계층 신경망 구조로 backpropagation과 numeric gradient, analytic gradient를 검증해본다." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import numpy as np\n", "np.set_printoptions(suppress=True)\n", "import pandas as pd\n", "\n", "import sys\n", "sys.path.append('/Users/kaonpark/workspace/github.com/likejazz/kaon-learn')\n", "import kaonlearn\n", "from kaonlearn.plots import plot_decision_regions, plot_history" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def _gradient_check(analytic, numeric):\n", " numerator = abs(analytic - numeric)\n", " denominator = max(analytic, numeric)\n", " if denominator == 0:\n", " print (\"Correct!\")\n", " else:\n", " difference = numerator / denominator\n", "\n", " # cs231n의 권장 수치는 1e-7이나 그 기준을 맞출 수가 없다.\n", " if difference < 1e-7:\n", " print (\"Correct!\")\n", " else:\n", " print(\"\\x1b[31mWrong!\\x1b[0m\")\n", "\n", "def gradient_checking(nn, l = 3):\n", " nn.__init__()\n", " nn.train()\n", " \n", " if l == 1:\n", " w = nn.w_1\n", " elif l == 2:\n", " w = nn.w_2\n", " elif l == 3:\n", " w = nn.w_3\n", " \n", " for k in range(w.shape[0]):\n", " for j in range(w.shape[1]):\n", " nn.__init__()\n", " if l == 1:\n", " nn.w_1[k][j] += nn.h\n", " elif l == 2:\n", " nn.w_2[k][j] += nn.h\n", " elif l == 3:\n", " nn.w_3[k][j] += nn.h\n", " nn.query()\n", " e1 = np.sum((nn.t - nn.out_o) ** 2) / 2\n", "\n", " nn.__init__()\n", " if l == 1:\n", " nn.w_1[k][j] -= nn.h\n", " elif l == 2:\n", " nn.w_2[k][j] -= nn.h\n", " elif l == 3:\n", " nn.w_3[k][j] -= nn.h\n", " nn.query()\n", " e2 = np.sum((nn.t - nn.out_o) ** 2) / 2\n", "\n", " if l == 1:\n", " delta = nn.delta_w_1[k][j]\n", " elif l == 2:\n", " delta = nn.delta_w_2[k][j]\n", " elif l == 3:\n", " delta = nn.delta_w_3[k][j]\n", "\n", " numeric_gradient = (e1 - e2) / (2 * nn.h)\n", " # 수치 미분(numeric gradient) 결과가 해석적 미분(analytic gradient)과 동일한지 검증\n", " print(\"%.16f, %.16f\" % (delta, numeric_gradient), end=\", \")\n", " _gradient_check(delta, numeric_gradient)\n", "\n", " nn.__init__()\n", " if l == 1:\n", " nn.b_1[k] += nn.h\n", " elif l == 2:\n", " nn.b_2[k] += nn.h\n", " elif l == 3:\n", " nn.b_3[k] += nn.h\n", " nn.query()\n", " e1 = np.sum((nn.t - nn.out_o) ** 2) / 2\n", "\n", " nn.__init__()\n", " if l == 1:\n", " nn.b_1[k] -= nn.h\n", " elif l == 2:\n", " nn.b_2[k] -= nn.h\n", " elif l == 3:\n", " nn.b_3[k] -= nn.h\n", " nn.query()\n", " e2 = np.sum((nn.t - nn.out_o) ** 2) / 2\n", "\n", " print()\n", " if l == 1:\n", " delta = nn.delta_b_1[k]\n", " elif l == 2:\n", " delta = nn.delta_b_2[k]\n", " elif l == 3:\n", " delta = nn.delta_b_3[k]\n", "\n", " numeric_gradient = (e1 - e2) / (2 * nn.h)\n", " print(\"%.16f, %.16f\" % (delta, numeric_gradient), end=\", \")\n", " _gradient_check(delta, numeric_gradient)\n", " print() " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def sigmoid(z: np.ndarray):\n", " return 1 / (1 + np.exp(-z))\n", "\n", "def d_sigmoid(z: np.ndarray):\n", " return sigmoid(z) * (1.0 - sigmoid(z))\n", "\n", "def relu(z: np.ndarray):\n", " return np.maximum(z, 0)\n", "\n", "def d_relu(z: np.ndarray):\n", " return z > 0\n", "\n", "# --\n", "\n", "def GD(self, delta, t, l):\n", " return - self.lr * delta\n", "\n", "def adam(self, delta, t, l):\n", " beta1 = .9\n", " beta2 = .999\n", " \n", " eps = 1e-8\n", "\n", " self.m[l] = beta1 * self.m[l] + (1. - beta1) * delta\n", " self.v[l] = beta2 * self.v[l] + (1. - beta2) * delta**2\n", "\n", " self.m_k_hat = self.m[l] / (1. - beta1**(t))\n", " self.v_k_hat = self.v[l] / (1. - beta2**(t))\n", "\n", " self.update_parameters = - (self.lr * self.m_k_hat / (np.sqrt(self.v_k_hat) + eps))\n", " return self.update_parameters\n", "\n", "def momentum(self, delta, t, l):\n", " gamma = .9\n", " \n", " self.m[l] = gamma * self.m[l] + self.lr * delta\n", " return - self.m[l]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class NeuralNetwork:\n", " def __init__(self):\n", " self.i = np.array([0.4,-0.2,0.1,0.1,-0.15,0.6,-0.9]).reshape(-1, 1)\n", "\n", " np.random.seed(12)\n", " self.w_1 = np.random.rand(6, 7)\n", " self.b_1 = np.random.rand(6).reshape(-1, 1)\n", " self.w_2 = np.random.rand(5, 6)\n", " self.b_2 = np.random.rand(5).reshape(-1, 1)\n", " self.w_3 = np.random.rand(2, 5)\n", " self.b_3 = np.random.rand(2).reshape(-1, 1)\n", "\n", " self.t = np.array([[0.87503811],[0.83690408]])\n", " \n", " self.lr = 0.1\n", " self.h = 1e-4 \n", " \n", " # Optimizer Parameters\n", " self.iter = 1\n", " self.m = [\n", " np.zeros(self.w_3.shape), \n", " np.zeros(self.b_3.shape),\n", " np.zeros(self.w_2.shape),\n", " np.zeros(self.b_2.shape),\n", " np.zeros(self.w_1.shape),\n", " np.zeros(self.b_1.shape),\n", " ]\n", " self.v = [\n", " np.zeros(self.w_3.shape), \n", " np.zeros(self.b_3.shape),\n", " np.zeros(self.w_2.shape),\n", " np.zeros(self.b_2.shape),\n", " np.zeros(self.w_1.shape),\n", " np.zeros(self.b_1.shape),\n", " ]\n", " \n", " def _forward(self):\n", " self.net_h1 = np.dot(self.w_1, self.i) + self.b_1\n", " self.out_h1 = relu(self.net_h1)\n", "\n", " self.net_h2 = np.dot(self.w_2, self.out_h1) + self.b_2\n", " self.out_h2 = sigmoid(self.net_h2)\n", "\n", " self.net_o = np.dot(self.w_3, self.out_h2) + self.b_3\n", " self.out_o = sigmoid(self.net_o)\n", "\n", " def _backward(self, optimizer):\n", " d_o_errors = - (self.t - self.out_o)\n", " self.delta_w_3 = np.dot(d_o_errors * d_sigmoid(self.net_o), self.out_h2.T)\n", " self.w_3 += optimizer(self, self.delta_w_3, self.iter, 0)\n", " self.delta_b_3 = d_o_errors * d_sigmoid(self.net_o)\n", " self.b_3 += optimizer(self, self.delta_b_3, self.iter, 1)\n", "\n", " d_h2_errors = np.dot(self.w_3.T, d_o_errors * d_sigmoid(self.net_o))\n", " self.delta_w_2 = np.dot(d_h2_errors * d_sigmoid(self.net_h2), self.out_h1.T)\n", " self.w_2 += optimizer(self, self.delta_w_2, self.iter, 2)\n", " self.delta_b_2 = d_h2_errors * d_sigmoid(self.net_h2)\n", " self.b_2 += optimizer(self, self.delta_b_2, self.iter, 3)\n", "\n", " d_h1_errors = np.dot(self.w_2.T, d_h2_errors * d_sigmoid(self.net_h2))\n", " self.delta_w_1 = np.dot(d_h1_errors * d_relu(self.net_h1), self.i.T)\n", " self.w_1 += optimizer(self, self.delta_w_1, self.iter, 4)\n", " self.delta_b_1 = d_h1_errors * d_relu(self.net_h1)\n", " self.b_1 += optimizer(self, self.delta_b_1, self.iter, 5)\n", " \n", " self.iter += 1\n", " \n", " def train(self, optimizer = GD):\n", " self._forward()\n", " self._backward(optimizer)\n", "\n", " def query(self):\n", " self._forward()\n", " \n", " def result(self):\n", " print(self.t - self.out_o)\n", " \n", "nn = NeuralNetwork()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "출력 레이어에 activation(여기서는 sigmoid)이 없다면, 아래 처럼 최종 가중치 행렬의 delta 값과, 이전 가중치 행렬에 부여되는 에러값 계산이 다르다.\n", "\n", "```\n", "def _forward():\n", " ...\n", " # 최종 출력 레이어에 activation(sigmoid)이 없다면,\n", " out_o = net_o\n", "\n", "def _backward():\n", " ...\n", " # 최종 출력 레이어에 activation(sigmoid)이 없다면,\n", " delta_w_3 = np.dot(d_o_errors, out_h2.T)\n", " delta_b_3 = d_o_errors\n", " ...\n", " # 이전 레이어의 에러에도 activation 미분이 생략된다.\n", " d_h2_errors = np.dot(w_3.T, d_o_errors)\n", "```\n", "\n", "히든 레이어의 w1에 대한 delta_w1 수식은 아래와 같다.\n", "\n", "$$\\frac{\\partial E_{total}}{\\partial w_{1}} = (\\sum\\limits_{o}{\\frac{\\partial E_{total}}{\\partial out_{o}} * \\frac{\\partial out_{o}}{\\partial net_{o}} * \\frac{\\partial net_{o}}{\\partial out_{h1}}}) * \\frac{\\partial out_{h1}}{\\partial net_{h1}} * \\frac{\\partial net_{h1}}{\\partial w_{1}}$$\n", "\n", "$y_n$ 을 구하는 것이 역전파의 핵심이며 수식에서, $$\\frac{\\partial out_{o}}{\\partial net_{o}} * \\frac{\\partial net_{o}}{\\partial out_{h1}}$$ 부분이다. 즉, 출력 레이어의 activation 미분과 이전 가중치(w5, w6)를 곱한 값이 된다." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0019912952415730, 0.0019912952408351, Correct!\n", "0.0024540703451672, 0.0024540703437870, Correct!\n", "0.0026930630921895, 0.0026930630903522, Correct!\n", "0.0027050489507301, 0.0027050489489859, Correct!\n", "0.0027245918937070, 0.0027245918919703, Correct!\n", "\n", "0.0033607543419824, 0.0033607543385456, Correct!\n", "\n", "0.0031708367295230, 0.0031708367287473, Correct!\n", "0.0039077361432061, 0.0039077361418081, Correct!\n", "0.0042882959740775, 0.0042882959721928, Correct!\n", "0.0043073816423912, 0.0043073816405163, Correct!\n", "0.0043385008255743, 0.0043385008237015, Correct!\n", "\n", "0.0053514933817869, 0.0053514933781237, Correct!\n", "\n" ] } ], "source": [ "gradient_checking(nn, 3)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0004138630287177, 0.0004141685682173, \u001b[31mWrong!\u001b[0m\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0003945576204420, 0.0003948489074763, \u001b[31mWrong!\u001b[0m\n", "0.0000004462967620, 0.0000004466261735, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0007738071862624, 0.0007743784586484, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0004012666483439, 0.0004015738879013, \u001b[31mWrong!\u001b[0m\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0003825488215844, 0.0003828417294467, \u001b[31mWrong!\u001b[0m\n", "0.0000004327132250, 0.0000004330446678, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0007502555061708, 0.0007508299572963, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0007004977316710, 0.0007007702000454, \u001b[31mWrong!\u001b[0m\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0006678217162559, 0.0006680814749506, \u001b[31mWrong!\u001b[0m\n", "0.0000007553945333, 0.0000007556884632, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0013097332719160, 0.0013102427110119, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0003570468882901, 0.0003573168525731, \u001b[31mWrong!\u001b[0m\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0003403917742217, 0.0003406491453153, \u001b[31mWrong!\u001b[0m\n", "0.0000003850280384, 0.0000003853192244, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0006675770214304, 0.0006680817784144, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0005044746159777, 0.0005047403321950, \u001b[31mWrong!\u001b[0m\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0004809424622206, 0.0004811957836099, \u001b[31mWrong!\u001b[0m\n", "0.0000005440094234, 0.0000005442958757, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0009432253089627, 0.0009437221237026, \u001b[31mWrong!\u001b[0m\n", "\n" ] } ], "source": [ "# 거의 비슷하여 정답으로 간주할 수 있으나 cs231n의 기준에는 미치지 못한다.\n", "gradient_checking(nn, 2)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "\n", "0.0009564518308797, 0.0009570341935952, \u001b[31mWrong!\u001b[0m\n", "-0.0004782259154398, -0.0004785170967716, Correct!\n", "0.0002391129577199, 0.0002392585483554, \u001b[31mWrong!\u001b[0m\n", "0.0002391129577199, 0.0002392585483554, \u001b[31mWrong!\u001b[0m\n", "-0.0003586694365799, -0.0003588878226025, Correct!\n", "0.0014346777463195, 0.0014355512905836, \u001b[31mWrong!\u001b[0m\n", "-0.0021520166194793, -0.0021533269360316, Correct!\n", "\n", "0.0023911295771992, 0.0023925854846212, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "\n", "0.0000000000000000, 0.0000000000000000, Correct!\n", "\n", "0.0008467909026301, 0.0008473850463073, \u001b[31mWrong!\u001b[0m\n", "-0.0004233954513151, -0.0004236925231146, Correct!\n", "0.0002116977256575, 0.0002118462615140, \u001b[31mWrong!\u001b[0m\n", "0.0002116977256575, 0.0002118462615140, \u001b[31mWrong!\u001b[0m\n", "-0.0003175465884863, -0.0003177693923967, Correct!\n", "0.0012701863539452, 0.0012710775693439, \u001b[31mWrong!\u001b[0m\n", "-0.0019052795309177, -0.0019066163540679, Correct!\n", "\n", "0.0021169772565753, 0.0021184626157293, \u001b[31mWrong!\u001b[0m\n", "\n", "0.0006243229367469, 0.0006246487897418, \u001b[31mWrong!\u001b[0m\n", "-0.0003121614683734, -0.0003123243948622, Correct!\n", "0.0001560807341867, 0.0001561621973314, \u001b[31mWrong!\u001b[0m\n", "0.0001560807341867, 0.0001561621973314, \u001b[31mWrong!\u001b[0m\n", "-0.0002341211012801, -0.0002342432961835, Correct!\n", "0.0009364844051203, 0.0009369731846474, \u001b[31mWrong!\u001b[0m\n", "-0.0014047266076804, -0.0014054597771707, Correct!\n", "\n", "0.0015608073418672, 0.0015616219747362, \u001b[31mWrong!\u001b[0m\n", "\n" ] } ], "source": [ "gradient_checking(nn, 1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-0.00009784]\n", " [ 0.00001233]]\n" ] } ], "source": [ "# Gradient Descent 학습\n", "nn.__init__()\n", "\n", "delta_w_1_history = []\n", "w_1_history = []\n", "for _ in range(7):\n", " delta_w_1_history.append([])\n", " w_1_history.append([])\n", "delta_b_1_history = []\n", "b_1_history = []\n", "\n", "for _ in range(2000): \n", " nn.train()\n", " \n", " for j in range(7):\n", " delta_w_1_history[j].append(nn.delta_w_1[1][j]) \n", " w_1_history[j].append(nn.w_1[1][j])\n", " delta_b_1_history.append(nn.delta_b_1[1][0])\n", " b_1_history.append(nn.b_1[1][0])\n", "\n", "nn.query()\n", "nn.result()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAF5CAYAAAA/GEgLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX9+P/XXWafyZ6QsAQQCJtGFhUVAVFx1yIuLH74\nlJZ+avGn/Whtq7VWW/SDW/Vrq9U+XKpoURa1Lq1aCygoLgiKLMoWdhIgezKTWe89vz9mMlkIJISQ\nyYTzfDyGuffcc+99TxJm3nPuuecoQgiBJEmSJElSJ1ETHYAkSZIkSScXmXxIkiRJktSpZPIhSZIk\nSVKnksmHJEmSJEmdSiYfkiRJkiR1Kpl8SJIkSZLUqWTykQQ++OADZs6cedQ6F1xwARs2bADgxz/+\nMRUVFZ0R2hGFQiF+9KMf8cEHH7Rad9++fYwcObLFba+99hrPPvvsUfdfsmQJCxYsaFeckiQlzuuv\nv87PfvazNtWdOXNmi+8nBw8eZNq0aUfdd+/evdx6663tilE6MWTy0Q2tWrUqoef/5ptvuOGGG1i7\ndu1xH2v69On89Kc/PWqdtWvXEggEjvtckiR1jqqqKu69914eeOABjneoqR49erBw4cKj1ikuLmbn\nzp3HdR6pY8nko4v605/+xEUXXcR1113Hf/7zHyDamjBv3jyuueYarr76au666y68Xm+T/X7zm98A\n8MMf/pCSkhI++ugjpk2bxpQpUzj//PN54oknjnrezZs3M2HChPj67Nmz+fWvfx0//5gxY6ipqTnq\nMV555RVuu+02Tj/99Da/XsMwuPfee7nmmmu48MIL+fe//w3Ak08+ydy5cwF49dVXufrqq7n22muZ\nMWMG27dv5z//+Q/Lly/npZdeYsGCBYTDYe6//34uv/xyrrrqKn7729/Gf0YXXHABt912G5dddhnP\nPPMMEyZMwDRNAPx+P+eccw7l5eVtjlmSTmaTJ0/ms88+A+Bf//oXp512WvxLwD333HPU1sj333+f\nnJyc+HtLWy1btozrrruOiRMncvfdd2OaZpOW06Kiovj73TXXXMOCBQswDIN77rmHPXv2MHv2bACW\nLl3K5MmTueqqq5g+fTrr168Hou83s2fP5qqrruKOO+7gkksu4dNPP42f/5577mH+/PnHFLPUMpl8\ndEFLly7lww8/5K233mLhwoXxD89nn30WTdN48803eeedd8jJyeGPf/xjk30ffPBBAObPn09ubi5/\n+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\nyeTJk7nrrrvYtGkThYWF19yOSqXi3XffJS8vj+XLl7N06VIURaGqqsplDHfddRcBAQHo9XomTZrE\nzp07m2z/LqfT6UhMTASgV69enD59+orlGo2G2267jWnTpvHyyy9jMpm49957r9pOZmYm06ZNQ6fT\noVarSUlJYfv27c7lgwcPdr6///77ycjIACA9PZ3p06c3x64J0eL17NmThIQEAO6++25yc3OpqKho\n8s+ZMGECGo0Gf39/OnfufFU9MX78eN5//30ef/xxNm7cyAsvvIBafeWfuN27dzNs2DA6deoEwI03\n3khYWBi5ubkAxMfHO1t3k5KS2LlzJ+Xl5Xz88cfcfPPNBAUFNfl+tVaSfHgplUp1xfVQjUYDgMPh\nYMGCBXz00Ud89NFHrFu3jjfeeOOa26msrOTuu+8mLy+PPn368Oyzz6LVaht1rfXiZ17k6pLLr6XT\n6ZzvVSpVvWX+9Kc/8e677xIdHc1f/vIXHn/88avKOByOq6Zramqc0wEBAc73d955J1lZWezevZvK\nykpuuOGG690NIVqln/+BV6lUzVJXXL7Nn9ePAGPGjOHzzz/n9ttv58CBA9x5550cOXLkijL11XuK\nomC324Er64igoCBuu+02Pv74Y9avXy8/UJqYJB9eauTIkXz22WecP38eh8PBRx99BMCIESNYs2YN\nNpsNh8PBwoULee21165aX6PRYLfbKSoqwmw2M3fuXMaOHcvevXud67qyYcMGbDYbVquVf/7zn4wa\nNarJ97MxysvLGT16NCEhITz00EPMnTuXgoIC4NJ+Qt0xS0tLo6amBofDwZo1axg+fHi92/T392fS\npEksWLDAZW95IcS1FRQUcODAAaCuFXHQoEH4+/u7PY6nn36a//znP9xxxx28+OKLGI1GTp48iUaj\ncf4IGTZsGDt27ODo0aNAXQvzyZMnGTBgQL3bvP/++/nHP/6BoijExcW5bV9aA+lw6qVGjx5NQUEB\n99xzD0FBQfTq1YszZ87w2GOP8eqrr3L33XdTW1tL7969ee65565af/z48SQnJ7N8+XJuvvlmbr/9\ndoKCgoiOjqZ79+4UFRURHR3dYAwdO3Zk+vTpVFZWMn78eO6+++7m2t0GhYWFMWfOHB566CH8/PzQ\naDSkpqYCMGrUKP7whz8AMGfOHF599VUmT56M3W4nLi6OhQsXXnO7SUlJZGRkMHnyZLfshxAtUdeu\nXVm+fDlHjx6lTZs2LF261CNxPPbYYzz//POkp6ej0Wi45ZZbGDJkCOfPn0ej0XDvvfeybt06Xnzx\nRR5//HFqa2vx8/Pj3XffxWQy1bvNXr16ERwcLD9QmoFKaUz7uxAtjKIo/OUvf+H48eO89NJLng5H\nCOGFjhw54hxjxBOtOS2ZtHy0UocOHeLJJ5+sd1mXLl14/fXX612WnJyMxWKpd9maNWuuuOX3oiVL\nlrBnz55615k/fz7Dhg1rZNRNZ9y4cYSFhfHOO++4/bOFaMnef/99/v3vf9e77OGHH2bSpElXzd+9\nezevvPJKvesMHTqUBQsWNGmMjfHGG2+QkZHB888/L4lHM5CWDyGEEEK4lXQ4FUIIIYRbSfIhhBBC\nCLeS5EMIIYQQbuWTHU5LS12PnhcaGsCZM5VuiKZ5+HL8vhw7+Hb8jYk9PLz+2wrFJY2pY6Dlf1e8\nlS/HDr4df2Njd1XPtNiWD61W47qQF/Pl+H05dvDt+H05dl/ky8dbYvccX46/qWJvscmHEEIIIbyT\nJB9CCCGEcCtJPuphtdVSZbXjkCFQhBDX4HAojXpAoxDiaj7Z4bSpVVTa2JVXTO6h0xw6cZ5Ka92D\nyrQaNTHtjcR3b8vw/pGEGA0ejlQI4Q3OV9qY9+4ukm/tych+7T0djhA+p1UnH2fNVj766jA7vjuF\nvbbuKa/twgLoGhWERq3iTIWVwycqKDx+no93/ETikE5MvLEzep3vdhYSQlw/P50GnUZNxuYfGNyj\nLf6GVl2VCvGLuTxjHA4HixcvpqCgAL1eT2pqKjExMc7lGRkZpKWlodVqmTNnDmPGjKG8vJzf//73\nVFdXExERwSuvvIK/vz9/+9vf2LBhA1D31NbHH38cRVEYNWoUnTt3BiA+Pp6nn366efbWuU8Kn+89\nwsc7fsJaU0u7UH/GJHRkSO+Iq1o3Kqtr2JVXzIZdP/HJziJyfihjzuR+RLYJbNYYhRDeS6/TMH5w\nR/61/TBbc45z+9AY1ysJIZxcJh+bNm3CZrORnp5OTk4OS5cudT6Mq7S0lNWrV7N+/XqsVivJyckM\nHz6ct99+m4kTJ5KUlMSKFStIT09n3LhxfPzxx6xbtw61Ws306dO55ZZb8Pf3p2/fvrz77rvNvrMA\nZWereP+T7zl47BxBATqmjuvOyLhINOr6u78E+OkYN6gjI/pHkrH1R7Z8c5wlq7N4cko8XaOC3BKz\nEML7jB3Ukc/2HmHj3qPcMqgjOh++fVIId3PZ4TQrK4uRI0cCda0Subm5zmX79+9n4MCB6PV6TCYT\n0dHR5OfnX7HOqFGj2LlzJ+3bt+f9999Ho9GgUqmw2+0YDAby8vIoLi4mJSWFWbNmcejQoWbaVcj7\nqZzFq77m4LFzDOoZTuqsYdwc3+GaicflDHoNKbf2ZOaE3lRa7fy/tGwOnTjfbLEKIbxboJ+O22/s\nwjmLjR3fnfJ0OEL4FJd/dc1m8xWPSddoNNjtducyk+nSKGaBgYGYzeYr5gcGBlJRUYFOpyMsLAxF\nUXj11Vfp06cPXbp0ITw8nNmzZ7N69WoeffRRnnnmmabeRwA2Zx3jf9K/xWav5aHbe/HY5H4Y/XW/\neDsj4iKZc1c/bDW1vPHht5ScrWqGaIUQvuCu0d3QalR8uqeIWofD0+EI4TNcXnYxGo1YLBbntMPh\nQKvV1rvMYrFgMpmc8/38/LBYLAQF1V2esFqtLFiwgMDAQF588UUA+vXrh0ZT11w5ePBgSkpKUBQF\nlUp1zZhCQwMaNcpaeLgJRVH4+4bvWb/lR0KMBhY8NITeXcJcrtuQ28NNoFHz9vr9/Plfubw2dxR+\n+qbvcObLw2D7cuzg2/H7cuy+JizIj+H9I9mWc4J9+aUM7dPO0yEJ4RNc/sVMSEhgy5YtTJgwgZyc\nHGJjY53L4uLieP3117FardhsNgoLC4mNjSUhIYFt27aRlJREZmYmgwYNQlEUHnvsMYYOHcrs2bOd\n21i+fDkhISHMmjWL/Px8IiMjG0w8gEaPK19ccp41Gw+yJfs47cMCeGrqANoadY1+bkNDBvdoy7iE\njmz+5hhvpX3DQ7f3vu5tXi483NQkcXqCL8cOvh1/Y2KX5KRp3T40msxvT/Cf3UUM6R3hsv4SQjQi\n+Rg/fjw7duxg2rRpKIrCkiVLWLVqFdHR0YwbN46UlBSSk5NRFIUnn3wSg8HAnDlzmDdvHhkZGYSG\nhrJs2TI2bdrE3r17sdlsbN++HYCnnnqK2bNn88wzz7Bt2zY0Gg2vvPJKk+xYba2DlZ8cYFfeKTpF\nGHl6ajxBgfom2fZFU8Z254fjZ8n89iT9urRhcK+IJt2+EOJKru6+W7FiBRs2bMBoNPLII48wZswY\nzp49S2JiovOH0y233MKDDz7YZDFFhAZwQ68I9h4o4btDp4nr1rbJti1ES6VSfHCIPle/7BwOhf/d\n9ANbvzlG16ggnpwygEC/X96/ozFOlVfy4l/3EmDQkjpraJN9Tkv/9e3NfDn+lt7ysXHjRr788kuW\nLl1KTk4O7733nvPuu4KCAp555hnWrVsHwLRp01i7di3Z2dls3ryZhQsXNvpzGvv//+LxPlJcweJV\nX9OjYzDzZwz65TvmAS39e+7NfDn+xsbeKp9qu6+ghK3fHKNbhyCenhrfbIkHQPuwACYN78w5i411\nWwqb7XOEEA3ffVdYWMiQIUMwGAwYDAZiYmIoKCggNzeXvLw8ZsyYwRNPPEFJSUmTxxXdzkRctzb8\ncOwcB4+ebfLtC9HStMhh+Xp2CuHBO/pwQ482bhl5MHFINHu+Lybz2xOMjIukW4fgZv9MIVqja919\np9Vq6dmzJytWrMBsNlNTU0N2djZTp06la9eu9OvXj5tuuomPP/6Y1NRU3nzzzQY/p7Gd2uHSL7zk\n23qz/89fsemb4wxP6PTrd9KNfLkVzJdjB9+Ovylib5HJR7DRwL1je7itWUurUTPj1p4sXfMN6V/+\nyPwZCdLpTIhm0NDdd926deP+++/nkUceISoqigEDBhAaGkr//v3x9/cH6vqwuUo8oHGd2uHKJugI\nk57uHYPZd6CYnO9P0iHc6GJtz2oNTf/eypfjl8suXia2UwiDYsP58fg5sgpKPR2OEC1SQkICmZmZ\nAFfdfVdeXo7FYiEtLY2XXnqJkydP0qNHD1544QU+//xzAHbt2kXfvn2bLb7bh0QD8Pneo832GUK0\nBC2y5cNT7r25Gzk/lrFu64/E92iLViO5nRBNqaG778aOHcuhQ4e455570Ol0PPvss2g0Gp5++mkW\nLFjABx98gL+/P6mpqc0W34AebWkXFsCuvFMkje4qT8IW4hok+WhC7cICuDm+A5u/OcbO3FOMGhDl\n6ZCEaFHUajUvv/zyFfO6devmfP/zZQCdOnVi9erVzR4bgFqlInFIJ/7xWQGbs45xz+hurlcSohWS\nn+ZNbMKNMWg1Kj7Z+RP2WhluWYjW5qa+7TEF6NjyzXGqbXZPhyOEV5Lko4mFmgyMGhBF2blqduXJ\nw6aEaG30Og3jEjpSabWzff9JT4cjhFeS5KMZTBhW1/qxYac8bEqI1mhMQgd0WjVffH1U6gAh6iHJ\nRzMIC/JjRFwUJWer2Jcvd74I0dqYAvSM6B9J2blquftNiHpI8tFMEod0QgV8vvcIPjiCvRDiOt16\noQ74dI/UAUL8nCQfzaRdaADxPdry06kKfjh2ztPhCCHcrF1oAAmx4RSdqpAh14X4GUk+mlGiYrDG\nzwAAIABJREFUc8ChIx6ORAjhCYlD6+qAz/ZIHSDE5ST5aEY9OgbTJdJEzg9lFJc3brhmIUTL0b1D\nMN07BPNt4WlOlFlcryBEKyHJRzNSqVQkDolGATbtO+bpcIQQHiAtoEJczWXy4XA4WLRoEVOnTiUl\nJYWioqIrlmdkZJCUlMSUKVPYsmULUPeMhZkzZ5KcnMzcuXOpqqoC4G9/+xv33Xcf9913H8uXLweg\nurqa3/3udyQnJzNr1izKy8ubeh89alDPcEJNBnbknpQBh4RohQb2aEu7UH925Z3inNnq6XCE8Aou\nk49NmzZhs9lIT0/n6aefZunSpc5lpaWlrF69mrS0NFauXMlrr72GzWbj7bffZuLEiaxdu5Y+ffqQ\nnp7O0aNH+fjjj0lLSyMjI4OvvvqK/Px8PvjgA2JjY1m7di2TJ0/m7bffbtYddjeNWs2oAVFU22rZ\nnVfs6XCEEG6mVqu4dUg09lqFzd9IC6gQ0IjkIysri5EjRwIQHx9Pbm6uc9n+/fsZOHAger0ek8lE\ndHQ0+fn5V6wzatQodu7cSfv27Xn//ffRaDSoVCrsdjsGg+Gqsrt27WqO/fSoUQOiUKtUbMk+Lrfc\nCdEK3dSvPUb/uiHXrbZaT4cjhMe5TD7MZjNGo9E5rdFosNvtzmUmk8m5LDAwELPZfMX8wMBAKioq\n0Ol0hIWFoSgKr776Kn369KFLly71lm1pQk0GBsa25WiJmcIT5z0djhDCzQw6DWMGdsBSbWdHrgy5\nLoTLp9oajUYslku9tB0OB1qttt5lFosFk8nknO/n54fFYiEoKAgAq9XKggULCAwM5MUXX7xqG5eX\nbUhoaABarcZlufBwk8sy7nL3zT3IKihl1/fF3BjfsVHreFP8v5Qvxw6+Hb8vx96SjR3UkU/3HGHj\n3qPcHN8BtVrl6ZCE8BiXyUdCQgJbtmxhwoQJ5OTkEBsb61wWFxfH66+/jtVqxWazUVhYSGxsLAkJ\nCWzbto2kpCQyMzMZNGgQiqLw2GOPMXToUGbPnn3F9rdt20ZcXJyzrCtnzri+bTU83ERpqfe0okSG\nGGgfFsD2nONMHt4ZU4C+wfLeFv8v4cuxg2/H35jYJTnxjOBAPTf1a0fmtyfJ/qGMQT3DPR2SEB7j\nMvkYP348O3bsYNq0aSiKwpIlS1i1ahXR0dGMGzeOlJQUkpOTURSFJ598EoPBwJw5c5g3bx4ZGRmE\nhoaybNkyNm3axN69e7HZbGzfvh2Ap556iunTpzNv3jymT5+OTqdj2bJlzb7TnqBSqbh5YAfSNv/A\nV9+d5PahMZ4OSQjhZrfeEE3mtyf5fO8RST5Eq6ZSfLAHZGN+lXrjr1dLdQ1PLd9BmMnAktnDUKmu\n3ezqjfE3li/HDr4dv7R8NI3G/v//Nd+V19d9y/7C0zyfMohuHYJ/TXhNoqV/z72ZL8ff2Nhd1TMy\nyJgbBfrpGNwznOIzVfKsByFaKRl0TAhJPtxuZFwUANv3S493IVqjXtEhxLQzkXWwlJKzVZ4ORwiP\nkOTDzXpGhxAR6s++/BIqq2XEUyFam7rHLnRCUeCLr496OhwhPEKSDzdTqVSMjIvEZnew54CMeCpE\nazS4VwRhQQa27z+BuarG0+EI4XaSfHjATf0iUatUbP/2hKdDEUJ4gFaj5pZBnbDVONiWc9zT4Qjh\ndpJ8eECoyUBctzb8dKqCI8W+2eNZCHF9Rg2Iwk+vYdO+Y9TYHZ4ORwi3kuTDQ0bGRQLS8VSI1irA\nT8vo+CjOWWzs+V4uwYrWRZIPD+nfrQ3BgXp2552ixi4PmhKiNbplUCfUKhWff31EHjopWhVJPjxE\nq1FzU//2WKrtZB0s9XQ4QggPaBPsx5DeERwvtZB3uNzT4QjhNpJ8eNCoi2N+fCuXXoRorWTQMdEa\nSfLhQe3CAojtFMKBojMy2JAQrVRMexO9okPI++mMdEAXrYYkHx42akBdx9Ov9sttt0K0VhdbPzbK\noGOilZDkw8MG9YzA36Dlq/0nqXXI7XZCtEb9u7Uhsk0Ae74v5kyF1dPhCNHsJPnwMINOw7C+7Thr\ntvFdoXQ4E6I1UqtUJA6JptahsClLWj9EyyfJhxcYPaCu42mmjHgqRKt1Y992BAXo2JZ9giqrPPdJ\ntGySfHiB6HYmYtqb2F94WppchWiAw+Fg0aJFTJ06lZSUFIqKiq5YvmLFCu666y7uv/9+tmzZAkB5\neTkzZ84kOTmZuXPnUlXlnZ27dVoNYxM6Umm185UMPihaOJfJh6uTPSMjg6SkJKZMmdKok728vJzE\nxESs1ro/soqiMHLkSFJSUkhJSWHZsmVNuX8+Y9SAKByKwo7vpNIR4lo2bdqEzWYjPT2dp59+mqVL\nlzqXFRQU8Mknn5CRkcFf//pX3nzzTaqqqnj77beZOHEia9eupU+fPqSnp3twDxo2JqEDOq2aL/Yd\nlT5gokVzmXw0dLKXlpayevVq0tLSWLlyJa+99ho2m+2aJ/v27duZOXMmpaWXBtU6cuQIffv2ZfXq\n1axevZqnn366GXbT+w3r0w69Ts32/SdwyEiHQtQrKyuLkSNHAhAfH09ubq5zWWFhIUOGDMFgMGAw\nGIiJiaGgoOCKdUaNGsXOnTs9EntjmAL0DO8fSdm5ar45WObpcIRoNi6Tj4ZO9v379zNw4ED0ej0m\nk4no6Gjy8/OvebKr1WpWrVpFSEiIcxt5eXkUFxeTkpLCrFmzOHToUJPuoK/wN2i5oVcEpWeryS86\n4+lwhPBKZrMZo9HonNZoNNjtdf0jevbsyb59+zCbzZw5c4bs7Gyqqqowm82YTCYAAgMDqajw7rE0\nbr2hEyrgsz0y5LpoubSuClzrZNdqtVec1FB3YpvN5mue7MOHD79q++Hh4cyePZvbb7+dffv28cwz\nz7B+/foGYwoNDUCr1bjcufBwk8sy3uSu0T3Y8d0p9uaXMvqGGJ+L/3K+HDv4dvy+HLsrRqMRi8Xi\nnHY4HGi1ddVYt27duP/++3nkkUeIiopiwIABhIaGOtfx8/PDYrEQFBTk8nMaW8dA0x/v8HATQ/q2\nZ0/eKUrNNfTt2qZJt//zz/JVvhw7+Hb8TRG7y+SjoZP958ssFgsmk+kXnez9+vVDo6k7yQcPHkxJ\nSQmKoqBSqa65zpkzlS53LDzcRGmpd//C+bk2gVoi2wSw87sTnDNbsVXZPB3Sr+KLx/5yvhx/Y2L3\n5UovISGBLVu2MGHCBHJycoiNjXUuKy8vx2KxkJaWRkVFBTNnzqRHjx4kJCSwbds2kpKSyMzMZNCg\nQS4/pzF1DDTfd2VMfBR78k6RvjGf390T1+Tbh5b/Pfdmvhx/Y2N3Vc+4vOySkJBAZmYmwFUne1xc\nHFlZWVitVioqKigsLCQ2NtZ5sgMuT/bly5fz97//HYD8/HwiIyMbTDxaMpVKxegBUdhrFbZ+c8zT\n4QjhdcaPH49er2fatGm88sorzJ8/n1WrVrF582ZCQ0M5dOgQ99xzD7NmzeLZZ59Fo9EwZ84cNmzY\nwLRp08jOzmbGjBme3g2XenQMpktkEDk/lHGqvHGJkBC+RKW4uKjocDhYvHgxBw8eRFEUlixZQmZm\nJtHR0YwbN46MjAzS09NRFIVHH32UxMREysrKmDdvHhaLhdDQUJYtW0ZAQIBzm2PHjuXTTz/FYDBw\n7tw5nnnmGSorK9FoNCxatIhu3bo1GHRjsy5fzCwrKm08tXwHUeFGFj802CcTMV899hf5cvwtveXD\nXRr7/785vyt7DxTz7kd53DywAw8k9mzy7bf077k38+X4m6rlw2Xy4Y1acvIB8M7/5fJ1fgkLUgbR\nvUOwp8P5xXz52INvxy/JR9PwhuSj1uFg/nu7OWex8afHbsIUoG/S7bf077k38+X43XbZRbjfqPgL\nI57myIinQrRWGrWa8YM7UWN3sCX7uKfDEaJJSfLhhXrHhNIuLIC9+cVUVsswy0K0ViPiIgkwaNmc\ndQxrTa2nwxGiyUjy4YXUKhWJw2Kw1TjYmSsjngrRWvkbtIxJ6EBFZY08+0m0KJJ8eKlbh8ag1ajY\n/M1xGfFUiFbs1hs6odep+WzPEWrsMuS6aBkk+fBSwUYDN/RqR3F5JQd+khFPhWitTAF6xgzswJkK\nqzz7SbQYknx4sXGDOgLwpYz5IUSrdtuQaLQaNf/ZXYS9Vlo/hO+T5MOLdY0KokukiZwfyyg7652P\nARdCNL9go4HRA6IoO1fN7rxiT4cjxHWT5MPLjU3oiKLAlhy51U6I1uz2YdFo1Co27PoJh0P6gQnf\nJsmHlxvSOwKjv47t356kxi632gnRWoUF+TEiLpLiM1XszZfWD+HbJPnwcjqthlEDojBX1bDn+xJP\nhyOE8KDbh8WgVqnYsLNI7oITPk2SDx8wZmAH1CoVG78+gg+Ohi+EaCIRIf7c2Lcdx8ss7MuXHyPC\nd0ny4QPaBPtxQ+8IjpVayD1c7ulwhBAeNHF4Z9QqFf+3/TC1DrnzRfgmST58xG1DogH4bM8RD0ci\nhPCkdqEBjIiL5FR5Jbtype+H8E2SfPiImPYmeseEcqDoDEWnfPNpiEKIpjFpeGe0GjUffXVYRj0V\nPkmSDx9y+9C61o9P9xR5OBIhhCeFBfkxZmAHTp+vlme+CJ/kMvlwOBwsWrSIqVOnkpKSQlHRlX/4\nMjIySEpKYsqUKWzZsgWA8vJyZs6cSXJyMnPnzqWq6tIAWeXl5SQmJmK1WgGorq7md7/7HcnJycya\nNYvycunTcC19u4TRMTyQffmlMuiYEK3cHTfGYNBp+GTnT/LEW+FzXCYfmzZtwmazkZ6eztNPP83S\npUudy0pLS1m9ejVpaWmsXLmS1157DZvNxttvv83EiRNZu3Ytffr0IT09HYDt27czc+ZMSktLndv4\n4IMPiI2NZe3atUyePJm33367GXazZVCpVCQOicahKHy2V/p+CNGaBQXqGX9DR85ZbPIIBuFzXCYf\nWVlZjBw5EoD4+Hhyc3Ody/bv38/AgQPR6/WYTCaio6PJz8+/Yp1Ro0axc+fOug9Tq1m1ahUhISH1\nbn/UqFHs2rWr6fauBRrapx1tg/3I/PYEZyqsng5HCOFBtw2JJsCg5T+7ijBX1Xg6HCEaTeuqgNls\nxmg0Oqc1Gg12ux2tVovZbMZkMjmXBQYGYjabr5gfGBhIRUVdB8nhw4fXu/36yjYkNDQArVbjslx4\nuMllGW92rfinJ/birYwctuSc4NGkODdH1Tgt9dj7Al+OXfwyAX46Jt7UmYwtP/LxjsMk3xLr6ZCE\naBSXyYfRaMRisTinHQ4HWq223mUWiwWTyeSc7+fnh8ViISgoqFHbd1X2ojNnKl2WCQ83UVrqu3eF\nNBR//5gQ2gb78dnuIsbERxFqMrg5uoa15GPv7RoTuyQnLcu4QR3Zmn2cLd8cZ2xCR9qHBXg6JCFc\ncnnZJSEhgczMTABycnKIjb2UWcfFxZGVlYXVaqWiooLCwkJiY2NJSEhg27ZtAGRmZjJo0KAGt9/Y\nsqKOVqNm4k2dsdc6+M9uufNFiNZMp1Vz35hu1DoU1m350dPhCNEoLpOP8ePHo9frmTZtGq+88grz\n589n1apVbN68mfDwcFJSUkhOTubBBx/kySefxGAwMGfOHDZs2MC0adPIzs5mxowZ19z+9OnT+eGH\nH5g+fTrp6ek8/vjjTbqDLdVN/drTNtiPbTnS90OI1i4hNpzYjsFk/1DGgaIzng5HCJdUig8+LKQx\nTeK+3HQOjYs/89sT/O3TfEbHR/Hgbb3cFJlrreHYeyu57NI0Gvv/35u+K4dPnucPf99HdISRRQ/d\ngFqtarC8N8X+S/ly7ODb8Tc2dlf1jAwy5sOG929PZJsAMr89wYkyi+sVhBAtVpfIIG7q154jJWa2\n5Rz3dDhCNEiSDx+mUau59+ZuKAp8uLXQ0+EIITzsvpu74W/Q8uG2Q5yz2DwdjhDXJMmHj4vv3pbY\nTiHk/FhGwRG51itEaxZsNJA0qitVVjsZX/7g6XCEuCZJPnycSqViypjuAGRs+RGH73XhEUI0oTED\nO9C5vYldecXS+VR4LUk+WoCuUUEM6R3B4ZMVfLX/pKfDEUJ4kFqtIiWxJypg9ecF8tRb4ZUk+Wgh\npozpjkGn4cOthTLMshCtXJfIIMYmdORUeSUf7zjs6XCEuIokHy1EWJAfd43ogrmqhvXbpPOpEK1d\n0uiutA324z+7izh88rynwxHiCpJ8tCC3DO5Ih/BAMnNOUHjinKfDEUJ4kL9By28m9EZR4P1PvqfG\nXuvpkIRwkuSjBdFq1KTc2hMF+Pun+XKtV4hWrndMKOMSOnLydCX/t10uvwjvIclHCxPbKYSb46M4\nVmqRa72ixXE4HCxatIipU6eSkpJCUdGVzzb661//SlJSEvfccw9ffPEFAIqiMHLkSFJSUkhJSWHZ\nsmWeCN1j7r25G+Ehfny29wj5cveL8BIun2orfM99Y7qTe7ic/+wuYmCPcLpGuX5SsBC+YNOmTdhs\nNtLT08nJyWHp0qW88847AJw/f55//OMfbNy4kaqqKiZPnsz48eM5cuQIffv25d133/Vw9J5h0GuY\ndWdflv7vN7z37zxemjmEoAC9p8MSrZy0fLRAl1/rXbnhe2w1cq1XtAxZWVmMHDkSgPj4eHJzc53L\n/P39iYqKoqqqiqqqKlSqumeb5OXlUVxcTEpKCrNmzeLQoUMeid2TuncI5p7RXTlntvH+J9/LeEDC\n4yT5aKF6x4QyblDdtd4PNstIh6JlMJvNGI1G57RGo8FutzunIyMjueOOO7j77rt54IEHAAgPD2f2\n7NmsXr2aRx99lGeeecbtcXuDxKHR9OsaRu6hcj7bc8TT4YhWTi67tGD33dyNg0fPsi3nBD07hTCs\nb3tPhyTEdTEajVgslx6i6HA40GrrqrHMzExKSkrYvHkzAA8//DAJCQn069cPjUYDwODBgykpKUFR\nFGfLSH1CQwPQajWNismXnhL83INDeGLZVv6ZeYgBPSOIj43wdEi/mi8d9/r4cvxNEbskHy2YXqdh\nzuR+vPS3r/n75wXEtDcR2SbQ02EJ8aslJCSwZcsWJkyYQE5ODrGxsc5lwcHB+Pn5odfrUalUmEwm\nzp8/z/LlywkJCWHWrFnk5+cTGRnZYOIBcOZMZaPi8cVHo//2rr78ce03LP3HPl5IGUS7sABPh/SL\n+eJxv5wvx9/Y2F0lKC6TD4fDweLFiykoKECv15OamkpMTIxzeUZGBmlpaWi1WubMmcOYMWMoLy/n\n97//PdXV1URERPDKK6/g7+9fb9mzZ8+SmJjorERuueUWHnzwQZc7JhqnfVgAD93Wi/c+zuPP/8rl\n+ZRB+Bsk5xS+afz48ezYsYNp06ahKApLlixh1apVREdHM27cOHbu3MmUKVNQq9UkJCQwfPhw+vfv\nzzPPPMO2bdvQaDS88sornt4Nj+reIZgHEnvx1/8c4M31+3k+ZTABflInCPdSKUrDPY82btzIl19+\nydKlS8nJyeG9995z9i4vLS1l5syZrF+/HqvVSnJyMuvXr+ePf/wjffr0ISkpiRUrVqDX67njjjvq\nLbtv3z42b97MwoULGx10Y7MuX80soenjX7vpIJv2HaN/1zY8cW9/NOrm6+4jx95zGhO7Lzf3uktj\n///78nfl411F/N+2Qvp2DuW/7huAVuM7XQB9+biDb8ffVC0fLr9tDfUu379/PwMHDkSv12MymYiO\njiY/P/+KdUaNGsXOnTuvWTY3N5e8vDxmzJjBE088QUlJicudEr/c1LHd6dc1jO8OnSb9yx89HY4Q\nwsMemtiXAd3akPfTGbkDRridy+Sjod7lZrMZk+lSdhMYGIjZbL5ifmBgIBUVFdcs27VrV5544gn+\n93//l1tuuYXU1NQm2zlxiUat5reT+hHVNpBN+46x8eujng5JCOFBGrWK307uR4+Owew9UMLaLw7i\noiFciCbj8kJfQ73Lf77MYrFgMpmc8/38/LBYLAQFBV2zbFxcHP7+/kDd9dw333zTZdCN7Ynu683L\nzRH/y4/exLNvbSdt8w+Etwnk1qExrlf6FeTYe44vxy7cy6DT8F/3xrF0zTd8+c1xDHoN947u5rJD\nrhDXy2Xy0VDv8ri4OF5//XWsVis2m43CwkJiY2NJSEhg27ZtJCUlkZmZyaBBg65Zdt68edx6661M\nmDCBXbt20bdvX5dBN6Ynui9fU4Pmi18NPDllAK+u+YblGTnUWGsY0rtdk36GHHvPkT4f4pcK8NPx\n1NR4Xl3zDZ/uPkJtrcLUsd0lARHNymWH04t3uxw8eNDZuzwzM9PZuzwjI4P09HQUReHRRx8lMTGR\nsrIy5s2bh8ViITQ0lGXLlhEQEFBv2aNHj7JgwQKgboTC1NRUIiIavvdcOpxev6JTFfzxg2+w2hz8\nZkIvhvePbLJty7H3HEk+mkZr6HD689jPmq38vw+yOXm6krEJHUgeH4vaSxMQXz7u4NvxN1WHU5fJ\nhzeS5KNpHDpxnv/JyMFSbSf5lh7cMrhTk2xXjr3nSPLRNFpj8gFw3mLjT2nZHCu1MLhXBI/c0Ru9\nrnGDrbmTLx938O343Xa3i2i5ukYFMe/+BIID9azd9APrtxVKj3chWrGgQD3PJicQ2zGYffkl/L+0\nbM5X2jwdlmiBJPlo5TqGG3luRgIRIf5s2FXEn//5HdU2u+sVhRAtktFfx9PTBjKsbzsKj58n9e/7\nKDrlm7/ShfeS5EPQLjSAFx4cTK/oELJ/KGPJ6m8oLm/c8NJCiJZHp1Uza2IfJg3vTNm5av57dRZb\ns4/LrbiiyUjyIYC6XztPTY1nTEIHjpWaWbzqa3Z8d1IqGyFaKZVKxeSRXZl7XxwGnZp/fF7Aex/n\nYa6q8XRoogWQ5EM4aTVqUm7tyaOT+qJWw8oNB3jv4zwq5JqvEK1WXLe2LP7NELpFBbH3QAkvvL+H\n7IOlng5L+DhJPsRVhvZpx0u/GUL3DnUjHz7/lz18tV9aQYRordoE+/HcjATuGd2Vyuoa3vrnd7z7\nUS7l56s9HZrwUZJ8iHq1DfFn3v0DmTa2OzV2B3/9zwH+uDabn06d93RoQggP0KjV3HFjZ178zRC6\nRNa1giz4y24+3nEYW02tp8MTPkaSD3FNGrWaW4dEk/rIUOK7t6Xg6Fle/ts+3v0ol5JGjDIrhGh5\nOrQN5PkHBvGbCb3w02v5v+2Hmb9iN5uzjlFjlyRENI7L4dWFaBPsxxP3xvH9T+Ws21rI3gMl7Msv\nZWifCG4fGkPHCKPrjQghWgy1SsXIuCgG94xgw64iNmUdZc0XB9mw6yduHxbDiP6R+Bvkz4u4Ns3i\nxYsXezqIX6qyER0gAwMNjSrnrbwx/vAQf0YNiCKqbSAnyix8X3SGLdnHOXzyPP4GLREh/qhUKq+M\n/Zfw5fgbE3tgoMFN0fiuxv7/b+nfFVd0WjV9OocxakAUqODgsbN8++NptmQf45zZRnioP0Z/XRNF\nfIkvH3fw7fgbG7urekZSU/GLqFUqhvRux+BeEewvPM2nu4vYX3ia/YWnCTUZGNE/kjtHd5cvlhCt\nSFCgniljunPb0Gi2Zh9na/ZxNmUdY1PWMWI7hTCsbztu6BVBoF/TJyLCN8nfCPGrqFUq4ru3Jb57\nW4pOVbDt2xPs+f4U/975E//e+RPR7YwM7hnB4F4RtA8L8HS4Qgg3CArQM2l4FyYMi+Gbg6VszT5O\n/pGzHDx6lrVfHKR/1zbEd29LXLc2BBulBa41k+RDXLeY9iYeaN+TqWO6s6+ghJzC0+QcLOVI8SH+\nmXmIiFB/+nYOo0/nMHrHhBAgv36EaNG0GjVDerdjSO92nD5XzZ4DxezKO0X2D2Vk/1AGQJdIE/27\ntqFndChdo4IweOED7ETzkeRDNBmDXsPw/pFMHhtL0dFycn4sI6uglAMX+oZsyT6OSgWdIox0iwqm\na1QQXaOCaBcW4LWP7hZCXJ82wX5MGBbDhGExnCqvZP+PZeT8WMYPx85x+GQF7PgJjVpFl8ggenQK\npkv7IKLbmwgP9kMl9UKLJcmHaBYBfjpu6hfJTf0isdc6OHzyPHmHy/m+6Aw/nazgSLGZLdnHAfA3\naOjQ1kiH8EA6tA2kQ7iRqDYBBAXqpfIRogVpHxZA+yHR3DokmsrqGgqO1l2SOXj0LIdOnOfH4+ec\nZQMMWqLbGekUYaJ9m4C6dcMCCDHqPbgHoqm4TD4cDgeLFy+moKAAvV5PamoqMTExzuUZGRmkpaWh\n1WqZM2cOY8aMoby8nN///vdUV1cTERHBK6+8gr+//y8qK1oOrUZNj44h9OgYwuSRYK91cLTEzKET\n5yk8cY6iUxVXVTwAep2a8BB/woP9aRviR3iIP2EmP0KMeoKNeoIDDei0MlSNEL4owE/HwB7hDOwR\nDkCV1c6hk+c5cqqCouIKiorN5B85S/6Rs1esZ9Bp6BBhJDhAR1iQH2FBBsJMl16DAvVSL/gAl8nH\npk2bsNlspKenk5OTw9KlS3nnnXcAKC0tZfXq1axfvx6r1UpycjLDhw/n7bffZuLEiSQlJbFixQrS\n09O54447Gl32oYceau79Fh6k1ajpEhlEl8ggxg3qCECN3cGp8kqOl5o5Xmbh5OlKys5WUXK2iuOl\nlmtuK9BPS7DRQHCgnkB/HYF+WgL8tAT61b0P9NM5pw16DQadBoNOjV6nQauRCkoIb+Fv0NK3cxh9\nO4c551VZ7Zwos3CqvJLiM5WcOl3JqfIqjpWYOdTAqKp+eg2mAB2mAD0m/wuvAToC/XX46zX4GbT4\n67X4GzT4XXy9ME+rUUmLqxu4TD6ysrIYOXIkAPHx8eTm5jqX7d+/n4EDB6LX69Hr9URHR5Ofn09W\nVhaPPvooAKNGjeK1116jU6dOjS4ryUfro9Oq6RRhpNPPBixTFAVLtZ3Ss1WUnq3iTIWVc2YbZy11\nr+csNs6ZrZwou3aCci1ajQqDToNedzEpqUtMAvz1OBwOtBo1Wo0KjVqNTqtCo1Gj06h9LTEmAAAI\naUlEQVTRaFQXXi9Mq1Wo1SrUKlCpVWhUF6dVqNR1dwapL5unVqtQ1zP/Ylm49KpS1T1dVHXhPZe9\nV6lUda8XCqpV0LatDPgmWg5/g5ZuHYLp1iH4ivlt2xo5dKScM+etlJ+vprzi0ut5i42KyhoqqmwU\nnaqg1vHLnkmlUoFeq0GnVaPTqtFfeNVpNZe9v/ADRq1Co1GhVtfVA5oL03XvL5unrqs/LtYVoSH+\nWMxWUNWd65fO8Qv1yMVz+7JpVHVDkl+5THVFXXBx+tK+1G23boLL3l+af7H8xYRL5fzPpbrl4nsV\nEBzSNHcvukw+zGYzRuOlCk2j0WC329FqtZjNZkwmk3NZYGAgZrP5ivmBgYFUVFT8orJCXKRSqTD6\n6zD66+gSGXTNcjV2B5XVNViq7VRW2zFX11wxbamuwWqrxVpTi63GgbWm9tI/Wy2W6hrKK6qx1Tjc\nuHdNb/Lobky6McZ1QSF8mEqlIihAT1CAnpj2pmuWUxSFKmstFVV1CUlldQ1V1lqqbHaqrbVUWe2X\n3tvsVFnt2OwOamoc2Oy11NgdVNtqOV9ZQ43dgb3Wt+uHptC1QzAvpAy67u24TD6MRiMWy6VflQ6H\nA61WW+8yi8WCyWRyzvfz88NisRAUFPSLyroSGhqAVuv6tqzw8Gt/KX2BL8fvq7ErikKtQ3FWNDV2\nB3a7g5raC6+Xzb84z17rwKEoOBx1/2ovvF4xT1FwOHDOr3U4rpi+WE65EIOiXHj9+bTCNebV/bob\n1i/SZ4+9EE1NpVIRcOFSbLvQ69+eQ6mrG2ouqwtqL5zztRfeO342feU/B7W1CgGBBs6dr0KpO5lx\nKFee044L5/QV0xdOfsdl57xy+fSFV8eFlh7F+Z8LZS/uhMJl7y/WMZcWKs51rlz/4vuEPu2v/0DS\niOQjISGBLVu2MGHCBHJycoiNjXUui4uL4/XXX8dqtWKz2SgsLCQ2NpaEhAS2bdtGUlISmZmZDBo0\n6BeVdeVMIx5qFh5u+v/bu5uQqNY4juPf45iVjkHRKmpu2suiQiKk1VSLkCJKKYre0IUGJkRlVDYT\nUuE0tKiVtQmkRbQZ3EetZLA3InphRqpNGGlEoUEzGGOe5y6iqe51arg3zsvw+6ycM8/i9zye58/f\nc8Y5vH/v36sofs7v5+zwNf/42PdG2QIqgIpyC8oDgHe/j6CYtVdzIvLflFlW/hbt/+HnGvmnsv+2\n+WhoaODOnTvs2bMHYwzxeJxr164RCoXYuHEjzc3N7Nu3D2MMnZ2dzJw5k46ODrq6ukgkEsydO5dL\nly5RWVlZ9FgREREpXZYx3y+4+EUxXZefO0vwd34/Zwd/59eVjz+j2N9/qZ8rXuXn7ODv/MVm/12d\n0f8aioiIiKPUfIiIiIijfHnbRURERPxLVz5ERETEUWo+RERExFFqPkRERMRRaj5ERETEUWo+RERE\nxFFqPkRERMRRv/16db+xbZuzZ8/y4sULKioqiMVi/PWXN5/yuX379vwTgxcuXMju3bs5f/48gUCA\ncDjMoUOHPDefp0+fcvHiRa5fv87w8DCnTp3CsiyWLVvGmTNnKCsr4/LlywwMDFBeXk40GqWurq7g\nWDfzDw0N0d7ezuLFiwHYu3cvW7Zs8Vz+yclJotEoIyMj5HI5Ojo6WLp0qe/WvlR4bU/+imqMakwx\nXKkxpsTcunXLdHV1GWOMefz4sTl48KDLiab3+fNn09TU9NOxxsZGMzw8bGzbNgcOHDDpdNpT87l6\n9arZunWr2bVrlzHGmPb2dnP//n1jjDHd3d3m9u3bJpVKmebmZmPbthkZGTE7duwoONbt/IlEwvT1\n9f00xov5+/v7TSwWM8YYMz4+bjZs2OC7tS8lXtqTv6IaoxpTLDdqTMn9+fPo0SPWrVsHwOrVq0ml\nUi4nmt7z58+ZmJigtbWVlpYWHj58SC6XIxQKYVkW4XCYu3fvemo+oVCI3t7e/Ot0Os3atWsBWL9+\nfT5vOBzGsiwWLFjA1NQUY2Nj0451O38qlWJgYID9+/cTjUbJZDKezL9582aOHDkCfH1sdiAQ8N3a\nlxIv7clfUY1RjSmWGzWm5JqPTCaTv8wIEAgE+PLli4uJpjdr1iza2tro6+vj3LlzRCIRZs+enX+/\nqqqKT58+eWo+mzZtorz8+506YwyWZQGF8347Pt1Yp/0zf11dHSdPnuTGjRssWrSIK1eueDJ/VVUV\nwWCQTCbD4cOHOXr0qO/WvpR4aU/+imqMakyx3KgxJdd8BINBstls/rVt2z+dDF5RU1NDY2MjlmVR\nU1NDdXU1Hz9+zL+fzWaZM2eOp+fz4z29Qnmz2SzV1dXTjnVbQ0MDq1atyv88NDTk2fxv376lpaWF\npqYmtm3b5vu19zMv78kfqca4f56rxhRWcs3HmjVrSCaTADx58oTly5e7nGh6/f39XLhwAYB3794x\nMTFBZWUlr1+/xhjD4OAg9fX1np7PihUrePDgAQDJZDKfd3BwENu2GR0dxbZt5s2bN+1Yt7W1tfHs\n2TMA7t27x8qVKz2Z/8OHD7S2tnLixAl27twJ+H/t/czLe/JHqjHun+eqMYWV3IPlvn1y++XLlxhj\niMfjLFmyxO1Y/5LL5YhEIoyOjmJZFsePH6esrIx4PM7U1BThcJjOzk7PzefNmzccO3aMRCLBq1ev\n6O7uZnJyktraWmKxGIFAgN7eXpLJJLZtE4lEqK+vLzjWzfzpdJqenh5mzJjB/Pnz6enpIRgMei5/\nLBbj5s2b1NbW5o+dPn2aWCzmq7UvFV7bk4WoxqjGFMuNGlNyzYeIiIh4W8nddhERERFvU/MhIiIi\njlLzISIiIo5S8yEiIiKOUvMhIiIijlLzISIiIo5S8yEiIiKOUvMhIiIijvobAu/OpZPfVxsAAAAA\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot with various axes scales\n", "plt.figure(1)\n", "\n", "for j in range(7):\n", " plt.subplot(221)\n", " plt.plot(delta_w_1_history[j])\n", " plt.title(\"delta_w_1_history\")\n", " \n", " plt.subplot(222)\n", " plt.plot(w_1_history[j])\n", " plt.title(\"w_1_history\")\n", " \n", "plt.subplot(223)\n", "plt.plot(delta_b_1_history)\n", "plt.title(\"delta_b_1_history\")\n", "\n", "plt.subplot(224)\n", "plt.plot(b_1_history)\n", "plt.title(\"b_1_history\")\n", "\n", "# Adjust the subplot layout, because the logit one may take more space\n", "# than usual, due to y-tick labels like \"1 - 10^{-3}\"\n", "# https://matplotlib.org/gallery/pyplots/pyplot_scales.html#sphx-glr-gallery-pyplots-pyplot-scales-py\n", "plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.5, wspace=0.35)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "w_1의 기울기가 0에 이르는 지점이 bias 학습이 함께 진행될때는 1,200 epoch 정도이나, \n", "bias 학습을 하지 않으면 1,500 epoch 이상을 넘어선다." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.15416284, 0.7400497 , 0.26331502, 0.53373939, 0.01457496,\n", " 0.91874701, 0.90071485],\n", " [-0.02574465, 0.98653238, 0.1224178 , 0.26903683, 0.62827046,\n", " 0.85547602, 0.98585922],\n", " [ 0.00225923, 0.52122603, 0.55203763, 0.48537741, 0.76813415,\n", " 0.16071675, 0.76456045],\n", " [ 0.0208098 , 0.13521018, 0.11627302, 0.30989758, 0.67145265,\n", " 0.47122978, 0.8161683 ],\n", " [ 0.2380425 , 0.75889812, 0.68973628, 0.3146834 , 0.35397664,\n", " 0.90074165, 0.74055676],\n", " [ 0.95018859, 0.76753812, 0.82497802, 0.40660907, 0.45135526,\n", " 0.40044423, 0.99541926]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nn.w_1" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-0.]\n", " [ 0.]]\n" ] } ], "source": [ "# Adam 학습\n", "nn.__init__()\n", "\n", "adam_w_1_history = []\n", "adam_b_1_history = []\n", "\n", "for _ in range(2000): \n", " nn.train(adam)\n", " \n", " adam_w_1_history.append(nn.w_1[1][0])\n", " adam_b_1_history.append(nn.b_1[1][0])\n", "\n", "nn.query()\n", "nn.result()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.15416284, 0.7400497 , 0.26331502, 0.53373939, 0.01457496,\n", " 0.91874701, 0.90071485],\n", " [-0.81311735, 1.80346289, -0.70925378, -0.56263475, 1.45257992,\n", " 0.09767795, 1.69928833],\n", " [ 0.00225923, 0.52122603, 0.55203763, 0.48537741, 0.76813415,\n", " 0.16071675, 0.76456045],\n", " [ 0.0208098 , 0.13521018, 0.11627302, 0.30989758, 0.67145265,\n", " 0.47122978, 0.8161683 ],\n", " [-0.54559241, 1.5682712 , -0.13245494, -0.50750782, 1.16977011,\n", " 0.14286756, 1.45978018],\n", " [ 0.3498036 , 1.36794471, 0.22462189, -0.19374706, 1.05175024,\n", " -0.19989192, 1.59567079]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nn.w_1" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.]\n", " [0.]]\n" ] } ], "source": [ "# Momentum 학습\n", "nn.__init__()\n", "\n", "momentum_w_1_history = []\n", "momentum_b_1_history = []\n", "\n", "for _ in range(2000): \n", " nn.train(momentum)\n", " \n", " momentum_w_1_history.append(nn.w_1[1][0])\n", " momentum_b_1_history.append(nn.b_1[1][0])\n", "\n", "nn.query()\n", "nn.result()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.15416284, 0.7400497 , 0.26331502, 0.53373939, 0.01457496,\n", " 0.91874701, 0.90071485],\n", " [-0.02605567, 0.98668788, 0.12234005, 0.26895908, 0.6283871 ,\n", " 0.85500949, 0.98655901],\n", " [ 0.00225923, 0.52122603, 0.55203763, 0.48537741, 0.76813415,\n", " 0.16071675, 0.76456045],\n", " [ 0.0208098 , 0.13521018, 0.11627302, 0.30989758, 0.67145265,\n", " 0.47122978, 0.8161683 ],\n", " [ 0.23701052, 0.75941411, 0.68947829, 0.31442541, 0.35436363,\n", " 0.89919368, 0.74287871],\n", " [ 0.94906447, 0.76810018, 0.82469699, 0.40632804, 0.45177681,\n", " 0.39875805, 0.99794853]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nn.w_1" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhQAAACxCAYAAACcNCSRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8FOW9P/DPzOxudrObC0mWO+ESDQqahoCI3KxiCoIo\nKhGCxsMptl4aOW05gqI9UEwRae2rB7z1VA6lvjQEsD+LWi8HL6RAUAgGDEpAQAj3kAvJbi57mef3\nxyZLltx3s2wm+bx95bWzM7Mz342Zh+88zzzPIwkhBIiIiIgCIIc6ACIiItI+JhREREQUMCYURERE\nFDAmFERERBQwJhREREQUMCYUREREFDAmFD3Ili1b8Nhjj7Vr34yMDHz00UdN1p8/fx5z585t9bPF\nxcV48skn/YqRiELryy+/xF133eXXZ1nG9Gy6UAdAwVdRUYE//vGP2Lp1K26++eaAjtWnTx9s3Lix\n1X3OnDmD48ePB3QeItIOljEEsIZCM2bNmoVdu3YBAD744APceOONqK2tBQA899xzeOutt1r87Icf\nfojevXtj8eLFHTrnp59+itmzZ+O2227D0qVLoaoqTp06hVGjRgEAjh49irlz5+K+++7Dvffei7fe\negtutxvPPfccTp48iQULFgAAtm3bhlmzZmHmzJlIT0/HgQMHAABr167FggULMHPmTCxatAhTp07F\njh07vOd/7rnnsGHDhg7FTESBq66uxsKFC3HPPfcgIyOjzX+8WcYQAECQJqxdu1asWrVKCCHEkiVL\nxIQJE8S//vUv4Xa7xYQJE8SFCxfaPMY777wjfv7zn7frfA899JB4/PHHhcvlEtXV1WLChAliz549\nori4WCQnJwshhHjmmWfEn//8ZyGEEBcuXBC//OUvhdvtFrt37xYzZswQQgjx/fffi/Hjx4uTJ08K\nIYTYtWuXmDBhgqiqqhJr1qwRU6dOFU6nUwghxPr168XChQuFEEJUVVWJcePGiUuXLnXgt0REgdq9\ne7e47rrrRH5+vhBCiI0bN4rZs2e367MsY3o21lBoRGpqKnJzcwEAe/fuxfz587Fz507s378f8fHx\nsFqtnX7O6dOnQ1EUmEwmDBkyBKWlpU1ieuONN5CZmYlPPvkEzz33HGTZ909q9+7dGDduHAYNGgQA\nuOWWWxATE4PCwkIAQHJyMnQ6T8vbfffdh127dqGsrAxbt27Fj3/8Y0RGRnb69yKi1g0fPhwpKSkA\n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\nE2MA1QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(1)\n", "\n", "plt.subplot(221)\n", "plt.plot(adam_w_1_history)\n", "plt.plot(w_1_history[0])\n", "plt.title(\"w_1_history\")\n", " \n", "plt.subplot(222)\n", "plt.plot(adam_b_1_history)\n", "plt.plot(b_1_history)\n", "plt.title(\"b_1_history\")\n", "\n", "plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.5, wspace=0.35)\n", "plt.show()\n", "\n", "# Adam의 학습 시간은 GD의 1/20 수준에 불과했다. 도달하는 값은 많이 다르다." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(1)\n", "\n", "plt.subplot(221)\n", "plt.plot(momentum_w_1_history)\n", "plt.plot(w_1_history[0])\n", "plt.title(\"w_1_history\")\n", " \n", "plt.subplot(222)\n", "plt.plot(momentum_b_1_history)\n", "plt.plot(b_1_history)\n", "plt.title(\"b_1_history\")\n", "\n", "plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.5, wspace=0.35)\n", "plt.show()\n", "\n", "# Momentum은 GD와 거의 비슷한 값에 도달하는데, 학습 시간은 1/12 수준에 불과했다." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(1)\n", "\n", "plt.subplot(221)\n", "plt.plot(momentum_w_1_history[:200])\n", "plt.plot(adam_w_1_history[:200])\n", "plt.title(\"w_1_history\")\n", " \n", "plt.subplot(222)\n", "plt.plot(momentum_b_1_history[:200])\n", "plt.plot(adam_b_1_history[:200])\n", "plt.title(\"b_1_history\")\n", "\n", "plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.5, wspace=0.35)\n", "plt.show()\n", "\n", "# Adam과 Momentum의 비교, 하락폭이 큰 쪽이 Adam 이다." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-0.00000018]\n", " [-0.00000102]]\n" ] } ], "source": [ "# Adam의 m, v 조회\n", "nn.__init__()\n", "\n", "adam_m_1_history = []\n", "adam_v_1_history = []\n", "adam_m_1_hat_history = []\n", "adam_v_1_hat_history = []\n", "update_parameters = []\n", "\n", "for _ in range(200): \n", " nn.train(adam)\n", " \n", " adam_m_1_history.append(nn.m[1][0]) # m_k_hat 기준과 동일하게 맞추려면 마지막 레이어인 5로 지정한다.\n", " adam_v_1_history.append(nn.v[1][0])\n", " adam_m_1_hat_history.append(nn.m_k_hat[5])\n", " adam_v_1_hat_history.append(nn.v_k_hat[5])\n", " update_parameters.append(nn.update_parameters[5])\n", "\n", "nn.query()\n", "nn.result()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(1)\n", "\n", "plt.subplot(221)\n", "plt.plot(adam_m_1_history)\n", "plt.title(\"adam_m_1_history\")\n", " \n", "plt.subplot(222)\n", "plt.plot(adam_v_1_history)\n", "plt.title(\"adam_v_1_history\")\n", "\n", "plt.subplot(223)\n", "plt.plot(adam_m_1_hat_history)\n", "plt.title(\"adam_m_1_hat_history\")\n", "\n", "plt.subplot(224)\n", "plt.plot(adam_v_1_hat_history)\n", "plt.title(\"adam_v_1_hat_history\")\n", "\n", "plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.5, wspace=0.35)\n", "plt.show()\n", "\n", "# Adam의 m, v 조회" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPkAAAC0CAYAAABWiYoiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGmdJREFUeJzt3X1YVHX+//HnMMONMIgiYrmGNylftSTxpptdc9Xyqyla\nufpTKMtsW/My82ZzScoyETW3Za1MW1uv6meamntdpdv+2r5W6EpppKZfNcws71GUG2HAYZhzPr8/\nkEkEBuJ2zuH9uC4vZ+acmfM+Ay8+5/bzsSilFEII0/Jr7gKEEI1LQi6EyUnIhTA5CbkQJichF8Lk\nJORCmJyE3EBiY2M5c+aM13kOHjzICy+80EQVNZ+pU6eSm5vb3GUYgoTcZH744QcuXLjQ3GU0uvT0\n9OYuwTBszV1AS7Fnzx6Sk5P55z//WeH5iBEjOHbsGJcuXSInJ4eePXuSkpKC3W7nm2++ITk5GYvF\nQp8+fdB1HQBd11myZAkHDhygqKgIpRSLFy+mY8eOvPbaaxQWFjJ//nyWLl3K559/zurVqyktLSUo\nKIjExERiY2O91jps2DDuvfdevvnmGwoLC3nsscdISEiodrn9+/fn2WefJT8/n9OnTzNkyBDGjx/P\nokWLKC4uJjs7m549e7JixQoCAwPp06cPU6ZMIS0tDYfDwbx58/jkk0/4/vvviYyM5M033yQ4OJjj\nx4+TkpJCfn4+mqYxefJkxo8fz/z58wF49NFHWbNmDX5+fixatIisrCxKS0sZPXo0Tz75JGfOnOGh\nhx7i5ptv5uzZs7zzzju8+eab7Nu3D39/fzp16sTSpUsJCQlp3B9+c1OiSezevVuNHj260vPXXntN\nDR48WF28eFFpmqbmzp2rli1bpkpKStSvf/1r9eWXXyqllNq2bZuKjo5Wp0+fVvv27VMzZ85UmqYp\npZT629/+pqZNm6aUUuof//iH+sMf/qCUUuqnn35ScXFxKjc3Vyml1Pfff69+85vfqKKiIq+1Dh06\nVC1YsEDpuq6ysrLUHXfcoTIzM70uNzExUT366KOez1i2bJn68MMPlVJKuVwuFRcXpz755BOllFLR\n0dHq3Xff9XxGbGysOn/+vNI0TT344INq69atqrS0VI0aNUodOnRIKaVUQUGBuu+++9T+/fs9n5GT\nk6OUUmry5Mnqs88+U0op5XQ61eTJk9XHH3+sTp8+raKjo1VGRoZSSqmMjAw1cuRIpeu6Ukqp5cuX\n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\namLskMvoKULUyNDp0K72CiP75EJUr07pcDqdzJw5k4SEBJ544glyc3OrnO/kyZOMGTPG8zw3N5ep\nU6eSkJDA7NmzuXLlSt2qvkrGJheiZo3S7zrAhx9+yJw5cyr8AVi1ahVxcXFs2LCB3r17s2nTprpX\nzs8tuRx4E6J6jdLvOkBYWBjvvfee1/d9+eWXdVm8h6fPdTnwJkS1GqXfdYChQ4dWes3hcNT4vl+i\nvMenVoH1H6RBCLNqlH7Xq1PeH3tQUFCt3lfT4AoREXZmTexL7H9F0i6sVa1q8DUtraN/X2DU2htt\ncIWqlPe7HhMTU2W/6zW9b9y4cbV6X20GV7itazjtwlqZsgdOX2XUusG4tTd5b63x8fEcO3aM+Ph4\nNm3axFNPPQWU9bt+8ODBat83ffp0Pv74YyZNmsT+/ft5+OGH67J4IcQvYPh+18G8f519lVHrBuPW\n3qL7XRdCeCchF8LkfHpzXQhRf9KSC2FyEnIhTE5CLoTJSciFMDkJuRAmJyEXwuQMe/uWrussXLiQ\no0ePEhAQwOLFi+ncuXNzl+XVgw8+iN1uB6BTp05MnDiRlJQUrFYrgwYN8lwe7CsOHDjAK6+8wrp1\n6zh58iTPPvssFouFHj168OKLL+Ln58fKlStJS0vDZrORlJRETExMc5cNVKz9yJEjTJs2jS5dugBl\nl2WPGjXKp2ovLS0lKSmJs2fP4nK5mD59Ot27d2+Y71wZ1L///W+VmJiolFJq//796sknn2zmirxz\nOp3q/vvvr/Da2LFj1cmTJ5Wu6+r3v/+9Onz4cDNVV9maNWtUXFycmjBhglJKqWnTpqndu3crpZRa\nsGCB+vTTT9WhQ4fU5MmTla7r6uzZs2rcuHHNWbLH9bVv3rxZrV27tsI8vlb7li1b1OLFi5VSSuXl\n5anf/va3DfadG3Zz/doOKPr27cuhQ4eauSLvMjMzuXLlClOnTuWRRx4hIyMDl8tFVFQUFouFQYMG\n1bsTjYYUFRXF66+/7nl++PBhbr/9duDnDj/27t3LoEGDsFgsdOzYEU3Tqu0KrCldX/uhQ4dIS0vj\noYceIikpCYfD4XO1jxw5klmzZgFlg4ZYrdYG+84NG3KHw+HZ9AWwWq243e5mrMi7oKAgHn/8cdau\nXctLL73E/PnzadXq53vgG6ITjYY0YsQIbLaf9+aUUliu9tJRXuv1PwNfWYfra4+JieFPf/oT69ev\n56abbuKNN97wudpDQkKw2+04HA6efvppZs+e3WDfuWFDXt4BRTld1yv8YH1N165dGTt2LBaLha5d\nuxIaGkp+fr5n+i/pfKM5+Pn9/KtSXuv1P4OioiJPzz++ZPjw4dx6662ex0eOHPHJ2rOysnjkkUe4\n//77GTNmTIN954YNeb9+/di5cycA3377LdHR0c1ckXdbtmxh2bJlAFy4cIErV64QHBzMqVOnUEqx\na9cuBgwY0MxVVq93797s2bMHgJ07dzJgwAD69evHrl270HWdc+fOoes64eHhzVxpZY8//rinn4Ov\nvvqKW265xedqv3TpElOnTmXevHmMHz8eaLjv3HebvhoMHz6c9PR0Jk2ahFKKJUuWNHdJXo0fP575\n8+cTHx+PxWJhyZIl+Pn58cwzz6BpGoMGDeK2225r7jKrlZiYyIIFC0hNTaVbt26MGDECq9XKgAED\nmDhxIrqu88ILLzR3mVVauHAhycnJ+Pv7ExERQXJyMna73adqf/PNNykoKGDVqlWe3o+fe+45Fi9e\nXO/vXO5CE8LkDLu5LoSoHQm5ECYnIRfC5CTkQpichFwIk5OQC2FyEnIhTE5CLoTJ/X/34EccLyof\n4QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.subplot(224)\n", "plt.plot(update_parameters)\n", "plt.title(\"update_parameters\")\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }