## Description

Bandit algorithms [100 points] For this assignment, you will carry out some experimentation with bandit algorithms, in order to help you understand what we discussed in class, and to get used to the way in which we will run experiments for other assignments as well. You should submit a notebook with your code, results and explanations. 1. [5 points] Write a small simulator for a Bernoulli bandit with k arms. The probability of success pi for each arm i ∈ {1, …k} should be provided as an input. The bandit should have a function called ”sample” which takes as input the index of an action and provides a reward sample. Recall that a Bernoulli bandit outputs either 1 or 0, drawn from a binomial distribution of parameter pk. Test your code with 3 arms of parameters q∗ = [0.5, , 0.5 − δ, 0.5 − 2δ, with δ = 0.1. Generate and save a set of 50 samples for each action. For the test, plot one graph for each action, containing the reward values obtained over the 100 draws, the empirical mean of the values, and the true q∗ for each arm. Each graph will have an x-axis that goes to 50, two horizontal lines (true value and estimated value) and a set of points of value 0 and 1. 2. [5 points] Code the rule for estimating action values discussed in lecture 2, with a fixed learning rate α, in a function called update, and using the incremental computation of the mean presented in lecture 2, in a function called updateAvg. Using the previous data, plot for each action a graph showing the estimated q value as a function of the number of samples, using averaging as well as α = 0.01 and α = 0.1, and the true value. Each graph should have two curves and a horizontal line. 3. [10 points] Repeat the above experiment 100 times, starting with action value estimates of 0. Each run will still contain 100 samples for each action. Plot the same graph as above, but where the curves have the average and standard error over the 100 runs. Explain in 1-2 sentences what you observe. Which of the α values is better? How do they compare to averaging? If you wanted to optimize further, in what range of α would you look for better values? 4. [20 points] Code the -greedy algorithm discussed in class, with averaging updates, with provided as an input. You will run 100 independent runs, each consisting of 1000 time steps. Plot the following graphs: (a) The reward received over time, averaged at each time step over the 100 independent runs (with no smoothing over the time steps), and the standard error over the 100 runs (b) The fraction of runs (out of 100) in which the first action (which truly is best) is also estimated best based on the action values 1 (c) The instantaneous regret lt (as discussed in lecture 3) (averaged over the 100 runs) (d) The total regret Lt up to time step t (as discussed in lecture 3) (averaged over the 100 runs) Generate this set of graphs, for the following values of : 0, 1/8, 1/4, 1/2, 1. Explain what you observe in the graphs and discuss the effect of you observe. 5. [5 points] For = 1/4 and = 1/8, plot the same graphs for α = 0.1, α = 0.01, α = 0.001 and averaging. Explain in 2 sentences what you observe. 6. [20 points] Write a function that implements the UCB algorithm discussed in lecture 2. Set c = 2. Plot the same graphs as above for α = 0.1, α = 0.01, α = 0.001 and averaging. Explain briefly the behavior you observe. 7. [20 points] Write a function that implements the Thompson sampling to be discussed in lecture 4. Plot the same graphs as above for α = 0.1, α = 0.01, α = 0.001 and averaging. Explain briefly the behavior you observe. 8. [5 points] For each of the algorithms, pick the best hyper-parameter combination you have observed (explain how you decided what ”best” means). Plot together the curves for this setting. Comment on the relative behavior of the different algorithms. 9. [10 points] Let us now consider a non-stationary problem. Let δ = 0.1 and imagine that after 500 time steps, the parameter of actions 2 and 3 become 0.5 + δ and 0.5 + 2δ respectively. Run for each of the three algorithms a fixed value of α = 0.1 and the averaging value estimation. For use values 1/4 and 1/8. Using these values, plot only the reward graph as above (you should have 2 lines for -greedy, one for UCB and one for Thompson sampling, for each learning rate setting). Explain what you see in the graph. Based on these results, which algorithm is best suited to cope with non-stationarity? 2