Skip to content

Instantly share code, notes, and snippets.

@dmeliza
Created January 29, 2015 15:41
Show Gist options
  • Save dmeliza/4a7304f29305061b8f53 to your computer and use it in GitHub Desktop.
Save dmeliza/4a7304f29305061b8f53 to your computer and use it in GitHub Desktop.
Learning models
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:a905b039fcac5aa3f055d6512113f7060d9baee4f585082816e9c5f2f2d1f571"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 47
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Learning Models\n",
"\n",
"Classical learning models predict what happens to the strength (V) of the association between CS and US on each trial. Let's build a learning model that can predict the following phenomena:\n",
"\n",
"- learning curve (defined by rate and asymptote)\n",
"- extinction\n",
"- blocking\n",
"- overshadowing\n",
"- inhibitory conditioning\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The simplest learning rule\n",
"\n",
"$V^{(n)} - V^{(n-1)} = \\Delta V = \\alpha \\lambda$\n",
"\n",
"- $\\alpha$ - the strength or *associability* of the CS\n",
"- $\\lambda$ - the strength of the US\n",
"\n",
"To see how this learning rule works, let's apply it iteratively:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V_0 = 0\n",
"alpha = 0.2\n",
"lmbda = 100\n",
"\n",
"print (alpha * lmbda)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"20.0\n"
]
}
],
"prompt_number": 48
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V = V_0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V, 'ok', hold=1)\n",
" V = V + alpha * lmbda\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 49,
"text": [
"<matplotlib.text.Text at 0x10df8e0b8>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x10de987f0>"
]
}
],
"prompt_number": 49
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adding an asymptote\n",
"\n",
"One major problem with the simple model is that it predicts a linear growth in the CR, whereas what we observe is an asymptote. In other words, learning rate *decreases* with training. Here's a second try:\n",
"\n",
"$\\Delta V = \\alpha (\\lambda - V)$\n",
"\n",
"And let's see how that looks:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V = V_0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V, 'ok', hold=1)\n",
" V = V + alpha * (lmbda - V)\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's play around with $\\alpha$ and $\\lambda$:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V = V_0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V, 'ok', hold=1)\n",
" V = V + alpha * (lmbda - V)\n",
"\n",
"alpha = 0.4 \n",
"V = V_0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V, 'or', hold=1)\n",
" V = V + alpha * (lmbda - V)\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Rescorla-Wagner\n",
"\n",
"To explain blocking, overshadowing, and inhibitory conditioning, we need to expand the model to deal with compound stimuli. One simple way of doing this is to assume that each component of a compound stimulus contributes independently to the CR:\n",
"\n",
"$V = \\Sigma_i V_i$\n",
"\n",
"But that the change in associative strength for stimulus $i$ is determined by the **total** $V$:\n",
"\n",
"$\\Delta V_i = \\alpha_i (\\lambda - V)$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V_1 = V_2 = 0\n",
"alpha_1 = 0.2\n",
"alpha_2 = 0.3\n",
"lmbda = 100\n",
"\n",
"print (\"Delta V_1 = %f\" % (alpha_1 * (lmbda - (V_1 + V_2))))\n",
"print (\"Delta V_2 = %f\" % (alpha_2 * (lmbda - (V_1 + V_2))))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Blocking\n",
"\n",
"Recall that the experimental animals were first trained on a single CS:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V_1 = V_2 = 0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V_1, 'or', trial, V_2, 'ob', hold=1)\n",
" V_1 = V_1 + alpha_1 * (lmbda - (V_1 + V_2))\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now they're trained on a compound CS. What value is $V_1$?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(\"V1 = %f, V2 = %f\" % (V_1, V_2))\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V_1, 'or', trial, V_2, 'ob', hold=1)\n",
" V_1 = V_1 + alpha_1 * (lmbda - (V_1 + V_2))\n",
" V_2 = V_2 + alpha_2 * (lmbda - (V_1 + V_2))\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")\n",
"\n",
"print(\"V1 = %f, V2 = %f\" % (V_1, V_2))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V_1 = V_2 = 0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V_1, 'or', trial, V_2, 'ob', trial, V_1 + V_2, 'ok', hold=1)\n",
" V_1 = V_1 + alpha_1 * (lmbda - (V_1 + V_2))\n",
" V_2 = V_2 + alpha_2 * (lmbda - (V_1 + V_2))\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")\n",
"\n",
"print(\"V1 = %f, V2 = %f\" % (V_1, V_2))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Overshadowing\n",
"\n",
"We can see overshadowing in the previous example for the control animals: the associative strength of $CS_1$ and $CS_2$ is less than the total associative strength that either one would reach if conditioned alone.\n",
"\n",
"What happens if $\\alpha_1 \\gg \\alpha_2$?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"alpha_1 = 0.9\n",
"alpha_2 = 0.1\n",
"V_1 = V_2 = 0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V_1, 'or', trial, V_2, 'ob', trial, V_1 + V_2, 'ok', hold=1)\n",
" V_1 = V_1 + alpha_1 * (lmbda - (V_1 + V_2))\n",
" V_2 = V_2 + alpha_2 * (lmbda - (V_1 + V_2))\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")\n",
"\n",
"print(\"V1 = %f, V2 = %f\" % (V_1, V_2))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Inhibitory conditioning\n",
"\n",
"Finally, let's consider the case where a CS is paired with the *absence* of a US:\n",
"\n",
"$\\Delta V_1 = \\alpha_1 (\\lambda - (V_1 + V_2))$\n",
"\n",
"$\\Delta V_2 = \\alpha_2 (0 - (V_1 + V_2))$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"alpha_1 = 0.2\n",
"alpha_2 = 0.2\n",
"V_1 = 100 \n",
"V_2 = 0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V_1, 'or', trial, V_2, 'ob', trial, V_1 + V_2, 'ok', hold=1)\n",
" V_1 = V_1 + alpha_1 * (lmbda - (V_1 + V_2))\n",
" V_2 = V_2 + alpha_2 * (0 - (V_1 + V_2))\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")\n",
"\n",
"print(\"V1 = %f, V2 = %f\" % (V_1, V_2))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Observe that $CS_2$ now has a negative associative strength. We can explain the results of a summation test by pairing $CS_2$ with a novel $CS_3$. We can explain the retardation test by comparing how long it takes to reach asymptote relative to controls"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"V_1 = 0\n",
"for trial in range(0, 20):\n",
" plt.plot(trial, V_1, 'or', trial, V_2, 'ob', hold=1)\n",
" V_1 = V_1 + alpha_1 * (lmbda - V_1)\n",
" V_2 = V_2 + alpha_2 * (lmbda - V_2)\n",
" \n",
"plt.xlabel(\"Trial\")\n",
"plt.ylabel(\"Associative Strength (V)\")\n",
"\n",
"print(\"V1 = %f, V2 = %f\" % (V_1, V_2))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment