{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Jacobian vs. Perturbation\n", "Visualizing and Understanding Atari Agents | Sam Greydanus | 2017 | MIT License" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from __future__ import print_function\n", "import warnings ; warnings.filterwarnings('ignore') # mute warnings, live dangerously\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib as mpl ; mpl.use(\"Agg\")\n", "import matplotlib.animation as manimation\n", "\n", "import torch\n", "from torch.autograd import Variable\n", "import torch.nn.functional as F\n", "\n", "import gym, os, sys, time, argparse\n", "sys.path.append('..')\n", "from visualize_atari import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load agent, build environment, play an episode" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "set up dir variables and environment...\n", "initialize agent and try to load saved weights...\n", "\tloaded model: breakout-v0/model.40.tar\n", "get a rollout of the policy...\n", "\tstep # 2771, reward 354\r" ] } ], "source": [ "env_name = 'Breakout-v0'\n", "save_dir = 'figures/'\n", "\n", "print(\"set up dir variables and environment...\")\n", "load_dir = '{}/'.format(env_name.lower())\n", "meta = get_env_meta(env_name)\n", "env = gym.make(env_name) ; env.seed(1)\n", "\n", "print(\"initialize agent and try to load saved weights...\")\n", "model = NNPolicy(channels=1, num_actions=env.action_space.n)\n", "_ = model.try_load(load_dir, checkpoint='*.tar') ; torch.manual_seed(1)\n", "\n", "print(\"get a rollout of the policy...\")\n", "history = rollout(model, env, max_ep_len=3e3)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAALYAAADpCAYAAACJKM0mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABE1JREFUeJzt3CFvJHUcgOFZOE34AA0YFArZnESt4DNs+ACoShQKWYVC\nkROED3CiOYG8VKLweEJCQxCILupMAzu7ndnu7NvnsTszO23e/Hb23+msttvtADXvnfoE4BiETZKw\nSRI2ScImSdgkCZskYZMkbJJeHLLxarXyZ0pObrvdrsa2MbFJEjZJwibpoGvspbm+vj54n6urq0nH\nGNv/4evHNvX8j+HUv5NhMLGJOuuJ/dB/TYaxiTY2TR7zqXBKp5iOS2Rik5Sa2Esw9RPi3N9/KUxs\nkkzsmU1ddZn6fg+d23eEuZjYJKUm9hKm01OfwxJ+5iUysUlaHfJcEXf3sQTu7uPZOuga++Li4tms\ng7JM+36nMLFJEjZJwiZJ2CQJmyRhkyRskoRNkrBJEjZJwiZJ2CQJmyRhkzTrv4a5pZU5zPHvbiY2\nScImSdgkCZskYZMkbJKETZKwSRI2ScImSdgkCZskYZMkbJKETZKwSRI2ScImSdgkCZskYZMkbJKE\nTZKwSRI2SbM+Cep2vZ7zcDxTb2c4holNkrBJEjZJwiZJ2CTNuipy/8ndztdffrf7++7br17OeTo8\nYyY2ScImSdgkCZskYZM066rIHx/8PWn/sVWT119/tvP1L779ZfQ9xo5Bg4lNkrBJEjZJwiZJ2CTN\nuiqyz6rELq9efbr7+Jtpxx+G8XMcO4e6zebX0W3Gfkf7HGOX6+vNpP2HwcQmStgkCZskYZMkbJJm\nXRWZauq36Tn8eP/RqU/hqG6+vNn5+vqH8WfDbDa7j7EEJjZJwiZJ2CQJmyRhk7SoVZElGFs1GPP5\n+nbS/j/fXE7af6p/fvpmj62sisBJCJskYZMkbJKETZJVkZmdelVjqnM//3dMbJKETZKwSRI2ScIm\nSdgkCZskYZMkbJKETZKwSRI2ScImSdgkCZskYZMkbJKETZKwSRI2ScIm6ezCvl2vh9v1+FP3ed7O\nLmzYh7BJEjZJZ/ckqMub5T+bmdMzsUkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGT\nJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknY\nJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGyShE2SsEkS\nNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJAmbJGGTJGySXhyy8Z/v3w+vP/zrUW90u14/ar93\nLm9uJu3P+Xj55s3/vvb93d1exzCxSRI2ScIm6aBr7ClcI/OUTGySnmxiw77m+HRfbbfb/Tderfbf\nGI5ku92uxrZxKUKSsEkSNknCJknYJAmbJGGTJGyShE2SsEkSNknCJknYJB162+rvwzD8dowTgT19\nvM9GB922CufCpQhJwiZJ2CQJmyRhkyRskoRNkrBJEjZJ/wKmIouHa8DD6wAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = plt.figure(figsize=[3,3*1.3])\n", "# frame_ix = 1404\n", "frame_ix=1307\n", "plt.imshow(history['ins'][frame_ix])\n", "for a in f.axes: a.get_xaxis().set_visible(False) ; a.get_yaxis().set_visible(False)\n", "plt.show(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get Jacobian saliency map" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def jacobian(model, layer, top_dh, X):\n", " global top_h_ ; top_h_ = None\n", " def hook_top_h(m, i, o): global top_h_ ; top_h_ = o.clone()\n", " hook1 = layer.register_forward_hook(hook_top_h)\n", " _ = model(X) # do a forward pass so the forward hooks can be called\n", "\n", " # backprop positive signal\n", " torch.autograd.backward(top_h_, top_dh.clone(), retain_variables=True) # backward hooks are called here\n", " hook1.remove()\n", " return X[0].grad.data.clone().numpy(), X[0].data.clone().numpy()\n", "\n", "# derivative is simply the output policy distribution\n", "top_dh_actor = torch.Tensor(history['logits'][frame_ix]).view(1,-1)\n", "top_dh_critic = torch.Tensor(history['values'][frame_ix]).view(1,-1).fill_(1)\n", "\n", "# get input\n", "tens_state = torch.Tensor(prepro(history['ins'][frame_ix]))\n", "state = Variable(tens_state.unsqueeze(0), requires_grad=True)\n", "hx = Variable(torch.Tensor(history['hx'][frame_ix-1]).view(1,-1))\n", "cx = Variable(torch.Tensor(history['cx'][frame_ix-1]).view(1,-1))\n", "X = (state, (hx, cx))\n", "\n", "actor_jacobian, _ = jacobian(model, model.actor_linear, top_dh_actor, X)\n", "\n", "state.grad.mul_(0) ; X = (state, (hx, cx))\n", "critic_jacobian, _ = jacobian(model, model.critic_linear, top_dh_critic, X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get perturbation saliency map" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "radius = 5\n", "density = 5\n", "\n", "actor_saliency = score_frame(model, history, frame_ix, radius, density, interp_func=occlude, mode='actor')\n", "critic_saliency = score_frame(model, history, frame_ix, radius, density, interp_func=occlude, mode='critic')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# upsample jacobian saliencies\n", "frame = history['ins'][frame_ix].squeeze().copy()\n", "frame = saliency_on_atari_frame((actor_jacobian**2).squeeze(), frame, fudge_factor=1, channel=2, sigma=0)\n", "jacobian_map = saliency_on_atari_frame((critic_jacobian**2).squeeze(), frame, fudge_factor=15, channel=0, sigma=0)\n", "\n", "# upsample perturbation saliencies\n", "frame = history['ins'][frame_ix].squeeze().copy()\n", "frame = saliency_on_atari_frame(actor_saliency, frame, fudge_factor=200, channel=2)\n", "perturbation_map = saliency_on_atari_frame(critic_saliency, frame, fudge_factor=100, channel=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot side-by-side" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = plt.figure(figsize=[11, 5*1.3], dpi=75)\n", "\n", "plt.subplot(1,2,1)\n", "plt.imshow(jacobian_map)\n", "plt.title('Jacobian', fontsize=30)\n", "\n", "plt.subplot(1,2,2)\n", "plt.imshow(perturbation_map)\n", "plt.title('Ours', fontsize=30)\n", "\n", "for a in f.axes: a.get_xaxis().set_visible(False) ; a.get_yaxis().set_visible(False)\n", "plt.show() #; f.savefig('./figures/jacobian-vs-perturb.png', bbox_inches='tight')" ] }, { "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.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }