{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path.append('../..')\n", "from hippocampus.environments import SimpleMDP, HexWaterMaze, TwoStepTask\n", "from hippocampus.experiments.reliability_in_twostep import CombinedAgent\n", "# TODO: do this on linear track " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from tqdm.notebook import tqdm\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "ag = CombinedAgent(env=SimpleMDP(5, reward_probability=.8))\n", "\n", "init_p_sr = .5\n", "ag.p_sr = init_p_sr\n", "\n", "ag.HPC.learning_rate =.01" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dae9808b1bb047199394955250c90b26", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, max=399.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "\n", "df = pd.DataFrame({})\n", "for ep in tqdm(range(1,400)):\n", " results = ag.one_episode()\n", " results['trial'] = ep \n", " df = df.append(results, ignore_index=True)\n", " ag.HPC.learning_rate *=.95" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Action1</th>\n", " <th>DLS reliability</th>\n", " <th>HPC reliability</th>\n", " <th>P(SR)</th>\n", " <th>Qvs</th>\n", " <th>RPE</th>\n", " <th>Reward</th>\n", " <th>SPE0</th>\n", " <th>SPE1</th>\n", " <th>SPE2</th>\n", " <th>StartState</th>\n", " <th>omega</th>\n", " <th>omega_dls</th>\n", " <th>trial</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>0.0</td>\n", " <td>0.000000</td>\n", " <td>0.498243</td>\n", " <td>0.666667</td>\n", " <td>[[0.022561646066606045, 0.025811816006898882],...</td>\n", " <td>1.000000</td>\n", " <td>1.0</td>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>-0.009500</td>\n", " <td>0.0</td>\n", " <td>[0.6633530998498768, 0.5483920786517998, 0.477...</td>\n", " <td>1.000000</td>\n", " <td>1.0</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>0.0</td>\n", " <td>0.006107</td>\n", " <td>0.547370</td>\n", " <td>0.749355</td>\n", " <td>[[0.04058395073055687, 0.060248956915999394], ...</td>\n", " <td>0.796448</td>\n", " <td>1.0</td>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>-0.009405</td>\n", " <td>0.0</td>\n", " <td>[0.5974361142281511, 0.49704715842377384, 0.43...</td>\n", " <td>0.993893</td>\n", " <td>2.0</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>0.0</td>\n", " <td>0.017100</td>\n", " <td>0.666473</td>\n", " <td>0.755606</td>\n", " <td>[[0.08548155436781643, 0.15174347191463325], [...</td>\n", " <td>0.627461</td>\n", " <td>1.0</td>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>-0.009311</td>\n", " <td>0.0</td>\n", " <td>[0.4772037669379944, 0.4228482607952359, 0.338...</td>\n", " <td>0.982900</td>\n", " <td>3.0</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>1.0</td>\n", " <td>0.031965</td>\n", " <td>0.687799</td>\n", " <td>0.771413</td>\n", " <td>[[0.08548735088500274, 0.19567688657430504], [...</td>\n", " <td>0.487392</td>\n", " <td>1.0</td>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>-0.009218</td>\n", " <td>0.0</td>\n", " <td>[0.42615305268415854, 0.40067758366540407, 0.3...</td>\n", " <td>0.968035</td>\n", " <td>4.0</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>0.0</td>\n", " <td>0.050122</td>\n", " <td>0.714651</td>\n", " <td>0.769122</td>\n", " <td>[[0.1262231251822318, 0.27866828742762323], [0...</td>\n", " <td>0.362783</td>\n", " <td>1.0</td>\n", " <td>0.0</td>\n", " <td>0.0</td>\n", " <td>-0.009126</td>\n", " <td>0.0</td>\n", " <td>[0.4002969186405008, 0.3743271738561978, 0.295...</td>\n", " <td>0.949878</td>\n", " <td>5.0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Action1 DLS reliability HPC reliability P(SR) \\\n", "0 0.0 0.000000 0.498243 0.666667 \n", "1 0.0 0.006107 0.547370 0.749355 \n", "2 0.0 0.017100 0.666473 0.755606 \n", "3 1.0 0.031965 0.687799 0.771413 \n", "4 0.0 0.050122 0.714651 0.769122 \n", "\n", " Qvs RPE Reward SPE0 \\\n", "0 [[0.022561646066606045, 0.025811816006898882],... 1.000000 1.0 0.0 \n", "1 [[0.04058395073055687, 0.060248956915999394], ... 0.796448 1.0 0.0 \n", "2 [[0.08548155436781643, 0.15174347191463325], [... 0.627461 1.0 0.0 \n", "3 [[0.08548735088500274, 0.19567688657430504], [... 0.487392 1.0 0.0 \n", "4 [[0.1262231251822318, 0.27866828742762323], [0... 0.362783 1.0 0.0 \n", "\n", " SPE1 SPE2 StartState \\\n", "0 0.0 -0.009500 0.0 \n", "1 0.0 -0.009405 0.0 \n", "2 0.0 -0.009311 0.0 \n", "3 0.0 -0.009218 0.0 \n", "4 0.0 -0.009126 0.0 \n", "\n", " omega omega_dls trial \n", "0 [0.6633530998498768, 0.5483920786517998, 0.477... 1.000000 1.0 \n", "1 [0.5974361142281511, 0.49704715842377384, 0.43... 0.993893 2.0 \n", "2 [0.4772037669379944, 0.4228482607952359, 0.338... 0.982900 3.0 \n", "3 [0.42615305268415854, 0.40067758366540407, 0.3... 0.968035 4.0 \n", "4 [0.4002969186405008, 0.3743271738561978, 0.295... 0.949878 5.0 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "dls_reliab = pd.concat([pd.Series([0.]), df['DLS reliability']])\n", "hpc_reliab = pd.concat([pd.Series([0.]), df['HPC reliability']])\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-10, 150)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "#df.plot(ax=ax, x='trial', y=['DLS reliability', 'HPC reliability'])\n", "ax.plot(dls_reliab)\n", "ax.plot(hpc_reliab)\n", "\n", "# Move left and bottom spines outward by 10 points\n", "ax.spines['left'].set_position(('outward', 10))\n", "ax.spines['bottom'].set_position(('outward', 10))\n", "# Hide the right and top spines\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "# Only show ticks on the left and bottom spines\n", "ax.yaxis.set_ticks_position('left')\n", "ax.xaxis.set_ticks_position('bottom')\n", "\n", "#plt.ylim([-.1,1])\n", "plt.xlim([-10,150])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x7fc796c89320>]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot([np.mean(df['omega'].iloc[i]) for i in range(len(df))])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#df.plot(x='trial', y='P(SR)')\n", "fig, ax = plt.subplots()\n", "ax.plot(pd.concat([pd.Series([init_p_sr]), df['P(SR)']]))\n", "\n", "# Move left and bottom spines outward by 10 points\n", "ax.spines['left'].set_position(('outward', 10))\n", "ax.spines['bottom'].set_position(('outward', 10))\n", "# Hide the right and top spines\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "# Only show ticks on the left and bottom spines\n", "ax.yaxis.set_ticks_position('left')\n", "ax.xaxis.set_ticks_position('bottom')\n", "\n", "\n", "plt.ylim([0,1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "n_agents = 10\n", "n_trials = 300\n", "dls_reliab_M = np.zeros((n_agents, n_trials))\n", "hpc_reliab_M = np.zeros((n_agents, n_trials))\n", "psr_M = np.zeros((n_agents, n_trials))\n", "\n", "for ia in tqdm(range(n_agents)):\n", "\n", " ag = CombinedAgent(env=SimpleMDP(5, reward_probability=.8))\n", "\n", " init_p_sr = .5\n", " ag.p_sr = init_p_sr\n", " ag.HPC.learning_rate=.01\n", " df = pd.DataFrame({})\n", " for ep in tqdm(range(1, n_trials),leave=False):\n", " results = ag.one_episode()\n", " results['trial'] = ep \n", " df = df.append(results, ignore_index=True)\n", "\n", " dls_reliab_M[ia,:] = pd.concat([pd.Series([0.]), df['DLS reliability']])\n", " hpc_reliab_M[ia,:] = pd.concat([pd.Series([0.]), df['HPC reliability']])\n", " psr_M[ia,:] = pd.concat([pd.Series([init_p_sr]), df['P(SR)']])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots()\n", "#df.plot(ax=ax, x='trial', y=['DLS reliability', 'HPC reliability'])\n", "ax.plot(dls_reliab_M.mean(axis=0))\n", "ax.plot(hpc_reliab_M.mean(axis=0))\n", "plt.ylim([-.1,1])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots()\n", "#df.plot(ax=ax, x='trial', y=['DLS reliability', 'HPC reliability'])\n", "ax.plot(dls_reliab_M.mean(axis=0))\n", "ax.plot(hpc_reliab_M.mean(axis=0))\n", "plt.ylim([-.1,1])\n", "plt.xlim([-10,150])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "omegas = df['omega']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "alloms = np.concatenate(np.array(df['omega'])).reshape(ag.env.nr_states, -1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(alloms[4])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df.plot(x='trial', y='omega_dls')\n", "plt.ylim([0,1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "omg0 = [df['omega'][i][0] for i in range(272)]\n", "omg1 = [df['omega'][i][1] for i in range(272)]\n", "omg2 = [df['omega'][i][2] for i in range(272)]\n", "omg3 = [df['omega'][i][3] for i in range(272)]\n", "omg4 = [df['omega'][i][4] for i in range(272)]\n", "omg5 = [df['omega'][i][5] for i in range(272)]\n", "omg6 = [df['omega'][i][6] for i in range(272)]\n", "omg7 = [df['omega'][i][7] for i in range(272)]\n", "omg8 = [df['omega'][i][8] for i in range(272)]\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(omg0)\n", "plt.plot(omg1)\n", "plt.plot(omg2)\n", "plt.plot(omg3)\n", "plt.plot(omg4)\n", "plt.plot(omg5)\n", "plt.plot(omg6)\n", "plt.plot(omg7)\n", "plt.plot(omg8)\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "alloms = np.concatenate([omg0, omg1, omg2, omg3, omg4, omg5, omg6, omg7, omg8]).reshape( -1, len(omg0))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(alloms.mean(axis=0))\n", "plt.plot(df['omega_dls'])\n", "plt.ylim([0,1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.8" } }, "nbformat": 4, "nbformat_minor": 2 }