{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Recurrent Neural Networks in Theano\n", "\n", "Credits: Forked from [summerschool2015](https://github.com/mila-udem/summerschool2015) by mila-udem\n", "\n", "First, we import some dependencies:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "from synthetic import mackey_glass\n", "import matplotlib.pyplot as plt\n", "import theano\n", "import theano.tensor as T\n", "import numpy\n", "\n", "floatX = theano.config.floatX" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now define a class that uses `scan` to initialize an RNN and apply it to a sequence of data vectors. The constructor initializes the shared variables after which the instance can be called on a symbolic variable to construct an RNN graph. Note that this class only handles the computation of the hidden layer activations. We'll define a set of output weights later." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class SimpleRNN(object):\n", " def __init__(self, input_dim, recurrent_dim):\n", " w_xh = numpy.random.normal(0, .01, (input_dim, recurrent_dim))\n", " w_hh = numpy.random.normal(0, .02, (recurrent_dim, recurrent_dim))\n", " self.w_xh = theano.shared(numpy.asarray(w_xh, dtype=floatX), name='w_xh')\n", " self.w_hh = theano.shared(numpy.asarray(w_hh, dtype=floatX), name='w_hh')\n", " self.b_h = theano.shared(numpy.zeros((recurrent_dim,), dtype=floatX), name='b_h')\n", " self.parameters = [self.w_xh, self.w_hh, self.b_h]\n", " \n", " def _step(self, input_t, previous):\n", " return T.tanh(T.dot(previous, self.w_hh) + input_t)\n", " \n", " def __call__(self, x):\n", " x_w_xh = T.dot(x, self.w_xh) + self.b_h \n", " result, updates = theano.scan(self._step,\n", " sequences=[x_w_xh],\n", " outputs_info=[T.zeros_like(self.b_h)])\n", " return result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For visualization purposes and to keep the optimization time managable, we will train the RNN on a short synthetic chaotic time series. Let's first have a look at the data:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = numpy.asarray(mackey_glass(2000)[0], dtype=floatX)\n", "plt.plot(data)\n", "plt.show()\n", "data_train = data[:1500]\n", "data_val = data[1500:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To train an RNN model on this sequences, we need to generate a theano graph that computes the cost and its gradient. In this case, the task will be to predict the next time step and the error objective will be the mean squared error (MSE). We also need to define shared variables for the output weights. Finally, we also add a regularization term to the cost." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "w_ho_np = numpy.random.normal(0, .01, (15, 1))\n", "w_ho = theano.shared(numpy.asarray(w_ho_np, dtype=floatX), name='w_ho')\n", "b_o = theano.shared(numpy.zeros((1,), dtype=floatX), name='b_o')\n", "\n", "x = T.matrix('x')\n", "my_rnn = SimpleRNN(1, 15)\n", "hidden = my_rnn(x)\n", "prediction = T.dot(hidden, w_ho) + b_o\n", "parameters = my_rnn.parameters + [w_ho, b_o]\n", "l2 = sum((p**2).sum() for p in parameters)\n", "mse = T.mean((prediction[:-1] - x[1:])**2)\n", "cost = mse + .0001 * l2\n", "gradient = T.grad(cost, wrt=parameters)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now compile the function that will update the parameters of the model using gradient descent. " ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lr = .3\n", "updates = [(par, par - lr * gra) for par, gra in zip(parameters, gradient)] \n", "update_model = theano.function([x], cost, updates=updates)\n", "get_cost = theano.function([x], mse)\n", "predict = theano.function([x], prediction)\n", "get_hidden = theano.function([x], hidden)\n", "get_gradient = theano.function([x], gradient)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now train the network by supplying this function with our data and calling it repeatedly." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 0: train mse: 0.0515556260943 validation mse: 0.0469637289643\n", "Epoch 100: train mse: 0.0407442860305 validation mse: 0.0401079840958\n", "Epoch 200: train mse: 0.00225670542568 validation mse: 0.00203324528411\n", "Epoch 300: train mse: 0.00185390282422 validation mse: 0.00163305236492\n", "Epoch 400: train mse: 0.00161687470973 validation mse: 0.00139373319689\n", "Epoch 500: train mse: 0.00145859015174 validation mse: 0.00123134546448\n", "Epoch 600: train mse: 0.00134439510293 validation mse: 0.00111229927279\n", "Epoch 700: train mse: 0.00125755299814 validation mse: 0.00102029775735\n", "Epoch 800: train mse: 0.0011889107991 validation mse: 0.000946390733588\n", "Epoch 900: train mse: 0.00113300536759 validation mse: 0.000885214598384\n", "Epoch 1000: train mse: 0.00108635553624 validation mse: 0.000833337020595\n" ] } ], "source": [ "for i in range(1001):\n", " mse_train = update_model(data_train)\n", " \n", " if i % 100 == 0:\n", " mse_val = get_cost(data_val)\n", " print 'Epoch {}: train mse: {} validation mse: {}'.format(i, mse_train, mse_val)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since we're only looking at a very small toy problem here, the model probably already memorized the train data quite well. Let's find out by plotting the predictions of the network:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict = theano.function([x], prediction)\n", "prediction_np = predict(data)\n", "plt.plot(data[1:], label='data')\n", "plt.plot(prediction_np, label='prediction')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Small scale optimizations of this type often benefit from more advanced second order methods. The following block defines some functions that allow you to experiment with off-the-shelf optimization routines. In this case we used BFGS." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Desired error not necessarily achieved due to precision loss.\n", " Current function value: 0.000218\n", " Iterations: 5\n", " Function evaluations: 31\n", " Gradient evaluations: 19\n", "train mse: 0.000217512235395 validation mse: 0.00018158860621\n" ] } ], "source": [ "def vector_to_params(v):\n", " return_list = []\n", " offset = 0\n", " # note the global variable here\n", " for par in parameters:\n", " par_size = numpy.product(par.get_value().shape)\n", " return_list.append(v[offset:offset+par_size].reshape(par.get_value().shape))\n", " offset += par_size\n", " return return_list\n", " \n", " \n", "def set_params(values):\n", " for parameter, value in zip(parameters, values):\n", " parameter.set_value(numpy.asarray(value, dtype=floatX))\n", " \n", " \n", "def f_obj(x):\n", " values = vector_to_params(x)\n", " set_params(values)\n", " return get_cost(data_train)\n", " \n", " \n", "def f_prime(x):\n", " values = vector_to_params(x)\n", " set_params(values)\n", " grad = get_gradient(data_train)\n", " return numpy.asarray(numpy.concatenate([var.flatten() for var in grad]), dtype='float64')\n", " \n", " \n", "from scipy.optimize import fmin_bfgs\n", "x0 = numpy.asarray(numpy.concatenate([p.get_value().flatten() for p in parameters]), dtype='float64')\n", "result = fmin_bfgs(f_obj, x0, f_prime)\n", "\n", "print 'train mse: {} validation mse: {}'.format(get_cost(data_train), get_cost(data_val))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Generating sequences\n", "Predicting a single step ahead is a relatively easy task. It would be more intresting to see if the network actually learned how to generate multiple time steps such that it can continue the sequence.\n", "Write code that generates the next 1000 examples after processing the train sequence." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_t = T.vector()\n", "h_p = T.vector()\n", "preactivation = T.dot(x_t, my_rnn.w_xh) + my_rnn.b_h\n", "h_t = my_rnn._step(preactivation, h_p)\n", "o_t = T.dot(h_t, w_ho) + b_o\n", "\n", "single_step = theano.function([x_t, h_p], [o_t, h_t])\n", "\n", "def generate(single_step, x_t, h_p, n_steps):\n", " output = numpy.zeros((n_steps, 1))\n", " for output_t in output:\n", " x_t, h_p = single_step(x_t, h_p)\n", " output_t[:] = x_t\n", " return output\n", "\n", "\n", "output = predict(data_train)\n", "hidden = get_hidden(data_train)\n", "\n", "output = generate(single_step, output[-1], hidden[-1], n_steps=200)\n", "plt.plot(output)\n", "plt.plot(data_val[:200])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "#Things to Try\n", "The quality of the generated sequence is probably not very good. Let's try to improve on it. Things to consider are:\n", "* The initial weight values\n", "* Using L2/L1 regularization\n", "* Using weight noise\n", "* The number of hidden units\n", "* The non-linearity\n", "* Adding direct connections between the input and the output" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }