{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "##
NYU CSCI-UA 9472 Artificial Intelligence
\n", " ###
Learning (Part II)
\n", "\n", "
This week we will review some of the unsupervised learning models. Starting with the A priori algorithm, we will see how one can predict the probability of having customers simultaneously purchasing particular items from a grocery store or super market. We will then implement K-means and K-medoid and study how to determine the optimal value for K through the elbow method. We will implement the main Hierarchical clustering algorithms. Finally we will apply those algorithms to image segmentation and community detection.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### Part I: Kernels and SVM\n", "\n", "\n", "##### Exercise 1.1. A linear classifier\n", "\n", "Consider the dataset given below. Start by learning a linear classifier for this dataset by minimizing the RSS criterion. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import scipy.io\n", "import matplotlib.pyplot as plt\n", "\n", "mat1 = scipy.io.loadmat('cluster_1.mat')['cluster_1']\n", "mat2 = scipy.io.loadmat('cluster_2.mat')['cluster_2']\n", "\n", "plt.scatter(mat1[:,0], mat1[:,1], c='b')\n", "plt.scatter(mat2[:,0], mat2[:,1], c='r')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# put your code here\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercise 1.2. The kernel trick\n", "\n", "From the linear classifier derive a kernel based classifier by\n", "\n", "- 1) Replacing the regression weight vector $\\beta$ by the linear combination $\\beta = \\sum_i \\lambda_i \\phi(\\bf x^{(i)})$ in the stochastic gradient updates\n", "\n", "\n", "- 2) writing down the updates in the $\\lambda_i$ (instead of the $\\beta$)\n", "\n", "\n", "- 3) replacing every occurence of $(\\bf x^{(i)})^T(\\bf x^{(j)})$ but the entry $K_{ij}$ of the kernel matrix $K(i,j) = \\exp(-\\|\\bf x^{(i)} - \\bf{x}^{(j)} \\|^2/\\sigma)$\n", "\n", "\n", "\n", "- Finally get the value of the $\\lambda_i$ by applying a sufficient number of updates in $\\lambda_i$ and derive the classifier as $y(\\bf x) = \\bf \\beta^T\\bf x = \\sum_{i}\\lambda_i (\\bf x^{(i)})^T(\\bf x)$ in which we substitute the kernel to get the final classifier as $y(\\bf x) = \\bf \\beta^T\\bf x = \\sum_{i}\\lambda_i K(\\bf x, \\bf x^{(i)})$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "### Part II: Clustering\n", "\n", "\n", "##### Exercise 1.1. General K means\n", "\n", "Consider the dataset given below. Implement the K means algorithm and run it on top of this dataset. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import make_blobs\n", "import matplotlib.pyplot as plt\n", "\n", "n_samples = 200\n", "random_state = 170\n", "X, y = make_blobs(n_samples=n_samples, centers = 4,random_state=random_state)\n", "\n", "plt.scatter(X[:,0], X[:,1])\n", "plt.show()\n", "\n", "\n", "def Kmeans(data, K):\n", " \n", " '''function should implement a simple K means clustering with random \n", " initilization of the centroids. K is the number of clusters'''\n", "\n", "\n", " return " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercise 1.2. The Elbow method\n", "\n", "Run your algorithm with a number of clusters $K=1,2,3,4,5,6,7,8,9$ and $10$. For each of those values, Compute the Within-Cluster-Sum of Squared Error (i.e. $E = \\sum_{\\mathcal{C}_k}\\sum_{i\\in \\mathcal{C}_k} (c_k - x_i)^2$) then plot this error as a function of $K$. What do you notice?\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercise 1.3. The importance of initialization\n", "\n", "Extend your implementation of K means from the previous exercise so that it takes an additional argument specifying the initialization. You should contain implementations of each of the following approaches\n", "\n", "- Random partitioning (the method starts from a random assignment of the points)\n", "- Forgy (The method picks $K$ feature vectors at random and assign the remaining points to the nearest centroid)\n", "- K means++ (see below)\n", "- MacQueen (see below)\n", "- Kauffman (see below)\n", "\n", "In the Macqueen Approach proposed by MacQueen (1967), one chooses K instances of the database (seeds) at random. We then assign, following the instance order, the rest of the instances to the cluster with nearest centroid. After each assignment a recalculation of the centroids has to be carried out\n", "\n", "In the Kauffman approach, we first select the most centrally located instance. Then for every non selected instance $x_i$ repeat the following steps:\n", " - For every non selected instance $x_j$ calculate $C_{ji} = \\max(D_j -d_{ji},0)$ where $d_{ji} = \\|x_i - x_j\\|$ and $D_j = \\min_{s} d_{sj}$. $s$ being one of the selected seeds\n", " - Calculate the gain of selecting $x_i$ as $\\sum_{j} C_{ji}$\n", "Select the not yet selected instance $x_i$ which maximizes $\\sum_{j} C_{ji}$. If there are $K$ selected seeds then stop. Otherwise go to step 2. \n", "\n", "In K means++, we choose a center uniformly at random among the points. For each point $x_i$ from $\\mathcal{D}$, compute the distance $D(x_i)$ between $x_i$ and the nearest centroid that has already been chosen. Choose a new point at random as the next center using a weighted probability distribution where a new point is chosen with probability proportional to $D^2(x_i)$. Repeat the steps until $K$ centers have been chosen.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def Kmeans(data, initialization):\n", " \n", " '''function should implement K means clustering for each of the \n", " initializations listed above'''\n", "\n", "\n", "\n", "\n", "\n", " return " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercise 1.4. Semisupervised: Constrained K means. \n", "\n", "Clustering is traditionally viewed as an unsupervised method for data analysis. In some cases however, information about the problem domain might be available in addition to the the data instances themselves. Within such a framework, one approach is to define so-called 'Must Link' and 'Cannot link'. The former referring to points that must be placed in the same cluster. The latter referring to points that cannot be placed in the same cluster. One can then extend K-means as follows\n", "\n", "1. Let $C_1, \\ldots C_K$ denote the initial cluster centers\n", "2. For each point $x_i$ in the dataset $\\mathcal{D}$, assign the point to the closest cluster $C_j$ such that the point does not violate any of the constraint. If no such cluster exist, return Failure\n", "3. For each cluster $C_j$, update its center by averaging al the points $d_j$ that have been assigned to it\n", "4. Iterate between (2) and (3) until convergence \n", "5. Return ${C_1, \\ldots C_K}$\n", "\n", "The constraint check can be carried out as follows. For every point $d_i$ in the dataset with closest cluster $C_j$, you need to check that for every $(d_i,d_k)$ in the set of all constraints, the constraint is satisfied. \n", "\n", "Apply this extension to the dataset below. setting as the 'Must link' a unique cluster for all the samples in consi and as 'Cannot link' a different cluster for the points in distinct consi, consj." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nA7arTfyg767SAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import scipy.io\n", "import matplotlib.pyplot as plt\n", "\n", "cluster1 = scipy.io.loadmat('cluster1.mat')['cluster1']\n", "cluster2 = scipy.io.loadmat('cluster2.mat')['cluster2']\n", "cluster3 = scipy.io.loadmat('cluster3.mat')['cluster3']\n", "\n", "cons1 = scipy.io.loadmat('cons1.mat')['cons1']\n", "cons2 = scipy.io.loadmat('cons2.mat')['cons2']\n", "cons3 = scipy.io.loadmat('cons3.mat')['cons3']\n", "\n", "\n", "plt.scatter(cons1[:,0], cons1[:,1])\n", "plt.scatter(cons2[:,0], cons2[:,1])\n", "plt.scatter(cons3[:,0], cons3[:,1])\n", "\n", "plt.scatter(cluster1[:,0], cluster1[:,1], c='m')\n", "plt.scatter(cluster2[:,0], cluster2[:,1], c='m')\n", "plt.scatter(cluster3[:,0], cluster3[:,1], c='m')\n", "\n", "plt.show()\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercise 1.5. Image segmentation\n", "\n", "K-means is commonly used in computer vision as a form of image segmentation. To each pixel of an image is associated its color described in RGB. The image to be segmented can then be represented as a set of points in a 3D data space. Consider the image below. By carefully initializing K means with the right number of clusters (and possibly merging subclusters), try to separate the parrot from the background. You might want to downsample the image" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "img = mpimg.imread('KmeansParrot.jpeg')\n", "imgplot = plt.imshow(img)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part II : Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that reinforcement learning relies on the interaction of the learning algorithm (which we call agent in this framework) and its environment by means of the actions the learner takes, which impact the environment and the rewards he received in return for his actions. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### IIa : Greedy approach and $\\varepsilon$-Greedy approaches\n", "\n", "##### Exercise I.1. Stationnary approach\n", "\n", "We will start by considering a simple k-armed bandit problem such as the one discussed in class. Here we take $k = 4$ and we take the reward to follow a Gaussian distribution with mean $mu_i$ and $\\sigma = 1$. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mu1 = 0 # put your choice for the value \n", "# (the mean of the distribution). We assume the distribution of the \n", "mu2 = 0\n", "mu3 = 0\n", "mu4 = 0\n", "\n", "sigma1 = 1\n", "sigma2 = 1\n", "sigma3 = 1\n", "sigma4 = 1\n", "\n", "\n", "\n", "\n", "maxIter = 100\n", "iter = 0\n", "\n", "while iter < maxIter:\n", " \n", " \n", " action = 0 # sample an action at random from 0 to 3\n", " \n", " reward = 0 # sample the reward according to the Gaussian distribution\n", " \n", " value = 0 # update the value \n", " \n", " \n", " iter +=1\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercise I.2. Non stationnary version\n", "\n", "Now code the non stationnary version of the k-bandit algorithm" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mu1 = 0 # put your choice for the value \n", "# (the mean of the distribution). We assume the distribution of the \n", "mu2 = 0\n", "mu3 = 0\n", "mu4 = 0\n", "\n", "sigma1 = 1\n", "sigma2 = 1\n", "sigma3 = 1\n", "sigma4 = 1\n", "\n", "\n", "\n", "\n", "maxIter = 100\n", "iter = 0\n", "\n", "while iter < maxIter:\n", " \n", " \n", " action = 0 # sample an action at random from 0 to 3\n", " \n", " reward = 0 # sample the reward according to the Gaussian distribution\n", " \n", " value = 0 # update the value \n", " \n", " \n", " iter +=1\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise II. Escape room\n", "\n", "\n", "In this exercise, we will tackle a simple reinforcement learning problem. Consider the map given below. There are 5 rooms + the garden. We would like to train an agent to get out of the house as quickly as possible. To set up the evironment, we will consider 6 possible state (the rooms in which the agent is located) and 6 possible actions (moving from one room to any other room). \n", "\n", "The Q-table can thus be encoded by a $6$ by $6$ matrix. We will consider three types of rewards. Impossible moves (example 1 to 4) will be penalized by $1$. possible moves will be associated to a $0$ reward. Finally any move leading to an escape (e.g. 2 to 6) will be rewarded by 100. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Map\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Question II.1\n", "\n", "As a first approach, we will just run a couple of pure exploration iterations. Just fill out the loop below and run a couple of " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "done = False \n", "\n", "while not done: \n", " \n", " \n", " '''complete the greedy steps by sampling an action at random and updating the state of the environement\n", " until the variable Done is not set to True. Set this variable to True when the agent is able to escape the house'''\n", " \n", " \n", " \n", " \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Question II.2\n", "\n", "Now that you can solve the greedy approach. We will start to exploit and we will do that through the use of a $Q$ table. In this case, as indicated in the statement of the exercise, the Q-table is 6x6. Train the agent by alternating between exploitation and exploration. \n", "\n", "Since we want to update the $Q$-table, we will now add a line of the form \n", "\n", "$$Q[s, a] \\leftarrow (1-\\alpha)Q[s,a] + \\alpha\\left(R[a] + \\gamma\\max_{a'}Q[s',a']\\right)$$\n", "\n", "When in the exploration framework, we will sample the action at random as in Question III.1. When in the exploitation framework however, we will simply choose the action as the one that maximizes the entry in the $Q$-table for the particular state at which we are. Hence we have $a^* = \\underset{a}{\\operatorname{argmax}} Q[s,a]$. \n", "\n", "\n", "Code this epsilon-greedy approach below. You can start $\\epsilon =0.8$ \n", "Take a sufficiently small learning rate (you can for example start with 0.5) and a relatively large discount factor $\\gamma=0.9$ (You can later change those values to see how they affec the learning)\n", "\n", "Once you are done with the algorithm, try a couple of different values for $\\epsilon$ and describe the evolution in the learning. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "done = False \n", "\n", "epsilon = 0\n", "gamma = 0\n", "alpha = 0\n", "\n", "for episode in range(NumEpisodes):\n", "\n", " done =False \n", " \n", " while not done: \n", " \n", " \n", " '''Draw a number at random from the uniform distribution between 0 and 1''' \n", " \n", " \n", " '''If the number is less then epsilon, explore if it is larger, exploit'''\n", " \n", " if randomDraw < epsilon:\n", " \n", " # exploration\n", " \n", " '''update the Q-table'''\n", " \n", " else:\n", " \n", " # exploitation\n", " \n", " '''update the Q-table'''\n", " \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "#### Exercise III.1. Gym Self Driving cab\n", "\n", "\n", "There are several libraries in python including RLLib, pybrain,... that can be used to code reinforcement learning approaches. When Starting, a good approach is to consider the [Gym toolkit](https://gym.openai.com/) from openAI. Gym is compatible with both Theano and TensorFlow and contains a collection of examples that can be used to illustrate most of the reinforcement learning frameworks. Install gym with \"pip install gym\" (you may need !pip install cmake 'gym[atari]') or use \n", "\n", "\"git clone https://github.com/openai/gym\"\n", "\n", "\"cd gym\"\n", "\n", "\"pip install -e .\"\n", "\n", "if you prefer to clone the git repository. \n", "\n", "\n", "(based on the [learndatasci](https://www.learndatasci.com/) tutorials)\n", "\n", "As a starting point, we will consider the [self driving cab](https://gym.openai.com/envs/Taxi-v2/) example. Use the lines below to display the map for this particular example. The objective in this exercise is to train the cab through RL in order to (1) Drop off the passenger at the right location (2) save as much time as possible by taking the shortest path from the pick up to the drop off location and (3) respect traffic rules. \n", "\n", "- The cab is represented by the yellow rectangle. It is free to move on a 5x 5 grid and its spatial state can thus be described by a dimension 25 vector. \n", "\n", "- Wherever it is, the cab has four possible destinations, the four positions 'R', 'Y' 'G' and 'B'. \n", "\n", "- We will further assume that the passengers can be picked up in any of the four locations R, G, Y and B. On top of those four locations, we also need to account for the framework in which the passenger is inside the cab. Any passenger position can thus be encoded by 5 binary variables.\n", "\n", "\n", "In this case, the state of the environment can thus be encoded by $5\\times 5 \\times 4 \\times 5$ binary variables. \n", "\n", "\n", "- Finally we need to encode the possible actions that the cab can take. At each location the cab can move in each of the four directions - east, west, north, south but it can also pick up or dropoff a passenger. We can thus encode the actions of the cab through 6 binary variables. \n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import gym\n", "\n", "env = gym.make(\"Taxi-v2\").env\n", "\n", "env.render()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__The cab is not supposed to cross the vertical bars which are representing wall and we will thus enforce this by setting the reward associated to impossible moves to -1__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gym lets us access the environement by means of the variable 'env'. The variable comes up with 3 methods. \n", "\n", "- env.reset\n", "- env.step (apply a step)\n", "- env.render (display the current state of the environment)\n", "\n", "You can also use env.action_space as well as env.observation_space to respectively access the set of actions and existing states of the environment. \n", "\n", "Use the first and third methods to reset and display the original state of your environment after resetting it." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "env.render(129)\n", "env.step(5)\n", "env.render()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The point of this first exercise is for the agent to learn a mapping from the existing states to the optimal actions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Step I. Interacting with and displaying the environment.__ \n", "\n", "Each state o fthe environment can either be encoded as a single number (between 0 and 499) or as a (5,5,5,4) tuple of the form (cab row, cab col, passenger index, direction). To move between the two, gym provides teh method 'encode' of the variable 'env'. Using the lines below, together with the render method discussed above, set and display a couple of environment states\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Step II. Taking actions based on rewards__ \n", "\n", "To each state of the environment is associated a Reward table which can be accessed through the line env.P[n] where n is the number encoding a particular state of the environment. Look at the reward tables of the states you rendered above. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The reward table has 5 rows (encoding the actions) and four columns of the form (probability, nextstate, reward, done). In this framework we don't consider any probability so this variable is always set to $1$. The last column indicates when the cab has droped a passenger at the right location. \n", "\n", "Each successful dropoff concludes one episode. \n", "\n", "\n", "#### Exercise III.1. \n", "\n", "Implement a full episode. That is we want an infinite loop that stops when the passenger has been droped. \n", "\n", "(hint: to sample an action you can use the method 'env.action_space.sample()'. Then note that env.step returns a four tuple of the form (state, reward, done, info) where 'done' indicates whether the passenger has been droped.)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "'''This script should run one episode in which the cab takes random actions \n", "until the passenger is droped at the right location'''\n", "\n", "import numpy as np\n", "\n", "done = False\n", "\n", "frames = []\n", "\n", "maxIter = 200\n", "num_iter = 0\n", "\n", "while not done: # change the condition for the loop to stop when the state \n", " \n", " \n", " # put your code here\n", " \n", " \n", " frames.append({\n", " 'frame': env.render(mode='ansi'),\n", " 'state': state,\n", " 'action': action,\n", " 'reward': reward\n", " }\n", " )\n", " \n", " num_iter+=1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Once you have stored all the frames, use the lines below to play the resulting movie." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from IPython.display import clear_output\n", "from time import sleep\n", "\n", "def print_frames(frames):\n", " for i, frame in enumerate(frames):\n", " clear_output(wait=True)\n", " print(frame['frame'].getvalue())\n", " sleep(.1)\n", " \n", "print_frames(frames)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise III.2. \n", "\n", "We will now see how one can exploit the previous experience of our agent to increase the rewards over time through Q-learning. In Q-learning the idea is to keep track of the actions that were beneficial by updating a mapping from any pair (environment state, action) to some number encoding the value of the pair. Q-values are updated following the equation \n", "\n", "\\begin{align}\n", "Q(\\text{state}, \\text{action}) &\\leftarrow (1-\\alpha) Q(\\text{state}, \\text{action}) \\\\\n", "&+ \\alpha (\\text{reward} + \\gamma \\max_a Q(\\text{next state}, \\text{all actions}))\\end{align}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That is we not only try to maximize the immediate reward but we also try to look for the action that will lead to the highest potential reward one step ahead. In the equation above, $\\alpha$ can be interpreted as a __learning rate__. $\\gamma$ which is known as the __discount factor__ indicates how much importance we want to give to the future rewards. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The __Q-table__ is a table with 500 rows corresponding to the 500 states and 6 columns encoding each of the 6 actions. We will use a numpy array of zero to encode this table. Finally in order for our learning algorithm to be efficient, we will alternate between exploitation (with probability epsilon) and exploitation with probability (1-epsilon). \n", "\n", "\n", "Extend the \"random cab\" episode from Exercise II.1. in order to account for the Q table. \n", "\n", "- Use the line 'next_state, reward, done, info = env.step(action)' to update the environment \n", "- Select the action either at random or according to the Q-table\n", "\n", "(Hint: to decide between exploration and exploitation, split the $[0,1]$ interval between a $[0,\\varepsilon]$ subinterval and a $[\\varepsilon,1]$ subinterval. Then draw a number uniformly at random from the $[0,1]$ interval. If the number falls in $[0,\\varepsilon]$ interval then pick an action at random. Otherwise, )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "'''This script should code one episode in which a random action is \n", "taken with probability epsilon and the action maximizing Q is taken with probability (1-epsilon)'''\n", "\n", "\n", "import random\n", "from IPython.display import clear_output\n", "\n", "# Hyperparameters\n", "alpha = 0.1\n", "gamma = 0.6\n", "epsilon = 0.1\n", "\n", "# For plotting metrics\n", "all_epochs = []\n", "all_penalties = []\n", "\n", "for i in range(1, 100001):\n", " state = env.reset()\n", "\n", " epochs, penalties, reward, = 0, 0, 0\n", " done = False\n", " \n", " while not done:\n", " \n", " # put your code here\n", " \n", " \n", " if i % 100 == 0:\n", " clear_output(wait=True)\n", " print(f\"Episode: {i}\")\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exercise III.3. Evaluating the agent \n", "\n", "Once you have learned the Q-table, evaluate the agent behavior by choosing at each the step and in each state, the action that maximizes the value of the Q-table and play the resulting movie using the " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# put your code here\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Part V : Value function approximation\n", "\n", "\n", "\n", "We consider the environment given above (arrows indicate a fixed policy). In this environment, just as in the Wumpus world, the action in every state are up, down, left and right. In this framework we will adopt a slightly different approach and we will assign reward to states rather than actions (the objective being to escape from the room).\n", "\n", "The two terminal states have rewards $+1$ and $-1$. All the other states have reward $-0.04$. We will add some difficulty to the problem by considering that the actions of the agent are unreliable. We will assume that each time the agent selects an action, this action is actually carried out with probability 80% while there is a 10% chance that the agent will perform the orthogonal alternatives (see Fig. below). This is equivalent to the $\\varepsilon$-greedy policy we used in the bandit framework except that we now use it on states rather than actions. \n", "\n", "In such a framework, we can either decide to learn the utility directly througha simple discounted running average\n", "\n", "$$U^\\pi(s) = \\mathbb{E}\\left[\\sum_{t=0}^\\infty \\gamma^tR(S_t)\\right]$$\n", "\n", "we can also rely on the Bellman equation and update our value estimates as \n", "\n", "$$U^\\pi(s)\\leftarrow U^{\\pi}(s) + \\alpha\\left[R(s) + \\gamma U^\\pi(s') - U^\\pi(s)\\right]$$\n", "\n", "Note that the reward above is the reward of the state we reach. Alternatively, when the state space is too large, we could decide to learn a parametric representation of the utility. In this case, we have \n", "\n", "$$\\hat{U}^\\pi(s) = \\theta_1 f_1 + \\theta_2 f_2 + ....$$\n", "\n", "where each $f_i(s)$ is a carefully chosen function of the state $s$. \n", "\n", "For the environment above, we could for example choose to parametrize our model as a function of the $(x, y)$ location of our agent. \n", "\n", "$$\\hat{U}_\\theta(x, y) = \\theta_0 + \\theta_1x + \\theta_2 y$$\n", "\n", "We can then update our parametric model by minimizing the oberved utility $u_j(s)$ after the $j^{th}$ trial and the prediction given by our parametric model $U_\\theta(s)$. If we choose to use the $\\ell_2$ loss,\n", "\n", "\\begin{align}\n", "\\ell(\\theta) = \\|\\hat{U}_\\theta(s) - u_j(s)\\|^2 \n", "\\end{align}\n", "\n", "we get the updates \n", "\n", "\\begin{align}\n", "\\theta_0 &\\leftarrow \\theta_0 + \\alpha(u_j(s) - \\hat{U}_\\theta(s))\\\\\n", "\\theta_1 &\\leftarrow \\theta_1 + \\alpha(u_j(s) - \\hat{U}_\\theta(s))x\\\\\n", "\\theta_2 &\\leftarrow \\theta_2 + \\alpha(u_j(s) - \\hat{U}_\\theta(s))y\n", "\\end{align}\n", "\n", "Implement each of the three approaches listed above. \n", "\n", "\n" ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }