From 4a0be85073247062517d29c3e68147b0a53258e7 Mon Sep 17 00:00:00 2001 From: glibesyck Date: Wed, 3 Jul 2024 19:30:46 +0300 Subject: [PATCH 1/3] W2D5 review --- tutorials/W2D5_Mysteries/W2D5_Intro.ipynb | 63 +- tutorials/W2D5_Mysteries/W2D5_Outro.ipynb | 48 +- tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb | 934 +++++++----------- tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb | 134 ++- tutorials/materials.yml | 10 +- 5 files changed, 563 insertions(+), 626 deletions(-) diff --git a/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb b/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb index 33e0335e5..4a8fb4018 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb @@ -24,8 +24,6 @@ "execution": {} }, "source": [ - "# Introduction to Consciousness and Ethics\n", - "\n", "**Week 2, Day 5: Mysteries**\n", "\n", "**By Neuromatch Academy**\n", @@ -33,19 +31,59 @@ "__Content creators:__ Megan Peters, Joseph LeDoux, Matthias Michel, Daniel Dennett" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck datatops --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_Intro\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "For this day, the prerequisites are your sincere inner-child curiosity, flexibility in collaborative discussion, and willingness to discover intriguing ideas! Be prepared to actively participate in the activities as the quality of the insights you will get from this day crucially depends on the joint interaction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Video" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": { "cellView": "form", - "execution": {}, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ - "# @title Video\n", + "# @title Intro Video\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -90,6 +128,16 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_intro_video\")" + ] + }, { "cell_type": "markdown", "metadata": { @@ -105,20 +153,19 @@ "execution_count": null, "metadata": { "cellView": "form", - "execution": {}, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ - "# @markdown\n", + "# @title Intro Video Slides\n", "\n", "from IPython.display import IFrame\n", "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"fsxe9\"\n", + "link_id = \"v7ber\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -155,7 +202,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.19" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb b/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb index bb7926d96..120376bfc 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb @@ -21,16 +21,47 @@ "# Outro\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck datatops --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_Outro\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Video" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @title Video\n", + "# @title Outro Video\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -88,18 +119,17 @@ "cell_type": "code", "execution_count": null, "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @markdown\n", + "# @title Outro Video Slides\n", "\n", "from IPython.display import IFrame\n", "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"yabgm\"\n", + "link_id = \"98qfs\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -113,7 +143,7 @@ "execution": {} }, "source": [ - "# Daily survey\n", + "## Daily survey\n", "\n", "Don't forget to complete your reflections and content check in the daily survey! Please be patient after logging in as there is a small delay before you will be redirected to the survey.\n", "\n", @@ -149,7 +179,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.19" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb b/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb index 8da773e27..d839c7df0 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb @@ -46,11 +46,11 @@ "\n", "By the end of this tutorial, participants will be able to:\n", "\n", - "1. Understand and distinguish various aspects of consciousness including the hard problem of consciousness, the difference between phenomenal consciousness and access consciousness, as well as the distinctions between consciousness and sentience or intelligence\n", + "1. Understand and distinguish various aspects of consciousness including the hard problem of consciousness, the difference between phenomenal consciousness and access consciousness, as well as the distinctions between consciousness and sentience or intelligence.\n", "\n", - "2. Explore core frameworks for analyzing consciousness, including diagnostic criteria, and will compare objective probabilities with subjective credences\n", + "2. Explore core frameworks for analyzing consciousness, including diagnostic criteria, and will compare objective probabilities with subjective credences.\n", "\n", - "3. Explore reductionist theories of consciousness, such as Global Workspace Theory (GWT), theories of metacognition, and Higher-Order Thought (HOT) theories\n" + "3. Explore reductionist theories of consciousness, such as Global Workspace Theory (GWT), theories of metacognition, and Higher-Order Thought (HOT) theories.\n" ] }, { @@ -58,8 +58,7 @@ "execution_count": null, "id": "fcc40c2d-9810-4865-879b-1fda92120827", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -70,7 +69,7 @@ "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"624ps\"\n", + "link_id = \"s3py5\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -90,23 +89,12 @@ "\n" ] }, - { - "cell_type": "markdown", - "id": "96754119-d114-4bb8-a842-be4dc11eab83", - "metadata": { - "execution": {} - }, - "source": [ - "## Install and import feedback gadget\n" - ] - }, { "cell_type": "code", "execution_count": null, "id": "4762c382-3622-4178-8e19-da783bac0a57", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -117,12 +105,12 @@ "from vibecheck import DatatopsContentReviewContainer\n", "def content_review(notebook_section: str):\n", " return DatatopsContentReviewContainer(\n", - " \"\", # No text prompt - leave this as is\n", + " \"\", # No text prompt\n", " notebook_section,\n", " {\n", - " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", - " \"name\": \"sciencematch_sm\", # change the name of the course : neuromatch_dl, climatematch_ct, etc\n", - " \"user_key\": \"y1x3mpx5\",\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", " },\n", " ).render()\n", "\n", @@ -134,8 +122,7 @@ "execution_count": null, "id": "299b676d-d8de-41ad-80c6-3516e25f0fba", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -201,23 +188,12 @@ " import torch_optimizer as optim2" ] }, - { - "cell_type": "markdown", - "id": "049a9bb3-1798-4c12-8647-8f7940d8566a", - "metadata": { - "execution": {} - }, - "source": [ - "## Figure Settings\n" - ] - }, { "cell_type": "code", "execution_count": null, "id": "0960e64d-fe33-4276-8da0-e450e2649bcc", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -231,28 +207,16 @@ "plt.style.use(\"https://raw.githubusercontent.com/NeuromatchAcademy/course-content/main/nma.mplstyle\")" ] }, - { - "cell_type": "markdown", - "id": "bf86fa3e-45c0-44a2-b293-8cdfe429a1c3", - "metadata": { - "execution": {} - }, - "source": [ - "## Helper functions" - ] - }, { "cell_type": "code", "execution_count": null, "id": "391a44b6-acc3-48a6-99c1-810425a73a14", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "#@title Helper functions\n", - "# @markdown\n", + "# @title Helper functions\n", "\n", "mse_loss = nn.BCELoss(size_average = False)\n", "\n", @@ -348,8 +312,6 @@ "\n", "\n", " def forward(self, x):\n", - "\n", - "\n", " \"\"\"\n", " Defines the forward pass through the network.\n", "\n", @@ -364,7 +326,6 @@ "\n", " return h1 , h2\n", "\n", - "\n", "def initialize_global():\n", " global Input_Size_1, Hidden_Size_1, Output_Size_1, Input_Size_2\n", " global num_units, patterns_number\n", @@ -725,23 +686,12 @@ " return patterns, targets" ] }, - { - "cell_type": "markdown", - "id": "2babe7d9-4683-42f9-97c5-6d79e7267cff", - "metadata": { - "execution": {} - }, - "source": [ - "## Plotting Functions" - ] - }, { "cell_type": "code", "execution_count": null, "id": "e51d683a-d65e-4395-ae17-a3b77715e44a", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -843,34 +793,35 @@ " Parameters:\n", " - patterns_tensor: A tensor containing signals, where each signal is expected to have multiple units.\n", " \"\"\"\n", + " with plt.xkcd():\n", "\n", - " # Calculate the maximum value of units for each signal within the patterns tensor\n", - " max_values_of_units = patterns_tensor.max(dim=1).values.cpu().numpy() # Ensure it's on CPU and in NumPy format for plotting\n", - "\n", - " # Determine the binary indicators based on the max value being greater than 0.5\n", - " binary_indicators = (max_values_of_units > 0.5).astype(int)\n", - "\n", - " # Create a figure with 2 subplots (2 rows, 1 column)\n", - " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", - "\n", - " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", - "\n", - " # First subplot for the maximum values of each signal\n", - " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", - " axs[0].set_xlabel('Pattern Number')\n", - " axs[0].set_ylabel('Max Value of Signal Units')\n", - " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", - " axs[0].grid(True)\n", - "\n", - " # Second subplot for the binary indicators\n", - " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", - " axs[1].set_xlabel('Pattern Number')\n", - " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", - " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", - " axs[1].grid(True)\n", - "\n", - " plt.tight_layout()\n", - " plt.show()\n", + " # Calculate the maximum value of units for each signal within the patterns tensor\n", + " max_values_of_units = patterns_tensor.max(dim=1).values.cpu().numpy() # Ensure it's on CPU and in NumPy format for plotting\n", + " \n", + " # Determine the binary indicators based on the max value being greater than 0.5\n", + " binary_indicators = (max_values_of_units > 0.5).astype(int)\n", + " \n", + " # Create a figure with 2 subplots (2 rows, 1 column)\n", + " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", + " \n", + " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", + " \n", + " # First subplot for the maximum values of each signal\n", + " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", + " axs[0].set_xlabel('Pattern Number')\n", + " axs[0].set_ylabel('Max Value of Signal Units')\n", + " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", + " axs[0].grid(True)\n", + " \n", + " # Second subplot for the binary indicators\n", + " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", + " axs[1].set_xlabel('Pattern Number')\n", + " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", + " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", + " axs[1].grid(True)\n", + " \n", + " plt.tight_layout()\n", + " plt.show()\n", "\n", "\n", "def perform_quadratic_regression(epoch_list, values):\n", @@ -952,10 +903,6 @@ " plt.show()\n", " plt.close(fig)\n", "\n", - "\n", - "\n", - "\n", - "\n", "# Function to configure the training environment and load the models\n", "def config_training(first_order_network, second_order_network, hidden, factor, gelu):\n", " \"\"\"\n", @@ -1013,16 +960,11 @@ "execution_count": null, "id": "79f79032-091e-4f19-88b6-7fb797a1cc31", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @title Set device (GPU or CPU). Execute `set_device()`\n", - "# especially if torch modules used.\n", - "# @markdown\n", - "\n", - "# inform the user if the notebook uses GPU or CPU.\n", + "# @title Set device (GPU or CPU)\n", "\n", "def set_device():\n", " \"\"\"\n", @@ -1046,16 +988,6 @@ " return device" ] }, - { - "cell_type": "markdown", - "id": "4c4c7da1-9990-458d-9ef8-c5584ea51aa0", - "metadata": { - "execution": {} - }, - "source": [ - "Guillaume is going to give us an overview about Global Neuronal Workspace and how it relates to HOT..." - ] - }, { "cell_type": "markdown", "id": "2ef4a1ee-afa6-4e4a-9cc6-081d802e43de", @@ -1063,6 +995,7 @@ "execution": {} }, "source": [ + "---\n", "# Section 1: Global Neuronal Workspace" ] }, @@ -1081,8 +1014,7 @@ "execution_count": null, "id": "2a2fb610-9241-41f2-bb3e-3f17c53e03b2", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1136,8 +1068,7 @@ "execution_count": null, "id": "5e11fdaa-9f35-4c7f-8b4e-04a18b116a7c", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1150,8 +1081,7 @@ "execution_count": null, "id": "4f93739f-0ec5-40c2-83ec-42c4d0fc14ae", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1191,7 +1121,7 @@ " tab_contents.append(out)\n", " return tab_contents\n", "\n", - "video_ids = [('Youtube', 'wVcGJxU_wyU')]\n", + "video_ids = [('Youtube', 'wVcGJxU_wyU'), ('Bilibili', 'BV1Vs421u73a')]\n", "tab_contents = display_videos(video_ids, W=854, H=480)\n", "tabs = widgets.Tab()\n", "tabs.children = tab_contents\n", @@ -1205,8 +1135,7 @@ "execution_count": null, "id": "eb524bc5-be37-4d9d-81b7-4e95d5cfa6c2", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1221,6 +1150,7 @@ "execution": {} }, "source": [ + "---\n", "## Section 1a: Modularity Of The Mind" ] }, @@ -1229,8 +1159,7 @@ "execution_count": null, "id": "f52e2c29-7eca-4c8e-bd37-f6bc6391c06c", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1284,8 +1213,7 @@ "execution_count": null, "id": "889b300f-90d7-4c1d-9825-e3789bbacf0c", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1322,7 +1250,7 @@ "2. The RIM units are mostly independent, meaning that they do not share weights or hidden states.\n", "3. The RIM units can communicate with each other through an attention mechanism.\n", "\n", - "#### Selecting the input\n", + "**Selecting the input**\n", "\n", "Each RIM unit gets activated and updated when the input is pertinent to it. Using key-value attention, the queries originate from the RIMs, while the keys and values are derived from the current input. The key-value attention mechanisms enable dynamic selection of which variable instance (i.e., which entity or object) will serve as input to each RIM mechanism:\n", "\n", @@ -1391,8 +1319,7 @@ "execution_count": null, "id": "4ae3e1d3-7be8-460b-ad89-17c96274cb2c", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1437,16 +1364,6 @@ " print(f\"{model_key} model already exists. No download needed.\")" ] }, - { - "cell_type": "markdown", - "id": "0e85190a-f57e-41c8-8d4a-3ddc658ae045", - "metadata": { - "execution": {} - }, - "source": [ - "### RIMs" - ] - }, { "cell_type": "markdown", "id": "33bb7131-c719-47de-98bf-9cfdb59f1abc", @@ -1454,6 +1371,8 @@ "execution": {} }, "source": [ + "**Training RIMs**\n", + "\n", "RIMs are motivated by the hypothesis that generalization performance can benefit from modules that only activate on relevant parts of the sequence. To measure RIMs' ability to perform tasks out-of-distribution, we consider the task of classifying MNIST digits as sequences of pixels (Sequential MNIST) and assess generalization to images of resolutions different from those seen during training. The intuition is that the RIMs model should have distinct subsets of the RIMs activated for pixels containing the digit and for empty pixels. RIMs should generalize better to higher resolutions by keeping dormant those RIMs that store pixel information over empty regions of the image.\n", "\n", "This is the test setup:\n", @@ -1464,16 +1383,16 @@ " - 19x19 images (validation set 2)\n", " - 24x24 images (validation set 3)\n", "\n", - "This approach helps to understand whether the model can still recognize the digits accurately even when they appear at different scales or resolutions than those on which it was originally trained. By testing the model on various image sizes, we can determine how flexible and effective the model is at dealing with variations in input data." + "This approach helps to understand whether the model can still recognize the digits accurately even when they appear at different scales or resolutions than those on which it was originally trained. By testing the model on various image sizes, we can determine how flexible and effective the model is at dealing with variations in input data.\n", + "\n", + "Note: if you train the model locally, it will take around 10 minutes to complete." ] }, { "cell_type": "code", "execution_count": null, "id": "ad179715-7c6f-455b-aea4-7b7860430c6b", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "with contextlib.redirect_stdout(io.StringIO()):\n", @@ -1556,16 +1475,6 @@ " validation_accuracies_rim.append(accuracy)" ] }, - { - "cell_type": "markdown", - "id": "6303ab3d-10e3-4f17-98cd-d1cc8bec2244", - "metadata": { - "execution": {} - }, - "source": [ - "### LSTM" - ] - }, { "cell_type": "markdown", "id": "1e7acc2d-4aa5-4e4c-82ae-43ec4a3c2bd8", @@ -1573,6 +1482,8 @@ "execution": {} }, "source": [ + "**Training LSTMs**\n", + "\n", "Let's now repeat the same process with LSTMs." ] }, @@ -1580,9 +1491,7 @@ "cell_type": "code", "execution_count": null, "id": "08ceb84b-e550-48ed-a612-a5e5155ebf7b", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "with contextlib.redirect_stdout(io.StringIO()):\n", @@ -1675,9 +1584,7 @@ "cell_type": "code", "execution_count": null, "id": "1b4b188f-b335-4ffb-b723-4782aa18af7d", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Print accuracies for all validation sets (RIMs) with image sizes\n", @@ -1704,8 +1611,7 @@ "execution_count": null, "id": "03105090-519e-4b99-86a7-f5e4b0b0376e", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1729,9 +1635,7 @@ "cell_type": "code", "execution_count": null, "id": "ba00b200", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# to_remove explanation\n", @@ -1756,8 +1660,7 @@ "execution_count": null, "id": "5e6bb9dc-2450-4493-9896-f9a8c6624236", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1772,7 +1675,7 @@ "execution": {} }, "source": [ - "### RIMs and consciousness\n", + "**RIMs and consciousness**\n", "\n", "You might wonder how RIMs relate to consciousness. As we have seen, RIMs focus on modularity in neural processing. In this approach, various modules or units operate semi-independently but coordinate through a mechanism akin to attention. This modularity allows the system to specialize in different tasks, with the attention mechanism directing computational resources efficiently by focusing on the most relevant parts of a problem at any given time.\n", "\n", @@ -1795,8 +1698,7 @@ "execution_count": null, "id": "9ebe79db-9af2-4fde-9139-8084f525ea28", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1850,8 +1752,7 @@ "execution_count": null, "id": "d5b38375-6737-43e0-9b21-d1af1e9e598c", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -1898,7 +1799,7 @@ "execution": {} }, "source": [ - "### Coding Exercise: Creating a Shared Workspace" + "### Coding Exercise 1: Creating a Shared Workspace" ] }, { @@ -1921,9 +1822,7 @@ "cell_type": "code", "execution_count": null, "id": "2380f39e-ec9f-4981-b0c0-2531f1730db7", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "torch.manual_seed(42) # Ensure reproducibility" @@ -1933,9 +1832,7 @@ "cell_type": "code", "execution_count": null, "id": "3d73b534-831e-4e4f-b268-02077f8599bc", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "class SharedWorkspace(nn.Module):\n", @@ -1996,9 +1893,7 @@ "cell_type": "code", "execution_count": null, "id": "e55f180a", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# to_remove solution\n", @@ -2045,9 +1940,7 @@ "cell_type": "code", "execution_count": null, "id": "e6600c95", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Example parameters\n", @@ -2059,9 +1952,7 @@ "# Generate deterministic specialists' states\n", "specialists_states = torch.randn(num_specialists, hidden_dim)\n", "\n", - "workspace = SharedWorkspace(num_specialists, hidden_dim, num_memory_slots, memory_slot_dim)\n", - "expected_output = workspace.forward(specialists_states)\n", - "print(\"Expected Output:\", expected_output)" + "workspace = SharedWorkspace(num_specialists, hidden_dim, num_memory_slots, memory_slot_dim)" ] }, { @@ -2078,9 +1969,7 @@ "cell_type": "code", "execution_count": null, "id": "03836253-ec99-490b-9921-db1395e5c3de", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "def broadcast_from_workspace(self, specialists_states):\n", @@ -2123,8 +2012,7 @@ "execution_count": null, "id": "5e37b7bb-9b92-4fcc-9f3a-104a83b51619", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2139,7 +2027,7 @@ "execution": {} }, "source": [ - "## Recap\n", + "**Recap**\n", "\n", "In the past sections, we've discussed models like Recurrent Independent Mechanisms (RIMs) and those inspired by cognitive neuroscience's Global Workspace Theory (GWT). These models embed different ideas about modularity:\n", "\n", @@ -2165,8 +2053,7 @@ "execution_count": null, "id": "82339815-b7ed-464f-a28b-f66f5bfbbff2", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2220,8 +2107,7 @@ "execution_count": null, "id": "bd850619-f37f-4a0f-b866-83ca653091ff", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2268,12 +2154,9 @@ "cell_type": "code", "execution_count": null, "id": "0b549db9-e8b0-4c49-89d2-b7324b3a4ed1", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ - "# Compare your results with the patterns generate below\n", "factor=2\n", "\n", "initialize_global()\n", @@ -2311,7 +2194,7 @@ "execution": {} }, "source": [ - "### Activity 1: Developing a Second-Order Network\n", + "### Coding Exercise 2: Developing a Second-Order Network\n", "\n", "Your task is to expand upon the first-order network by integrating a second-order network that incorporates a metacognitive layer assessing the predictions of the first-order network. This layer introduces a wagering mechanism, where the network \"bets\" on its confidence in its predictions.\n", "\n", @@ -2336,9 +2219,7 @@ "cell_type": "code", "execution_count": null, "id": "2c37e357-e5e6-40b2-8507-f83161f5d85f", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "class SecondOrderNetwork(nn.Module):\n", @@ -2400,9 +2281,7 @@ "cell_type": "code", "execution_count": null, "id": "4d931cb5-a87a-48be-8760-79512b9d88f7", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# to_remove solution\n", @@ -2455,8 +2334,7 @@ "execution_count": null, "id": "736319ec-2a17-4d80-bb04-b9507ba5db5d", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2468,9 +2346,7 @@ "cell_type": "code", "execution_count": null, "id": "45208df8-1cb6-4669-a968-2c5157e8522e", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "hidden=40\n", @@ -2482,7 +2358,7 @@ "\n", "initialize_global()\n", "\n", - "# First order network instantiation (defined somewhere else)\n", + "# First order network instantiation\n", "first_order_network = FirstOrderNetwork(hidden, factor, gelu).to(device)" ] }, @@ -2490,9 +2366,7 @@ "cell_type": "code", "execution_count": null, "id": "947c8550-a40d-43aa-bfd6-1eb8cead339f", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "def pre_train(first_order_network, second_order_network, criterion_1, criterion_2, optimizer_1, optimizer_2, scheduler_1, scheduler_2, factor, meta):\n", @@ -2668,8 +2542,7 @@ "execution_count": null, "id": "55115815-beb2-4f19-a598-9b129ff87637", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2682,8 +2555,7 @@ "execution_count": null, "id": "a5a880a9-a069-4e0f-a481-f3b85b6a3952", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2737,8 +2609,7 @@ "execution_count": null, "id": "8a54d67b-507e-4a8a-9715-0aacdeb06f26", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2771,8 +2642,7 @@ "execution_count": null, "id": "f21045c6-9814-431d-b56d-c970bf8d003a", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2826,8 +2696,7 @@ "execution_count": null, "id": "521cfa24-af6b-49a2-8ea9-4a0b2d49526d", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -2855,9 +2724,7 @@ "cell_type": "code", "execution_count": null, "id": "01aa71fb-ce0a-4f12-a7a6-3df4996eb358", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "def HOSS_evaluate_flat(X, mu, Sigma, Wprior):\n", @@ -2901,7 +2768,7 @@ "execution": {} }, "source": [ - "### Make our stimulus space" + "**Make our stimulus space**" ] }, { @@ -2922,9 +2789,7 @@ "cell_type": "code", "execution_count": null, "id": "b5eeba6f-6608-41e1-bfa3-2861bbeb6738", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Creating the array X with strong evidence for A and weak evidence for B\n", @@ -2942,20 +2807,18 @@ "\n", "Let's start by creating our space, and placing three Gaussian distributions on the space that represent the likelihood of observing a pair of features given each of three stimulus classes:\n", "\n", - "- leftward tilt (w1)\n", - "- rightward tilt (w2)\n", - "- noise/nothing (w0)\n", + "- leftward tilt ($w_1$)\n", + "- rightward tilt ($w_2$)\n", + "- noise/nothing ($w_0$)\n", "\n", - "By setting up this model, we aim to simulate and analyze how an observer infers the presence or absence of a stimulus. When the observer detects a stimulus, the inference process would lean towards either the leftward or rightward tilt, depending on which Gaussian (w1 or w2) the observed data points are closer to in feature space. When the observer fails to detect a stimulus, the inference process would recognize that the data points fall closer to the noise distribution centered at the origin." + "By setting up this model, we aim to simulate and analyze how an observer infers the presence or absence of a stimulus. When the observer detects a stimulus, the inference process would lean towards either the leftward or rightward tilt, depending on which Gaussian ($w_1$ or $w_2$) the observed data points are closer to in feature space. When the observer fails to detect a stimulus, the inference process would recognize that the data points fall closer to the noise distribution centered at the origin." ] }, { "cell_type": "code", "execution_count": null, "id": "8c40e73d-d90c-4630-9089-4cb64d22f811", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Define the grid\n", @@ -3007,9 +2870,7 @@ "cell_type": "code", "execution_count": null, "id": "579938b1", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "coords = np.linspace(-.5, 6.5, 27)\n", @@ -3070,13 +2931,13 @@ "execution": {} }, "source": [ - "### Add in higher-order node for global detection\n", + "**Add in higher-order node for global detection**\n", "\n", "So far, our model has been straightforward, or \"flat,\" where each perceptual state (like leftward tilt, rightward tilt, or no stimulus) is treated separately. However, real-life perception often requires more complex judgments about the presence or absence of any stimulus, not just identifying specific types. This is where a higher-order node comes into play.\n", "\n", - "#### Introducing the \"A\" Level:\n", + "**Introducing the \"A\" Level:**\n", "\n", - "Think of the \"A\" level as a kind of overseer or monitor that watches over the lower-level states (w1, w2, etc.). This higher-order node isn't concerned with the specific content of the stimulus (like which direction something is tilting) but rather with whether there's any significant stimulus at all versus just noise. It takes inputs from the same data (pairs of X's), but it adds a layer of awareness. It evaluates whether the data points suggest any meaningful content or if they're likely just random noise.\n", + "Think of the \"A\" level as a kind of overseer or monitor that watches over the lower-level states ($w_1$, $w_2$, etc.). This higher-order node isn't concerned with the specific content of the stimulus (like which direction something is tilting) but rather with whether there's any significant stimulus at all versus just noise. It takes inputs from the same data (pairs of $X$'s), but it adds a layer of awareness. It evaluates whether the data points suggest any meaningful content or if they're likely just random noise.\n", "\n", "The system can now answer questions on two levels:\n", "\n", @@ -3152,9 +3013,7 @@ "cell_type": "code", "execution_count": null, "id": "1a12f7e4-1eba-47b2-b49e-1ae0593ced22", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "def HOSS_evaluate(X, mu, Sigma, Aprior, Wprior):\n", @@ -3199,9 +3058,7 @@ "cell_type": "code", "execution_count": null, "id": "ebb04c59-a0e2-4595-ac2c-5659242eb42f", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# to_remove solution\n", @@ -3242,8 +3099,7 @@ "execution_count": null, "id": "8da8a1b0-9a1c-4b5d-8789-7866b041410b", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -3258,18 +3114,16 @@ "execution": {} }, "source": [ - "Now that we've coded our multi-level model, we're ready to evaluate it! We first set the prior on presence (vs. absence), and then set the priors on w1 vs. w2, and the model takes care of the rest.\n", + "Now that we've coded our multi-level model, we're ready to evaluate it! We first set the prior on presence (vs. absence), and then set the priors on $w_1$ vs. $w_2$, and the model takes care of the rest.\n", "\n", - "We'll evaluate the model on the edge between the leftward stimulus w1 and the absence of a stimulus w0. This edge case is particularly interesting because it's where the model is most uncertain about the presence of a stimulus." + "We'll evaluate the model on the edge between the leftward stimulus $w_1$ and the absence of a stimulus $w_0$. This edge case is particularly interesting because it's where the model is most uncertain about the presence of a stimulus." ] }, { "cell_type": "code", "execution_count": null, "id": "4f8a881f-3103-4fbc-b958-8f29db2bee57", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Define the input parameters for this specific example\n", @@ -3296,7 +3150,7 @@ "\n", "* The model is fairly certain that the stimulus is absent; the probability of awareness\n", " is < 0.5.\n", - "* The model nevertheless assigns much higher probability to the presence of the leftward stimulus w1 than to the rightward stimulus w2.\n", + "* The model nevertheless assigns much higher probability to the presence of the leftward stimulus $w_1$ than to the rightward stimulus $w_2$.\n", "\n", "This captures the essence of a phenomenon like blindsight: there can be positive discrimination between different stimuli even when the observer is not consciously aware of the stimulus. Let's look at how the awareness signal changes as the evidence changes." ] @@ -3305,9 +3159,7 @@ "cell_type": "code", "execution_count": null, "id": "43b0cb7d", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "coords = np.linspace(-.5, 6.5, 27)\n", @@ -3366,7 +3218,7 @@ "execution": {} }, "source": [ - "### Simulate ignition (asymmetry vs. symmetry)\n", + "**Simulate ignition (asymmetry vs. symmetry)**\n", "\n", "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (K-L) divergence, particularly at a certain level within the model known as the W level.\n", "\n", @@ -3383,9 +3235,7 @@ "cell_type": "code", "execution_count": null, "id": "b09f812a-f202-4f3d-ac66-247b322002e7", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Experiment parameters\n", @@ -3458,7 +3308,7 @@ "with plt.xkcd():\n", "\n", " # Create figure\n", - " plt.figure(figsize=(16, 4.67))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # First subplot: Probability of reporting \"seen\" for w_1 or w_2\n", " plt.subplot(1, 3, 1)\n", @@ -3500,9 +3350,7 @@ "cell_type": "code", "execution_count": null, "id": "af24eab7-5e81-4f04-bdb8-f192058d06b3", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# to_remove solution\n", @@ -3571,7 +3419,7 @@ "with plt.xkcd():\n", "\n", " # Create figure\n", - " plt.figure(figsize=(16, 4.67))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # First subplot: Probability of reporting \"seen\" for w_1 or w_2\n", " plt.subplot(1, 3, 1)\n", @@ -3599,7 +3447,7 @@ " plt.errorbar(gamma, all_KL_A_no, yerr=sem_KL_A_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, awareness state')\n", + " plt.ylabel('KL-divergence, awareness state')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3614,8 +3462,7 @@ "execution_count": null, "id": "85f40241-afa3-4f82-a43c-259d3632ef86", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -3632,7 +3479,7 @@ "source": [ "### Discussion point\n", "\n", - "Can you think of experiments that could distinguish between the HOSS and GWS accounts of ignition?\n" + "Can you think of experiments that could distinguish between the HOSS and GWS accounts of ignition?" ] }, { @@ -3650,8 +3497,7 @@ "execution_count": null, "id": "2fbf1fbb-2c09-45cc-ad31-f939e930c311", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -3664,8 +3510,7 @@ "execution_count": null, "id": "89231241-c634-46da-9bb7-5a1c6060a2d9", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -3719,8 +3564,7 @@ "execution_count": null, "id": "e279723b-e254-47e8-9852-88124164c949", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -3730,88 +3574,230 @@ }, { "cell_type": "markdown", - "id": "5444b408-933d-4a58-9ab8-757999917a01", - "metadata": { - "execution": {} - }, - "source": [ - "Below you'll find some optional bonus content!" - ] - }, - { - "cell_type": "markdown", - "id": "f862cbc2-3222-484c-98cb-993f2b591b37", - "metadata": { - "execution": {} - }, - "source": [ - "# Coding Bonus Section\n", - "This secton contains some extra coding exercises in case you have time and inclination." - ] - }, - { - "cell_type": "markdown", - "id": "76dd7488-6558-4022-8541-22765f2967c6", - "metadata": { - "execution": {} - }, + "id": "42ec8e35-a10a-409b-8c9a-aac6335d4c9b", + "metadata": {}, "source": [ - "## Bonus coding section 1: Train a first-order network\n", + "---\n", + "# Summary\n", "\n", - "This section invites you to engage with a straightforward, auto-generated dataset on blindsight, originally introduced by [Pasquali et al. in 2010](https://www.sciencedirect.com/science/article/abs/pii/S0010027710001794). Blindsight is a fascinating condition where individuals who are cortically blind due to damage in their primary visual cortex can still respond to visual stimuli without conscious perception. This intriguing phenomenon underscores the intricate nature of sensory processing and the brain's ability to process information without conscious awareness." + "Hakwan will now discuss the critical aspects and limitations of current consciousness studies, addressing the challenges in distinguishing theories of consciousness from those merely describing general brain functions." ] }, { "cell_type": "code", "execution_count": null, - "id": "8c79b0a2-8e12-44ea-a685-bba788f6685d", - "metadata": { - "execution": {} - }, + "id": "98844fb0-afc4-487f-9c80-175317b3b537", + "metadata": {}, "outputs": [], "source": [ - "# Visualize the autogenerated data\n", - "factor=2\n", - "initialize_global()\n", - "set_pre, _ = create_patterns(0,factor)\n", - "plot_signal_max_and_indicator(set_pre.detach().cpu(), \"Example - Pre training dataset\")" - ] - }, - { - "cell_type": "markdown", - "id": "cff70408-8662-43f5-b930-fc2a6ffca323", - "metadata": { - "execution": {} - }, - "source": [ - "The pre-training dataset for the network consisted of 200 patterns. These were evenly divided: half were purely noise (with unit activations randomly chosen between 0.0 and 0.02), and the other half represented potential stimuli. In the stimulus patterns, 99 out of 100 units had activations ranging between 0.0 and 0.02, with one unique unit having an activation between 0.0 and 1.0." - ] - }, - { - "cell_type": "markdown", - "id": "0f45662a-08b4-44a4-89e1-200fc0c9cddb", - "metadata": { - "execution": {} - }, - "source": [ - "### Testing patterns\n", - "\n", - "As we have seen before, the network underwent evaluations under three distinct conditions, each modifying the signal-to-noise ratio in a unique way to explore different degrees and types of blindness.\n", - "\n", - "Suprathreshold stimulus condition: here, the network was exposed to the identical set of 200 patterns used during pre-training, testing the network's response to familiar inputs.\n", + "# @title Video 9: Final Thoughts\n", "\n", - "Subthreshold stimulus condition (blindsight simulation): this condition aimed to mimic blindsight. It was achieved by introducing a slight noise increment (+0.0012) to every input of the first-order network, barring the one designated as the stimulus. This setup tested the network's ability to discern faint signals amidst noise.\n", + "from ipywidgets import widgets\n", + "from IPython.display import YouTubeVideo\n", + "from IPython.display import IFrame\n", + "from IPython.display import display\n", "\n", - "Low vision condition: to simulate low vision, the activation levels of the stimuli were reduced. Unlike the range from 0.0 to 1.0 used in pre-training, the stimuli's activation levels were adjusted to span from 0.0 to 0.3. This condition examined the network's capability to recognize stimuli with diminished intensity." - ] + "class PlayVideo(IFrame):\n", + " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", + " self.id = id\n", + " if source == 'Bilibili':\n", + " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", + " elif source == 'Osf':\n", + " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", + " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", + "\n", + "def display_videos(video_ids, W=400, H=300, fs=1):\n", + " tab_contents = []\n", + " for i, video_id in enumerate(video_ids):\n", + " out = widgets.Output()\n", + " with out:\n", + " if video_ids[i][0] == 'Youtube':\n", + " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", + " height=H, fs=fs, rel=0)\n", + " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", + " else:\n", + " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", + " height=H, fs=fs, autoplay=False)\n", + " if video_ids[i][0] == 'Bilibili':\n", + " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", + " elif video_ids[i][0] == 'Osf':\n", + " print(f'Video available at https://osf.io/{video.id}')\n", + " display(video)\n", + " tab_contents.append(out)\n", + " return tab_contents\n", + "\n", + "video_ids = [('Youtube', 'Og8GjV2ELp8'), ('Bilibili', 'BV1kx4y1b71V')]\n", + "tab_contents = display_videos(video_ids, W=854, H=480)\n", + "tabs = widgets.Tab()\n", + "tabs.children = tab_contents\n", + "for i in range(len(tab_contents)):\n", + " tabs.set_title(i, video_ids[i][0])\n", + "display(tabs)" + ] }, { "cell_type": "code", "execution_count": null, - "id": "db58d78b-17d8-4651-801a-f06e568a7322", + "id": "3f743aa7-438f-4971-a720-864511974e00", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_9\")" + ] + }, + { + "cell_type": "markdown", + "id": "b323cfe1-0c5b-4ecd-869b-cb3b7e5e9df4", + "metadata": {}, + "source": [ + "Congrats! You've made it to the end of this tutorial. Let's wrap up." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c38958d-baf3-4ef0-b440-c1c42ee75bd4", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Video 10: Final Thoughts\n", + "\n", + "from ipywidgets import widgets\n", + "from IPython.display import YouTubeVideo\n", + "from IPython.display import IFrame\n", + "from IPython.display import display\n", + "\n", + "class PlayVideo(IFrame):\n", + " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", + " self.id = id\n", + " if source == 'Bilibili':\n", + " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", + " elif source == 'Osf':\n", + " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", + " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", + "\n", + "def display_videos(video_ids, W=400, H=300, fs=1):\n", + " tab_contents = []\n", + " for i, video_id in enumerate(video_ids):\n", + " out = widgets.Output()\n", + " with out:\n", + " if video_ids[i][0] == 'Youtube':\n", + " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", + " height=H, fs=fs, rel=0)\n", + " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", + " else:\n", + " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", + " height=H, fs=fs, autoplay=False)\n", + " if video_ids[i][0] == 'Bilibili':\n", + " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", + " elif video_ids[i][0] == 'Osf':\n", + " print(f'Video available at https://osf.io/{video.id}')\n", + " display(video)\n", + " tab_contents.append(out)\n", + " return tab_contents\n", + "\n", + "video_ids = [('Youtube', 'dJ4KiCcvndU'), ('Bilibili', 'BV1BT421e7G1')]\n", + "tab_contents = display_videos(video_ids, W=854, H=480)\n", + "tabs = widgets.Tab()\n", + "tabs.children = tab_contents\n", + "for i in range(len(tab_contents)):\n", + " tabs.set_title(i, video_ids[i][0])\n", + "display(tabs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4013ed8f-2320-4c17-b228-59de5baab226", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_10\")" + ] + }, + { + "cell_type": "markdown", + "id": "5444b408-933d-4a58-9ab8-757999917a01", "metadata": { "execution": {} }, + "source": [ + "Below you'll find some optional coding & discussion bonus content!" + ] + }, + { + "cell_type": "markdown", + "id": "f862cbc2-3222-484c-98cb-993f2b591b37", + "metadata": { + "execution": {} + }, + "source": [ + "---\n", + "# Coding Bonus Section\n", + "This secton contains some extra coding exercises in case you have time and inclination." + ] + }, + { + "cell_type": "markdown", + "id": "76dd7488-6558-4022-8541-22765f2967c6", + "metadata": { + "execution": {} + }, + "source": [ + "## Bonus coding exersice 1: Train a first-order network\n", + "\n", + "This section invites you to engage with a straightforward, auto-generated dataset on blindsight, originally introduced by [Pasquali et al. in 2010](https://www.sciencedirect.com/science/article/abs/pii/S0010027710001794). Blindsight is a fascinating condition where individuals who are cortically blind due to damage in their primary visual cortex can still respond to visual stimuli without conscious perception. This intriguing phenomenon underscores the intricate nature of sensory processing and the brain's ability to process information without conscious awareness." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c79b0a2-8e12-44ea-a685-bba788f6685d", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize the autogenerated data\n", + "factor=2\n", + "initialize_global()\n", + "set_pre, _ = create_patterns(0,factor)\n", + "plot_signal_max_and_indicator(set_pre.detach().cpu(), \"Example - Pre training dataset\")" + ] + }, + { + "cell_type": "markdown", + "id": "cff70408-8662-43f5-b930-fc2a6ffca323", + "metadata": { + "execution": {} + }, + "source": [ + "The pre-training dataset for the network consisted of 200 patterns. These were evenly divided: half were purely noise (with unit activations randomly chosen between 0.0 and 0.02), and the other half represented potential stimuli. In the stimulus patterns, 99 out of 100 units had activations ranging between 0.0 and 0.02, with one unique unit having an activation between 0.0 and 1.0." + ] + }, + { + "cell_type": "markdown", + "id": "0f45662a-08b4-44a4-89e1-200fc0c9cddb", + "metadata": { + "execution": {} + }, + "source": [ + "**Testing patterns**\n", + "\n", + "As we have seen before, the network underwent evaluations under three distinct conditions, each modifying the signal-to-noise ratio in a unique way to explore different degrees and types of blindness.\n", + "\n", + "Suprathreshold stimulus condition: here, the network was exposed to the identical set of 200 patterns used during pre-training, testing the network's response to familiar inputs.\n", + "\n", + "Subthreshold stimulus condition (blindsight simulation): this condition aimed to mimic blindsight. It was achieved by introducing a slight noise increment (+0.0012) to every input of the first-order network, barring the one designated as the stimulus. This setup tested the network's ability to discern faint signals amidst noise.\n", + "\n", + "Low vision condition: to simulate low vision, the activation levels of the stimuli were reduced. Unlike the range from 0.0 to 1.0 used in pre-training, the stimuli's activation levels were adjusted to span from 0.0 to 0.3. This condition examined the network's capability to recognize stimuli with diminished intensity." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "db58d78b-17d8-4651-801a-f06e568a7322", + "metadata": {}, "outputs": [], "source": [ "factor=2\n", @@ -3837,13 +3823,13 @@ "\n", "In this activity, we'll construct a neural network model using our auto-generated dataset, focusing on blindsight scenarios. The model will primarily consist of fully connected layers, establishing a straightforward, first-order network. The aim here is to assess the basic network's performance.\n", "\n", - "### Steps to follow\n", + "**Steps to follow**\n", "\n", "1. Examine the network architecture: understand the structure of the neural network you're about to work with.\n", "2. Visualize loss metrics: observe and analyze the network's performance during pre-training by visualizing the loss over epochs.\n", "3. Evaluate the model: use the provided code snippets to calculate and interpret the model's accuracy, recall, and F1-score, giving you insight into the network's capabilities.\n", "\n", - "### Understanding the process\n", + "**Understanding the process**\n", "\n", "The goal is to gain a thorough comprehension of the network's architecture and to interpret the pre-training results visually. This will provide a clearer picture of the model's potential and limitations.\n", "\n", @@ -3854,12 +3840,9 @@ "cell_type": "code", "execution_count": null, "id": "94d0bcaf-8b49-4e35-b0d2-1b9dcc98b182", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ - "\n", "class FirstOrderNetwork(nn.Module):\n", " def __init__(self, hidden_units, data_factor, use_gelu):\n", " \"\"\"\n", @@ -3914,8 +3897,6 @@ "\n", "\n", " def forward(self, x):\n", - "\n", - "\n", " \"\"\"\n", " Defines the forward pass through the network.\n", "\n", @@ -3945,9 +3926,7 @@ "cell_type": "code", "execution_count": null, "id": "7bfade3d-6385-459c-8f07-e3017264455a", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Define the architecture, optimizers, loss functions, and schedulers for pre training\n", @@ -4018,9 +3997,6 @@ "\n", " epoch_1_order[epoch] = loss_1.item()\n", "\n", - "\n", - " ############################################\n", - "\n", " # Get max values and indices for output_first_order\n", " max_vals_out, max_inds_out = torch.max(output_first_order[100:], dim=1)\n", " max_inds_out[max_vals_out == 0] = 0\n", @@ -4033,8 +4009,6 @@ " max_values_patterns_tensor.append(max_vals_pat.tolist())\n", " max_indices_patterns_tensor.append(max_inds_pat.tolist())\n", "\n", - " ############################################\n", - "\n", "\n", "max_values_indices = (max_values_output_first_order[-1],\n", " max_indices_output_first_order[-1],\n", @@ -4062,12 +4036,9 @@ "cell_type": "code", "execution_count": null, "id": "2affe162-f4d9-495f-862a-65b0f50ca5ef", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ - "\n", "results_seed=[]\n", "discrimination_seed=[]\n", "\n", @@ -4088,8 +4059,7 @@ "execution_count": null, "id": "0d18302e-4657-4732-b6ef-f7439d2bb2fd", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -4104,6 +4074,7 @@ "execution": {} }, "source": [ + "---\n", "## Bonus coding section 2: Plot surfaces for content / awareness inferences\n", "\n", "To explore the properties of the HOSS model, we can simulate inference at different levels of the hierarchy over the full 2D space of possible input X's. The left panel below shows that the probability of awareness (of any stimulus contents) rises in a graded manner from the lower left corner of the graph (low activation of any feature) to the upper right (high activation of both features). In contrast, the right panel shows that confidence in making a discrimination response (e.g. rightward vs. leftward) increases away from the major diagonal, as the model becomes sure that the sample was generated by either a leftward or rightward tilted stimulus.\n", @@ -4117,9 +4088,7 @@ "cell_type": "code", "execution_count": null, "id": "31503073-a7c0-4502-8d94-5ffa47a22926", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Define the grid\n", @@ -4183,18 +4152,16 @@ "execution": {} }, "source": [ - "### Simulate KL divergence surfaces\n", + "**Simulate KL-divergence surfaces**\n", "\n", - "We can also simulate K-L divergences (a measure of Bayesian surprise) at each layer in the network, which under predictive coding models of brain has been proposed to scale with neural activation (eg Friston, 2005; Summerfield & de Lange, 2014)." + "We can also simulate KL-divergences (a measure of Bayesian surprise) at each layer in the network, which under predictive coding models of the brain, has been proposed to scale with neural activation (e.g., Friston, 2005; Summerfield & de Lange, 2014)." ] }, { "cell_type": "code", "execution_count": null, "id": "66044263-c8de-49a9-a56b-2e7336cc737c", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# Define the grid\n", @@ -4242,7 +4209,7 @@ " plt.colorbar()\n", " plt.xlabel('X1')\n", " plt.ylabel('X2')\n", - " plt.title('K-L divergence, perceptual states')\n", + " plt.title('KL-divergence, perceptual states')\n", " plt.axis('square')\n", "\n", " # K-L divergence, awareness state\n", @@ -4251,7 +4218,7 @@ " plt.colorbar()\n", " plt.xlabel('X1')\n", " plt.ylabel('X2')\n", - " plt.title('K-L divergence, awareness state')\n", + " plt.title('KL-divergence, awareness state')\n", " plt.axis('square')\n", "\n", " plt.show()" @@ -4266,35 +4233,33 @@ "source": [ "### Discussion point\n", "\n", - "Can you recognise the difference between the K-L divergence for the W-level and the one for the A-level?" + "Can you recognise the difference between the KL divergence for the W-level and the one for the A-level?" ] }, { "cell_type": "code", "execution_count": null, "id": "7d8deb66-9a1d-49e1-a3ef-96970efa8d97", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "# to_remove explanation\n", "\"\"\"\n", - "At the level of perceptual states W, there is substantial asymmetry in the K-L divergence expected when the\n", + "At the level of perceptual states W, there is a substantial asymmetry in the KL-divergence expected when the\n", "model says ‘seen’ vs. ‘unseen’ (lefthand panel). This is due to the large belief updates invoked in the\n", "perceptual layer W by samples that deviate from the lower lefthand corner - from absence. In contrast, when\n", - "we compute K-L divergence for the A-level (righthand panel), the level of prediction error is symmetric across\n", + "we compute KL-divergence for the A-level (righthand panel), the level of prediction error is symmetric across\n", "seen and unseen decisions, leading to \"hot\" zones both at the upper righthand (present) and lower lefthand\n", "(absent) corners of the 2D space.\n", "\n", - "Intuitively, this means that at the W-level there's a noticeable difference in the K-L divergence values\n", + "Intuitively, this means that at the W-level, there's a noticeable difference in the KL-divergence values\n", "between \"seen\" and \"unseen\" predictions. This large difference is mainly due to significant updates in the\n", "model's beliefs at this level when the detected samples are far from what is expected under the condition of\n", "\"absence.\" However, when we analyze the K-L divergence at the A-level, the discrepancies in prediction errors\n", "between \"seen\" and \"unseen\" are balanced. This creates equally strong responses in the model, whether something\n", "is detected or not detected.\n", "\n", - "We can also sort the K-L divergences as a function of whether the model \"reported\" presence or absence. As\n", + "We can also sort the KL-divergences as a function of whether the model \"reported\" presence or absence. As\n", "can be seen in the bar plots below, there is more asymmetry in the prediction error at the W compared to the\n", "A levels.\n", "\n", @@ -4305,27 +4270,25 @@ "cell_type": "code", "execution_count": null, "id": "869fc8f1-4199-4525-80b3-26e74babc66a", - "metadata": { - "execution": {} - }, + "metadata": {}, "outputs": [], "source": [ "with plt.xkcd():\n", "\n", " # Create figure with specified size\n", - " plt.figure(figsize=(12, 4))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # KL divergence for W states\n", " plt.subplot(1, 2, 1)\n", " plt.bar(['unseen', 'seen'], [KL_w_absent, KL_w_present], color='k')\n", - " plt.ylabel('K-L divergence, W states')\n", + " plt.ylabel('KL divergence, W states')\n", " plt.xticks(fontsize=18)\n", " plt.yticks(fontsize=18)\n", "\n", " # KL divergence for A states\n", " plt.subplot(1, 2, 2)\n", " plt.bar(['unseen', 'seen'], [KL_A_absent, KL_A_present], color='k')\n", - " plt.ylabel('K-L divergence, A states')\n", + " plt.ylabel('KL divergence, A states')\n", " plt.xticks(fontsize=18)\n", " plt.yticks(fontsize=18)\n", "\n", @@ -4340,8 +4303,7 @@ "execution_count": null, "id": "64ecb92c-bfe3-4e49-bd40-f11ffa685ece", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -4349,174 +4311,6 @@ "content_review(f\"{feedback_prefix}_HOSS_Bonus_Content\")" ] }, - { - "cell_type": "markdown", - "id": "c0ed62f8-197a-4d2b-b667-62f7be4c130e", - "metadata": { - "execution": {} - }, - "source": [ - "# Outro" - ] - }, - { - "cell_type": "markdown", - "id": "c6b24369-18e9-4181-b33b-49952635bfb0", - "metadata": { - "execution": {} - }, - "source": [ - "Hakwan will now discuss the critical aspects and limitations of current consciousness studies, addressing the challenges in distinguishing theories of consciousness from those merely describing general brain functions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faf09a16-0b6c-4ee4-b47b-f9e0ad05a513", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Video 9: Final Thoughts\n", - "\n", - "from ipywidgets import widgets\n", - "from IPython.display import YouTubeVideo\n", - "from IPython.display import IFrame\n", - "from IPython.display import display\n", - "\n", - "class PlayVideo(IFrame):\n", - " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", - " self.id = id\n", - " if source == 'Bilibili':\n", - " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", - " elif source == 'Osf':\n", - " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", - " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", - "\n", - "def display_videos(video_ids, W=400, H=300, fs=1):\n", - " tab_contents = []\n", - " for i, video_id in enumerate(video_ids):\n", - " out = widgets.Output()\n", - " with out:\n", - " if video_ids[i][0] == 'Youtube':\n", - " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", - " height=H, fs=fs, rel=0)\n", - " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", - " else:\n", - " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", - " height=H, fs=fs, autoplay=False)\n", - " if video_ids[i][0] == 'Bilibili':\n", - " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", - " elif video_ids[i][0] == 'Osf':\n", - " print(f'Video available at https://osf.io/{video.id}')\n", - " display(video)\n", - " tab_contents.append(out)\n", - " return tab_contents\n", - "\n", - "video_ids = [('Youtube', 'Og8GjV2ELp8'), ('Bilibili', 'BV1kx4y1b71V')]\n", - "tab_contents = display_videos(video_ids, W=854, H=480)\n", - "tabs = widgets.Tab()\n", - "tabs.children = tab_contents\n", - "for i in range(len(tab_contents)):\n", - " tabs.set_title(i, video_ids[i][0])\n", - "display(tabs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d3437899-dc2f-4b97-ae4a-18e54ca63941", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Submit your feedback\n", - "content_review(f\"{feedback_prefix}_Video_9\")" - ] - }, - { - "cell_type": "markdown", - "id": "f60ee97a-746d-4f2b-91fc-96cc713f64cd", - "metadata": { - "execution": {} - }, - "source": [ - "Congrats! You've made it to the end of this tutorial. Let's wrap up." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ad1cd126-5744-4b59-beaf-c9c8439701dd", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Video 10: Final Thoughts\n", - "\n", - "from ipywidgets import widgets\n", - "from IPython.display import YouTubeVideo\n", - "from IPython.display import IFrame\n", - "from IPython.display import display\n", - "\n", - "class PlayVideo(IFrame):\n", - " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", - " self.id = id\n", - " if source == 'Bilibili':\n", - " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", - " elif source == 'Osf':\n", - " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", - " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", - "\n", - "def display_videos(video_ids, W=400, H=300, fs=1):\n", - " tab_contents = []\n", - " for i, video_id in enumerate(video_ids):\n", - " out = widgets.Output()\n", - " with out:\n", - " if video_ids[i][0] == 'Youtube':\n", - " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", - " height=H, fs=fs, rel=0)\n", - " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", - " else:\n", - " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", - " height=H, fs=fs, autoplay=False)\n", - " if video_ids[i][0] == 'Bilibili':\n", - " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", - " elif video_ids[i][0] == 'Osf':\n", - " print(f'Video available at https://osf.io/{video.id}')\n", - " display(video)\n", - " tab_contents.append(out)\n", - " return tab_contents\n", - "\n", - "video_ids = [('Youtube', 'dJ4KiCcvndU'), ('Bilibili', 'BV1BT421e7G1')]\n", - "tab_contents = display_videos(video_ids, W=854, H=480)\n", - "tabs = widgets.Tab()\n", - "tabs.children = tab_contents\n", - "for i in range(len(tab_contents)):\n", - " tabs.set_title(i, video_ids[i][0])\n", - "display(tabs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b105540c-470a-466e-9ea4-388f0a5a71a7", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Submit your feedback\n", - "content_review(f\"{feedback_prefix}_Video_10\")" - ] - }, { "cell_type": "markdown", "id": "bcd87344-d473-44af-a881-b68e5471d353", @@ -4524,6 +4318,7 @@ "execution": {} }, "source": [ + "---\n", "# Discussion Bonus Section\n", "This section contains an extra discussion exercise if you have time and inclination." ] @@ -4543,8 +4338,7 @@ "execution_count": null, "id": "21b621ea-1639-4131-8ec3-9cdf34a64f77", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -4598,8 +4392,7 @@ "execution_count": null, "id": "39c202fb-f580-4a96-8f8e-bad24ed1d55c", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -4614,7 +4407,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Is it actually conscious?" + "## Discussion activity: Is it actually conscious?" ] }, { @@ -4639,8 +4432,7 @@ "execution_count": null, "id": "84958157-c165-4cc3-be76-408999cf44ad", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -4677,7 +4469,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.19" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb b/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb index dbba69e42..070aca767 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb @@ -42,7 +42,7 @@ "\n", "# Tutorial Objectives\n", "\n", - "*Estimated timing of tutorial: 30-50 minutes (depends on chosen trajectory; see below)\n", + "*Estimated timing of tutorial: 30-50 minutes (depends on chosen trajectory; see below)*\n", "\n", "By the end of this tutorial, participants will be able to:\n", "\n", @@ -55,8 +55,7 @@ "execution_count": null, "id": "af4fa9f7-d9cc-4594-be41-b31f02af1bd4", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ @@ -67,7 +66,7 @@ "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"5y4z2\"\n", + "link_id = \"s3py5\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -75,6 +74,41 @@ "display(out)" ] }, + { + "cell_type": "markdown", + "id": "2675d5e8-0846-48b9-a24c-2f1d6c27b36f", + "metadata": {}, + "source": [ + "---\n", + "# Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b8221ea8-a399-45aa-9ade-10f5d8adf318", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_T2\"" + ] + }, { "cell_type": "markdown", "id": "9480bb32", @@ -82,7 +116,8 @@ "execution": {} }, "source": [ - "# Ethics intro and moral status\n" + "---\n", + "# Section 1: Ethics Intro & Moral Status\n" ] }, { @@ -90,12 +125,11 @@ "execution_count": null, "id": "e82bb887-427b-49e8-b86a-235e1095af75", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @title Video 1: Ethics T2 Lecture 1\n", + "# @title Video 1: Ethics Lecture 1\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -140,6 +174,17 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6349841-fb75-45d5-a554-2358b95b249a", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_1\")" + ] + }, { "cell_type": "markdown", "id": "3ed12923", @@ -172,7 +217,8 @@ "execution": {} }, "source": [ - "# Ethical AI\n", + "---\n", + "# Section 2: Ethical AI\n", "Before starting the next sections, see how much time you have left in today's schedule.\n", "\n", "If you have at least 30 minutes left, you should do both of the following sections all together as one group. If you have less than 30 minutes left, you should split into 2 groups and do the next 2 sections in parallel, then come back together and discuss.\n", @@ -180,27 +226,16 @@ "![Ethics roadmap.](https://github.com/neuromatch/NeuroAI_Course/blob/main/tutorials/W2D5_Mysteries/static/ethics_roadmap.png?raw=true)" ] }, - { - "cell_type": "markdown", - "id": "45ad9188-5ca7-4313-a276-ea6a5a740105", - "metadata": { - "execution": {} - }, - "source": [ - "## Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" - ] - }, { "cell_type": "code", "execution_count": null, "id": "1c509ffd-286f-47a0-bb32-38f5cfa9a642", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @title Video 2: Ethics T2 Lecture 2\n", + "# @title Video 2: Ethics Lecture 2\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -245,6 +280,17 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "06b9fca7-2d82-488f-8308-15667b56129b", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_2\")" + ] + }, { "cell_type": "markdown", "id": "13543770", @@ -252,7 +298,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" + "## Discussion activity: Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" ] }, { @@ -275,7 +321,8 @@ "execution": {} }, "source": [ - "## Can AI be fair? Can it exhibit human-like morality?" + "---\n", + "# Section 3: Fair AI" ] }, { @@ -283,12 +330,11 @@ "execution_count": null, "id": "135c1a8f-fe65-4c6b-a20b-10f7a9392715", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @title Video 3: Ethics T2 Lecture 3\n", + "# @title Video 3: Ethics Lecture 3\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -333,6 +379,17 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "c57f44e6-4dbb-43d8-be2a-cd4491553e8f", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_3\")" + ] + }, { "cell_type": "markdown", "id": "0db27e0b", @@ -340,7 +397,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Can AI be fair? Can it exhibit human-like morality?" + "## Discussion activity: Can AI be fair? Can it exhibit human-like morality?" ] }, { @@ -366,7 +423,8 @@ "execution": {} }, "source": [ - "# Ethics outro" + "---\n", + "# Summary" ] }, { @@ -374,12 +432,11 @@ "execution_count": null, "id": "792b9c7f-c5ab-4148-93db-d15789c041bc", "metadata": { - "cellView": "form", - "execution": {} + "cellView": "form" }, "outputs": [], "source": [ - "# @title Video 4: Ethics T2 Lecture 4\n", + "# @title Video 4: Ethics Lecture 4\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -423,6 +480,17 @@ " tabs.set_title(i, video_ids[i][0])\n", "display(tabs)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdcb974a-95bc-478d-9b3e-69d4270857dd", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_4\")" + ] } ], "metadata": { @@ -452,7 +520,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.19" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/tutorials/materials.yml b/tutorials/materials.yml index 6c254460e..b0a445c6b 100644 --- a/tutorials/materials.yml +++ b/tutorials/materials.yml @@ -117,12 +117,12 @@ - day: W2D5 category: Mysteries - intro: https://www.youtube.com/watch?v=MTDhzJxVjRo - intro_bilibili: https://www.bilibili.com/video/BV1HT4y1E7U4/ + intro: https://www.youtube.com/watch?v=8fOh_fzOX0s + intro_bilibili: https://www.bilibili.com/video/BV12s421M7eH/ name: Mysteries - outro: https://www.youtube.com/watch?v=zPejpU6LuvU - outro_bilibili: https://www.bilibili.com/video/BV1vv411i7SG/ - playlist: https://www.youtube.com/playlist?list=PLkBQOLLbi18OTyAW4eH1CyCGezU1MyDaG + outro: https://www.youtube.com/watch?v=yZqXLWapS7c + outro_bilibili: https://www.bilibili.com/video/BV17w4m1i7eZ/ + playlist: https://www.youtube.com/playlist?list=PLkBQOLLbi18NRcW-7qrR8_8kOeJnepQwZ slides: - link: https://mfr.ca-1.osf.io/render?url=https://osf.io/v7ber/?direct%26mode=render%26action=download%26mode=render From f54e2501cfc12426db47795ac3eb454d1c8f6866 Mon Sep 17 00:00:00 2001 From: glibesyck Date: Wed, 3 Jul 2024 21:39:40 +0300 Subject: [PATCH 2/3] exercise fix --- tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb b/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb index d839c7df0..876f01f02 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb @@ -3220,11 +3220,11 @@ "source": [ "**Simulate ignition (asymmetry vs. symmetry)**\n", "\n", - "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (K-L) divergence, particularly at a certain level within the model known as the W level.\n", + "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (KL) divergence, particularly at a certain level within the model known as the W level.\n", "\n", "This increase in prediction errors when something is detected is similar to what happens in the human brain, a phenomenon known as global ignition responses. These are big surges in brain activity that happen when we become conscious of something. Research like that conducted by Del Cul et al. (2007) and Dehaene and Changeux (2011) support this concept, linking it to the global workspace model. This model describes consciousness as the sharing of information across different parts of the brain.\n", "\n", - "In our model, we simulate this by adjusting the intensity of the stimulus and observe how the prediction errors vary in the model. Under a theory called predictive coding, which describes how the brain processes information, K-L divergence acts like a marker for neural activity, making it a good stand-in for studying brain-like responses.\n", + "In our model, we simulate this by adjusting the intensity of the stimulus and observing how the prediction errors vary in the model. Under a theory called predictive coding, which describes how the brain processes information, KL divergence acts like a marker for neural activity, making it a good stand-in for studying brain-like responses.\n", "\n", "We then classify these prediction errors based on whether the model recognizes a stimulus as \"seen\" or \"unseen.\" If the model has a response indicating \"seen,\" it shows more activity than when it indicates \"unseen.\" This is what we refer to as ignition — more activity for \"seen\" stimuli.\n", "\n", @@ -3325,7 +3325,7 @@ " plt.errorbar(gamma, all_KL_w_no, yerr=sem_KL_w_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, perceptual states')\n", + " plt.ylabel('KL-divergence, perceptual states')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3336,7 +3336,7 @@ " plt.errorbar(gamma, all_KL_A_no, yerr=sem_KL_A_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, awareness state')\n", + " plt.ylabel('KL-divergence, awareness state')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3436,7 +3436,7 @@ " plt.errorbar(gamma, all_KL_w_no, yerr=sem_KL_w_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, perceptual states')\n", + " plt.ylabel('KL-divergence, perceptual states')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", From 3fc898cfa583c90e0f24792ceb44f28c450400f8 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 3 Jul 2024 18:55:30 +0000 Subject: [PATCH 3/3] Process tutorial notebooks --- tutorials/README.md | 2 +- tutorials/W2D5_Mysteries/W2D5_Intro.ipynb | 22 +- tutorials/W2D5_Mysteries/W2D5_Outro.ipynb | 17 +- tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb | 285 ++++++--- tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb | 46 +- .../instructor/W2D5_Intro.ipynb | 69 +- .../instructor/W2D5_Outro.ipynb | 45 +- .../instructor/W2D5_Tutorial1.ipynb | 593 ++++++++---------- .../instructor/W2D5_Tutorial2.ipynb | 134 +++- ...py => W2D5_Tutorial1_Solution_96fe639d.py} | 6 +- ...py => W2D5_Tutorial1_Solution_f903bbb4.py} | 8 +- .../W2D5_Tutorial1_Solution_96fe639d_585.png | Bin 0 -> 199714 bytes .../W2D5_Tutorial1_Solution_fb77cb86_585.png | Bin 211913 -> 0 bytes .../W2D5_Mysteries/student/W2D5_Intro.ipynb | 69 +- .../W2D5_Mysteries/student/W2D5_Outro.ipynb | 45 +- .../student/W2D5_Tutorial1.ipynb | 585 ++++++++--------- .../student/W2D5_Tutorial2.ipynb | 134 +++- 17 files changed, 1207 insertions(+), 853 deletions(-) rename tutorials/W2D5_Mysteries/solutions/{W2D5_Tutorial1_Solution_fb77cb86.py => W2D5_Tutorial1_Solution_96fe639d.py} (96%) rename tutorials/W2D5_Mysteries/solutions/{W2D5_Tutorial1_Solution_8f71a687.py => W2D5_Tutorial1_Solution_f903bbb4.py} (68%) create mode 100644 tutorials/W2D5_Mysteries/static/W2D5_Tutorial1_Solution_96fe639d_585.png delete mode 100644 tutorials/W2D5_Mysteries/static/W2D5_Tutorial1_Solution_fb77cb86_585.png diff --git a/tutorials/README.md b/tutorials/README.md index 4dc1a278a..963986c0c 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -170,7 +170,7 @@ Slides: [Intro](https://mfr.ca-1.osf.io/render?url=https://osf.io/7k4pv/?direct% ## W2D5 - Mysteries -[YouTube Playlist](https://www.youtube.com/playlist?list=PLkBQOLLbi18OTyAW4eH1CyCGezU1MyDaG) +[YouTube Playlist](https://www.youtube.com/playlist?list=PLkBQOLLbi18NRcW-7qrR8_8kOeJnepQwZ) Slides: [Intro](https://mfr.ca-1.osf.io/render?url=https://osf.io/v7ber/?direct%26mode=render%26action=download%26mode=render) | [Tutorials](https://mfr.ca-1.osf.io/render?url=https://osf.io/s3py5/?direct%26mode=render%26action=download%26mode=render) | [Outro](https://mfr.ca-1.osf.io/render?url=https://osf.io/98qfs/?direct%26mode=render%26action=download%26mode=render) diff --git a/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb b/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb index 4a8fb4018..bc018d3c2 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Intro.ipynb @@ -34,7 +34,10 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Install and import feedback gadget\n", @@ -58,7 +61,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "## Prerequisites\n", "\n", @@ -67,7 +72,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "## Video" ] @@ -77,6 +84,7 @@ "execution_count": null, "metadata": { "cellView": "form", + "execution": {}, "pycharm": { "name": "#%%\n" } @@ -131,7 +139,10 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -153,6 +164,7 @@ "execution_count": null, "metadata": { "cellView": "form", + "execution": {}, "pycharm": { "name": "#%%\n" } @@ -202,7 +214,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.9.19" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb b/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb index 120376bfc..215dbc53e 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Outro.ipynb @@ -24,7 +24,10 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Install and import feedback gadget\n", @@ -48,7 +51,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "## Video" ] @@ -57,7 +62,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -119,7 +125,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -179,7 +186,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.9.19" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb b/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb index 876f01f02..78bfd9304 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Tutorial1.ipynb @@ -58,7 +58,8 @@ "execution_count": null, "id": "fcc40c2d-9810-4865-879b-1fda92120827", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -94,7 +95,8 @@ "execution_count": null, "id": "4762c382-3622-4178-8e19-da783bac0a57", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -122,7 +124,8 @@ "execution_count": null, "id": "299b676d-d8de-41ad-80c6-3516e25f0fba", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -193,7 +196,8 @@ "execution_count": null, "id": "0960e64d-fe33-4276-8da0-e450e2649bcc", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -212,7 +216,8 @@ "execution_count": null, "id": "391a44b6-acc3-48a6-99c1-810425a73a14", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -691,7 +696,8 @@ "execution_count": null, "id": "e51d683a-d65e-4395-ae17-a3b77715e44a", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -797,29 +803,29 @@ "\n", " # Calculate the maximum value of units for each signal within the patterns tensor\n", " max_values_of_units = patterns_tensor.max(dim=1).values.cpu().numpy() # Ensure it's on CPU and in NumPy format for plotting\n", - " \n", + "\n", " # Determine the binary indicators based on the max value being greater than 0.5\n", " binary_indicators = (max_values_of_units > 0.5).astype(int)\n", - " \n", + "\n", " # Create a figure with 2 subplots (2 rows, 1 column)\n", " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", - " \n", + "\n", " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", - " \n", + "\n", " # First subplot for the maximum values of each signal\n", " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", " axs[0].set_xlabel('Pattern Number')\n", " axs[0].set_ylabel('Max Value of Signal Units')\n", " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", " axs[0].grid(True)\n", - " \n", + "\n", " # Second subplot for the binary indicators\n", " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", " axs[1].set_xlabel('Pattern Number')\n", " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", " axs[1].grid(True)\n", - " \n", + "\n", " plt.tight_layout()\n", " plt.show()\n", "\n", @@ -960,7 +966,8 @@ "execution_count": null, "id": "79f79032-091e-4f19-88b6-7fb797a1cc31", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1014,7 +1021,8 @@ "execution_count": null, "id": "2a2fb610-9241-41f2-bb3e-3f17c53e03b2", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1068,7 +1076,8 @@ "execution_count": null, "id": "5e11fdaa-9f35-4c7f-8b4e-04a18b116a7c", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1081,7 +1090,8 @@ "execution_count": null, "id": "4f93739f-0ec5-40c2-83ec-42c4d0fc14ae", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1135,7 +1145,8 @@ "execution_count": null, "id": "eb524bc5-be37-4d9d-81b7-4e95d5cfa6c2", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1159,7 +1170,8 @@ "execution_count": null, "id": "f52e2c29-7eca-4c8e-bd37-f6bc6391c06c", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1213,7 +1225,8 @@ "execution_count": null, "id": "889b300f-90d7-4c1d-9825-e3789bbacf0c", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1319,7 +1332,8 @@ "execution_count": null, "id": "4ae3e1d3-7be8-460b-ad89-17c96274cb2c", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1392,7 +1406,9 @@ "cell_type": "code", "execution_count": null, "id": "ad179715-7c6f-455b-aea4-7b7860430c6b", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "with contextlib.redirect_stdout(io.StringIO()):\n", @@ -1491,7 +1507,9 @@ "cell_type": "code", "execution_count": null, "id": "08ceb84b-e550-48ed-a612-a5e5155ebf7b", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "with contextlib.redirect_stdout(io.StringIO()):\n", @@ -1584,7 +1602,9 @@ "cell_type": "code", "execution_count": null, "id": "1b4b188f-b335-4ffb-b723-4782aa18af7d", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Print accuracies for all validation sets (RIMs) with image sizes\n", @@ -1611,7 +1631,8 @@ "execution_count": null, "id": "03105090-519e-4b99-86a7-f5e4b0b0376e", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1635,7 +1656,9 @@ "cell_type": "code", "execution_count": null, "id": "ba00b200", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# to_remove explanation\n", @@ -1660,7 +1683,8 @@ "execution_count": null, "id": "5e6bb9dc-2450-4493-9896-f9a8c6624236", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1698,7 +1722,8 @@ "execution_count": null, "id": "9ebe79db-9af2-4fde-9139-8084f525ea28", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1752,7 +1777,8 @@ "execution_count": null, "id": "d5b38375-6737-43e0-9b21-d1af1e9e598c", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -1822,7 +1848,9 @@ "cell_type": "code", "execution_count": null, "id": "2380f39e-ec9f-4981-b0c0-2531f1730db7", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "torch.manual_seed(42) # Ensure reproducibility" @@ -1832,7 +1860,9 @@ "cell_type": "code", "execution_count": null, "id": "3d73b534-831e-4e4f-b268-02077f8599bc", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "class SharedWorkspace(nn.Module):\n", @@ -1893,7 +1923,9 @@ "cell_type": "code", "execution_count": null, "id": "e55f180a", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# to_remove solution\n", @@ -1940,7 +1972,9 @@ "cell_type": "code", "execution_count": null, "id": "e6600c95", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Example parameters\n", @@ -1969,7 +2003,9 @@ "cell_type": "code", "execution_count": null, "id": "03836253-ec99-490b-9921-db1395e5c3de", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "def broadcast_from_workspace(self, specialists_states):\n", @@ -2012,7 +2048,8 @@ "execution_count": null, "id": "5e37b7bb-9b92-4fcc-9f3a-104a83b51619", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2053,7 +2090,8 @@ "execution_count": null, "id": "82339815-b7ed-464f-a28b-f66f5bfbbff2", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2107,7 +2145,8 @@ "execution_count": null, "id": "bd850619-f37f-4a0f-b866-83ca653091ff", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2154,7 +2193,9 @@ "cell_type": "code", "execution_count": null, "id": "0b549db9-e8b0-4c49-89d2-b7324b3a4ed1", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "factor=2\n", @@ -2219,7 +2260,9 @@ "cell_type": "code", "execution_count": null, "id": "2c37e357-e5e6-40b2-8507-f83161f5d85f", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "class SecondOrderNetwork(nn.Module):\n", @@ -2281,7 +2324,9 @@ "cell_type": "code", "execution_count": null, "id": "4d931cb5-a87a-48be-8760-79512b9d88f7", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# to_remove solution\n", @@ -2334,7 +2379,8 @@ "execution_count": null, "id": "736319ec-2a17-4d80-bb04-b9507ba5db5d", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2346,7 +2392,9 @@ "cell_type": "code", "execution_count": null, "id": "45208df8-1cb6-4669-a968-2c5157e8522e", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "hidden=40\n", @@ -2366,7 +2414,9 @@ "cell_type": "code", "execution_count": null, "id": "947c8550-a40d-43aa-bfd6-1eb8cead339f", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "def pre_train(first_order_network, second_order_network, criterion_1, criterion_2, optimizer_1, optimizer_2, scheduler_1, scheduler_2, factor, meta):\n", @@ -2542,7 +2592,8 @@ "execution_count": null, "id": "55115815-beb2-4f19-a598-9b129ff87637", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2555,7 +2606,8 @@ "execution_count": null, "id": "a5a880a9-a069-4e0f-a481-f3b85b6a3952", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2609,7 +2661,8 @@ "execution_count": null, "id": "8a54d67b-507e-4a8a-9715-0aacdeb06f26", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2642,7 +2695,8 @@ "execution_count": null, "id": "f21045c6-9814-431d-b56d-c970bf8d003a", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2696,7 +2750,8 @@ "execution_count": null, "id": "521cfa24-af6b-49a2-8ea9-4a0b2d49526d", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -2724,7 +2779,9 @@ "cell_type": "code", "execution_count": null, "id": "01aa71fb-ce0a-4f12-a7a6-3df4996eb358", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "def HOSS_evaluate_flat(X, mu, Sigma, Wprior):\n", @@ -2789,7 +2846,9 @@ "cell_type": "code", "execution_count": null, "id": "b5eeba6f-6608-41e1-bfa3-2861bbeb6738", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Creating the array X with strong evidence for A and weak evidence for B\n", @@ -2818,7 +2877,9 @@ "cell_type": "code", "execution_count": null, "id": "8c40e73d-d90c-4630-9089-4cb64d22f811", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Define the grid\n", @@ -2870,7 +2931,9 @@ "cell_type": "code", "execution_count": null, "id": "579938b1", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "coords = np.linspace(-.5, 6.5, 27)\n", @@ -3013,7 +3076,9 @@ "cell_type": "code", "execution_count": null, "id": "1a12f7e4-1eba-47b2-b49e-1ae0593ced22", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "def HOSS_evaluate(X, mu, Sigma, Aprior, Wprior):\n", @@ -3058,7 +3123,9 @@ "cell_type": "code", "execution_count": null, "id": "ebb04c59-a0e2-4595-ac2c-5659242eb42f", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# to_remove solution\n", @@ -3099,7 +3166,8 @@ "execution_count": null, "id": "8da8a1b0-9a1c-4b5d-8789-7866b041410b", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -3123,7 +3191,9 @@ "cell_type": "code", "execution_count": null, "id": "4f8a881f-3103-4fbc-b958-8f29db2bee57", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Define the input parameters for this specific example\n", @@ -3159,7 +3229,9 @@ "cell_type": "code", "execution_count": null, "id": "43b0cb7d", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "coords = np.linspace(-.5, 6.5, 27)\n", @@ -3235,7 +3307,9 @@ "cell_type": "code", "execution_count": null, "id": "b09f812a-f202-4f3d-ac66-247b322002e7", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Experiment parameters\n", @@ -3350,7 +3424,9 @@ "cell_type": "code", "execution_count": null, "id": "af24eab7-5e81-4f04-bdb8-f192058d06b3", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# to_remove solution\n", @@ -3462,7 +3538,8 @@ "execution_count": null, "id": "85f40241-afa3-4f82-a43c-259d3632ef86", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -3497,7 +3574,8 @@ "execution_count": null, "id": "2fbf1fbb-2c09-45cc-ad31-f939e930c311", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -3510,7 +3588,8 @@ "execution_count": null, "id": "89231241-c634-46da-9bb7-5a1c6060a2d9", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -3564,7 +3643,8 @@ "execution_count": null, "id": "e279723b-e254-47e8-9852-88124164c949", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -3575,7 +3655,9 @@ { "cell_type": "markdown", "id": "42ec8e35-a10a-409b-8c9a-aac6335d4c9b", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "---\n", "# Summary\n", @@ -3587,7 +3669,10 @@ "cell_type": "code", "execution_count": null, "id": "98844fb0-afc4-487f-9c80-175317b3b537", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Video 9: Final Thoughts\n", @@ -3639,7 +3724,10 @@ "cell_type": "code", "execution_count": null, "id": "3f743aa7-438f-4971-a720-864511974e00", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -3649,7 +3737,9 @@ { "cell_type": "markdown", "id": "b323cfe1-0c5b-4ecd-869b-cb3b7e5e9df4", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "Congrats! You've made it to the end of this tutorial. Let's wrap up." ] @@ -3658,7 +3748,10 @@ "cell_type": "code", "execution_count": null, "id": "8c38958d-baf3-4ef0-b440-c1c42ee75bd4", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Video 10: Final Thoughts\n", @@ -3710,7 +3803,10 @@ "cell_type": "code", "execution_count": null, "id": "4013ed8f-2320-4c17-b228-59de5baab226", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -3755,7 +3851,9 @@ "cell_type": "code", "execution_count": null, "id": "8c79b0a2-8e12-44ea-a685-bba788f6685d", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Visualize the autogenerated data\n", @@ -3797,7 +3895,9 @@ "cell_type": "code", "execution_count": null, "id": "db58d78b-17d8-4651-801a-f06e568a7322", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "factor=2\n", @@ -3840,7 +3940,9 @@ "cell_type": "code", "execution_count": null, "id": "94d0bcaf-8b49-4e35-b0d2-1b9dcc98b182", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "class FirstOrderNetwork(nn.Module):\n", @@ -3926,7 +4028,9 @@ "cell_type": "code", "execution_count": null, "id": "7bfade3d-6385-459c-8f07-e3017264455a", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Define the architecture, optimizers, loss functions, and schedulers for pre training\n", @@ -4036,7 +4140,9 @@ "cell_type": "code", "execution_count": null, "id": "2affe162-f4d9-495f-862a-65b0f50ca5ef", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "results_seed=[]\n", @@ -4059,7 +4165,8 @@ "execution_count": null, "id": "0d18302e-4657-4732-b6ef-f7439d2bb2fd", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -4088,7 +4195,9 @@ "cell_type": "code", "execution_count": null, "id": "31503073-a7c0-4502-8d94-5ffa47a22926", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Define the grid\n", @@ -4161,7 +4270,9 @@ "cell_type": "code", "execution_count": null, "id": "66044263-c8de-49a9-a56b-2e7336cc737c", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# Define the grid\n", @@ -4240,7 +4351,9 @@ "cell_type": "code", "execution_count": null, "id": "7d8deb66-9a1d-49e1-a3ef-96970efa8d97", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "# to_remove explanation\n", @@ -4270,7 +4383,9 @@ "cell_type": "code", "execution_count": null, "id": "869fc8f1-4199-4525-80b3-26e74babc66a", - "metadata": {}, + "metadata": { + "execution": {} + }, "outputs": [], "source": [ "with plt.xkcd():\n", @@ -4303,7 +4418,8 @@ "execution_count": null, "id": "64ecb92c-bfe3-4e49-bd40-f11ffa685ece", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -4338,7 +4454,8 @@ "execution_count": null, "id": "21b621ea-1639-4131-8ec3-9cdf34a64f77", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -4392,7 +4509,8 @@ "execution_count": null, "id": "39c202fb-f580-4a96-8f8e-bad24ed1d55c", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -4432,7 +4550,8 @@ "execution_count": null, "id": "84958157-c165-4cc3-be76-408999cf44ad", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -4469,7 +4588,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.9.19" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb b/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb index 070aca767..ad486f06a 100644 --- a/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb +++ b/tutorials/W2D5_Mysteries/W2D5_Tutorial2.ipynb @@ -55,7 +55,8 @@ "execution_count": null, "id": "af4fa9f7-d9cc-4594-be41-b31f02af1bd4", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -77,7 +78,9 @@ { "cell_type": "markdown", "id": "2675d5e8-0846-48b9-a24c-2f1d6c27b36f", - "metadata": {}, + "metadata": { + "execution": {} + }, "source": [ "---\n", "# Setup" @@ -87,7 +90,10 @@ "cell_type": "code", "execution_count": null, "id": "b8221ea8-a399-45aa-9ade-10f5d8adf318", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Install and import feedback gadget\n", @@ -125,7 +131,8 @@ "execution_count": null, "id": "e82bb887-427b-49e8-b86a-235e1095af75", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -178,7 +185,10 @@ "cell_type": "code", "execution_count": null, "id": "d6349841-fb75-45d5-a554-2358b95b249a", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -231,7 +241,8 @@ "execution_count": null, "id": "1c509ffd-286f-47a0-bb32-38f5cfa9a642", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -284,7 +295,10 @@ "cell_type": "code", "execution_count": null, "id": "06b9fca7-2d82-488f-8308-15667b56129b", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -330,7 +344,8 @@ "execution_count": null, "id": "135c1a8f-fe65-4c6b-a20b-10f7a9392715", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -383,7 +398,10 @@ "cell_type": "code", "execution_count": null, "id": "c57f44e6-4dbb-43d8-be2a-cd4491553e8f", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -432,7 +450,8 @@ "execution_count": null, "id": "792b9c7f-c5ab-4148-93db-d15789c041bc", "metadata": { - "cellView": "form" + "cellView": "form", + "execution": {} }, "outputs": [], "source": [ @@ -485,7 +504,10 @@ "cell_type": "code", "execution_count": null, "id": "fdcb974a-95bc-478d-9b3e-69d4270857dd", - "metadata": {}, + "metadata": { + "cellView": "form", + "execution": {} + }, "outputs": [], "source": [ "# @title Submit your feedback\n", @@ -520,7 +542,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.9.19" } }, "nbformat": 4, diff --git a/tutorials/W2D5_Mysteries/instructor/W2D5_Intro.ipynb b/tutorials/W2D5_Mysteries/instructor/W2D5_Intro.ipynb index 33e0335e5..bc018d3c2 100644 --- a/tutorials/W2D5_Mysteries/instructor/W2D5_Intro.ipynb +++ b/tutorials/W2D5_Mysteries/instructor/W2D5_Intro.ipynb @@ -24,8 +24,6 @@ "execution": {} }, "source": [ - "# Introduction to Consciousness and Ethics\n", - "\n", "**Week 2, Day 5: Mysteries**\n", "\n", "**By Neuromatch Academy**\n", @@ -33,6 +31,54 @@ "__Content creators:__ Megan Peters, Joseph LeDoux, Matthias Michel, Daniel Dennett" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck datatops --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_Intro\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": {} + }, + "source": [ + "## Prerequisites\n", + "\n", + "For this day, the prerequisites are your sincere inner-child curiosity, flexibility in collaborative discussion, and willingness to discover intriguing ideas! Be prepared to actively participate in the activities as the quality of the insights you will get from this day crucially depends on the joint interaction." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": {} + }, + "source": [ + "## Video" + ] + }, { "cell_type": "code", "execution_count": null, @@ -45,7 +91,7 @@ }, "outputs": [], "source": [ - "# @title Video\n", + "# @title Intro Video\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -90,6 +136,19 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_intro_video\")" + ] + }, { "cell_type": "markdown", "metadata": { @@ -112,13 +171,13 @@ }, "outputs": [], "source": [ - "# @markdown\n", + "# @title Intro Video Slides\n", "\n", "from IPython.display import IFrame\n", "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"fsxe9\"\n", + "link_id = \"v7ber\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", diff --git a/tutorials/W2D5_Mysteries/instructor/W2D5_Outro.ipynb b/tutorials/W2D5_Mysteries/instructor/W2D5_Outro.ipynb index bb7926d96..215dbc53e 100644 --- a/tutorials/W2D5_Mysteries/instructor/W2D5_Outro.ipynb +++ b/tutorials/W2D5_Mysteries/instructor/W2D5_Outro.ipynb @@ -30,7 +30,44 @@ }, "outputs": [], "source": [ - "# @title Video\n", + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck datatops --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_Outro\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": {} + }, + "source": [ + "## Video" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Outro Video\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -93,13 +130,13 @@ }, "outputs": [], "source": [ - "# @markdown\n", + "# @title Outro Video Slides\n", "\n", "from IPython.display import IFrame\n", "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"yabgm\"\n", + "link_id = \"98qfs\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -113,7 +150,7 @@ "execution": {} }, "source": [ - "# Daily survey\n", + "## Daily survey\n", "\n", "Don't forget to complete your reflections and content check in the daily survey! Please be patient after logging in as there is a small delay before you will be redirected to the survey.\n", "\n", diff --git a/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial1.ipynb b/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial1.ipynb index 91ae55dc6..857d3f00b 100644 --- a/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial1.ipynb +++ b/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial1.ipynb @@ -46,11 +46,11 @@ "\n", "By the end of this tutorial, participants will be able to:\n", "\n", - "1. Understand and distinguish various aspects of consciousness including the hard problem of consciousness, the difference between phenomenal consciousness and access consciousness, as well as the distinctions between consciousness and sentience or intelligence\n", + "1. Understand and distinguish various aspects of consciousness including the hard problem of consciousness, the difference between phenomenal consciousness and access consciousness, as well as the distinctions between consciousness and sentience or intelligence.\n", "\n", - "2. Explore core frameworks for analyzing consciousness, including diagnostic criteria, and will compare objective probabilities with subjective credences\n", + "2. Explore core frameworks for analyzing consciousness, including diagnostic criteria, and will compare objective probabilities with subjective credences.\n", "\n", - "3. Explore reductionist theories of consciousness, such as Global Workspace Theory (GWT), theories of metacognition, and Higher-Order Thought (HOT) theories\n" + "3. Explore reductionist theories of consciousness, such as Global Workspace Theory (GWT), theories of metacognition, and Higher-Order Thought (HOT) theories.\n" ] }, { @@ -70,7 +70,7 @@ "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"624ps\"\n", + "link_id = \"s3py5\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -90,16 +90,6 @@ "\n" ] }, - { - "cell_type": "markdown", - "id": "96754119-d114-4bb8-a842-be4dc11eab83", - "metadata": { - "execution": {} - }, - "source": [ - "## Install and import feedback gadget\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -117,12 +107,12 @@ "from vibecheck import DatatopsContentReviewContainer\n", "def content_review(notebook_section: str):\n", " return DatatopsContentReviewContainer(\n", - " \"\", # No text prompt - leave this as is\n", + " \"\", # No text prompt\n", " notebook_section,\n", " {\n", - " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", - " \"name\": \"sciencematch_sm\", # change the name of the course : neuromatch_dl, climatematch_ct, etc\n", - " \"user_key\": \"y1x3mpx5\",\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", " },\n", " ).render()\n", "\n", @@ -201,16 +191,6 @@ " import torch_optimizer as optim2" ] }, - { - "cell_type": "markdown", - "id": "049a9bb3-1798-4c12-8647-8f7940d8566a", - "metadata": { - "execution": {} - }, - "source": [ - "## Figure Settings\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -231,16 +211,6 @@ "plt.style.use(\"https://raw.githubusercontent.com/NeuromatchAcademy/course-content/main/nma.mplstyle\")" ] }, - { - "cell_type": "markdown", - "id": "bf86fa3e-45c0-44a2-b293-8cdfe429a1c3", - "metadata": { - "execution": {} - }, - "source": [ - "## Helper functions" - ] - }, { "cell_type": "code", "execution_count": null, @@ -251,8 +221,7 @@ }, "outputs": [], "source": [ - "#@title Helper functions\n", - "# @markdown\n", + "# @title Helper functions\n", "\n", "mse_loss = nn.BCELoss(size_average = False)\n", "\n", @@ -348,8 +317,6 @@ "\n", "\n", " def forward(self, x):\n", - "\n", - "\n", " \"\"\"\n", " Defines the forward pass through the network.\n", "\n", @@ -364,7 +331,6 @@ "\n", " return h1 , h2\n", "\n", - "\n", "def initialize_global():\n", " global Input_Size_1, Hidden_Size_1, Output_Size_1, Input_Size_2\n", " global num_units, patterns_number\n", @@ -725,16 +691,6 @@ " return patterns, targets" ] }, - { - "cell_type": "markdown", - "id": "2babe7d9-4683-42f9-97c5-6d79e7267cff", - "metadata": { - "execution": {} - }, - "source": [ - "## Plotting Functions" - ] - }, { "cell_type": "code", "execution_count": null, @@ -843,34 +799,35 @@ " Parameters:\n", " - patterns_tensor: A tensor containing signals, where each signal is expected to have multiple units.\n", " \"\"\"\n", + " with plt.xkcd():\n", "\n", - " # Calculate the maximum value of units for each signal within the patterns tensor\n", - " max_values_of_units = patterns_tensor.max(dim=1).values.cpu().numpy() # Ensure it's on CPU and in NumPy format for plotting\n", + " # Calculate the maximum value of units for each signal within the patterns tensor\n", + " max_values_of_units = patterns_tensor.max(dim=1).values.cpu().numpy() # Ensure it's on CPU and in NumPy format for plotting\n", "\n", - " # Determine the binary indicators based on the max value being greater than 0.5\n", - " binary_indicators = (max_values_of_units > 0.5).astype(int)\n", + " # Determine the binary indicators based on the max value being greater than 0.5\n", + " binary_indicators = (max_values_of_units > 0.5).astype(int)\n", "\n", - " # Create a figure with 2 subplots (2 rows, 1 column)\n", - " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", + " # Create a figure with 2 subplots (2 rows, 1 column)\n", + " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", "\n", - " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", + " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", "\n", - " # First subplot for the maximum values of each signal\n", - " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", - " axs[0].set_xlabel('Pattern Number')\n", - " axs[0].set_ylabel('Max Value of Signal Units')\n", - " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", - " axs[0].grid(True)\n", + " # First subplot for the maximum values of each signal\n", + " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", + " axs[0].set_xlabel('Pattern Number')\n", + " axs[0].set_ylabel('Max Value of Signal Units')\n", + " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", + " axs[0].grid(True)\n", "\n", - " # Second subplot for the binary indicators\n", - " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", - " axs[1].set_xlabel('Pattern Number')\n", - " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", - " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", - " axs[1].grid(True)\n", + " # Second subplot for the binary indicators\n", + " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", + " axs[1].set_xlabel('Pattern Number')\n", + " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", + " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", + " axs[1].grid(True)\n", "\n", - " plt.tight_layout()\n", - " plt.show()\n", + " plt.tight_layout()\n", + " plt.show()\n", "\n", "\n", "def perform_quadratic_regression(epoch_list, values):\n", @@ -952,10 +909,6 @@ " plt.show()\n", " plt.close(fig)\n", "\n", - "\n", - "\n", - "\n", - "\n", "# Function to configure the training environment and load the models\n", "def config_training(first_order_network, second_order_network, hidden, factor, gelu):\n", " \"\"\"\n", @@ -1018,11 +971,7 @@ }, "outputs": [], "source": [ - "# @title Set device (GPU or CPU). Execute `set_device()`\n", - "# especially if torch modules used.\n", - "# @markdown\n", - "\n", - "# inform the user if the notebook uses GPU or CPU.\n", + "# @title Set device (GPU or CPU)\n", "\n", "def set_device():\n", " \"\"\"\n", @@ -1046,16 +995,6 @@ " return device" ] }, - { - "cell_type": "markdown", - "id": "4c4c7da1-9990-458d-9ef8-c5584ea51aa0", - "metadata": { - "execution": {} - }, - "source": [ - "Guillaume is going to give us an overview about Global Neuronal Workspace and how it relates to HOT..." - ] - }, { "cell_type": "markdown", "id": "2ef4a1ee-afa6-4e4a-9cc6-081d802e43de", @@ -1063,6 +1002,7 @@ "execution": {} }, "source": [ + "---\n", "# Section 1: Global Neuronal Workspace" ] }, @@ -1191,7 +1131,7 @@ " tab_contents.append(out)\n", " return tab_contents\n", "\n", - "video_ids = [('Youtube', 'wVcGJxU_wyU')]\n", + "video_ids = [('Youtube', 'wVcGJxU_wyU'), ('Bilibili', 'BV1Vs421u73a')]\n", "tab_contents = display_videos(video_ids, W=854, H=480)\n", "tabs = widgets.Tab()\n", "tabs.children = tab_contents\n", @@ -1221,6 +1161,7 @@ "execution": {} }, "source": [ + "---\n", "## Section 1a: Modularity Of The Mind" ] }, @@ -1322,7 +1263,7 @@ "2. The RIM units are mostly independent, meaning that they do not share weights or hidden states.\n", "3. The RIM units can communicate with each other through an attention mechanism.\n", "\n", - "#### Selecting the input\n", + "**Selecting the input**\n", "\n", "Each RIM unit gets activated and updated when the input is pertinent to it. Using key-value attention, the queries originate from the RIMs, while the keys and values are derived from the current input. The key-value attention mechanisms enable dynamic selection of which variable instance (i.e., which entity or object) will serve as input to each RIM mechanism:\n", "\n", @@ -1437,16 +1378,6 @@ " print(f\"{model_key} model already exists. No download needed.\")" ] }, - { - "cell_type": "markdown", - "id": "0e85190a-f57e-41c8-8d4a-3ddc658ae045", - "metadata": { - "execution": {} - }, - "source": [ - "### RIMs" - ] - }, { "cell_type": "markdown", "id": "33bb7131-c719-47de-98bf-9cfdb59f1abc", @@ -1454,6 +1385,8 @@ "execution": {} }, "source": [ + "**Training RIMs**\n", + "\n", "RIMs are motivated by the hypothesis that generalization performance can benefit from modules that only activate on relevant parts of the sequence. To measure RIMs' ability to perform tasks out-of-distribution, we consider the task of classifying MNIST digits as sequences of pixels (Sequential MNIST) and assess generalization to images of resolutions different from those seen during training. The intuition is that the RIMs model should have distinct subsets of the RIMs activated for pixels containing the digit and for empty pixels. RIMs should generalize better to higher resolutions by keeping dormant those RIMs that store pixel information over empty regions of the image.\n", "\n", "This is the test setup:\n", @@ -1464,7 +1397,9 @@ " - 19x19 images (validation set 2)\n", " - 24x24 images (validation set 3)\n", "\n", - "This approach helps to understand whether the model can still recognize the digits accurately even when they appear at different scales or resolutions than those on which it was originally trained. By testing the model on various image sizes, we can determine how flexible and effective the model is at dealing with variations in input data." + "This approach helps to understand whether the model can still recognize the digits accurately even when they appear at different scales or resolutions than those on which it was originally trained. By testing the model on various image sizes, we can determine how flexible and effective the model is at dealing with variations in input data.\n", + "\n", + "Note: if you train the model locally, it will take around 10 minutes to complete." ] }, { @@ -1556,16 +1491,6 @@ " validation_accuracies_rim.append(accuracy)" ] }, - { - "cell_type": "markdown", - "id": "6303ab3d-10e3-4f17-98cd-d1cc8bec2244", - "metadata": { - "execution": {} - }, - "source": [ - "### LSTM" - ] - }, { "cell_type": "markdown", "id": "1e7acc2d-4aa5-4e4c-82ae-43ec4a3c2bd8", @@ -1573,6 +1498,8 @@ "execution": {} }, "source": [ + "**Training LSTMs**\n", + "\n", "Let's now repeat the same process with LSTMs." ] }, @@ -1772,7 +1699,7 @@ "execution": {} }, "source": [ - "### RIMs and consciousness\n", + "**RIMs and consciousness**\n", "\n", "You might wonder how RIMs relate to consciousness. As we have seen, RIMs focus on modularity in neural processing. In this approach, various modules or units operate semi-independently but coordinate through a mechanism akin to attention. This modularity allows the system to specialize in different tasks, with the attention mechanism directing computational resources efficiently by focusing on the most relevant parts of a problem at any given time.\n", "\n", @@ -1898,7 +1825,7 @@ "execution": {} }, "source": [ - "### Coding Exercise: Creating a Shared Workspace" + "### Coding Exercise 1: Creating a Shared Workspace" ] }, { @@ -2061,9 +1988,7 @@ "# Generate deterministic specialists' states\n", "specialists_states = torch.randn(num_specialists, hidden_dim)\n", "\n", - "workspace = SharedWorkspace(num_specialists, hidden_dim, num_memory_slots, memory_slot_dim)\n", - "expected_output = workspace.forward(specialists_states)\n", - "print(\"Expected Output:\", expected_output)" + "workspace = SharedWorkspace(num_specialists, hidden_dim, num_memory_slots, memory_slot_dim)" ] }, { @@ -2141,7 +2066,7 @@ "execution": {} }, "source": [ - "## Recap\n", + "**Recap**\n", "\n", "In the past sections, we've discussed models like Recurrent Independent Mechanisms (RIMs) and those inspired by cognitive neuroscience's Global Workspace Theory (GWT). These models embed different ideas about modularity:\n", "\n", @@ -2275,7 +2200,6 @@ }, "outputs": [], "source": [ - "# Compare your results with the patterns generate below\n", "factor=2\n", "\n", "initialize_global()\n", @@ -2313,7 +2237,7 @@ "execution": {} }, "source": [ - "### Activity 1: Developing a Second-Order Network\n", + "### Coding Exercise 2: Developing a Second-Order Network\n", "\n", "Your task is to expand upon the first-order network by integrating a second-order network that incorporates a metacognitive layer assessing the predictions of the first-order network. This layer introduces a wagering mechanism, where the network \"bets\" on its confidence in its predictions.\n", "\n", @@ -2486,7 +2410,7 @@ "\n", "initialize_global()\n", "\n", - "# First order network instantiation (defined somewhere else)\n", + "# First order network instantiation\n", "first_order_network = FirstOrderNetwork(hidden, factor, gelu).to(device)" ] }, @@ -2905,7 +2829,7 @@ "execution": {} }, "source": [ - "### Make our stimulus space" + "**Make our stimulus space**" ] }, { @@ -2946,11 +2870,11 @@ "\n", "Let's start by creating our space, and placing three Gaussian distributions on the space that represent the likelihood of observing a pair of features given each of three stimulus classes:\n", "\n", - "- leftward tilt (w1)\n", - "- rightward tilt (w2)\n", - "- noise/nothing (w0)\n", + "- leftward tilt ($w_1$)\n", + "- rightward tilt ($w_2$)\n", + "- noise/nothing ($w_0$)\n", "\n", - "By setting up this model, we aim to simulate and analyze how an observer infers the presence or absence of a stimulus. When the observer detects a stimulus, the inference process would lean towards either the leftward or rightward tilt, depending on which Gaussian (w1 or w2) the observed data points are closer to in feature space. When the observer fails to detect a stimulus, the inference process would recognize that the data points fall closer to the noise distribution centered at the origin." + "By setting up this model, we aim to simulate and analyze how an observer infers the presence or absence of a stimulus. When the observer detects a stimulus, the inference process would lean towards either the leftward or rightward tilt, depending on which Gaussian ($w_1$ or $w_2$) the observed data points are closer to in feature space. When the observer fails to detect a stimulus, the inference process would recognize that the data points fall closer to the noise distribution centered at the origin." ] }, { @@ -3074,13 +2998,13 @@ "execution": {} }, "source": [ - "### Add in higher-order node for global detection\n", + "**Add in higher-order node for global detection**\n", "\n", "So far, our model has been straightforward, or \"flat,\" where each perceptual state (like leftward tilt, rightward tilt, or no stimulus) is treated separately. However, real-life perception often requires more complex judgments about the presence or absence of any stimulus, not just identifying specific types. This is where a higher-order node comes into play.\n", "\n", - "#### Introducing the \"A\" Level:\n", + "**Introducing the \"A\" Level:**\n", "\n", - "Think of the \"A\" level as a kind of overseer or monitor that watches over the lower-level states (w1, w2, etc.). This higher-order node isn't concerned with the specific content of the stimulus (like which direction something is tilting) but rather with whether there's any significant stimulus at all versus just noise. It takes inputs from the same data (pairs of X's), but it adds a layer of awareness. It evaluates whether the data points suggest any meaningful content or if they're likely just random noise.\n", + "Think of the \"A\" level as a kind of overseer or monitor that watches over the lower-level states ($w_1$, $w_2$, etc.). This higher-order node isn't concerned with the specific content of the stimulus (like which direction something is tilting) but rather with whether there's any significant stimulus at all versus just noise. It takes inputs from the same data (pairs of $X$'s), but it adds a layer of awareness. It evaluates whether the data points suggest any meaningful content or if they're likely just random noise.\n", "\n", "The system can now answer questions on two levels:\n", "\n", @@ -3264,9 +3188,9 @@ "execution": {} }, "source": [ - "Now that we've coded our multi-level model, we're ready to evaluate it! We first set the prior on presence (vs. absence), and then set the priors on w1 vs. w2, and the model takes care of the rest.\n", + "Now that we've coded our multi-level model, we're ready to evaluate it! We first set the prior on presence (vs. absence), and then set the priors on $w_1$ vs. $w_2$, and the model takes care of the rest.\n", "\n", - "We'll evaluate the model on the edge between the leftward stimulus w1 and the absence of a stimulus w0. This edge case is particularly interesting because it's where the model is most uncertain about the presence of a stimulus." + "We'll evaluate the model on the edge between the leftward stimulus $w_1$ and the absence of a stimulus $w_0$. This edge case is particularly interesting because it's where the model is most uncertain about the presence of a stimulus." ] }, { @@ -3302,7 +3226,7 @@ "\n", "* The model is fairly certain that the stimulus is absent; the probability of awareness\n", " is < 0.5.\n", - "* The model nevertheless assigns much higher probability to the presence of the leftward stimulus w1 than to the rightward stimulus w2.\n", + "* The model nevertheless assigns much higher probability to the presence of the leftward stimulus $w_1$ than to the rightward stimulus $w_2$.\n", "\n", "This captures the essence of a phenomenon like blindsight: there can be positive discrimination between different stimuli even when the observer is not consciously aware of the stimulus. Let's look at how the awareness signal changes as the evidence changes." ] @@ -3372,13 +3296,13 @@ "execution": {} }, "source": [ - "### Simulate ignition (asymmetry vs. symmetry)\n", + "**Simulate ignition (asymmetry vs. symmetry)**\n", "\n", - "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (K-L) divergence, particularly at a certain level within the model known as the W level.\n", + "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (KL) divergence, particularly at a certain level within the model known as the W level.\n", "\n", "This increase in prediction errors when something is detected is similar to what happens in the human brain, a phenomenon known as global ignition responses. These are big surges in brain activity that happen when we become conscious of something. Research like that conducted by Del Cul et al. (2007) and Dehaene and Changeux (2011) support this concept, linking it to the global workspace model. This model describes consciousness as the sharing of information across different parts of the brain.\n", "\n", - "In our model, we simulate this by adjusting the intensity of the stimulus and observe how the prediction errors vary in the model. Under a theory called predictive coding, which describes how the brain processes information, K-L divergence acts like a marker for neural activity, making it a good stand-in for studying brain-like responses.\n", + "In our model, we simulate this by adjusting the intensity of the stimulus and observing how the prediction errors vary in the model. Under a theory called predictive coding, which describes how the brain processes information, KL divergence acts like a marker for neural activity, making it a good stand-in for studying brain-like responses.\n", "\n", "We then classify these prediction errors based on whether the model recognizes a stimulus as \"seen\" or \"unseen.\" If the model has a response indicating \"seen,\" it shows more activity than when it indicates \"unseen.\" This is what we refer to as ignition — more activity for \"seen\" stimuli.\n", "\n", @@ -3464,7 +3388,7 @@ "with plt.xkcd():\n", "\n", " # Create figure\n", - " plt.figure(figsize=(16, 4.67))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # First subplot: Probability of reporting \"seen\" for w_1 or w_2\n", " plt.subplot(1, 3, 1)\n", @@ -3481,7 +3405,7 @@ " plt.errorbar(gamma, all_KL_w_no, yerr=sem_KL_w_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, perceptual states')\n", + " plt.ylabel('KL-divergence, perceptual states')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3492,7 +3416,7 @@ " plt.errorbar(gamma, all_KL_A_no, yerr=sem_KL_A_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, awareness state')\n", + " plt.ylabel('KL-divergence, awareness state')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3579,7 +3503,7 @@ "with plt.xkcd():\n", "\n", " # Create figure\n", - " plt.figure(figsize=(16, 4.67))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # First subplot: Probability of reporting \"seen\" for w_1 or w_2\n", " plt.subplot(1, 3, 1)\n", @@ -3596,7 +3520,7 @@ " plt.errorbar(gamma, all_KL_w_no, yerr=sem_KL_w_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, perceptual states')\n", + " plt.ylabel('KL-divergence, perceptual states')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3607,7 +3531,7 @@ " plt.errorbar(gamma, all_KL_A_no, yerr=sem_KL_A_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, awareness state')\n", + " plt.ylabel('KL-divergence, awareness state')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3640,7 +3564,7 @@ "source": [ "### Discussion point\n", "\n", - "Can you think of experiments that could distinguish between the HOSS and GWS accounts of ignition?\n" + "Can you think of experiments that could distinguish between the HOSS and GWS accounts of ignition?" ] }, { @@ -3736,6 +3660,167 @@ "content_review(f\"{feedback_prefix}_Video_8\")" ] }, + { + "cell_type": "markdown", + "id": "42ec8e35-a10a-409b-8c9a-aac6335d4c9b", + "metadata": { + "execution": {} + }, + "source": [ + "---\n", + "# Summary\n", + "\n", + "Hakwan will now discuss the critical aspects and limitations of current consciousness studies, addressing the challenges in distinguishing theories of consciousness from those merely describing general brain functions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98844fb0-afc4-487f-9c80-175317b3b537", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Video 9: Final Thoughts\n", + "\n", + "from ipywidgets import widgets\n", + "from IPython.display import YouTubeVideo\n", + "from IPython.display import IFrame\n", + "from IPython.display import display\n", + "\n", + "class PlayVideo(IFrame):\n", + " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", + " self.id = id\n", + " if source == 'Bilibili':\n", + " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", + " elif source == 'Osf':\n", + " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", + " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", + "\n", + "def display_videos(video_ids, W=400, H=300, fs=1):\n", + " tab_contents = []\n", + " for i, video_id in enumerate(video_ids):\n", + " out = widgets.Output()\n", + " with out:\n", + " if video_ids[i][0] == 'Youtube':\n", + " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", + " height=H, fs=fs, rel=0)\n", + " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", + " else:\n", + " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", + " height=H, fs=fs, autoplay=False)\n", + " if video_ids[i][0] == 'Bilibili':\n", + " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", + " elif video_ids[i][0] == 'Osf':\n", + " print(f'Video available at https://osf.io/{video.id}')\n", + " display(video)\n", + " tab_contents.append(out)\n", + " return tab_contents\n", + "\n", + "video_ids = [('Youtube', 'Og8GjV2ELp8'), ('Bilibili', 'BV1kx4y1b71V')]\n", + "tab_contents = display_videos(video_ids, W=854, H=480)\n", + "tabs = widgets.Tab()\n", + "tabs.children = tab_contents\n", + "for i in range(len(tab_contents)):\n", + " tabs.set_title(i, video_ids[i][0])\n", + "display(tabs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f743aa7-438f-4971-a720-864511974e00", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_9\")" + ] + }, + { + "cell_type": "markdown", + "id": "b323cfe1-0c5b-4ecd-869b-cb3b7e5e9df4", + "metadata": { + "execution": {} + }, + "source": [ + "Congrats! You've made it to the end of this tutorial. Let's wrap up." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c38958d-baf3-4ef0-b440-c1c42ee75bd4", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Video 10: Final Thoughts\n", + "\n", + "from ipywidgets import widgets\n", + "from IPython.display import YouTubeVideo\n", + "from IPython.display import IFrame\n", + "from IPython.display import display\n", + "\n", + "class PlayVideo(IFrame):\n", + " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", + " self.id = id\n", + " if source == 'Bilibili':\n", + " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", + " elif source == 'Osf':\n", + " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", + " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", + "\n", + "def display_videos(video_ids, W=400, H=300, fs=1):\n", + " tab_contents = []\n", + " for i, video_id in enumerate(video_ids):\n", + " out = widgets.Output()\n", + " with out:\n", + " if video_ids[i][0] == 'Youtube':\n", + " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", + " height=H, fs=fs, rel=0)\n", + " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", + " else:\n", + " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", + " height=H, fs=fs, autoplay=False)\n", + " if video_ids[i][0] == 'Bilibili':\n", + " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", + " elif video_ids[i][0] == 'Osf':\n", + " print(f'Video available at https://osf.io/{video.id}')\n", + " display(video)\n", + " tab_contents.append(out)\n", + " return tab_contents\n", + "\n", + "video_ids = [('Youtube', 'dJ4KiCcvndU'), ('Bilibili', 'BV1BT421e7G1')]\n", + "tab_contents = display_videos(video_ids, W=854, H=480)\n", + "tabs = widgets.Tab()\n", + "tabs.children = tab_contents\n", + "for i in range(len(tab_contents)):\n", + " tabs.set_title(i, video_ids[i][0])\n", + "display(tabs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4013ed8f-2320-4c17-b228-59de5baab226", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_10\")" + ] + }, { "cell_type": "markdown", "id": "5444b408-933d-4a58-9ab8-757999917a01", @@ -3743,7 +3828,7 @@ "execution": {} }, "source": [ - "Below you'll find some optional bonus content!" + "Below you'll find some optional coding & discussion bonus content!" ] }, { @@ -3753,6 +3838,7 @@ "execution": {} }, "source": [ + "---\n", "# Coding Bonus Section\n", "This secton contains some extra coding exercises in case you have time and inclination." ] @@ -3764,7 +3850,7 @@ "execution": {} }, "source": [ - "## Bonus coding section 1: Train a first-order network\n", + "## Bonus coding exersice 1: Train a first-order network\n", "\n", "This section invites you to engage with a straightforward, auto-generated dataset on blindsight, originally introduced by [Pasquali et al. in 2010](https://www.sciencedirect.com/science/article/abs/pii/S0010027710001794). Blindsight is a fascinating condition where individuals who are cortically blind due to damage in their primary visual cortex can still respond to visual stimuli without conscious perception. This intriguing phenomenon underscores the intricate nature of sensory processing and the brain's ability to process information without conscious awareness." ] @@ -3802,7 +3888,7 @@ "execution": {} }, "source": [ - "### Testing patterns\n", + "**Testing patterns**\n", "\n", "As we have seen before, the network underwent evaluations under three distinct conditions, each modifying the signal-to-noise ratio in a unique way to explore different degrees and types of blindness.\n", "\n", @@ -3845,13 +3931,13 @@ "\n", "In this activity, we'll construct a neural network model using our auto-generated dataset, focusing on blindsight scenarios. The model will primarily consist of fully connected layers, establishing a straightforward, first-order network. The aim here is to assess the basic network's performance.\n", "\n", - "### Steps to follow\n", + "**Steps to follow**\n", "\n", "1. Examine the network architecture: understand the structure of the neural network you're about to work with.\n", "2. Visualize loss metrics: observe and analyze the network's performance during pre-training by visualizing the loss over epochs.\n", "3. Evaluate the model: use the provided code snippets to calculate and interpret the model's accuracy, recall, and F1-score, giving you insight into the network's capabilities.\n", "\n", - "### Understanding the process\n", + "**Understanding the process**\n", "\n", "The goal is to gain a thorough comprehension of the network's architecture and to interpret the pre-training results visually. This will provide a clearer picture of the model's potential and limitations.\n", "\n", @@ -3867,7 +3953,6 @@ }, "outputs": [], "source": [ - "\n", "class FirstOrderNetwork(nn.Module):\n", " def __init__(self, hidden_units, data_factor, use_gelu):\n", " \"\"\"\n", @@ -3922,8 +4007,6 @@ "\n", "\n", " def forward(self, x):\n", - "\n", - "\n", " \"\"\"\n", " Defines the forward pass through the network.\n", "\n", @@ -4026,9 +4109,6 @@ "\n", " epoch_1_order[epoch] = loss_1.item()\n", "\n", - "\n", - " ############################################\n", - "\n", " # Get max values and indices for output_first_order\n", " max_vals_out, max_inds_out = torch.max(output_first_order[100:], dim=1)\n", " max_inds_out[max_vals_out == 0] = 0\n", @@ -4041,8 +4121,6 @@ " max_values_patterns_tensor.append(max_vals_pat.tolist())\n", " max_indices_patterns_tensor.append(max_inds_pat.tolist())\n", "\n", - " ############################################\n", - "\n", "\n", "max_values_indices = (max_values_output_first_order[-1],\n", " max_indices_output_first_order[-1],\n", @@ -4075,7 +4153,6 @@ }, "outputs": [], "source": [ - "\n", "results_seed=[]\n", "discrimination_seed=[]\n", "\n", @@ -4112,6 +4189,7 @@ "execution": {} }, "source": [ + "---\n", "## Bonus coding section 2: Plot surfaces for content / awareness inferences\n", "\n", "To explore the properties of the HOSS model, we can simulate inference at different levels of the hierarchy over the full 2D space of possible input X's. The left panel below shows that the probability of awareness (of any stimulus contents) rises in a graded manner from the lower left corner of the graph (low activation of any feature) to the upper right (high activation of both features). In contrast, the right panel shows that confidence in making a discrimination response (e.g. rightward vs. leftward) increases away from the major diagonal, as the model becomes sure that the sample was generated by either a leftward or rightward tilted stimulus.\n", @@ -4191,9 +4269,9 @@ "execution": {} }, "source": [ - "### Simulate KL divergence surfaces\n", + "**Simulate KL-divergence surfaces**\n", "\n", - "We can also simulate K-L divergences (a measure of Bayesian surprise) at each layer in the network, which under predictive coding models of brain has been proposed to scale with neural activation (eg Friston, 2005; Summerfield & de Lange, 2014)." + "We can also simulate KL-divergences (a measure of Bayesian surprise) at each layer in the network, which under predictive coding models of the brain, has been proposed to scale with neural activation (e.g., Friston, 2005; Summerfield & de Lange, 2014)." ] }, { @@ -4250,7 +4328,7 @@ " plt.colorbar()\n", " plt.xlabel('X1')\n", " plt.ylabel('X2')\n", - " plt.title('K-L divergence, perceptual states')\n", + " plt.title('KL-divergence, perceptual states')\n", " plt.axis('square')\n", "\n", " # K-L divergence, awareness state\n", @@ -4259,7 +4337,7 @@ " plt.colorbar()\n", " plt.xlabel('X1')\n", " plt.ylabel('X2')\n", - " plt.title('K-L divergence, awareness state')\n", + " plt.title('KL-divergence, awareness state')\n", " plt.axis('square')\n", "\n", " plt.show()" @@ -4274,7 +4352,7 @@ "source": [ "### Discussion point\n", "\n", - "Can you recognise the difference between the K-L divergence for the W-level and the one for the A-level?" + "Can you recognise the difference between the KL divergence for the W-level and the one for the A-level?" ] }, { @@ -4288,21 +4366,21 @@ "source": [ "# to_remove explanation\n", "\"\"\"\n", - "At the level of perceptual states W, there is substantial asymmetry in the K-L divergence expected when the\n", + "At the level of perceptual states W, there is a substantial asymmetry in the KL-divergence expected when the\n", "model says ‘seen’ vs. ‘unseen’ (lefthand panel). This is due to the large belief updates invoked in the\n", "perceptual layer W by samples that deviate from the lower lefthand corner - from absence. In contrast, when\n", - "we compute K-L divergence for the A-level (righthand panel), the level of prediction error is symmetric across\n", + "we compute KL-divergence for the A-level (righthand panel), the level of prediction error is symmetric across\n", "seen and unseen decisions, leading to \"hot\" zones both at the upper righthand (present) and lower lefthand\n", "(absent) corners of the 2D space.\n", "\n", - "Intuitively, this means that at the W-level there's a noticeable difference in the K-L divergence values\n", + "Intuitively, this means that at the W-level, there's a noticeable difference in the KL-divergence values\n", "between \"seen\" and \"unseen\" predictions. This large difference is mainly due to significant updates in the\n", "model's beliefs at this level when the detected samples are far from what is expected under the condition of\n", "\"absence.\" However, when we analyze the K-L divergence at the A-level, the discrepancies in prediction errors\n", "between \"seen\" and \"unseen\" are balanced. This creates equally strong responses in the model, whether something\n", "is detected or not detected.\n", "\n", - "We can also sort the K-L divergences as a function of whether the model \"reported\" presence or absence. As\n", + "We can also sort the KL-divergences as a function of whether the model \"reported\" presence or absence. As\n", "can be seen in the bar plots below, there is more asymmetry in the prediction error at the W compared to the\n", "A levels.\n", "\n", @@ -4321,19 +4399,19 @@ "with plt.xkcd():\n", "\n", " # Create figure with specified size\n", - " plt.figure(figsize=(12, 4))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # KL divergence for W states\n", " plt.subplot(1, 2, 1)\n", " plt.bar(['unseen', 'seen'], [KL_w_absent, KL_w_present], color='k')\n", - " plt.ylabel('K-L divergence, W states')\n", + " plt.ylabel('KL divergence, W states')\n", " plt.xticks(fontsize=18)\n", " plt.yticks(fontsize=18)\n", "\n", " # KL divergence for A states\n", " plt.subplot(1, 2, 2)\n", " plt.bar(['unseen', 'seen'], [KL_A_absent, KL_A_present], color='k')\n", - " plt.ylabel('K-L divergence, A states')\n", + " plt.ylabel('KL divergence, A states')\n", " plt.xticks(fontsize=18)\n", " plt.yticks(fontsize=18)\n", "\n", @@ -4357,174 +4435,6 @@ "content_review(f\"{feedback_prefix}_HOSS_Bonus_Content\")" ] }, - { - "cell_type": "markdown", - "id": "c0ed62f8-197a-4d2b-b667-62f7be4c130e", - "metadata": { - "execution": {} - }, - "source": [ - "# Outro" - ] - }, - { - "cell_type": "markdown", - "id": "c6b24369-18e9-4181-b33b-49952635bfb0", - "metadata": { - "execution": {} - }, - "source": [ - "Hakwan will now discuss the critical aspects and limitations of current consciousness studies, addressing the challenges in distinguishing theories of consciousness from those merely describing general brain functions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faf09a16-0b6c-4ee4-b47b-f9e0ad05a513", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Video 9: Final Thoughts\n", - "\n", - "from ipywidgets import widgets\n", - "from IPython.display import YouTubeVideo\n", - "from IPython.display import IFrame\n", - "from IPython.display import display\n", - "\n", - "class PlayVideo(IFrame):\n", - " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", - " self.id = id\n", - " if source == 'Bilibili':\n", - " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", - " elif source == 'Osf':\n", - " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", - " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", - "\n", - "def display_videos(video_ids, W=400, H=300, fs=1):\n", - " tab_contents = []\n", - " for i, video_id in enumerate(video_ids):\n", - " out = widgets.Output()\n", - " with out:\n", - " if video_ids[i][0] == 'Youtube':\n", - " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", - " height=H, fs=fs, rel=0)\n", - " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", - " else:\n", - " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", - " height=H, fs=fs, autoplay=False)\n", - " if video_ids[i][0] == 'Bilibili':\n", - " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", - " elif video_ids[i][0] == 'Osf':\n", - " print(f'Video available at https://osf.io/{video.id}')\n", - " display(video)\n", - " tab_contents.append(out)\n", - " return tab_contents\n", - "\n", - "video_ids = [('Youtube', 'Og8GjV2ELp8'), ('Bilibili', 'BV1kx4y1b71V')]\n", - "tab_contents = display_videos(video_ids, W=854, H=480)\n", - "tabs = widgets.Tab()\n", - "tabs.children = tab_contents\n", - "for i in range(len(tab_contents)):\n", - " tabs.set_title(i, video_ids[i][0])\n", - "display(tabs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d3437899-dc2f-4b97-ae4a-18e54ca63941", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Submit your feedback\n", - "content_review(f\"{feedback_prefix}_Video_9\")" - ] - }, - { - "cell_type": "markdown", - "id": "f60ee97a-746d-4f2b-91fc-96cc713f64cd", - "metadata": { - "execution": {} - }, - "source": [ - "Congrats! You've made it to the end of this tutorial. Let's wrap up." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ad1cd126-5744-4b59-beaf-c9c8439701dd", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Video 10: Final Thoughts\n", - "\n", - "from ipywidgets import widgets\n", - "from IPython.display import YouTubeVideo\n", - "from IPython.display import IFrame\n", - "from IPython.display import display\n", - "\n", - "class PlayVideo(IFrame):\n", - " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", - " self.id = id\n", - " if source == 'Bilibili':\n", - " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", - " elif source == 'Osf':\n", - " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", - " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", - "\n", - "def display_videos(video_ids, W=400, H=300, fs=1):\n", - " tab_contents = []\n", - " for i, video_id in enumerate(video_ids):\n", - " out = widgets.Output()\n", - " with out:\n", - " if video_ids[i][0] == 'Youtube':\n", - " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", - " height=H, fs=fs, rel=0)\n", - " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", - " else:\n", - " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", - " height=H, fs=fs, autoplay=False)\n", - " if video_ids[i][0] == 'Bilibili':\n", - " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", - " elif video_ids[i][0] == 'Osf':\n", - " print(f'Video available at https://osf.io/{video.id}')\n", - " display(video)\n", - " tab_contents.append(out)\n", - " return tab_contents\n", - "\n", - "video_ids = [('Youtube', 'dJ4KiCcvndU'), ('Bilibili', 'BV1BT421e7G1')]\n", - "tab_contents = display_videos(video_ids, W=854, H=480)\n", - "tabs = widgets.Tab()\n", - "tabs.children = tab_contents\n", - "for i in range(len(tab_contents)):\n", - " tabs.set_title(i, video_ids[i][0])\n", - "display(tabs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b105540c-470a-466e-9ea4-388f0a5a71a7", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Submit your feedback\n", - "content_review(f\"{feedback_prefix}_Video_10\")" - ] - }, { "cell_type": "markdown", "id": "bcd87344-d473-44af-a881-b68e5471d353", @@ -4532,6 +4442,7 @@ "execution": {} }, "source": [ + "---\n", "# Discussion Bonus Section\n", "This section contains an extra discussion exercise if you have time and inclination." ] @@ -4622,7 +4533,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Is it actually conscious?" + "## Discussion activity: Is it actually conscious?" ] }, { diff --git a/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial2.ipynb b/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial2.ipynb index dbba69e42..ad486f06a 100644 --- a/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial2.ipynb +++ b/tutorials/W2D5_Mysteries/instructor/W2D5_Tutorial2.ipynb @@ -42,7 +42,7 @@ "\n", "# Tutorial Objectives\n", "\n", - "*Estimated timing of tutorial: 30-50 minutes (depends on chosen trajectory; see below)\n", + "*Estimated timing of tutorial: 30-50 minutes (depends on chosen trajectory; see below)*\n", "\n", "By the end of this tutorial, participants will be able to:\n", "\n", @@ -67,7 +67,7 @@ "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"5y4z2\"\n", + "link_id = \"s3py5\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -75,6 +75,46 @@ "display(out)" ] }, + { + "cell_type": "markdown", + "id": "2675d5e8-0846-48b9-a24c-2f1d6c27b36f", + "metadata": { + "execution": {} + }, + "source": [ + "---\n", + "# Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b8221ea8-a399-45aa-9ade-10f5d8adf318", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_T2\"" + ] + }, { "cell_type": "markdown", "id": "9480bb32", @@ -82,7 +122,8 @@ "execution": {} }, "source": [ - "# Ethics intro and moral status\n" + "---\n", + "# Section 1: Ethics Intro & Moral Status\n" ] }, { @@ -95,7 +136,7 @@ }, "outputs": [], "source": [ - "# @title Video 1: Ethics T2 Lecture 1\n", + "# @title Video 1: Ethics Lecture 1\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -140,6 +181,20 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6349841-fb75-45d5-a554-2358b95b249a", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_1\")" + ] + }, { "cell_type": "markdown", "id": "3ed12923", @@ -172,7 +227,8 @@ "execution": {} }, "source": [ - "# Ethical AI\n", + "---\n", + "# Section 2: Ethical AI\n", "Before starting the next sections, see how much time you have left in today's schedule.\n", "\n", "If you have at least 30 minutes left, you should do both of the following sections all together as one group. If you have less than 30 minutes left, you should split into 2 groups and do the next 2 sections in parallel, then come back together and discuss.\n", @@ -180,16 +236,6 @@ "![Ethics roadmap.](https://github.com/neuromatch/NeuroAI_Course/blob/main/tutorials/W2D5_Mysteries/static/ethics_roadmap.png?raw=true)" ] }, - { - "cell_type": "markdown", - "id": "45ad9188-5ca7-4313-a276-ea6a5a740105", - "metadata": { - "execution": {} - }, - "source": [ - "## Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" - ] - }, { "cell_type": "code", "execution_count": null, @@ -200,7 +246,7 @@ }, "outputs": [], "source": [ - "# @title Video 2: Ethics T2 Lecture 2\n", + "# @title Video 2: Ethics Lecture 2\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -245,6 +291,20 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "06b9fca7-2d82-488f-8308-15667b56129b", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_2\")" + ] + }, { "cell_type": "markdown", "id": "13543770", @@ -252,7 +312,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" + "## Discussion activity: Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" ] }, { @@ -275,7 +335,8 @@ "execution": {} }, "source": [ - "## Can AI be fair? Can it exhibit human-like morality?" + "---\n", + "# Section 3: Fair AI" ] }, { @@ -288,7 +349,7 @@ }, "outputs": [], "source": [ - "# @title Video 3: Ethics T2 Lecture 3\n", + "# @title Video 3: Ethics Lecture 3\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -333,6 +394,20 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "c57f44e6-4dbb-43d8-be2a-cd4491553e8f", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_3\")" + ] + }, { "cell_type": "markdown", "id": "0db27e0b", @@ -340,7 +415,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Can AI be fair? Can it exhibit human-like morality?" + "## Discussion activity: Can AI be fair? Can it exhibit human-like morality?" ] }, { @@ -366,7 +441,8 @@ "execution": {} }, "source": [ - "# Ethics outro" + "---\n", + "# Summary" ] }, { @@ -379,7 +455,7 @@ }, "outputs": [], "source": [ - "# @title Video 4: Ethics T2 Lecture 4\n", + "# @title Video 4: Ethics Lecture 4\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -423,6 +499,20 @@ " tabs.set_title(i, video_ids[i][0])\n", "display(tabs)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdcb974a-95bc-478d-9b3e-69d4270857dd", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_4\")" + ] } ], "metadata": { diff --git a/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_fb77cb86.py b/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_96fe639d.py similarity index 96% rename from tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_fb77cb86.py rename to tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_96fe639d.py index a7381ce28..862854695 100644 --- a/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_fb77cb86.py +++ b/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_96fe639d.py @@ -63,7 +63,7 @@ with plt.xkcd(): # Create figure - plt.figure(figsize=(16, 4.67)) + plt.figure(figsize=(10, 5)) # First subplot: Probability of reporting "seen" for w_1 or w_2 plt.subplot(1, 3, 1) @@ -80,7 +80,7 @@ plt.errorbar(gamma, all_KL_w_no, yerr=sem_KL_w_no, linewidth=2, label='Unseen') plt.legend(frameon=False) plt.xlabel('Stimulus strength') - plt.ylabel('K-L divergence, perceptual states') + plt.ylabel('KL-divergence, perceptual states') plt.xticks(fontsize=14) plt.yticks(fontsize=14) plt.box(False) @@ -91,7 +91,7 @@ plt.errorbar(gamma, all_KL_A_no, yerr=sem_KL_A_no, linewidth=2, label='Unseen') plt.legend(frameon=False) plt.xlabel('Stimulus strength') - plt.ylabel('K-L divergence, awareness state') + plt.ylabel('KL-divergence, awareness state') plt.xticks(fontsize=14) plt.yticks(fontsize=14) plt.box(False) diff --git a/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_8f71a687.py b/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_f903bbb4.py similarity index 68% rename from tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_8f71a687.py rename to tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_f903bbb4.py index 344c2a726..ec5f6d009 100644 --- a/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_8f71a687.py +++ b/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_f903bbb4.py @@ -1,19 +1,19 @@ """ -At the level of perceptual states W, there is substantial asymmetry in the K-L divergence expected when the +At the level of perceptual states W, there is a substantial asymmetry in the KL-divergence expected when the model says ‘seen’ vs. ‘unseen’ (lefthand panel). This is due to the large belief updates invoked in the perceptual layer W by samples that deviate from the lower lefthand corner - from absence. In contrast, when -we compute K-L divergence for the A-level (righthand panel), the level of prediction error is symmetric across +we compute KL-divergence for the A-level (righthand panel), the level of prediction error is symmetric across seen and unseen decisions, leading to "hot" zones both at the upper righthand (present) and lower lefthand (absent) corners of the 2D space. -Intuitively, this means that at the W-level there's a noticeable difference in the K-L divergence values +Intuitively, this means that at the W-level, there's a noticeable difference in the KL-divergence values between "seen" and "unseen" predictions. This large difference is mainly due to significant updates in the model's beliefs at this level when the detected samples are far from what is expected under the condition of "absence." However, when we analyze the K-L divergence at the A-level, the discrepancies in prediction errors between "seen" and "unseen" are balanced. This creates equally strong responses in the model, whether something is detected or not detected. -We can also sort the K-L divergences as a function of whether the model "reported" presence or absence. As +We can also sort the KL-divergences as a function of whether the model "reported" presence or absence. As can be seen in the bar plots below, there is more asymmetry in the prediction error at the W compared to the A levels. diff --git a/tutorials/W2D5_Mysteries/static/W2D5_Tutorial1_Solution_96fe639d_585.png b/tutorials/W2D5_Mysteries/static/W2D5_Tutorial1_Solution_96fe639d_585.png new file mode 100644 index 0000000000000000000000000000000000000000..bd630bb12ead86397e72d084731d1e0e060186cc GIT binary patch literal 199714 zcmeEu_dnKu`~F3xh>FOTtc1*z5VDiX%HBj)ls%)&j8Z8yWW8;XWRwvhDxxw=Mn)k@ z_WB;L?)&q-KleZI{pou>-lKGNU9Z>kc|OncIF9o;Ur}18)o7?#s7NFd%?Wj79TI74 zI*GLD#Wo83gj$~VJ&BA&I-z`A&*%Q+7jHxQE*6Rz@9kCGmM?`Z4V)iYHe8@kZ2NiZ>Bb9_#S7-Uw6%-VIjg+8y*4;c8+M0nx$|SipMzuU?fs*( z2P^JANSdaP*T~cfiTtmZ`t?`5>?GR%dL_tfs_y=;pTzfzF`rWYua{qw?V3mmH{&Y5;LTgN2FJ#>?%lihb9ErAoSfXYZQB&)Ev!zgYD|Bwxcazy znJVk_gAU^?-`UZ{rLmOuQl~C*Gn?uDs>EadhdJbf@=IHT$u<>Pz9i?%jQZbk*?&<} zbz(g4adq9}nsus7oh17&L+c3~vOc@6Zr!Qs=T~`p?()W(x8?)svt#pT1sJNAMp;)^ zXWOJdl|6gbI9MOi{>;VX!Q$=5v%Ys~+uCNFjv62G`tk9=pNXzB2M_!E`)ekO zl6}fOtE8;F`LJt$jD6cf%BHMS_b8N{5Yo>H9R5?ZjWj=Bip+K61-156X0KaB%bTQgw4HDw?j}DgSD^W@86#$I3!OgKG3` z($%j)E2q?rSy@?!zkkTeHZFB6>?-$P5KfkK;tSxz&EdATS_J&sLQPE_>UaG3@kFVM zTyY%71SZ`*JsYO_%9c9fiEC-o(a{MVvFR7yx0{7UfbFqKnQ)=mbA6%W(6BJ8wui^0 z{QmH_rpRA^`t(rj92+}(d)Aq~)NE3_*k!zg?sOCTs!{Uon{B>n1>M%29HG~*Uw7Mk z&ek^c&Owu*t2^atzct^ox^ThVRxBec%jWmD<}GrU-z7`>R#N(PhExY+NYje-$U8-u_x;G%0TP<$eNG$7-q2cTDorVUP zI;m>cIi!4lXB4@16`C;}IC?h`PfUdGDsjbsGaj26tRMgK+&iS#^=tJpVbgN0NA3uQY!6FuJl2ux5Dy;UU((~6)!*)`zo`8z8bABglE2D_{qtg$h6?@*jqv?8V z5uwi0;TMabe%aGw#P9FpGtiPCxU^(Q9FB~z=g(y>^uI{5uNu-&m64L-6c-n73UYFC z(#zGOR8>{oMn$Elsi_$!{qyHfDbFADLPA2Z!4bEyIxkZ%kHa4 zyn4~OH+!hrrS+zZMgNuzl~^a$yV@^bzI4>Rx|2zivrGBVjidk$L&>4~xL(5t8lzBIDh=4MK>N{^QaTr!13>(|}gQjf3yJ8AgqbI>``O&{@$UIHCyR5CBT#Z z^;!BsX0t@67pGM1ZEb6tnzp+1J^S>Xh+wXcLch5m+4==6#!t_O;2h*0+-qZPo#t6J znr3Zj8H~I!{6?fk@1FL4!6;>N5fKp|UtcS1bK+6=f83l$S`rqQCmvflIvShqBT98b zwn+6N`S0iirC6Rn&p+w(DVL$pq9(4weQc;{@8!)mjvD(RFG#tMYKG9& zR@9B0cWWOH&t?(x7Yc4}qDW=C*w|t+GI;pusa}s;QbIK%z|IeOQy>4UwcPE!8!LZpGu74A~rKiOWqcyaBZ9TC8F*5Z{hm40)%MF;7k zv}%F^AGAtHNGMJ9mi}5@awpZ!O>`k^U;6x~v7sTSK%%?IO6h^WncW#x``EJvWv*XU z?;Upe9r#dqXn5Gl!NG{fh1iLzlfQ3822Ff8BhPTN9jhw(7Xr0EAE*u4r`^VZwT*BW;{2MyDx+tjoZ##7rK6so%!+O}6-+4a|&p>;++R-1M zU-;@4;kUO-B^V9xD8(Z2~twY80t z?y;a69b@5&-{$$_BQ4#iwzjsGK*FwQ&*>FQ7ncI}FRRw#$@s?XZ#?_==Ot|KrHp@5 ziS5%ix_ReLcwd?8_HzaX1`mE7QRbpW%?W?>h?7){{1$)v_GWkYS+3{={AKl�^s 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
;3p5g!c4?yS3%>i;RySd%S7MW;mOez)lR zdRwGl?@D;`<7c!p4&6HW%hh^3A*ZariZA{#m~b+|U?3`|NT4LzR=QYs=^tQ;aOSR_ z5zq&WH}4iL-p1UWNC2nEd+|i^t2E(3X5@x5Yq+vZckSF62Xx=OG4A`6BsNMUK@jES z5?tm=MVLUVWPEJP?&Gifez;15l1sGSe*p;y`1L@pn2V##$8@nLLd?$saWwMF5hTp) z>P`XF2{nW}Hp2|;Mhj=2!)9<&iboLI_5Tx-bw@ZwbX18Zt3|9I?dq@>{}=1dwpt*c zA1wHiU%Yso();{koJ@C7gkq+D?C8|U@I3};%Q}AC6!GwEhypQz`tjFrZOF+Bc=$Yj z3&ka44f{-|zNtvRKmD`TOa5?lBdu)6zq5={MSFHLQYi5g0q@rVsmNvz)*00b0{hi& zp|0&5R?We|k+~-iIxu?860%As)E3{m+<~Qd?6@+SI3AHGz1^Gb_^>Zh8?clb@9Ns`3JRbQPB}49yKw8d}<1 zb_ie96K)UA##Sb8e)2vFT(~xdIQ(Lek>z_U8HyzBAR$0c(j|EK3bp8Jc^*m12LC1H zblwFSi~8=EcV+g~7tjBmww9n!1SVCW^p} zh)_EWV_`eDBFbv}#Bp3;if!x zn;2Uj&S&jK8g#@O9-i&SY~8js#|ry`u59**GlS)=MRol4*Qp#UiGT?9hH?IVRl?eq zvD34OV=G+kpX$~6pAOSIcLh27wa^afIm$mI0Y_b0WX$BTFwiCYU>rQ!fA`n zOe0x)$oxRT`m#VjpbkVu9q?_BM(a0lzP(`_9JN{_@Ew^Jx> zsHME*oRBSHoK>~Mxl2Fe2!=`r2M2LOdkWUGzPn_n)icU*uAD+?as}MP72YijX=DjD zYH}PoLQXMhJ+xhCnvF_tI<{&%CMG0EL0yr?bmQx)W6;PTK`7M(9h-r?t*YjUGL7Pt zQ6IfY<4YCuf-8-`zHgC~RJ!@f^yp(PO48#h{nPfDYs1=s1dw?d<=a|_I!$Dp z5a#Gbxqv*I0TV%4!C~G_qUu<#JLz=6<)rlCO(a-esZ8EPKosPcE4?Q|Kh0xemHN$n zSJ3GtxU8PifA>$Q;e>&YNE~E2g&##@{l^et>!H?f#@gzlT#WLz&hPv= z{eNhV_onKN4cBKu!5t}k`GlM~2ucerg>Q(TNu4%xVHax8{W8McohP?3p{)i#P^B5~ zg%^9o~lHqVE65 z;rk8a)bjcHGo|YK>umylKZXvBg-wD~(~ zk1VE~3D6hnN46c4{_^FE^KeRD6N)0~h8pg&SI`6Gi(Go$z0~b8AN#ph?ybj;dOxal zU@xtl^Pa8r6pFX6XQ~^X!MXkjm(-jv6k=E(r-atS3@h58lCej)<2*e#z2-Sy>>%#- zQ_vrsy>l?}X)d%kH!r~Xj=VYf7-VV^TmW+{+LdrXRmc%Xa2rCe%(obibr`681WO)N z88(1pO2&D-GThMEXphgzas2q_c{{Pczsg%;idlf%$diW9<<@6Gj+1$>^;|U$Ttm{J zxWxK@0M2He*n^xN?!6}8qH&A&u*;?6e6% zP0|9>@86$xcXemX5Wx3rw3=v+Rlmlco-+KgQ}ET6$-a;1Qm&>^x6eJ?UoEvcXcDR6 zikOR&QzG)F)#GbZKR;pE=4s6`F!{G}%NQHBC|yPe*}Z+2Fw0bawq>fTtBG=Afy>gR zRTPD7BzoS0R4PWcGB}_QWhF{gg&nbdKg^YHdgOE^OFm{aqfN~n-}*&sW1o~bMSLbP z@Nya|$Ri>m-Em_mUr+q#fXaLxsKhiH1$ESmNvI;YSy@>xmu;b?Rl~iuuVi#IfdrAh za2pf0ngW+f>4Ui1c7e>xk|Y3LIt7ilIUH!Prac4(ib@l?UkLWi8mtvXfSSs9{p9P> zQBl(b%7JyEbAPyFHvE1=muX;zorc&yNI!p-TL)Oh#G-k{1)JQnnD$Z>ZTqz8!x72jEsy1|4j7CfJOKp`VK z(m(nn$e;yp0`mpIPa+~JFZQxj_ePp}$F@iAv7F^$e^;hN4$)3dG;fSS@cc#B}?wO?>NzPoGq=nJH%k zX}wsulKb)t$LRmyo*6P%J@p|)b!hgT$;P8+#mAt zt*^SXY^eJ{io2vem(z$xHi78uAL<>#(|3-@iofCF(ix`iP>JvXg!j}e=4J^`Rj0vK?Y2YOtBbQEMiBz{!e>mCIm}3Q% z;a<>m7kbYz+UxsJkF)^(7EcsiK8#@C<0tfrOfT1oF1*@%%0wYCgP`fd{fNgZr}gFG7XizR8;T8Z5MG&9={)D@&YJFfmM&_UI<&V9oL;@TsSf0&&&-lk%=9!2&0kv-kVo6`0&ucExL+KY>h6_-OwoiKAT0n^844=iM; zGcOI~&kwvuY!|fbDb)rm%r}ZU8}>Q^s3~{buD6A%4{@5u3q%)W=h-bdQ|)6%7^H`w z>4YPQ`nQu2tE83m?qtu(E;w^%H4Q42m!s|rfFh>brjn6lIaX-`Um!ospn^lUp3~2X z*M<10ZFDTpr2cGgrQOi5ji3; zj&K08<-rxaAs2@l<9%{0_=?6OH(`W{&mhmTv&GV&{GLN?a06|7YovVy9i5);7K+;) z{3uZZ3s%?G2CJ|AyMEs&0yzy1fF{Fa9pdkDo;>$Tq6kNrw4}TL;QDiwYO4 zD%UQ(zB;MA@E&_h-6(_mk)vOK^t8I(78?6(`?UWaI<9?((K;uN9dJAODfK>;=Juys z!(oZhf`gOKr%+603OK|R}!)U^i77VT_n)txG78oSxsiz5|)iMR8hQPlPHUUoa; zIbaYx@eIKh%C@IJWSF$s==iPk-FMQ zp{PDhu;hqjFbuxX(b2^~6+*)(sDjab$IcvJJK2EvurQVbl6l~RLk+P{(1yo9`bXym zXN{%q`=Q_Y(S9)u8*&;9cG+_*eb0Lsd%GuZ+`4ryyI-(4PEfL1s^@yMqCY<@9?r-O zXFw@IiN+=k4HA-B*a2O_Y(o_#f!5e{o)9YDxjDKAQXi4#y#yVt^JEp92%SwkfIu89^q*MLk{fcF?@t;e|cuSr^mnsp`H{XEf`1Th35*7fo}|ib%Xe= z%{2U73WF|nh=k-gIpbpn`WxK7AI<_*>m^uKWdm2yO*C&(-T6e)d`s9;Pk)z#Vtg5u zTDOyqRWi&-+z=nL^3FDKUI7hb9>LFFQQZpIxnfek2T%YV4s=xwoeBBx4JIvi!;$#~k;^`MJ1ItE6dx`uchZxB@V$pNLHY zz_XMwePwsyk@!qijh}v5dfM+vU+0U*3D#Ln)J-B&A5W4J0uCUeq{GDb4TkzeuY0{9 z5IPb*-tW?V1^T_Zv-3}IGXB#`R4^FT*5;c*)e?bZlmOuD7-&}rJzB=ewk9+O-B8w8 zc^RQxs{ZgHJsED;gfmqsyX9&GCpLT}C?~USMPeHz7)wnjC#UDf-{dUZg?7ahwqSh! zg7Cdga=%%7W-RU&AqWVY#i7$o7H=+sq1}7Z_+m3^Wc_oGr=p5@H~E*y8FIsAll|w?-pda5Gpk+cc3vGR03H%n#b?oWb+HTbYYs1Z zMn=n%TvaAb&Y`8jwn`(zLfXvkr%nk2Ugn5G@luF@XOHiz=6J+`9C@@vX#5e+_M5_` zwWScLMr88CA#!$8?6-(aKPA9EX>AVK5S|Aj5#ajK(A}^(IfZ{wz%ZpM{{Ico*`;DB zfaWl9B=KSr(F8DbsWMmN==0-xcac}Y?vdEv1c!a|ZqS)jd<3*5m;GYEId)r@)9e+# zkq+p$dnUR?li|B^N@N{-f#mPfK5wDyC7)|+pbVGfH4Ys^?>bDv|GHgTFVH=3!eSR7 z$3_|&RdnOjPrR)I;LO+^i*~=@YYR0j<0+JsP$24r*CEM2THI7iDur#n-=CREOewpg znVcY{IT6u2KL5qo;wV6XgJgsa&H^cY$eiYgcYKdcqyatGV|XYUCaE7Z)m2nt;I>dG z5=V|seUxMedUmqWqW>4E0U#yR ze!e5ac{Fpt?OtGg3NxwkuEso|kxv^7J7I7>wi2^_1T0ADOG?dLpVU1jsnp=GFkc}O z6L*aP>+31@?>N(nnUU3wm7!bSxMd4>)*@kSSFKsEQA2Vg+NG|Yb(kD^1$t2#k~(`+ zN8B1I5+wNS$q+W!sPI{r!PsDnYSKL4yt!|j)`TZy8VHg+!R=Z|KBmpvA?B}fbmx0U zu1n_^7H%Zk`THl=`-}(h>=+eFhp(5yJ(Vjwf-t(qqT3N^cE0ZR zQZ&r#OyA!BcdwAcD{Nh{%oFj1NCr@$#-X}ftHRm?zy6V{RZ}FwisKFEwul(I{&9eZ zFVW=C-x8k#urPq{k{yJHabE3ww1ZHwPRBy9tE-d&yRj!>w-r=z=hRV+HJ7@&O*KO{~X#(HQ+G7 zimtV?v9d}+RnZKAN(wHL<}h@)u5w`l^~Oe<6#PdoQNuh%IXT)^(q)!Cib6sy5*K6X z24vkBuo1%>z zs3aKD0by|PJO+pp5IPAdQf`w}o~V82QX&**A(osAcHkr7z*berX>4?B42UixiWV|h zi$N1W+H^n-FnI>aPtuDQ;y{3bEIw8F>)G-DlCwl0gO7mn8^0+I7A+v%R8X*aJbr95 zXtdg~-QiUCe1Y!pBZ4P3jJ==rI@Bq9#&^BsdW!fQDcyejXbaoX0Q`m|J=BQS9o)!w z!8*=~TqV;=K#wl~?2gUM^r-80MS7e@LFs(T>b3Sh)@ZrIwGbh^5EMr0ByA=U*d^Xz zs05fO;|FQZsjIIk&6sS37D7f|z7;j$N^x#%+~GxTSTf{u=O1jzZ+%>%)OB>hxo2x) zs|0B;UU0F8U-ZHkD7X$uMM~8G)({Q?G$ci+P`TY@lwBla9ea5HzCib$gv_b|2!pUY z=R7uI_^|*XA?OOd45hLHGMC$RueM$y+B}nl3l$EA3sr{H^vKKM43WiF-}%@V?z{H# zo!k6m6NRF_JHm4bP>DT`xAgn|2-u(%bxBZ7Nsu5K34$>C#hkYLNjfaj9~G6a>#}lr z%)dw8bUV`vif-?hIG~j8iB1?u$^ePRc#EGL(RO(NvUA+*U$vrCAri-jQENA6e%G#2 zGSuxEcCHfp_~!;XopVcbm9rK-9xTxYczOVnLo>L_{@UifSKCJL6x1By6wo>`5IgM4 zJ$CeHc01!qAgGXKSwDaB~F}kYp9VPDaC-U4FP9fk1VjA~^ylk@Og5?d*$+{Z$a=j~v7 zsGi^|xjV#@>u9FQb)|{gi`VjwX0R5P8)i$Jy#fF0_Wb=X!|6m-0GR+ZRGs&si(3)b zO#)(0rrUM(ezfUnnL76LWU=H`LT5T%N4u@F=*Okjot~Z1P78SZeD_K!yI5tQbM`F9?7oEQP5$2A zo)f3=ln76-!n7*X)U#(ssZ?EDoWl7+@wXwHthuP&FL&v^H}Y1ZZ!2)mb{3^It5c3u$V)JcR!HjQks*}G`B;eT}J>sxwKs?RPSc5>R2S25h=d)t`XzmS)PJN05a zx6$D?ek--v8k_@_UFGWMAy{jlp96BGx|frkz3N-OxLnT6qh3SmMT6R}YbY-c^MroF zZUY6BL-f0MOEK@YZxp*O>qN^m=1?f%VRjvzG=(E3J^gds2zHPVeGCMG5cGKbLA15Z z?VX*OX~wp{Xvibu7iB6cwaT3b8LwH_3s~%RZH~V4E)0e zE9bfv=K`5LCGy(GXNrS1AQ`7oSZLH(_&n;k+WS(aNKiK`SW|Mn>N(_fia@VX_|v7u z4-<~}#!vF?1POiwCkc67v*z?^TJH+$DC$B(r@Bi6b`VgZveeu$gtC!ns<4ej#j2;l zMy;}L^l?g|*O!-e3mM;o*DvIz-Y&GQ+g|AvI>UPaS&F0LS4j$Y;Q%v{U!6Fi80k72 z!sPU08$x2{+g{@0gCOD0;KH)0FrX;9h0zSz#z zJP}=wF=Nt|HmO2fB8Z}t1)8p+v#zpv{2Y5qfPrY+R6=e4M-mN8xiGIRUh(C-;W=_fVH6;s0I)SYC=g#DIhS=NIS%m%Hv#F zWm&k8eKceHBB=qlU6cMMd}sruN%#R|C;)(9LNe^ZnW}K+%pDT9NJarvPIdAGE;W!^ zH0H+wVojdFMe%Rfb^Vkuj-ZWg>!DVjqD>)4j~gd8RK>#eM9PnJ|8=5v)Ko47StAyy zWKoB|-A^xgd99;RwqT9o6M(8LPKGtc>h2F8Uh%I7eTk1t6rr-Ny}iAb)e#z_S2|Ed zMw40%f`pbr((eM%aCGuSl7vh5aOCa5$Y|lQKLz-0|A*(B{QW!4dRZAief#$90jPvA zZ7SoVtSBkDb5taPUH3ZojMe3|d>*H=09%yRPwvdx;}uZw^;u29A`+fxg(czRQzIQC zs{SO%$_ZITTlbw4@GStsQy`j2nMz1P35okVk7~S_9X(ySnYSl5+Pm(_Si}7(MA?Ky zRP;I6H6*PB2`KM{HTmtCtucR(F3daZlJY8IU;@_>fyIcItwNEX-xsn@2de8N!uYLF z#2aveDb$aC9+7rXeQW1cK+YJhMH7Hl&6hTCvu#Gf z0#sVsFB?m+0HbjpIPf}liS@P>=8tB;E}m@-jzMlw$@e(~#T8!etIu~i9Hpv1sOp^Y zb_ zU9BQ&TY9KXQR)&!6ebJe{rvq?Tp=%@wi^YTfPb$<0nl+IvL!V3Vv+= z?VHZBr~T>^2K9flbvB2TTparR$g&X8^lG}8Zoo#{kzs=hDKEkQ8m6w-cXE@}WYZkD zWC6q>uj?QCJ=|JnaBU|B^e>S_prkC%op57*Fn;Fsnk_2MAIX=5U0iw)zND7S`SG5z z9^)s!8gAdZ=COv2hgEv9GfbGfL*IAyXwG$wv{<_8OP7#DtC9<`Y=thAwmr?$+jL(N zMR(i`Bf1bZzUnQCZ8N1UJuclZYC%P)4BLhy45D4!d@k~KwMMsQHU1fD1oLAq9PCBd zPelWy+xS{F+T0=3%*hS;vAx=*Hw$DJWtQi{5~~J89*0cM@+6u!`d9vC9rp*O%5Sl_ z|4=y|+*ue`t{3nPi9eJ$%PC)Ys;?M9fwJ48%FZwLbE)W0rNlEER^aE0L~{TrMze-g z^^liTkNzgqK!AvEKzFfI7U7a{#x#aWWiGNf-Kfe`gp$U?TeL*~H(87VnQXzL=br-e zd#;sPO{se6t6k+&ABfQn=j+wHsaUs;BEGIbWX~cnId(Czo?pvu&n?c~^eCTyRzVse z%GDS5EgOD@%+BbDHXQdB1w7!7Hu9?Stv`DGLViTPK%#pN)`8iD+j&pf-9dZpA_BQV z%QCzq##Sdl7oDxI3Bi!6|n!o=; z^XmqAiQBYX2+#ZZ9wJP$D1s*`F8)Qt+?GOu9T0Bt%J%wr;XhyRZQLZZxOoH}VH4o2 zq_<}m!Zo2ui$+b^(Nw^BLWhA-?vrAk@wa$R^bcze#s1p);Qd;PxFmcQuDXq0XdE5- z>ss7&LNI%!(tN#V@Uy0A|NhyTFSiUPqz-J%7Poow7`jXs7wD9j0U-*amr z1^Q0XW)a3v8Pd&cn01>M5ugP-4y?TTp@eP#a%3@dYp!n>vaS*!dF#0{j9Ih~+7q@B zJx`S;7lJeiOSnjckVNM6-^s1>is&ziSelTWme=#Yt*3zoEk(@HQZGXz;F)joSiE1o z`&@%B%`8pmv|sIKLlMdghpW;juDV%XXdD^p;N9$-w~OBcFXQ-!NN&N@al0(Ky`z7G zAeU9cC`mos8Dh~{>0sEvFNWxLhmzB{vg839B6S|k8>cnRXd4f*1thr9r?+~~XOu)) z1P+AE&%7I_D;XVo{zuVZZHEw4(b&SkQr_ zi9|l-_k!C&D;J7fD5s1qHe-#4%R%;qck_wtcKNc}Du^f;#k3PG3T%OME zoiELkSvBKHN(U2gh2)Lig2(DHonj5r#-q#r@qY=6LTLFpZeDkS+ISe>G$Y96Hg(|C*7x%4VJz4=_ecUOcDT6jw&|V1+3A`8924w!`HtpeAX``3J$;+a!&_^B= z0oRAuS!-zkHBtdr9^>(=;yGcJ`;cmZ)+-Xp%eU54x$pj2%>_19hSSaq=Vvr0^bb;A zR7@q+K7rTLaN%&OGUjBcAT-R;GSNad5)c#=M<^nKlb}SJ1~ePgzB57kJ8dUh^e3Ie zIhG$bK~X~ab^M8>=44p!_?z_2I*roH#zgquh^7m=GI`mEy zw==Vg#~3yAboVRh4%t0fk@LQ0tvor|#KDu0|1@2a!#4dmXJKdt6l)6qHfPE?nwcdL zxit!np13a<@g>fW@NA%CWK3~$qdG3Jxk7-+s5jTADhq@iQEbYg5#sRCLuvw_qvly_|2ct z7x$j8*Y?`<55-L;DaddddaERGWEwRfEr>2V9zi%krzEp3UjP^&(V-DOsD-|sK;^Ko zYC`+$Q%R%JR2p-Uo~}LZFWlYmWN&o6QEiBbot?R}t)V@v{vS%h97d=RKwb^et~suy z=qvehm1sPIfkRjNHclim-pFsA)Ljt9AmZf(fh4yel1IF2+vkshVo;0^lA#qSU7FJM z&Y3SFu=Ho#xRcbjJ8~$!)N+m5OZ=g)%Xf;5=9l&``dxpTkwN~2(Z7QQW{j%(Cu%Z| z&3c`Uihc1d-qqaum)5VI#=w(2Q;y>| zL&qT5te>C5*=@XhEnGFxCbf7{hLi#wn3#edhZpDyK>+0xSC3_kCb;qlGJjC_diyu| zAjz0v+m7xuomk#?oBx+pRphQit0+0=q@*5^<1oOBuGws0hH}Ay&Dc!pVZ!&bKWzw( z6rDg@u^yEJ>z)WtQQIGnW~M-as}9;=9Niu?`EdKS$Q*`U3IC$G;M97L`~e*}Eu&Qaw~uxLtg`ibtKPf!3Ni9~SX|Q*$6dLD z7Z)EFaj8~PLS^*g6Td}eC8Z>&RIDBdw2vsg2hJNLAADoW`5!`=HJ zfS}aw7TP7XVL2yli)X<67c(qSq%<)j{x?FCmn^hd-1vIq;Muc#t~6(%o9us4VcE^HtLc0dLrcPQNEt2(XrPO!vp63(53nq>abQx7L%Vzv1ZP^|d8 zp~B8y@Ibmjz4_YccGpfk_~GfydwHwB#Grn^ zF?reX((`~@ZKaAT8w`kMU?Xl==*7cCnSu21oqr1GOd{H~0a#}?As-0Zei0jAioUbG@#6o%ZW1 z6f`M2w{MRkBa}$leleJj876asP$(kVXb;-(U;pw7Q|KM6QP2`4t;mwBUU2Z(Zo0Hf ziB`ahuI1yitKe_%;iJeZ0WE+r{C*O}h)`}{sxy}?gn=`VA`PNgvB{6+SLk*S65!U< zCv4Su2FRk|8?(7c2Xi)ht*c)xx$1Ioq^FIa*4g-doQ3jYb`r8MFqVNpI$)6|>qiuO z1Y;!aH?%_>!g0|ORN$l8khVe_{?;;MO`xx?21}Y>U6KE9A*q);-GdYrjf`P5ah3l@B@%K8-3nopwesJ%4?KQ@Qco2OIPQZ zo1gw4>fSt>>ivHk-YU%{m6T|Z%3L8)s7{6`GLIn|WDJ?h&}2%KOhw3$EpswwC`l+X z&y*=chD?Rzx!$|;eSY`(t!Lf8v!1o?KkmKGAE#pP&wdZD;d))K>!nw}kwgrGVQn@8 z84Ai4kInPTPUT+9SM~E4q`0;06BJZIm8<}QC>BXWz?(PmpVfTI%m6v~7%U(+ut#kf zT#d5KXk+bH2ansY7EQ?RN~nlwziYOY{^0#>O~%(PVK|jDl6?5fph5sSiBF(WlI~wl zL~e*V;jmTFNq|04CKeX$c7sLyttbJ@+t)hL5r!@0v))iaCSlyhosxy!9wZvY1mZ%W zvL2xSZdoi;4GbuVd15njbHPX6p~6hkygbQC3{b3pC7N*B;MIXqzQ)|eT!Sq_r_)DS zIAmL{bIQvP(T7=hRWWnH+FFhW5=d#+zt zQ2mt7B7HR5Ss?e~lCM&WDTS5CxAA50+^fvbE^dKo40VWV#S58Ox$RlO)ij4Ok4pv(RjBSWF@4iG`(AZdKSrUVsy^k_OSnzAi@@I>j<{3wk)yt)qjUBci%9M+Hv zZMlA&jsP5OV;Zu79v^X z(pptj)nBoAoBh~rz~O@aXh~AN3z~~QB9pYzclt1B(CUiC&|yE_#i=o*_<+IzC>9jbi{xcIUSPtcb^T@M zvlHF7Z4tJMbA$WhaCwG!DFkd>MfP zKp{KLnz}0 z78Vv}jG(!d5bD|XL?I^AW;0lHaj^YG_|!zU zbtP2LIhd{l)f5mExKp3OnU6@6Lt`mX3E$-W7D zL%qwNds0+1&UN(1K&?#Y_3jE%*EBQYn1BYY3aB$H!}6=#nEN zyRu%98-P2x1)ldnDJw_x*4x$+hbff$FJ!46o{=!-L;V&T#t(v(S#0Uq)N?oZK^BI= z0qDwvcJ4cu>6nvd>a3hoyxiUCkS|+d+f0yMq0a7HCyOn6l#&%}$l@XEKh1HG``{7% zdv6p{#x&u>r#;kMNX3;d7m^~OUG*7R0tE2Na989+_LELW{P}{wqvyMLi}?Hn z#=i|l5g?DEs7naNvFPI`=qCrVsv&p;?A`pu_Owzp!V!hBG+$qh>TW&m#M9K&{aNqU zh}iHd98P^xAn_u_kVgJ&mvl(5ZSn zhPK4#BE92jy8^%oQIBeD@(R_rq^LPL+R=5v=HZxImvq zZNIMA_XBK!YRp~b79*^!C699G2#K>Z5`z)C%92OGgr~Tpvu52K~bv`47lO`U5vt z@uxNnH>bX_X%HYW3VKzsAYmzjRUKqRLmAtV5ISqx(;H#fz@| zF32M`)}!!rZ@Fe7lU301Y8Vp<_Y|M$@86XW4^;=#ueK68*l6HvvzcTS)D<9VlSG{~ zx6a~<@0LY0n)~_Ys+VYO0}-R?pW3<-E%G_S2j(((vbq?qev#=NtrP2^$=< z3(4asHI(;D6PTEKfN-s^O`8D{KMQ4tAdV!xeC^<~)?TCr;^x-HCQtqcxqcHz6x1?P zz)E={DdZE(vX7*>oz#Sl?e!$h-G2;(d<;fvMH)XwbycvaZa@4SENbJp?sroK(H3l>@4-sV9Ct|IwP1Hyq@z1o8imc zCadA3@O|Q~`tGa&JDW>3^Xf~bfSFu-;Ip)i^Wc%rW1G?zHns$Qv4c<7=BBNW%G#C;aHlR*PCdDmd0YE9u8J%e2~f(Eo%sGp#UO#Dr2= z4LIBA$29)YPN-q91t0;(u&^&yX!)7nJsZA(CT2ph$QbY0)UNC$7_Gt}cP9s*-NHg5 z+L7Mxy^l$vj1-FI&Uc4FI57ofC+DAEJOwdZ-%a`5VU5yFuXSQm7eXK|YmbWrR-Ht;{~V5mX6KB2~Z`R)iT7V`BMy zU`r0Yo$b!J4imhK`zZwl(zVD_{{s$!X=DRNLB*TWUDQ5WY~@^f>OaeUUBiEBLTk;< zGp<(GgS*#G={OQHm{{?7Bk8KpLub$`nijtmEPRRC{#{ABdFq6ni6eRtwAq=TVG0eX zboYY_I;E=VCUdd3d2jTsd9i}65+nzSYO^t}*hg?Q<)N#j>Oi4bq&syENS$S42^3-J zZ`w5XZfCXs_R?h_`R(<)SVoi$hK#`P*;n{W89g>ni?jeho8vh3&)*$oYpHNvDn z6fz$u^@Oiv81oGK#SR|A6~Fum+`V!GXdr;C)--k9xmkFN#mio1uA>zN1w(=Uhw?`8 z2zBZxLnpOInDJ$qE3#LIW!D#+xTUaE5*NqFfny6H+Cx)Sy8`k>3AzyGv1rd7AY4}z zhPh-3`HXO`QQtjtdzpiz#qp;vCRPm(p7=$&sgBt?4#vlk>!D`9`B<-rHWQz0d&&V~ z4Jq06$=$4Uw{ zU(DY};nb;g7mGUTg9@Xgm>j5cH1656Tyg%QhXU5DV!Qzxw-q_M;C-l(Q?+c3_5~lB zM98}`qR5dHeY5^B_fMN%QuoQf-t-JfQG(-z(2<)rYh^{ZZ*SaSRZtM8aX*N4F?9{= z6J|cy-x3|Pj!rjiKI34Ub9bDbqmz{-x00p{KnLdH{?FQODpze_NXfX;6d8SCT5u17 zZ?U3XWtTsn4hZ}zvW4y2=z}%O@c@b%<{@9Q3rcPO7;ZmDn}$8M*Gviotk3Y5m!G_^ zyte6(Sxs$I5z=$P7Z=<@HLtLqT5*m51C+CBnmdxNrb=aHrPTGV{PW>5uPnRtP!#5v z(N#Qag|<+4d8e(+#J?4lUoMjOHR=&fOkwUBN+nyCntm-Uz^bmGV4hz292ghm>A$|* zY&kpe+LbNKxS=#e6X5?kzZ4&ZlP5pvT*>cMZp|<~6XBKSIB_X>PPPW;Quj*}#a^z` zI?Ts+^&ZmEM`2EygE~~z&^@9KMG0?A937~dTS!~zIC|RqvguiXO%86Q539k>%0-CH z-FBt7JdkicD~4sIqjN>Ix3GQg<~u6bYJ*=dq8})Y87^#Y^biWtX83c^9Mo$c>R2-O z$jKaPaqYbB)>G2=41VoiCsv2!Qcp|0lslmZ!{fBw3P1P6YXYRkKcYkJi({g9Y#-D^;6#W!L4 z^s;r}FRiaqhe%2L*znf}=D7rICoN6kn^~x7zDG2-=T@UioAgnMQ{|Y$w8;LnlvW=`-=sT5c%( znsawl1Fq@`}OzJrDgr^&u!a=QdW`Io9o6I z(R{h`HO+^%5K;?eb>@$KbBDnkbad@LPe&1^E>o!?ZSo}OL}3O zNs!OqiC>iSgWNr^(24xa4j=%{B~@1uC1XIS4rzcVJdXX|AGSUONp z{amv)u16&C%ErDcmb6Vf$h&DE!k*Q&@rOELk5JrO3tbEKTxKqkzAbp~^ahYkshH8l za@6G&fi6#Ms3kflsRp+o50nAkLvLTWp4$QA8V-US$B%^wUi$C}seoR*1L4u?+BIJc z9Ms`q)!WN-0sJkA#-Fqs0`2pytn#*&wVYgsd5Z`EnWAX=Z9(SntA+xJF5dW$`)QZU zJyny}390WCdaa=@);U5b;pEX!Vg*SdKL)ejWT9U5<0LO6!AaLH>1!fINq&9>WKU~b z(Sn+-T-Hy*4n*UD-YH;>+aB5Cd@iMcNp(|9dZeYGOjopoL#X%U6wwu;A1rU8BJdS1}%CF_+FI@Z7n841< z{r+yNu0>~p2Ae|pCZ@v@`*N)qD(^0()Nye{-{3}d(fdp$sxZdl7A)9sMfXBItFxV7 z)yq7B@n`B?G^z<*EZ=C_+}f&xmh@XFR-I204E@L=?)38aM8v{nunK08+3uDlQbUC8 z0Hw9^U1=z{okpXXGDd{e<=J1E`qr#Ms&+(1vSA30YXGD$>!Fa0hNl_Idb!Td30Hmm z2&)Z?ud1Xh9S-dG+hC~7eHxg&xHR*mj!|pl+|pCd7Q)0^p7SIf`WOhD6|^1X7PQ~c znnr}pACm?obUMk_ppr&Y??73?UgtECaDewDIsjSsRxl514Q3aVP>58U=7agi&{G?JmtCkUn$M3|Am>LSqK?|Am=`i!-`hx?$SDo07mik%(&Hn_E+`XH`aFmS2@t(OPj{}kbTmXg@gLCdOZi~m7p&bbLG%_l zF%kwf2yZ_>4N&dy2|9a2+v5d32} z;>}QNkr&7Xn1vLyA?IuOP{U6je~3F^bRfYhNTf|33yKX=GBQKJbE?UmBcv)MK{MKz zF+12}3G4pG4~ zvRfSOrr4rLE0F4Q77UQTwvzcn;3wE3HRDQLLLsu<4fILrweX^OQ_hP66aKM~$D6DFPn_jWXy-(JjQVL)6^1Jb_xh|Zt%@G>CYTU( zDrs#`zpgLKE6?T>6Kium9@vE%eHx$g(|LAg1Ot$Y#b-=tZYk?`fBh$#V;Sn-!!@#Z z&gsh0funvbgd)D5;Ks5$P(V^8;zbz;x3p)P>kz6TicT6R+c2Rp1mg)sOEpM>*8vyX zjov780#AS%3Z@{yGxd{=KLe`^JNVezIi>9PN$})qZIAEW!4;`jUy4(?6#i88b!Ie8 ztFd({jhkj!Q^U;K_@m(XN>f9E{1;i0wh{CS1UWl9^VD?$m3|f$7}y(>?IQri7t+W> z>~--dOltB1a?!)rf2LYMnC@e^c6T&%pvkLc4{HfsAojer*eV(tExMH3XT7sJiG|D!z zUUy>7|Mu6ot3I4VrR_ihl5DT!TGJ-3C1Ks z!B9beOaai3xB7?fQO7@YkMzT^jpfn;EYukJ?_6t#&XbgfLRqGP2J)81xg}QWcr2qx z!a}79a1a)%f;15om~FlwK+`huOL^wy^U~RB6x^6VmN*bNN0!UrD4~v^TI|l6z6fkU zt4l(Pvc6DcUOlC9>r;8*MKBQD4jU4J&0HHVz0~HdFx^zUKl*8>_Xo#aXhpj1(8JpE zxUVj#FAjqlRaFqzMLq`*9e56i<-BIDuJh^c+yy@vN=iU?{~qJg(dj7{gPL>dsGV8v zAvR9l5nT%WQ%6v=Bs{;~8rk98L72!)u5|V-NEGhE`>Y@Yi*Q1)NZxtH7^@NXJt)5q zEq_V=NB8Ypgm;24dN`V&5_^dfte{|en+qW)%FmoWNd^oWqpBlpi=HB-sU;+6g-WR6 zicp5;E7(M~XqvqY`##&rl~MR9vvTjrLHlb{Z}D>`w?SRhJ{kuNAQC^cNbvBSBBHxA znU0+&+(m}3V)7c=x8Bd{W41y4&E%y7BZmb|>?N%*V4&BN+BiqU&K>j(DI@RUQ4Z!JLqXrhWxg{{4y%DkWYr`LaodM` z&(LJ0YzfqWBI3767Uce_pc5o55c!*t6$Sp`uD=~IpS>nF6Aceeh&iV~Eo`alMALov za=6&dZ_l>V)v2R>W%i55_DR$QjL{AKxBdy*&ZE#4+E2)a2&TmB<}m~#2}RHHZXzy& z;zzbt6-<9yc<)ys{eSMo=ZXvZgme_QbQ3 zE>G*(@X^#u5L~Q5;gU)Oj+DQbe?>`k;Hk&9n)80*doUkF7X5HTLWt!7WtqqULymkmy9E(DlvZ+H259RFU35h&+=pwJg8 zgo+vHw^Dv$ILg-t_}~j z(&(T#oRdT1H7}KFMt0Y;!3a=~qgREr^dop_uET90vJ*r~T%P?fplDK4LQUUiZGCsS zoFr=H#=ti5HK#NeA$r{G5m?PMhPI+1&|zN24`Es(tpNubB}D!X<@PB&p=RL%xVOkB zo?|&mlhSUxyFZ6qD$@w__U%`$p11}Pth}~Hi0Gk43~zks-Ukis?cHzLhxa0L58VhJKCM!MGCzke@Rs$yzcxSS$# zA_V>?Hun~F4H&dUnTsYE;BsOV477SM{r08L*eG-&kHZFhLSFK$r{{v{Jlrf9@)}*7 zX$AFiY+l=AAB&n8FZhIgSFVf-%=xg2*5t}#_FF#bKR;oZR92v6d(7|G%d+I(c{;Q4 zSB5-IJeQNRhB!#q7a0(1koL{#>xu<#*k=#9@$WnF`?<+LW3t%AEMY!gm93#la_xpB|~&pg%2vL zn}|A!mzNi5dU9~cCi1}d*Np_?tFS^S51sO+kT6<~MTa*{&PDP>S!#Ik;xv0)-wd-Ak*~|wwyr8M6ejj22|3b z5bPP`ofS?>&?M_8o5~GkJR>Z7TYvx+6OV%2kJ9<;z8)5l?28guecpcLl6QG zP!6mxrhSmxVPC;$UB$y*tQ$6TD;Hvn)_XKe!_}-UJpg*CH(|7yiV6v-f-kR?@wV&v zziYfENBO^GvHv%n*IyFNU}Jd*sSv03u;pjB41SPXu%XF>CI}KS6G*oxuhimnCn5=u ztsy52ax{Y|Fa6Lo1CO4JBOvt}qB}>x50n5Q&=3XHeJMiQ!*xv@#!Nvf{K?sU`IG*o zh9ttq7EX12xXf&Wo(OOv{5g=4a)CMpEjRwDVR#$cdT;27V-r!E6k~dR0^v=;NOt#H z(-~3-BZY3|PJbh5d!md4FQlG)HXi-@<%VfQ`HF~;K-n{aWYxoBZ!mh2j1jQdlJF9T z@s7K@(*=BQ3e>}gQVzQOaxl%oT(`%9M!pc{7;YJXxH_7=(nX*5BEz#95?9A0tbnkv zM7S|Y(qmp5Z3eCr0bOWp=Ufo~*~A>~UlXK#FSo);Hl+%Qgv$|?Fsvq}d(z|@(iue=DwjKTK2tW(aX_C#0IBLC90tyiNl2*JLK*F4h< zDd)rJp@=wBRFJ!z3{y77cR?~KLb0ja!6)s%WL6$;ZR8bMZTvinOxgVumK_}0h z*TTu-pmk!PpS5IAc1e*9d1+=KAZ_ijl2}o?+5b80E>{% ziPA9(w$OJHJ2MAN(Yzd}()rk|nh|J%9JU`xgook=B!NC85+#7HXtsVD=8>>bA!QW< zpiga(XtV?leqBkJO_9Rd!mmmV^v5i&?Eugo z6TAX1x3~v*o=caW$v4-hN1fq%;-hfpOp5jCWWt$fW^V&e57ji?JMS?4G?c_tgcy$x zU)#zm?xac}RzxEf^Al)vt;Mv644lT53y)+=TrFT2(M!WLGUNlnZ79{@a=5j`*$Cvq zyYf$gdK=m*i0py96s%~Vi| zjaOW#89wFrRn|ANe>w)#u6!u6kccE>1Phw1Dxl5X@w~OY>~dy5yh4T&s14-M@!1d7 zl|elpEgxtrkA)JLESLiLlSwPzC6J1Qdofu^)g%m23emb^+u1DpALRwS4PGJ-??2*^ z8R)T+%4+6!mbN*0@?_w7>k=rKWng-%X%41L+I^jHe1lOwPce>E=iz&Dzo5Vfsp8O; zeqc0N%(F5wK7}X@z^V!}Ve(&TY3bv$m5_;7Q1FG4XdrOOwzjjt)_B0{gsX?i4wfW^ zjXH(h8>*G91ajGtpS{E_r6ubinM0Cjm;IfuF96x~!y>;7x^?Ronb@Ohl86PhzjM*! znl$bCDL+0#`kpXE(LaM=Lbe9lAUt)hDANn~0;I^}6E?z=66rQR5|P|bT8eqUL=$e{ ziG4>}0~~)mP6D)FiHw`&waEOl;EhdOe>^q*BuBbd9t+c1JWC(u|Pz=Fx)G7XOUx-W>cuBf0 zl+B3G=UIW*Ls77ffVsTf;&o>p8WQG|y0vXXiM6!=rQf=};1 zg1OT1SX<2sNWmQHF)M)9yD8eJ8peqT^>Z~IKm8v8prnTiFihZ+oYq56%`TDgizoU zO^Sq%(;7sHOwEbpYvo{ynUw?kbJyFB^-f-~di6`LuYG;$e{{wtX!R7*V@H#d!KsW# zx~9g`h*0c8f(4`jviy*Z;AQy?!>4cJ{I&*Q2*Ow8Lg<4u1>8F+9U)@%7jXX0&ArUIlK!h$^GShv>VA)2qmUusPiL2ko70rDMajq zuVt~NbAyg;dID*of-RdHiz%T8!mj}wIs*lG*&4#m1GGp|{fpC>eAa;E){t**W+ooT zVVj>V%%?DqesWIV+PNs8JViY@YajT>*B_ zClX!0dL<_7547yrnTTZkPTnxfZVhP}Nl8ut0cB)DPf7$III~Ov6T?*vx*`ieA{6x@BJCyi$(S~pD67r-RBQ@X%FPfR z3DDS=*i^CwVIn{TQ_;T#Q*_LHc_CXz=vW_5`I9t_bO>eXeMOQM3?G2;1$?fq3vzzv z(cyXjK50xJ;wD{Ic&R=qQyy159}o}8DA0{R;mRl45*j0f;Gbb!q1F(L3TY%C!Z3{V z23X|FkQ?j`f6|6*43nK2wL37M=}u*h4*1;=MY+glKhz)(r-UJJ){Z{@kSdLY;UU;8 zDL26(n`J3;Kz9hkN*fTfCqa0-^*Zy04bg}U%Pa1-e}+4K{v6s+WHto{DJH;K@V6VW z!AlY@^Ef(k6M;uvHHkBE@K z!zAj%ZRdn=1#*Y@*>`w%-p*rpx5*#9NLs~sSgHOP^5V|^& zy+Cvg!oTrA1Uy+Eq2NJqEYf6V3IYFeVQKB#biJg%90zyJK;~g%J;mUTW=0k9s98;d;>^I$M5HV;? zJWXUoG8*-U8cch7dM@L$doxM)L0UP`8B(6qh@?s6AxS!jf_26#yJ78M|7z?=`qt77 z>WP|90l#r$VubdOa-I|-WikF9RA2H^oJcdvxQR`S#cdqILk9c#oq04&AXU^~S^SZD zA>7qMe*sPF70Q3}-1lYxHkg9J(i?8e$CPrr0KJ?-=o$d0I{>q{DQ=;G3hcoW>?Mpi zv}ms`*T(a!!DO^=YXw)0Otiq&(i|cf8>z}!6hg9uyi6D>eUfit*a(m}Wn_~CPCIul zlE7)OQ3(KF>e<3uHzF@V?n^r12+o5aCrS@!nL@a%f({K5M58}X!=8$_v<)gTB$R1P zU=@}vDSc07hry~|q_w7lz51Aq4+qlx5F<$JWoC#=9NDvO+GewAwJ|HUEc9Lv~ zoI3cx->qHu(4Lf1XHF|uxM_D07y>9#VlUZH#6o1mkZvpdQ9t;?8fdu5umI5=v9ZRZ zZqS`MAxWW4=%1+ZJ{rc*J}U6fe$3cw$c1!B|0APtGR$Y@>)+{6JI(b|sJr3uY|v9r z19TgZtPCQmYrvonPPEPU_Vv;JC|D(S{^3c?wYpjGvujmcw}#LbHZ+AIzt^q+5SR;X zf1WT;7bxys5Dw+3`%k95o%9$`A~%Ub;FPGJ!{{{Cp+dolqz|D1N%2401Ej10yM5#O z^<6gKy!S+-90S1;eXoc&>S&NdH84Sp&>!$J*_1L!`(L*q0z|+g=pYBnj7RCF5n%4{ z`f8#!{2OP;dIPyWc)8`JF#|q9PllwF)Bxg(x-ikJlRzv@O1zoC988~aLGL)3nnncl zgG;A?q~M-kQL(#(I<{TeX!+Q97n|0f_sadFNa3bU6e~bXC0GrSj0MuNGNKijDtTpZ zrG4o?e*kwWZ9Dn=zh6beB7!WIQ816NLvRcY3*|?SFp50fFGKknvg=rTso1ix^S+eI z12S&8evWHJN?GZ`5>{Qk9a!zQ0eoE|XoNux&?6ypfqHv)gVKRQD>pLsBdBtZ?7v}B zjNiaJ*lwR-we%HTMBZUgqEGZQ>(wQe$^0J}QKM7n>FaB$M_HDHfP34D-;F)hu^pjLW3me+_j_5*RPX8`>iNClWl#=$-_|R zLcY3P{lHix+P7Ts$AKz3e1EsAwg$eal!jqusO_vXE+|IWkhy0JczAr7I_D2p$wqliembIod(OimWRTB+jsJ}bu2V@^`9TGkfAZ<{{G`}jW8x(6A+oj{_AP9+gthUY^+tP1)S-J3yLBYgsLQ<&-g6wO2Z9d49cuz(QOH-!&{ z9Az9J>!~~<+XBd4t>7JK7i3Hu5lsY|ssv9&q)^hUBymHVh|E>!72k6(?e3%h+_f&47asm|7i@Yk|5ekQ){4o%Vyv9rO%VnO{P&HAo+WC zTH+K$29#A*RRc>q!7P`UpHv|eallGf$0#Tad?lp_(yB=2s-Q-Y&#k}A?HYE{6ez>v zqpk%6mqc?`8OT`#r<+ChL_%_|9Nc8`$bP!w3n+CX;f`0;$JAKNWUKnfNcZm4>C>vv zp#}?DRZ;O=QX!;10KnYk_Cr3Gg86isn3~ZDx^@7vRcM3}Y#Z;_K=f$wx9T&8lLfTo zB&6uikp&|uIG|+i^n2*9xxHco@wK_T>FDZgNQ|CpP|RJQ1>_CrneA0cHzV+)2N4D; z;qw9gMFSwgybuwyYXFqE+uxGjD0CXuA++Z+$}&P;>IB6Aq9mp(uiA`A+IY=7bz}!_s)xxU9g3zsr05f_p z(B$~MicrcR| zkJq`B2bh&~vl4xAq?LtU!XT_J3wP|>B954*H#1$6m&{Ng0VmpPgO~YG6iZ)0WW@=j z5U6ROq@?Tc<&Ji~lWmUq258_|bxD%y4XHzvo?raA35Z-A4tT{t#jdzt_*SId74yui z7E4p8=aH&C!w)oeHE5 z!J%8amX(S&=>$}>mP#(8>@Nq~KMHyBwO@x(TliZd~tpHK;=LT z%c;vm0=3O|DfI~f$D!r|8+`pEsZUhhnP%p18$n_N6#XN+n z2y}5H@)5LeBZOYk@`kpoD3nnuXXgtO?G_NIVJ~AZ>+0>j=m@PE zKCGUdIp7gf`%JM5WVtEvYTMdP9eqOBa@$d zfr4fx!h=|&qp$gc2N4qwCf0%5-pa)M}NMlG4J;Cd{5+ zM0G>Vata(ov%X=HQItXA-82u!`4o~Xvz7u>59-$)JQs%Kz2(;vGR7z22uD#gk=DP< zaktqllMJV`hM=id2Xu-nU~PFdbZrAaUT=D7tP-1?hVen6R%B4Y4A%Zz3y>nMf?wmO z?vkEZb45kP*ijWaRRtttu}~Qnp0LBt1Ocqf%S0@n1+6_%Ve<&+=yl&(y4q&4Un#V3 z0@#tAt;Z6FI-LEB9}f{Za%)^y9U^d0frS5j4z}N{ub7xi+k236Z}!>1$Y?;+$%-=x z%ys+D9j#WUYu9uz^;;=$d)isvFH7Vc@D}Eko(0%S$c@>Ho*iz(F(h;X;Z|l$7V;|%4aH`Ac80lGcF zM}j{J-$!A>sr%lc=d8;pjYLwS1*#4iVg_%P$m27+DielMLWTIizO=rkEf(*K_W;fHq04QN^9};}=H;X|$DjRqk%u`7e9EC;y>O!W*>rT6Kww^v znz6w=k#WM!7cqwywbym*4Qv<(zDwG&{Yqe<)N%3Zu;hN`i!;Cn#~N2?Z$r;NL`z0q zR$(5HnT0B}*thzt z@Cc??$l!#(2&#g2Arc?{uje<1R}6WC~uKQI?F9RI^!J z1i*PTDLL^g2ySn3IVlJb)-Czx*jOgVY8NQ0+lYraSFiut%;fLSb zy#Nmrq1g4(dCtz16u^jzd{!qJUsMi>4!^t;iz#(Vv93mKK(%|PS1>R%qAZlu3owBb zsMBy7T`Dk4qpJm^R9}y5+5M_{X~*psv`=t`AWCW$j#M#6*NI0Opk%a%@=>MjK&e4W#Gnpgmao ztpUON^hYv70H){+bZ$W_wN<=6G)>IQV_iMy#(anoJanj0+iuF`09rNs)?B824)^?# z=t<{uT5?(4_6+BIpxrr$-l~Qd30H*=A8zT}Ez`$KDN@6i&7Mts^L|dszq&{^cCR*y zKBwj(`$39Jp;k@5S5g$Wp&l`j7Y7;(Xb-mWL{;0oT#QQbQEHx(g0d$@E0$^NVR{Sj z*>;w#7%9X(leZU=ZCE#(c>RG+rM7*G-f@aI$}O~heB^Hq@?aFcel{OJKVd=RfAW4YNJa|J0dANA40##xJpc*9aYk9#mLM|E z6OvyzDlK+PBJ~&A(03`9(J@O#>Nd4}{j-Q*h_}`Cbq&qE92~7LO46`rc*gO*EN=+Z7T+bMe8VPuFvr!{6E0nNk3ZKW|2cA{5UeMj1l6R$oug`_9hJVXH+VN!$ySS8WPU3a}X61k8LSQ6G#B0yL7@El@PA$H1}~ z@udMTP^HGuGOY@xnfzT$i1)}~X(DV4jGhb()Hxpja_D^yl})Wd28FuV++sSD0K#dpR&)6g6Bn02rM~C0qT|#lbKJ_rL=d3hIqSmZ zBAI|@G2eVX!hQ7?!}RmZDL*>)$(8)@p@=2)yaKG1{K=3R*QXR={v=o`grER_aK+YR zaUJJKf&OIO=r+A0OF0llanS$aW*>Ti5q{5EHz?NH4%A5Db}E6rhEiiP#!4b_B61TM z1_8GeE~M8YzL5+3iJOSQZXf@6e~Gw}^r<0yCo4 zf||@u+TnS|2K$TPz<)>Wic44H3pdM_B zX5~S=8MJsfWC5Cx)TccY8n7v}Nu1D)(rjI1bQmYvX;InbW7B2*-WETUoNiuC_so3` z$tcn@M2-M5mO6t_cq;{bH6k1lPl71zLhyP><=5%+jb%P7nW@!s3&~>>6A6m0GKJTG zhJ-(ih`1tduhQkh$axCh6SWOO27it`aBZs?#NG+@j?AtMHGg&f{CWJv8AP*s0^DaK zrMtE073TuNvOZ`P9l*6Cb8vFMxNogP;ltx=tpp-{v_&*RgYYS0j(Y7v947*06IXbH zaq&S7^BnyPp%%wV3Mr>RDWobc_%rO;oi@I~RvmEx+1a2+o)WRhh-fnkQC4fM1H4=+ zY!pss^rEJa2YnPgbrGH7ZfU4#n8Us=^2JmQZTPp-kG%T*hspScd}z@KPr(7J05jSP ztFb0rjgoPu%&{Vjo;3kQ3sQ6>#?gR%HUOE!Ac9$fy&9`PNul#9>kdn0JSHsuNjsi0 zFrBy|v3^bc8J$0JLPDrS{Hrr$2MsQwX2TM_$Yia{4@$;exS)>>udy)Vga8P#v~~qT z7@`FE`~Z7o-)C&Tvs|TMAMfXF(6wkppLSv|;2clVaEi&_28%od&lP1zor+%_bUsSf9nWH7P~3jqTYw$7 zm)AnNtF>RIoW)?LC(gjC1ukdP3~ zdjM8t5ZIgdNtbo*?rjDJ@^Q=l-C2j|Ka1`jWsdd!*ji)$D67aA5uY#v^Fx3C=Ldjp zT?RKE(WnuhM$Zq0zy7-Uu`nOT`AYgOR!S9iXlyn7Cejt13LxA}9lo2Xcfo_GgF!YG zMb8~BGXE4tc4w5`0*=t$=OAF;#lKM`esWEC!lAqPS2FnrgE%$zp+uH7ui&5i5WmG=LC{6QQ)2)A{l{?H zOKfnLTVAto@w66(f1nXUR zby8Kx+NEKnvoOU@Yo;pc(W5P(CncmgF*>j4>6UtQda15%JA2}q>aQn$=j|00-GXX~ zN#HdQq@T*$85jvwF9c8AvimWjn^6uxZxe3$A_m@If(7flXfH zp65nRjbv724SSxUTg`WJa#F0K_m`QV9)~}P06B(xdQ>G3?wtK~{q(ElCtJB+W@JEC zX_dVCUC#hctrsyD=y`E;I5;?Zv__yua8f~G6Zuv#m>lW@|99Zyv{ckWw3h?p`~3Rb zd(s3S_b=2oG`L4cM~6VO+#R`pxd2#Xnh4iI8mg-eQcrU16%bet5uWw6+S=Ni4;V@^ zHhA_=bbbE3qxp~%_!a)4JW?=%yLa`W3A>bWLh{bZf`{MmZJQtpQ2qV6_M-dze1 zNn@SbF76=EV}M{SElUI4YNL|5r^M0B%uN6MIS?stBkBsgh+?kQ?_Z7w+A)_Kw4;rx zOkSMJW*jhrgprIGe5Ai_3Gs4rRmUeY0K2^{59HZhx_RIF`3TGid|h5HcY3rvk9nVd zfvQ#?Hp^dO2o5pQu*92QP0CJsLs=+fbveZ0Y+qgbp7bWddQp$0h*pqxVC&~^3 zaP?k){I~|B5=KmiY+euZ!s$84$aD%FkZ%zYl|ZCl2uR6ov;^LnfeqP@8f{rxm^quI zYO2f6FU!g(_d!qi@}<~AZsJONE)xzmQ?0MB?`7=IjfMwQD&`KqMoOE+BzuFQ;_5XA zhm)BH)6>$vQ1sbFv912ouR$O2!8oWF+h4xIpgA8@U0>Ab951~qaJ>DDc(n#tNhe;2 z9iJKRO#|i52804J@W%u(p>Zk7x9k02r*;YnZR`cgSvR|$DF{z~4$UZ+YoDz_^_t$u z$f)kQ+Nl@J%IfNy`1K2X06Q5#ip|r{k9m7-P0bsmZ5%x7)-f$36~U&aED*MqELq|? z0H$xzhY!3O5=V|4QH@uY8kmVV>gtPq-icsPtN~{#Q7@k*kXvoNALs}h(PC4Ky?c8e zeI0L5l%AOJ@$6S2y-_a`Q}5iNCkltFH}9ul${%GN6Vn~U8-@sE4JCASb;0~th5(;` z^6&;GcjPALFlZAtKni>IrK{^En4FQ4Uh56F9baeJ{cg>-)+`1f%F-Be(ZdQ{)Xl>~ z#z5mq|3g+JwJ%;-WP-oi)m3uW&G|n);Wwr7%w2NRSMj03uT{89MnomO~n@GBEt;!GlZ)RgQzb?vM!n zUsJZ#E?g>(ZFyGROHmZiDRZetegDL{b0BCJS5{t*Vnw=rOFcJpg5u)hmhtfLggk!CE-1JGm-j8k_%H?O=Q|w? z{`Ax^9!r1n)Tz1tar|{DII*gIV4N@jH02za6c!ei1|RvHg@rHdZWk<#zd%DnL$=ct zw?@wn?nQ`gEiEmJ08ew2;^(}vl{+LPwqenv0h#w$xiHrR^XCa_hx_`jg)v#CqM}0C ze(A*5Z*G-DX6qc*gI-sj{a%7*nqjj0_%F>&vn{xeF#>*ZaeLd^+BmG@3koFgu^s{! z%Xh$;K)=jCfD48k_xmP{xr?wf&$$x1#xKI8{`8jW_f!j}5smR-Hi#B>Cw=VRmZXi@nH z2{sUhH6E2#RWVdnRyr*F&UZL1BeP6FK_T_Ui#PZ;Vo+u0qTyNj(b)7kL1m!l$({Zo z;W4<_rKH=$j9Y;r&)&=J(OyZF?n z=u^0($`jQUhhy@owze3E(_8Uq@KY_vdt~p-z)btp#+^yu^_c3pdF$40=qrI^yA=p< zNjJ#iV?TaW1?ubQY{eI^s+X0SJctgHqI9FGF_@HC$J6riX(sjDxTlfpOr=#{VUR8( zj*5F;UY>}E#O~en_=9>#=eu`HVdpN&2q`gE;}Ia_{Rzs|VW7r|xh(v4ZYy-vH+X~< zT?JH_E0KG>voJ=%VyKB10JB&}xgcIIu$2r@Bl+gJM;X}Trm^qek7MWF(iOp)jZIFf zh7?|(85g|}A}9=>SPf%2`K@^a3Jgp}3LBVY)Ya7^ zR6DR5N!M{umakp=4m}WQaLrchqQyW@CS!v_M6B3Hi#@$VZrq^r-6rl0oTv*&PzK!E zWHA^XfEKSo2KfZ`20L}P(ifBJDEc6N-IZs~oH<+QBHn1CJU%%!MeHY7J5iwapxVm$ z_VIdSbqv~3!q@lXzXDi8y#O)xE)kKN%NAD$?}6n&{`QxHgNWWMha0HnTsAg-3b#RG zD&T>9&8HrFj*|cq(B&I|M-PI6mR`MjwW*~g3iSe3y3>f^S`e|I8 z2Z<>f8iLs9ChI|KBkv7g$hc(-m+;L1Znc#`K|!fmSsn!iE{u)-)Suu)mB5Z#jdqAb zLE`m?536BlPXH!*JAc`$e_|X5{A`}x8pMe=VQdnUk_?QDO6jyF>+!i@QkI|=K#nLx zyms;MtcsNj{0pk4Up{{>n&XN(b3Z)X_lW(-j{W=BVfKngTG|05wBEo1nEQW!@=g_e z?D>zEknf4zUjO);lif{QQ6E1VIu&um5^Ic!xmoA8+I- zWA)8v&p+OX{oZ*aq5pap@_)vxN232PcqAL|+(nX;7ts;+4gqAzB<$DI=;EWI<2Vy( z2u%)%gXe_73W>{2B~`_+(FSl4hJ^iZX=B6thJ}%_x-{Evm<1u^-e(I?V0&Fx_j0-E z`s@9mpgoTFxYeG&#d{q@taaKfq_MV^9G3?yOO7A2 zwA>G^owY!AfK2X$t9Ej7+7BlWNhX8y=WoIHM#6Se;f`-Ke1&=R*CZNt-+a_RqpBgT zt<6Fqp&HJkGHGQR8?5J{6rpvqX^XBKE`aI>0B`3Jz9QIJhA<^sC?X{#g~Qy`^e&KE z15}>nD$c%gU_?qtPr?m~>{0tPtgQuL%{=fU-2hAFCUkSGrTifQ#t2aHCTuh}-_`k9+wXntuy8QEw732u zUiFn{=T1808XIciVWn{Oy;G$nCH0fR4d&I&-H6jh!mpa^*!G7pa6USROy)2xPabi=zhx1&i16! zbpdd?SXx?|`$)7aCfA(JcVa5?xcCtX-O=1+Nht&Tv%}9Z4D5iTZ$cS}vC;DdV8y54 z{u|CB!L+op;>umg$mskO_I)WcGc#CiJ$Yv5&g~Eo6jZa5MzFaZKTA&`At?moXZmy3 zGtqZUTrYry-s#1hW!~zJDLTx$cRW1{6p`Zf*Tk*@n)_h%1%Mk(!1Lvm{RpKE5r$GI z2oNFPG9Eo7r@GOhYGTF-fewe>*<2egU|nZznAl^<_MQec_DxwCmj>J0*~(T-U@^roMW?(aAd7}%jsR%i1||Hg?~U0wS3j8hpZ_YDci!r z!ajjn4UOv^@Gp2ocuMz(i0ufZIQb_u?)&)oaD0!-%(T0q|Bx8T-vqOLVag0i3Duyx_wJQ|CY%bT`9(>cz%o5Z!{4!#Uu|cfXI(J}9 zLV7G#v1Rk-qT=Gk2%msicygZ6meQqTFE4~5fZQc12JokoeEY+mtHwu_nGkPMZPW!2 z4coD)79LhPVb|fk@9vWI(0>MQ7p}0<=|jdfODrrbW+WK8rP$faR~bofU^)Q@@Bb2z z$GggTn1;4Idj`tbNc)lR4rXS&uU@^{7z9>3dhds=>%YUe80KOZKh-FU{qBXUMc_lB z;4DO<86#OS$REj1ome*kPJLL31Ss=+gV(}JE5b%z)9iI*K^0o9Xm$Bxuv7L zd-u-d&>rCGi$Je3YNMQ*ix%^G@2 z*>5R?D$29lgaPg$?A%=naE6hIiJr1wNJtVT+P9@hDi?#~jA)Mynh9>F_W(6#BZx|D z71yp^i=p0K1Uk>y?3C%-k`fY(k>>(;#~ZYc`1#qk{AkR@NPj=EERF;jKLnl&Yew8#3ZcLBgzi*tv6p$~iV1fkU4@W#eQ zX3*g&Zn)7;fyVhyTyX6`3eO`tGCGFnH2c{?gc!S*Z8>aObXT?QP2e_+1`Q(Rkt zv(8z8HW+hgrcuUr>P=2e+`XT;fHV7eC;9z_$q zQm&0LI%=6f2dfm+^FJz+37;i5Eu`9uO?8-?=A%Sn)n>dG2dr4R@(s`p3T3xkz%eAU zb==HsZ1!YVDnI%nuV z{DnakZ()Zlr@v`|VL{w1pdhlZBXq}{rf1KdQB~vDT7H_O2(19q_nJulY z|3ay$WMXz^hCDV!5laa6lBRX|x2kJ)^XVuNoEaF6!x1oH_*7Y5PT(cWkv36u$gF~e z+kfbgM^X}>w9jUxb3a5RB_p;d3IdzkNLp(| zcoEAN6cms>hvVodbY(z#1>(pyRA%|$Kk6KIQ*eit-$Vm0ZU^Mn>$vxJPCrc79Xv07 z{pUKY0!1S6Wiy7HXOyGxEE{z7N?Y~;xnTaJ7d|_dFJHOxCUQ-Jt6`C1o;~|ZUw=F9 z1#Q2D%{+0Aid$M{qaz-2L%?rrYU&Pt`sU4>Z+{kl`m_!~)d^rX)v)4Ct*u|ZT@Tt; z?OJ%e_!#c-+Xb|kcEit;XcpUq*wYJM$pFF_a#j15FGA3Go1}!;Hcv0F8^}n?gZKHt zw!MK5GM>{`5N#dB7Dpx}t@(T+bR34ja-e3nnDgvLM0AL07oqCmhn}W*=X+s#1=qb$ z_hvxuBcrOi5zB(CQbpwOVe($D3SP_=nl(rK_||EhiAfNg^YfZoT3q=@Kgh0If`jv> zqGA>N>aoB6S_Clt6Iw1wN7w(;-kC@Bysqy*GYLflk=iLzQ6WPTk)dQrGNx48C~cG| zN<=gfkwOD9q=|%GNhK;3WlH9uQN{*RM8DVLobOt{zrTNf_gZJ2z0RpVpZD{Ap8LM; z>$>jy`Lx+AbcnP?%IGbhtvl>!Nrk%H7X?ax8S0kM1I*w?yEwco&ub<+&YJT`Zff>saWuIw3I6Eh}d!u{WvC~7{+W5iN?S0C5NsCv!c=<99<@kb*_@X|)t-(w| zxo-IC7QJ=b+WhfoJ!83h5Yy)`-OCy7IdJScX+-Eouc)q4{Z)=6*j&$0>Fz77tgPdO z=T7qiM%;ck9zGmxo81p%(Mg7I_+r!CYQu=BxA57%D&40-u->X98x^}7wU%DXm`vl| zfyg0TMBCURMvL)1cn6Y{6Z5x5_f_O!03z2iK`OC{2H;g}J#0?obbOy@C?h^?K36H<^l9Jl(^SgDXYwtNPo5U{i zdI8;^C_FWC(Xnh+$(V;Mz8|+|bVue`ymT+Hpr_WN#QC1FccwgU#kH#&@OgRtnv0NkY8%uYFV_0PP`ThH2AG{i4wz&HM zXd^!uHh#mbWZT(TdN*jSCnX$gO3TQJYrzk<^@902m0#k`?hXl5 z-~y1pCX@mg)k65*%j@*_N)1r0Nw7}8BwoFe(g=93Y1Q<|eH>0&HZ7?pIX3>xWm*Kx zQZisQtk(H2<WEckkU>`$50u88gEy^cJ2qA7J_eJ*NNY zzs+UJW;6*Z3Kxdy5!F(nkkF(gc0k&7lHl=n;XU(@?Iq{g{BZziM^d6cw@%e)uDH{~ zcZaAl*^aH6!zLSivz$aUq;>lSglXBxLkAA*V7ode_KxRd4-&i_BO6;h;OdecSYi|2 zX5P`pcy52~$5jV82pAWMF@oX$ltE@V36l%&9be>yR4EvOjf@t6K-DX48f>tsyATC1 z$QF4S85u!Ui1hy`IrVImk+&lJqwH!&t5= zi@YRlgI!jUKuZqgA^Z0W&2d$AOeX9}Kthe|Wir<$EP!=xi)4jcF8Ae2CGxCibUOoM zB6RIKa=X}Wa6!$4T`O#;uni3jMePyRiW%)5O83WSS9+3_ikmXUqq)0JCv+5fkrH-@ z&(YtRySchZ4h*DTE~V%RzxyQHXEM-r7bp4VojZy3nzKw6-geCoLNb}UXwl=Dr5XhCA8#{?Twa#T)SKyqeImW>?%>O3aK3z%0nF5+YfYlVT-1fYCcr5?2&`EMzxmEC$apJM{A?{s!;>1SFAwEQO5Au6$SGK zM^N4Nv53+rBSh378YrhocjoLn(Dw^pAW#A=0T*4X%|z5DCXQFx@%ReyBB5z%wkCM?*!I&#$fr@!6)$au0S3%l8ABm!z++pI;6XL@Tzh4qn}x znF7+8R7OPX*hksuj{9IySxm}=x!Y(O4%0haX~+Edg~P+#XV05A6E67H{&$jcntuep zl$4!Ej>yxHs9rp`gR)ULX*qPp%z*<3N-2)%jvdAC{Q2Q{F*dx(=^$wObvY9~>QzWB zg6>I3w7g0L{rbLa_DBC@r~``O{p7yD+27YaxoB)HIcCx%CB~G%p8FT6pTX;LG+{^v zqH@G2N6A5h1_}Pm5V!{l(iv%;wu7muD8?%sD~%+~kB#XeRu{`o1CJe0Fms=xAFDH5 z`%w9)Sk8JrH?0Xe8zIxf!{Y=@J1BQ1x-p*Vov75aqMsun>2gOvSgpFMW(lmui3=BW zdOt`0)TjvjrJ0{$Y{t8mIS(nc)b%}M7> z%bA|Ndmq_kGEh;`o{a&CJ`>S)CG{RhDRcWTMH1PrkdQviz&Ll`Ky=eTn7`!OW|yxY z%KKm#5ZLze<;&98I9Mj4%0N!8;Pl<1&Z&I%ghXTj5bqU5PQ2GR%X7Uqxw|(|G@|p) zT#!$hNMFYkK)y#JbwYpLl@h=X3wDJlDxs|MfDyOmE(Def!B`9xbDm&@SAcWJLLfc~ z?2b*PC)r()Xb>%O;T`2VcR=Fv6DP3i9Y_d7A5#M%ukC{`xWV%6*|P_7B!>ca1F=Lr zCwk0Xw|mv}yWGRR#!Kpo2+}vCPk-GhbqnG>N4U51rBjA1n?1WH%UNGvKLr@n(EMq+ zkf8aZat_}C0B;!kBBq%xj1KpY8}Cd-tgWqmYxALx+u9iV_x4b!3t4V^IhafVE0Tl+ zvytyaPg=fqg5&HBwe;Z16UatvHsLTR67mH7cz{$SLJ(%=ir2p=^X#b<$e>yr_=ATJ zcjmd%u3cjSMJLj=hy?=9jhx(Df{-zcZE%kZ%J)6GmbQ&ki=X_jv){gc)m@n*fmFmO zx-mNl15A*tuem!AsZN<`Q#;O`TOGaYS)KfYxrkN0ZP6$--DFe9Kq zzoF(i6xCMI;lHz0j~$$25~EQYx*O>9ju})Ns&30%IpSiux6M@+`KfgA(~uQsC;mJK z(wHi49c%+WhF4ulP3;%n6`NJIbiaOw63ppT&}DjvX*vX}X41p*tLFb6KYl#o9ORK^ zc;TI9zSvucKFez(1sJiuv`*Y(yqgFY=7_Se8}!|CbxEYfv4Z^k8HTHIq&Hd(Yjw;> z^+9d)BREtoa~*aLu~w2=)P4dx&JH5REPQ?7{{8aAAGLCEgX4pyVx5OkzZ~rB{`%uX z&__s6E8f{rni-WRzP8oX)lKDPski!Y3(A?)LlE@Zg%4Yl)_FaAt}eGe73#Z=EFbp8dHLC&6j))m zOt?blT|LiqyVY}J4ADI> z^@O&uGy4HX? zZT)1t*UEa^LWlPt05c!D?-%A?TD9Wm)O zTuZ`YJ{6mKuBf)ctsMXynlU%aFPnd75P)_KRH;S!uh~~Qn{VksynlPtOZ;P@E{&r9 zV$9fsbUUko&1TnC#<-Ra$u{589AZASAI{IiwF{n+)2C8cJdSt6%C(rfW%77cDzd@*4FO9zNUsIW~;aX;TpH;?O zrshe(7=OuVLZR4K52={na&9D>_U_qZc2yhq>{MDqvyxk{{22B4g~|^}oUhYHJus8* z{PA_RGU;B!DqdE2Ik36dVS;E~*4*N@a_!n4Alx&l^9fzMVLklocvqE(gK$x~98$Y~ z{)tWq200*pYcBPDha`9Gf|nlMo&hAkz&iezaF2N&Nxgh|p@ExPHn*`2DTyn?34=+f zX^^SLp+ccD0EE_@?)`o|a8vMQN=jutgW3d1enuYtdk2z_MpU}Jo!!nMGxyJW)g)Ht znoUMVh9K>s>f`Da5p$j}dt;T_>3DTTOsndnw}|h|=pcfy=Yj>KzIrI z(oPa>C6&LR*mUJ?&a=~|PTf#jq687wAM#^Sn!$eap*Ly%8ro{~cV>$Z_5sb`K5U;j zylT;ockbTRA9YPqg2hx@YU7DZ%IR(+*G2UZm*X8Yh;zW-BnqwQ(dS_@_hC~oO(!mE z?As}vQ24Y8rQWpNLR5%&gg5Q2KDFpha7!*ON5iw4Hd2z3p?6+zC~q*h4_nd+-E1g7 z(KPbd{Ijo^m@Qalc#Q=u9<&SV!Vu|2k=1N%U+2aTma#b4!hMwLK0kN%S*|OkWFY%r znt7;s#16_M71|1yGL=wj<4x`>E+-Q9~t*#qD^4 zz>fH{5=s+?{`R5vbh_Jr+}N@Ca0L378pXt^Rn@srX_!e~ulkVSOumm8 z>!L_hwW@iZ;;?s>)d_SJd)i*_!5T!+y`W5yD|q)?4!pmj^4iU)y8Xwli^#n?54s?c z{%h+SedjCbWRbXd@BJQvRtw12Zolpp(#N$ztOXC_RKEBjbI`r@(P|1LQ18F^e-UtV6sIFcseS1ckpqWc+dWmFh-L&?~YE>DFjY1b3#HiS}cegt^X$q4TWxE3}M99|E5PG~w z!|!VsenhXS`cI@2OkaCHgm-aWW~|KK`r6x?ry-^cz`g!&374>Yjpyo1=TuvMv% z>CVm|#wkgekSj9nuZcfbipXMi*dgtIAUdXB4YWAR;&|qtCOlK1$v=Gc>J?eTGGg57 z%(#-34?vzZfd!HeStGYz_X-Qy-=TkJ&N8tzaCUY+^RwveIqv4$H*g8 z4cSZA{QR&z5D|d2T$Mi+Q(QNtydhZO-iQkKHAnyt0uniQ#=8@wqs$X4@sIMyQ z2b}K=O>~nHZIeID$dBwL5jcMQ_*oBl4SS=aRzz1ddHGzeRf)-DKw5 zPCBwD5()zFWZ7Rjjj5*>9#p=vX3ZLnrHaFJ@L>stHDb{@OB*tE(tzhVdo2z(%3g0* zhNUAP1=h7anmpN4zYvI))YY2mrBK^o`|p5v&K4>5)3vSBqz@iExa8k|lqg+=$D z_mF~g{w_%6|81>m688Ayr|X4x=D;rE5xAiAb+ z&^+2lyp$^z=)bcJbfK1;tdnGJE9t~vyYw@5Z z##Rh){xCH?%iz&I1tb`qx;v$%S4Y$25E@`TT}B5&#_Y(&Et@tioG9KYh7upt_z|i4oQ%X19r*f01?>;3@b>1hAKafN#5V~Jy^!u`ru|3{z z|J|YPKkvdtN=i!j?@uX*7FI}S!G}a08G1I%P$Am3XSv@Ru z6kbX4q=~Q(g@lOXc!PFZVYbx!djfSHz$BRSdowSu3*ORQ*RNk+)n~$-QM$T0gvb=A zGKn0V@p{PW?6ZNK9^as#o`}`=F<4z`?)qp9ubatgwn>>2D)V4<3^-L92A=3fE< zHN&!AA9ieQum{GU&T0)%(6Wl(4dE4cJu~gBE>?^M^8)&+>w46$WZZv$9tsR19t!*S zo9b#m+?KN%S96Am^CbDeRnD2G{-$N?v5LtQ#h-dMZDZiH3WN^yPt)7#>Mo#%h1Ad# z$be(t>({-LOU&osQ_bgz8>pN*NZ=>F2pQK#Cm9ZVKOTkTDBR-btpl&C{E5$AjSZ?2 ziOc`(O=;knAMmuj=zEvAemWhGx$r?h^wG`pHf^t%4iM$Bm7xTj!tZy^59$&`%CS}9 zbOT^I34a@kL<-Yb@o22P;oAjix^ELa`CCNge8C^?z7n=z-26Ke8h<+!-|r^utW+@p z&{VS(#aJ>KglG7SZW8mEB`+vI%J>BnV&6L?F1sR0z({kg4)mY|>m`g^GwbUONz%jW#xfM>*6@dJG{y zefqS20qlTqJFa_?CX=)G(_@ikp`)EM9k%kX!kY|pmFM8AlEbWZ>qR!0$GM3F(XKO^ z=79_2-&&r3o*&`nd>vKJ>#KfQfI^3Fm1lAT6?zV=%=68|JDk;#??*T(Adc#ZUL6N~ z60$QB?w5apI-5ZvgRM=zeE&1JlBUS6nj~R@z}ig%T(AgRr)}tfjJqh~>)&Q(l1O0t z2=}?qo-OOUL|zTD^GZ|v!<~uAxv!RYYq@tqYhKjR)s2$QJ0!5Y9>EertII~()j&wI z8=ugoqyOXAjJ$FvKWWTp7`f)weXN8nL}Te@6~FKXXWmW!w6|oZPMrjY&1;&D9Z9yv zbl$wZP@=*_g?Vx%Jel96F>005zv*#^HM58}!BErzhvYB8T=WL?Xq{SizxFi7V%$7= zVpzoG%5OxhC6`w9zz>KIYA1ow>EjP7$S3J;!we@)x_@T2f}bbmy^ZK4!Tt3*@=9+} zqV`ljOX=)XU>vM4Kxg~f@pO)9sU9lSWugq(XQ}njA!IS67b3N#O!?>@P}io#P%}Y=eHroxd`W{B@}9+cZWTKC#kU9-_nXUr+Z9?{QBv+0*Qb8 zmd}IuQGb|#AxF z?en%=?*&L#hzo_8l)>_`%_8$V?Y%9~)5Xc60$p)xzMm2j?l+GoD| z@!2T=&}co;>Mv(=^MC9@|BPJ=LS%&^N@J=}VUM-_fVx7GOr#vFNaB^3(9x@dZH; zaQQ5<9y3dEGxlH|5#Rcv)Tl)rCLXgNDi$5`{A8ItlE*;_6S9;?V^u(ZogaA5SeVdE z#IhFL!Puf==Q-VcIHuL(K4=AguJxUpT;A{EV1?nsDBipsg+GE;08#%KHbc^@CR#Kc zh>=-!EOJERtnKeZUk*QJ3#0o^lryw$y}4A;(FuNNd z$rPRyf(XU^leX>qNI@U4ac0dhFNx6WM0(H(-M@S~ew7g;C$>Oc3-7eQ^Wn)8zUODT z)%F&#a?w))RnSk@zBrV+`zKR7cxgV?U>K;SC6M;VHv0%|U+48OOKW1=;eJ7prhX zH1zQNPMN)xry1D<@7p&W86DOC(?b39Qs^cq1DUd_CPy&1X~Mu*tZgcETvvWO7^2YhaAn;2KU)wDAs?BV zyV!;-UA7)Bw~NuWVcT>o5e%ugJBfxiFKwK)oV5}6KGg2@%IptG55ktUb7{N)C;120 zm(0ub;Py||rJAAs{$oNu1-);L7(2;WdW?MR@Pyf0w;Bkfrg`ps1|Bh?9Rqjspo7#J zzEVv~wna}Hdgz7_Z2+falDz{)|2=DP>8po7+*FixBz<>4A1Lr~rKr%2gYbYp+TQ_J zqRpFKTh7;uE?KR^ZhgWd_w9RH^}W~cXNoGb!!*^8Ms1+Y<4TbdqwS~ot|v=0w6n>a zx?JECjQ6NNk^iCM?b{CA`mE=T3xA*OG&%S<0eV6mir&wc{qi<4^_IBtQlq>~7W_up z98d?znxG_6b8fUjZB~`-^Vj`VPnE7%wd%CmT@Sr+a5;rW9`EymP)qK;Gb(!eKNWGp zq>008r%ao(raV~*2hi}d)22=9>HbZY%yftA$}fd9)ynD+Hx`E4a8OTLFFsVYxFp@D zJu7Y0e4CQ!NeRvRG|`jk`Vl4ir>>2Ic5W8Al zG}&HS7Y$8{U+|>v1+U6w#&?>3MFN{u5*pIx@_rR}tH~Lv_P49D9+y7^Fwq2rOSh(+tBSd zhBQ}HI8@}ZhuerMPPW3`w`^H^`Q1W~hNeGSKl@|Fn&($Xkm#GfRfiuuxKproSxdHk zd+$fA(zv7ZdcZ(=`8{|^LoRI6djuG0Xvc`}IWp$o)un^!ZB3l=p5Z5|t@d}FpGH9X zi>BcuH|8(B6|cNpeZ+`4m)38>sbu6Cat)&=wSQdHYwoIQG)i8YdN$Xq@r#|0Py5uR zqs$lx^*4uOrtk$g>3APb()d0D!uDYBnrKFU6@708?A~V^dc7R8Wcl*hiv2l}zc+@d ztE&2OLWR6I2xGbJ>cA&)2rHRx|)1b!WYQWLyE$xsba@V?s&Qn*`nK5%_C1wiE zCNA!>qvGwdK!NJD@IjDhDfhf^AT-n$b~(=dGvM6o?!v;NqEPLZ)=cZMRtjom$l#F+ zOGYxY=t2K8yfdFZ3N@2LyfPyqBZJ9Pwc94-qL!*IZ_EIy$KkJwu%UszXnzfUG~57M zwo20Q$D!M-ggyNj*E{Th-dV}JXw8UG=-h$%)(0=EQ$qGZG+P*9o8=-p*^pv?w3sPy zJ*_=8P;{q$JW~L?ul%ePuvH<{Z~k>S5aZW{{MQ@uXsZu<`wcaBYkWwX)Dr|1v-iz< zm_?f8oDohg(#;nl4Lc4ZP zs1AEtEPgFvGSP!=;)VgB**M#VG$snSZSSwMJ?l@q1s50PQnykq=A&Lqb5-T#zf@_{ zWP~;zqdQmDH4*9$+lYJ_`W0v`EiGMN_OU@-S-ayDM8h|=wc%Q}I2EW4_R>n(VaKW- za&z?X=)zz{7;ShX!M&mF)sjQe9N*N{1u!Q-g_|0ZGRW4x*~C!J2F3O+?i$(LW7>=^CJ$d;Q}SZ-ZLrxhK`exB8@Z&K6rpSW2YFRY|j=Sn7R zigsx|Z~RiYDdh#FJfJGur+qL~t}*_C!}~QxN}=EjIFYvrjL59B{X~&UO847EMOgmG zQ4_Y)NF%CGrKYAvWPu;ExOEhiG`q2fuLK0{_=yw67j-JDhGvahl%yzpY4{t$vR~6R z(8lDUP{-bgzm0{v6i7=U{Hy~h*K;gSI>W4D8p*_q@p_U?HC}xb9#1Mo3|31$#L{ED z--{j*wd@ zL>n%x+v1J-p_cIc7rv`BRNuv^1)EBG4CO}DPF!pis%0Ze1qiPD(81WR{=S)c>7ZGl1$&Bh1m@d28m})?RDF##Efw16cbUg~+*E+a$(V!5v1 zflnqS?W1HBS0zbVUz)fHhuejQAB^D9ftgo$NK6yT8}Dd6M(wv0-l7w&a%?La_3D|+%_&F7&uBksxYo$=5lPjf?bHVGk9MXNz3$cSoUT3nDDu9x!DF@ zSW1Il?Wo6oNus*O`cHA22e+bh6QNZ2-FZ)iYb>eYg-r*iLErWERqMyfHPqKjce||y zNeE>xVI-w{Ap8DNW;}>79&;w?tDd?rmxo~DLl8X+xlf+-rvbq)EKCl$6nobm8pz+W z4<)~Ub>FfDgGs^zH!!~v`Ihbkl^uOX`&`e=#C6wm$dFj;*=GyKnRxY}oj^DwH!5GJ zTah3T3$5|)-pNi3m!Y#@C+9V&*9?k|sm!wI@8I+RgU$vfccyG~gUWf5={Xu}&^`jK zXtf}w+b24$TD2Phy%O^-{s)?T*bX;YyIVU$f!s47>FxLla$n2OpQ7luZ|fw%QZ9NX z6KP9BU;!Plfv|XTZ1+8gvgl5J3(lAsGq6A~Y7nPF6Rx`_+QtASr|To9yO+jN5>jEs zvK$rB2PpTbbGwOB_CKvworucx=Hvhwz-kg84AtW=LoLxdQ`S8lWlo4Ntl{tw?XYhe zvp*IrCY<5m>x9AOTH3jEgN6#+QxaZl(gsi7Zb*sP2Wqi!@J`UgO&Z+Cw0@;QQ4@E5 z4m%`;(PpB{3h<<1n`J284NwY^D5t!9T)E0P3G$xour(U?xRM~bZep9x*?TmI2|M@h z-^c%$qGpo`G)+uQ9Mj%8=s|wcK0#Ts#rkH#s?3W9cO|<`{}QGaJ4! zZB~g-a+{<1U^g|d1Cp=(@){U#;YAdlKdSXvL^(Ea-hhvkW)YKpjJ8v~8kR=U6~y8> zkjwGT>?E%~S>!_0h3Bv2`=xm_(A%MU%av1y(0pu0H0k)V#}@||mtGu@M@h>SfG_vT z%JRUX8$LbLhYd6Cdk$pNQ(Ua)*agMjfV$ zh+de9Xx5!r*i3RNs+Bl5Kp3OrBRYwZ5p14{XE&#@(Xc#NMvwb|yz%7vwsAC6s1K>4f>hr(ak{=@_6ZvG?BMKx%Ta1m zGGIJ_<43gGspJJ0KL#v5<^4lQPGR#6{k07p=(zKYj`eoKP1s?D!LshxG4}Bt^8jO3 zHT20TqPkeA4ADo;4kB&U99_@x7uNL$1;WmNs~2D6yuQ1|ZK_?@#7#UtZZZVj#t)B2 z2)`pcOE!eWpw$*tt)_fiz6&f6;o%e~Ct}?C!O@1EszyhS9vxoif0c?KW)dw##dAf| z`}xY_H>g0{#5i}gDLMZ9g3ILLs;YCKv!)a1UGH8rr=2aK-@>7X?C@nU)?{h)Yf}#M zG|)#qM(>6ttm(o1IXdP%!c<(Vt90#gDdb*{V7B;9IL4Y|D^3n4Qwb(o%4Tnb@O^s{0Ul6B!D6>gu3y)*g2#NpnV8ecp) z6+pthparud9@Iurxv!VbjWKv`-H*QS&d6TEw|MD}Bd)B|JIk4{0CC`V{P;j_T8)Xoa=DOpKi`ul?UJ)k(g6m-vidNHA@nye=;4FCFiK%# zSh|En&pcBT7_r7IYhvmI1A_{f zKd1HQLTxcgiKav$3^jb4OWQ-5R~j>6MDe+)ufHalL$qgh`%A;Y$tjSC%RsbIugh;2 zgOnaAnm<7>6b@m>XikHC;iM2u#^5SF#!(5Av0*gzSZ(N+r-25455g7AhHijX58M^8 zvro*H*6higTS4#BU#=S9*Yxc3IS|Q`ObWJuv9Odfw>g4A7SKeAWZSR!1HBK9oMf9p*aP5cL4coDwa^;qX{@?p^Yo3 z3r4XU0@ru7fycZ-6b-`nQafS62TRnq?r`f1C&XUo2r%;TkaoW$GoVol-5kQ{O<9=K z#&1jn6D4f=a=q;s{(d6WOmR0*sl@qJg`q<5V+6o{!hQAA0k5b-xhmP7^6uTkbA9MB zYcDMR9amgbB#G3#m!3L&IR{ps`#=jzq5 z$f-TYjT@)E{HhcnonUQ(6>@w}rQ6pw>TSDRNnX;0iKQDZX!LP9nIF>dpbEO<;N}B* zAKA$NOSBURMBozuRGj|1L@JjwpLQc*r50G1qv@0}q4->H(g1q|@q*r|7gMeTkM!r>In3i)ehL2_^pVt5Q*0iBT}T4h$I!KV>A0 z0<|)txDyL>x5;S6ym@_uwm~gIvN&nzkbNq%b~r{h(!(AisEAXZubvauL@zvr*mOv| zol;VFFQ9f*@}COxFWkd96J&D$OHc0WjZ()t~^*K23s7u0EKVPtUpzv9OougKptNN6VhKpTDJiGVV z6De0{Q(|lJ6@<1~)P_m~;dukkuV5z+Gl^>c`}2WR2I9%_@|~iJ5%Xl2yvJy!K+{@=0XvYtb}laako3GCX^j0bnP$!Lu2tO!8+rM|v>YC>T%N_8fwe2Bs(6Hoio~l| zul#AGVbgP`+YajDIQ{X)M}vc<822Wov7zr!9!{fLqWYN+h^6H;D<^z*ApawcAmZDsVN`k&qt;e1viKIFT@=-kC?%M_g~B^WS+x`C9i{5Fed{l z&He{(8*jKX!vX#MtLQOOWta~t30p)k#h#R=SG{l_##i>j1m)-=*%k=H* z3n6ji#fw1*+fylNBwchPGg+QU`jTKhL`Md|VV8KqN#l(VG6s+4bx45zJfR2d8DDfI za0ZNek`5=cflKwPfjjn@{SjsU+vScif!Dfo*RE+PN>h$w%j6LJrKZ*y`JW+)dqn3d z9t$z#jng|lE2{Whce0Zh-18M)qJeqkvUdCY{b#)b0zq*E6T?hq&K&aJ*(7>;#(t7= zZ>p-kF5R?FZZ*2=cnq1MQ(K!etvG`JpT@E0JfV$@4c24`(5KM|C+h@)@vHC@<_FrN)S%YCzI zy9S*1;K#)OQCLw~nF3*`_mY-|%_d@;&_NAm$PrEC9wOW_a!dSaX5|k>9Mpg#NU}g! zVjRv|$v+c3pmU`?!|TMS`*CO_VAO@X6ReH(Z|9N6?fV?I zwYBJR1pUa7l}NP}4X86>1Z?D=(MezZ+-Rwy3%{N%A=+$EC&m&B^8P5;JhDiaC{+DI zL>~bYPmHO+15Z5@-+JLJ5^f)AOVM{rl{^y@A;@%y(Qld{KGK=NB{?_v*t|+|Z7%R? zeu{nGskpIg`~PQ6PO=iS6npI>OgK7rK}+DeJkffcjswQBE75>6Y0UgMj-Y?wj?~oA zP(;Jd($7l2mnZeg8+0TOy8V;GHWLsw&>4v7PIj}qn8*}&K->>-=}HW!h5XtFJ)XwU zznJ~W1kcb>bmWQHP3uR`YZ(itY-%jQ6K>L(L8F8ZNoc_SW7bGx71#mMgwXTni7#?Xj_6+!LNg<0cJlL;tWZTIHmZv_+3+puuDPf3 z{$OOJ6zS@7k3ZwIFaoLYIK*q=86vBw94ZXVSoWWt3fwft zDND5tvvS*`LF>-|C9(bg=bs1TlTIaL75M-E@%H?`QC0#g7CHB}R$~^NjkQ6s) OnNFW;l00>#@BahT1?=Gf literal 0 HcmV?d00001 diff --git a/tutorials/W2D5_Mysteries/static/W2D5_Tutorial1_Solution_fb77cb86_585.png b/tutorials/W2D5_Mysteries/static/W2D5_Tutorial1_Solution_fb77cb86_585.png deleted file mode 100644 index 35aa4e62a5d2f054c0b6fd7362f6c8a314a7dc83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211913 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
  • Vj!w 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 j9?SnH5A$P<;*&ouuXk 0.5).astype(int)\n", + " # Determine the binary indicators based on the max value being greater than 0.5\n", + " binary_indicators = (max_values_of_units > 0.5).astype(int)\n", "\n", - " # Create a figure with 2 subplots (2 rows, 1 column)\n", - " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", + " # Create a figure with 2 subplots (2 rows, 1 column)\n", + " fig, axs = plt.subplots(2, 1, figsize=(8, 8))\n", "\n", - " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", + " fig.suptitle(plot_title, fontsize=16) # Set the overall title for the plot\n", "\n", - " # First subplot for the maximum values of each signal\n", - " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", - " axs[0].set_xlabel('Pattern Number')\n", - " axs[0].set_ylabel('Max Value of Signal Units')\n", - " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", - " axs[0].grid(True)\n", + " # First subplot for the maximum values of each signal\n", + " axs[0].plot(range(patterns_tensor.size(0)), max_values_of_units, drawstyle='steps-mid')\n", + " axs[0].set_xlabel('Pattern Number')\n", + " axs[0].set_ylabel('Max Value of Signal Units')\n", + " axs[0].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", + " axs[0].grid(True)\n", "\n", - " # Second subplot for the binary indicators\n", - " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", - " axs[1].set_xlabel('Pattern Number')\n", - " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", - " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", - " axs[1].grid(True)\n", + " # Second subplot for the binary indicators\n", + " axs[1].plot(range(patterns_tensor.size(0)), binary_indicators, drawstyle='steps-mid', color='red')\n", + " axs[1].set_xlabel('Pattern Number')\n", + " axs[1].set_ylabel('Indicator (Max > 0.5) in each signal')\n", + " axs[1].set_ylim(-0.1, 1.1) # Adjust y-axis limits for clarity\n", + " axs[1].grid(True)\n", "\n", - " plt.tight_layout()\n", - " plt.show()\n", + " plt.tight_layout()\n", + " plt.show()\n", "\n", "\n", "def perform_quadratic_regression(epoch_list, values):\n", @@ -952,10 +909,6 @@ " plt.show()\n", " plt.close(fig)\n", "\n", - "\n", - "\n", - "\n", - "\n", "# Function to configure the training environment and load the models\n", "def config_training(first_order_network, second_order_network, hidden, factor, gelu):\n", " \"\"\"\n", @@ -1018,11 +971,7 @@ }, "outputs": [], "source": [ - "# @title Set device (GPU or CPU). Execute `set_device()`\n", - "# especially if torch modules used.\n", - "# @markdown\n", - "\n", - "# inform the user if the notebook uses GPU or CPU.\n", + "# @title Set device (GPU or CPU)\n", "\n", "def set_device():\n", " \"\"\"\n", @@ -1046,16 +995,6 @@ " return device" ] }, - { - "cell_type": "markdown", - "id": "4c4c7da1-9990-458d-9ef8-c5584ea51aa0", - "metadata": { - "execution": {} - }, - "source": [ - "Guillaume is going to give us an overview about Global Neuronal Workspace and how it relates to HOT..." - ] - }, { "cell_type": "markdown", "id": "2ef4a1ee-afa6-4e4a-9cc6-081d802e43de", @@ -1063,6 +1002,7 @@ "execution": {} }, "source": [ + "---\n", "# Section 1: Global Neuronal Workspace" ] }, @@ -1191,7 +1131,7 @@ " tab_contents.append(out)\n", " return tab_contents\n", "\n", - "video_ids = [('Youtube', 'wVcGJxU_wyU')]\n", + "video_ids = [('Youtube', 'wVcGJxU_wyU'), ('Bilibili', 'BV1Vs421u73a')]\n", "tab_contents = display_videos(video_ids, W=854, H=480)\n", "tabs = widgets.Tab()\n", "tabs.children = tab_contents\n", @@ -1221,6 +1161,7 @@ "execution": {} }, "source": [ + "---\n", "## Section 1a: Modularity Of The Mind" ] }, @@ -1322,7 +1263,7 @@ "2. The RIM units are mostly independent, meaning that they do not share weights or hidden states.\n", "3. The RIM units can communicate with each other through an attention mechanism.\n", "\n", - "#### Selecting the input\n", + "**Selecting the input**\n", "\n", "Each RIM unit gets activated and updated when the input is pertinent to it. Using key-value attention, the queries originate from the RIMs, while the keys and values are derived from the current input. The key-value attention mechanisms enable dynamic selection of which variable instance (i.e., which entity or object) will serve as input to each RIM mechanism:\n", "\n", @@ -1437,16 +1378,6 @@ " print(f\"{model_key} model already exists. No download needed.\")" ] }, - { - "cell_type": "markdown", - "id": "0e85190a-f57e-41c8-8d4a-3ddc658ae045", - "metadata": { - "execution": {} - }, - "source": [ - "### RIMs" - ] - }, { "cell_type": "markdown", "id": "33bb7131-c719-47de-98bf-9cfdb59f1abc", @@ -1454,6 +1385,8 @@ "execution": {} }, "source": [ + "**Training RIMs**\n", + "\n", "RIMs are motivated by the hypothesis that generalization performance can benefit from modules that only activate on relevant parts of the sequence. To measure RIMs' ability to perform tasks out-of-distribution, we consider the task of classifying MNIST digits as sequences of pixels (Sequential MNIST) and assess generalization to images of resolutions different from those seen during training. The intuition is that the RIMs model should have distinct subsets of the RIMs activated for pixels containing the digit and for empty pixels. RIMs should generalize better to higher resolutions by keeping dormant those RIMs that store pixel information over empty regions of the image.\n", "\n", "This is the test setup:\n", @@ -1464,7 +1397,9 @@ " - 19x19 images (validation set 2)\n", " - 24x24 images (validation set 3)\n", "\n", - "This approach helps to understand whether the model can still recognize the digits accurately even when they appear at different scales or resolutions than those on which it was originally trained. By testing the model on various image sizes, we can determine how flexible and effective the model is at dealing with variations in input data." + "This approach helps to understand whether the model can still recognize the digits accurately even when they appear at different scales or resolutions than those on which it was originally trained. By testing the model on various image sizes, we can determine how flexible and effective the model is at dealing with variations in input data.\n", + "\n", + "Note: if you train the model locally, it will take around 10 minutes to complete." ] }, { @@ -1556,16 +1491,6 @@ " validation_accuracies_rim.append(accuracy)" ] }, - { - "cell_type": "markdown", - "id": "6303ab3d-10e3-4f17-98cd-d1cc8bec2244", - "metadata": { - "execution": {} - }, - "source": [ - "### LSTM" - ] - }, { "cell_type": "markdown", "id": "1e7acc2d-4aa5-4e4c-82ae-43ec4a3c2bd8", @@ -1573,6 +1498,8 @@ "execution": {} }, "source": [ + "**Training LSTMs**\n", + "\n", "Let's now repeat the same process with LSTMs." ] }, @@ -1758,7 +1685,7 @@ "execution": {} }, "source": [ - "### RIMs and consciousness\n", + "**RIMs and consciousness**\n", "\n", "You might wonder how RIMs relate to consciousness. As we have seen, RIMs focus on modularity in neural processing. In this approach, various modules or units operate semi-independently but coordinate through a mechanism akin to attention. This modularity allows the system to specialize in different tasks, with the attention mechanism directing computational resources efficiently by focusing on the most relevant parts of a problem at any given time.\n", "\n", @@ -1884,7 +1811,7 @@ "execution": {} }, "source": [ - "### Coding Exercise: Creating a Shared Workspace" + "### Coding Exercise 1: Creating a Shared Workspace" ] }, { @@ -2008,9 +1935,7 @@ "# Generate deterministic specialists' states\n", "specialists_states = torch.randn(num_specialists, hidden_dim)\n", "\n", - "workspace = SharedWorkspace(num_specialists, hidden_dim, num_memory_slots, memory_slot_dim)\n", - "expected_output = workspace.forward(specialists_states)\n", - "print(\"Expected Output:\", expected_output)" + "workspace = SharedWorkspace(num_specialists, hidden_dim, num_memory_slots, memory_slot_dim)" ] }, { @@ -2088,7 +2013,7 @@ "execution": {} }, "source": [ - "## Recap\n", + "**Recap**\n", "\n", "In the past sections, we've discussed models like Recurrent Independent Mechanisms (RIMs) and those inspired by cognitive neuroscience's Global Workspace Theory (GWT). These models embed different ideas about modularity:\n", "\n", @@ -2222,7 +2147,6 @@ }, "outputs": [], "source": [ - "# Compare your results with the patterns generate below\n", "factor=2\n", "\n", "initialize_global()\n", @@ -2260,7 +2184,7 @@ "execution": {} }, "source": [ - "### Activity 1: Developing a Second-Order Network\n", + "### Coding Exercise 2: Developing a Second-Order Network\n", "\n", "Your task is to expand upon the first-order network by integrating a second-order network that incorporates a metacognitive layer assessing the predictions of the first-order network. This layer introduces a wagering mechanism, where the network \"bets\" on its confidence in its predictions.\n", "\n", @@ -2389,7 +2313,7 @@ "\n", "initialize_global()\n", "\n", - "# First order network instantiation (defined somewhere else)\n", + "# First order network instantiation\n", "first_order_network = FirstOrderNetwork(hidden, factor, gelu).to(device)" ] }, @@ -2808,7 +2732,7 @@ "execution": {} }, "source": [ - "### Make our stimulus space" + "**Make our stimulus space**" ] }, { @@ -2849,11 +2773,11 @@ "\n", "Let's start by creating our space, and placing three Gaussian distributions on the space that represent the likelihood of observing a pair of features given each of three stimulus classes:\n", "\n", - "- leftward tilt (w1)\n", - "- rightward tilt (w2)\n", - "- noise/nothing (w0)\n", + "- leftward tilt ($w_1$)\n", + "- rightward tilt ($w_2$)\n", + "- noise/nothing ($w_0$)\n", "\n", - "By setting up this model, we aim to simulate and analyze how an observer infers the presence or absence of a stimulus. When the observer detects a stimulus, the inference process would lean towards either the leftward or rightward tilt, depending on which Gaussian (w1 or w2) the observed data points are closer to in feature space. When the observer fails to detect a stimulus, the inference process would recognize that the data points fall closer to the noise distribution centered at the origin." + "By setting up this model, we aim to simulate and analyze how an observer infers the presence or absence of a stimulus. When the observer detects a stimulus, the inference process would lean towards either the leftward or rightward tilt, depending on which Gaussian ($w_1$ or $w_2$) the observed data points are closer to in feature space. When the observer fails to detect a stimulus, the inference process would recognize that the data points fall closer to the noise distribution centered at the origin." ] }, { @@ -2977,13 +2901,13 @@ "execution": {} }, "source": [ - "### Add in higher-order node for global detection\n", + "**Add in higher-order node for global detection**\n", "\n", "So far, our model has been straightforward, or \"flat,\" where each perceptual state (like leftward tilt, rightward tilt, or no stimulus) is treated separately. However, real-life perception often requires more complex judgments about the presence or absence of any stimulus, not just identifying specific types. This is where a higher-order node comes into play.\n", "\n", - "#### Introducing the \"A\" Level:\n", + "**Introducing the \"A\" Level:**\n", "\n", - "Think of the \"A\" level as a kind of overseer or monitor that watches over the lower-level states (w1, w2, etc.). This higher-order node isn't concerned with the specific content of the stimulus (like which direction something is tilting) but rather with whether there's any significant stimulus at all versus just noise. It takes inputs from the same data (pairs of X's), but it adds a layer of awareness. It evaluates whether the data points suggest any meaningful content or if they're likely just random noise.\n", + "Think of the \"A\" level as a kind of overseer or monitor that watches over the lower-level states ($w_1$, $w_2$, etc.). This higher-order node isn't concerned with the specific content of the stimulus (like which direction something is tilting) but rather with whether there's any significant stimulus at all versus just noise. It takes inputs from the same data (pairs of $X$'s), but it adds a layer of awareness. It evaluates whether the data points suggest any meaningful content or if they're likely just random noise.\n", "\n", "The system can now answer questions on two levels:\n", "\n", @@ -3135,9 +3059,9 @@ "execution": {} }, "source": [ - "Now that we've coded our multi-level model, we're ready to evaluate it! We first set the prior on presence (vs. absence), and then set the priors on w1 vs. w2, and the model takes care of the rest.\n", + "Now that we've coded our multi-level model, we're ready to evaluate it! We first set the prior on presence (vs. absence), and then set the priors on $w_1$ vs. $w_2$, and the model takes care of the rest.\n", "\n", - "We'll evaluate the model on the edge between the leftward stimulus w1 and the absence of a stimulus w0. This edge case is particularly interesting because it's where the model is most uncertain about the presence of a stimulus." + "We'll evaluate the model on the edge between the leftward stimulus $w_1$ and the absence of a stimulus $w_0$. This edge case is particularly interesting because it's where the model is most uncertain about the presence of a stimulus." ] }, { @@ -3173,7 +3097,7 @@ "\n", "* The model is fairly certain that the stimulus is absent; the probability of awareness\n", " is < 0.5.\n", - "* The model nevertheless assigns much higher probability to the presence of the leftward stimulus w1 than to the rightward stimulus w2.\n", + "* The model nevertheless assigns much higher probability to the presence of the leftward stimulus $w_1$ than to the rightward stimulus $w_2$.\n", "\n", "This captures the essence of a phenomenon like blindsight: there can be positive discrimination between different stimuli even when the observer is not consciously aware of the stimulus. Let's look at how the awareness signal changes as the evidence changes." ] @@ -3243,13 +3167,13 @@ "execution": {} }, "source": [ - "### Simulate ignition (asymmetry vs. symmetry)\n", + "**Simulate ignition (asymmetry vs. symmetry)**\n", "\n", - "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (K-L) divergence, particularly at a certain level within the model known as the W level.\n", + "The HOSS architecture is designed to detect whether something is there or not. When it detects something, it ends up making more prediction errors in its predictions compared to when it detects nothing. These prediction errors are tracked using a method called Kullback-Leibler (KL) divergence, particularly at a certain level within the model known as the W level.\n", "\n", "This increase in prediction errors when something is detected is similar to what happens in the human brain, a phenomenon known as global ignition responses. These are big surges in brain activity that happen when we become conscious of something. Research like that conducted by Del Cul et al. (2007) and Dehaene and Changeux (2011) support this concept, linking it to the global workspace model. This model describes consciousness as the sharing of information across different parts of the brain.\n", "\n", - "In our model, we simulate this by adjusting the intensity of the stimulus and observe how the prediction errors vary in the model. Under a theory called predictive coding, which describes how the brain processes information, K-L divergence acts like a marker for neural activity, making it a good stand-in for studying brain-like responses.\n", + "In our model, we simulate this by adjusting the intensity of the stimulus and observing how the prediction errors vary in the model. Under a theory called predictive coding, which describes how the brain processes information, KL divergence acts like a marker for neural activity, making it a good stand-in for studying brain-like responses.\n", "\n", "We then classify these prediction errors based on whether the model recognizes a stimulus as \"seen\" or \"unseen.\" If the model has a response indicating \"seen,\" it shows more activity than when it indicates \"unseen.\" This is what we refer to as ignition — more activity for \"seen\" stimuli.\n", "\n", @@ -3335,7 +3259,7 @@ "with plt.xkcd():\n", "\n", " # Create figure\n", - " plt.figure(figsize=(16, 4.67))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # First subplot: Probability of reporting \"seen\" for w_1 or w_2\n", " plt.subplot(1, 3, 1)\n", @@ -3352,7 +3276,7 @@ " plt.errorbar(gamma, all_KL_w_no, yerr=sem_KL_w_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, perceptual states')\n", + " plt.ylabel('KL-divergence, perceptual states')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3363,7 +3287,7 @@ " plt.errorbar(gamma, all_KL_A_no, yerr=sem_KL_A_no, linewidth=2, label='Unseen')\n", " plt.legend(frameon=False)\n", " plt.xlabel('Stimulus strength')\n", - " plt.ylabel('K-L divergence, awareness state')\n", + " plt.ylabel('KL-divergence, awareness state')\n", " plt.xticks(fontsize=14)\n", " plt.yticks(fontsize=14)\n", " plt.box(False)\n", @@ -3381,11 +3305,11 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/neuromatch/NeuroAI_Course/tree/main/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_fb77cb86.py)\n", + "[*Click for solution*](https://github.com/neuromatch/NeuroAI_Course/tree/main/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_96fe639d.py)\n", "\n", "*Example output:*\n", "\n", - "Solution hint\n", + "Solution hint\n", "\n" ] }, @@ -3412,7 +3336,7 @@ "source": [ "### Discussion point\n", "\n", - "Can you think of experiments that could distinguish between the HOSS and GWS accounts of ignition?\n" + "Can you think of experiments that could distinguish between the HOSS and GWS accounts of ignition?" ] }, { @@ -3508,6 +3432,167 @@ "content_review(f\"{feedback_prefix}_Video_8\")" ] }, + { + "cell_type": "markdown", + "id": "42ec8e35-a10a-409b-8c9a-aac6335d4c9b", + "metadata": { + "execution": {} + }, + "source": [ + "---\n", + "# Summary\n", + "\n", + "Hakwan will now discuss the critical aspects and limitations of current consciousness studies, addressing the challenges in distinguishing theories of consciousness from those merely describing general brain functions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98844fb0-afc4-487f-9c80-175317b3b537", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Video 9: Final Thoughts\n", + "\n", + "from ipywidgets import widgets\n", + "from IPython.display import YouTubeVideo\n", + "from IPython.display import IFrame\n", + "from IPython.display import display\n", + "\n", + "class PlayVideo(IFrame):\n", + " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", + " self.id = id\n", + " if source == 'Bilibili':\n", + " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", + " elif source == 'Osf':\n", + " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", + " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", + "\n", + "def display_videos(video_ids, W=400, H=300, fs=1):\n", + " tab_contents = []\n", + " for i, video_id in enumerate(video_ids):\n", + " out = widgets.Output()\n", + " with out:\n", + " if video_ids[i][0] == 'Youtube':\n", + " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", + " height=H, fs=fs, rel=0)\n", + " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", + " else:\n", + " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", + " height=H, fs=fs, autoplay=False)\n", + " if video_ids[i][0] == 'Bilibili':\n", + " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", + " elif video_ids[i][0] == 'Osf':\n", + " print(f'Video available at https://osf.io/{video.id}')\n", + " display(video)\n", + " tab_contents.append(out)\n", + " return tab_contents\n", + "\n", + "video_ids = [('Youtube', 'Og8GjV2ELp8'), ('Bilibili', 'BV1kx4y1b71V')]\n", + "tab_contents = display_videos(video_ids, W=854, H=480)\n", + "tabs = widgets.Tab()\n", + "tabs.children = tab_contents\n", + "for i in range(len(tab_contents)):\n", + " tabs.set_title(i, video_ids[i][0])\n", + "display(tabs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f743aa7-438f-4971-a720-864511974e00", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_9\")" + ] + }, + { + "cell_type": "markdown", + "id": "b323cfe1-0c5b-4ecd-869b-cb3b7e5e9df4", + "metadata": { + "execution": {} + }, + "source": [ + "Congrats! You've made it to the end of this tutorial. Let's wrap up." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c38958d-baf3-4ef0-b440-c1c42ee75bd4", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Video 10: Final Thoughts\n", + "\n", + "from ipywidgets import widgets\n", + "from IPython.display import YouTubeVideo\n", + "from IPython.display import IFrame\n", + "from IPython.display import display\n", + "\n", + "class PlayVideo(IFrame):\n", + " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", + " self.id = id\n", + " if source == 'Bilibili':\n", + " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", + " elif source == 'Osf':\n", + " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", + " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", + "\n", + "def display_videos(video_ids, W=400, H=300, fs=1):\n", + " tab_contents = []\n", + " for i, video_id in enumerate(video_ids):\n", + " out = widgets.Output()\n", + " with out:\n", + " if video_ids[i][0] == 'Youtube':\n", + " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", + " height=H, fs=fs, rel=0)\n", + " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", + " else:\n", + " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", + " height=H, fs=fs, autoplay=False)\n", + " if video_ids[i][0] == 'Bilibili':\n", + " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", + " elif video_ids[i][0] == 'Osf':\n", + " print(f'Video available at https://osf.io/{video.id}')\n", + " display(video)\n", + " tab_contents.append(out)\n", + " return tab_contents\n", + "\n", + "video_ids = [('Youtube', 'dJ4KiCcvndU'), ('Bilibili', 'BV1BT421e7G1')]\n", + "tab_contents = display_videos(video_ids, W=854, H=480)\n", + "tabs = widgets.Tab()\n", + "tabs.children = tab_contents\n", + "for i in range(len(tab_contents)):\n", + " tabs.set_title(i, video_ids[i][0])\n", + "display(tabs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4013ed8f-2320-4c17-b228-59de5baab226", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_10\")" + ] + }, { "cell_type": "markdown", "id": "5444b408-933d-4a58-9ab8-757999917a01", @@ -3515,7 +3600,7 @@ "execution": {} }, "source": [ - "Below you'll find some optional bonus content!" + "Below you'll find some optional coding & discussion bonus content!" ] }, { @@ -3525,6 +3610,7 @@ "execution": {} }, "source": [ + "---\n", "# Coding Bonus Section\n", "This secton contains some extra coding exercises in case you have time and inclination." ] @@ -3536,7 +3622,7 @@ "execution": {} }, "source": [ - "## Bonus coding section 1: Train a first-order network\n", + "## Bonus coding exersice 1: Train a first-order network\n", "\n", "This section invites you to engage with a straightforward, auto-generated dataset on blindsight, originally introduced by [Pasquali et al. in 2010](https://www.sciencedirect.com/science/article/abs/pii/S0010027710001794). Blindsight is a fascinating condition where individuals who are cortically blind due to damage in their primary visual cortex can still respond to visual stimuli without conscious perception. This intriguing phenomenon underscores the intricate nature of sensory processing and the brain's ability to process information without conscious awareness." ] @@ -3574,7 +3660,7 @@ "execution": {} }, "source": [ - "### Testing patterns\n", + "**Testing patterns**\n", "\n", "As we have seen before, the network underwent evaluations under three distinct conditions, each modifying the signal-to-noise ratio in a unique way to explore different degrees and types of blindness.\n", "\n", @@ -3617,13 +3703,13 @@ "\n", "In this activity, we'll construct a neural network model using our auto-generated dataset, focusing on blindsight scenarios. The model will primarily consist of fully connected layers, establishing a straightforward, first-order network. The aim here is to assess the basic network's performance.\n", "\n", - "### Steps to follow\n", + "**Steps to follow**\n", "\n", "1. Examine the network architecture: understand the structure of the neural network you're about to work with.\n", "2. Visualize loss metrics: observe and analyze the network's performance during pre-training by visualizing the loss over epochs.\n", "3. Evaluate the model: use the provided code snippets to calculate and interpret the model's accuracy, recall, and F1-score, giving you insight into the network's capabilities.\n", "\n", - "### Understanding the process\n", + "**Understanding the process**\n", "\n", "The goal is to gain a thorough comprehension of the network's architecture and to interpret the pre-training results visually. This will provide a clearer picture of the model's potential and limitations.\n", "\n", @@ -3639,7 +3725,6 @@ }, "outputs": [], "source": [ - "\n", "class FirstOrderNetwork(nn.Module):\n", " def __init__(self, hidden_units, data_factor, use_gelu):\n", " \"\"\"\n", @@ -3694,8 +3779,6 @@ "\n", "\n", " def forward(self, x):\n", - "\n", - "\n", " \"\"\"\n", " Defines the forward pass through the network.\n", "\n", @@ -3798,9 +3881,6 @@ "\n", " epoch_1_order[epoch] = loss_1.item()\n", "\n", - "\n", - " ############################################\n", - "\n", " # Get max values and indices for output_first_order\n", " max_vals_out, max_inds_out = torch.max(output_first_order[100:], dim=1)\n", " max_inds_out[max_vals_out == 0] = 0\n", @@ -3813,8 +3893,6 @@ " max_values_patterns_tensor.append(max_vals_pat.tolist())\n", " max_indices_patterns_tensor.append(max_inds_pat.tolist())\n", "\n", - " ############################################\n", - "\n", "\n", "max_values_indices = (max_values_output_first_order[-1],\n", " max_indices_output_first_order[-1],\n", @@ -3847,7 +3925,6 @@ }, "outputs": [], "source": [ - "\n", "results_seed=[]\n", "discrimination_seed=[]\n", "\n", @@ -3884,6 +3961,7 @@ "execution": {} }, "source": [ + "---\n", "## Bonus coding section 2: Plot surfaces for content / awareness inferences\n", "\n", "To explore the properties of the HOSS model, we can simulate inference at different levels of the hierarchy over the full 2D space of possible input X's. The left panel below shows that the probability of awareness (of any stimulus contents) rises in a graded manner from the lower left corner of the graph (low activation of any feature) to the upper right (high activation of both features). In contrast, the right panel shows that confidence in making a discrimination response (e.g. rightward vs. leftward) increases away from the major diagonal, as the model becomes sure that the sample was generated by either a leftward or rightward tilted stimulus.\n", @@ -3963,9 +4041,9 @@ "execution": {} }, "source": [ - "### Simulate KL divergence surfaces\n", + "**Simulate KL-divergence surfaces**\n", "\n", - "We can also simulate K-L divergences (a measure of Bayesian surprise) at each layer in the network, which under predictive coding models of brain has been proposed to scale with neural activation (eg Friston, 2005; Summerfield & de Lange, 2014)." + "We can also simulate KL-divergences (a measure of Bayesian surprise) at each layer in the network, which under predictive coding models of the brain, has been proposed to scale with neural activation (e.g., Friston, 2005; Summerfield & de Lange, 2014)." ] }, { @@ -4022,7 +4100,7 @@ " plt.colorbar()\n", " plt.xlabel('X1')\n", " plt.ylabel('X2')\n", - " plt.title('K-L divergence, perceptual states')\n", + " plt.title('KL-divergence, perceptual states')\n", " plt.axis('square')\n", "\n", " # K-L divergence, awareness state\n", @@ -4031,7 +4109,7 @@ " plt.colorbar()\n", " plt.xlabel('X1')\n", " plt.ylabel('X2')\n", - " plt.title('K-L divergence, awareness state')\n", + " plt.title('KL-divergence, awareness state')\n", " plt.axis('square')\n", "\n", " plt.show()" @@ -4046,7 +4124,7 @@ "source": [ "### Discussion point\n", "\n", - "Can you recognise the difference between the K-L divergence for the W-level and the one for the A-level?" + "Can you recognise the difference between the KL divergence for the W-level and the one for the A-level?" ] }, { @@ -4057,7 +4135,7 @@ "execution": {} }, "source": [ - "[*Click for solution*](https://github.com/neuromatch/NeuroAI_Course/tree/main/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_8f71a687.py)\n", + "[*Click for solution*](https://github.com/neuromatch/NeuroAI_Course/tree/main/tutorials/W2D5_Mysteries/solutions/W2D5_Tutorial1_Solution_f903bbb4.py)\n", "\n" ] }, @@ -4073,19 +4151,19 @@ "with plt.xkcd():\n", "\n", " # Create figure with specified size\n", - " plt.figure(figsize=(12, 4))\n", + " plt.figure(figsize=(10, 5))\n", "\n", " # KL divergence for W states\n", " plt.subplot(1, 2, 1)\n", " plt.bar(['unseen', 'seen'], [KL_w_absent, KL_w_present], color='k')\n", - " plt.ylabel('K-L divergence, W states')\n", + " plt.ylabel('KL divergence, W states')\n", " plt.xticks(fontsize=18)\n", " plt.yticks(fontsize=18)\n", "\n", " # KL divergence for A states\n", " plt.subplot(1, 2, 2)\n", " plt.bar(['unseen', 'seen'], [KL_A_absent, KL_A_present], color='k')\n", - " plt.ylabel('K-L divergence, A states')\n", + " plt.ylabel('KL divergence, A states')\n", " plt.xticks(fontsize=18)\n", " plt.yticks(fontsize=18)\n", "\n", @@ -4109,174 +4187,6 @@ "content_review(f\"{feedback_prefix}_HOSS_Bonus_Content\")" ] }, - { - "cell_type": "markdown", - "id": "c0ed62f8-197a-4d2b-b667-62f7be4c130e", - "metadata": { - "execution": {} - }, - "source": [ - "# Outro" - ] - }, - { - "cell_type": "markdown", - "id": "c6b24369-18e9-4181-b33b-49952635bfb0", - "metadata": { - "execution": {} - }, - "source": [ - "Hakwan will now discuss the critical aspects and limitations of current consciousness studies, addressing the challenges in distinguishing theories of consciousness from those merely describing general brain functions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faf09a16-0b6c-4ee4-b47b-f9e0ad05a513", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Video 9: Final Thoughts\n", - "\n", - "from ipywidgets import widgets\n", - "from IPython.display import YouTubeVideo\n", - "from IPython.display import IFrame\n", - "from IPython.display import display\n", - "\n", - "class PlayVideo(IFrame):\n", - " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", - " self.id = id\n", - " if source == 'Bilibili':\n", - " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", - " elif source == 'Osf':\n", - " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", - " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", - "\n", - "def display_videos(video_ids, W=400, H=300, fs=1):\n", - " tab_contents = []\n", - " for i, video_id in enumerate(video_ids):\n", - " out = widgets.Output()\n", - " with out:\n", - " if video_ids[i][0] == 'Youtube':\n", - " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", - " height=H, fs=fs, rel=0)\n", - " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", - " else:\n", - " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", - " height=H, fs=fs, autoplay=False)\n", - " if video_ids[i][0] == 'Bilibili':\n", - " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", - " elif video_ids[i][0] == 'Osf':\n", - " print(f'Video available at https://osf.io/{video.id}')\n", - " display(video)\n", - " tab_contents.append(out)\n", - " return tab_contents\n", - "\n", - "video_ids = [('Youtube', 'Og8GjV2ELp8'), ('Bilibili', 'BV1kx4y1b71V')]\n", - "tab_contents = display_videos(video_ids, W=854, H=480)\n", - "tabs = widgets.Tab()\n", - "tabs.children = tab_contents\n", - "for i in range(len(tab_contents)):\n", - " tabs.set_title(i, video_ids[i][0])\n", - "display(tabs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d3437899-dc2f-4b97-ae4a-18e54ca63941", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Submit your feedback\n", - "content_review(f\"{feedback_prefix}_Video_9\")" - ] - }, - { - "cell_type": "markdown", - "id": "f60ee97a-746d-4f2b-91fc-96cc713f64cd", - "metadata": { - "execution": {} - }, - "source": [ - "Congrats! You've made it to the end of this tutorial. Let's wrap up." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ad1cd126-5744-4b59-beaf-c9c8439701dd", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Video 10: Final Thoughts\n", - "\n", - "from ipywidgets import widgets\n", - "from IPython.display import YouTubeVideo\n", - "from IPython.display import IFrame\n", - "from IPython.display import display\n", - "\n", - "class PlayVideo(IFrame):\n", - " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", - " self.id = id\n", - " if source == 'Bilibili':\n", - " src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'\n", - " elif source == 'Osf':\n", - " src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'\n", - " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", - "\n", - "def display_videos(video_ids, W=400, H=300, fs=1):\n", - " tab_contents = []\n", - " for i, video_id in enumerate(video_ids):\n", - " out = widgets.Output()\n", - " with out:\n", - " if video_ids[i][0] == 'Youtube':\n", - " video = YouTubeVideo(id=video_ids[i][1], width=W,\n", - " height=H, fs=fs, rel=0)\n", - " print(f'Video available at https://youtube.com/watch?v={video.id}')\n", - " else:\n", - " video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,\n", - " height=H, fs=fs, autoplay=False)\n", - " if video_ids[i][0] == 'Bilibili':\n", - " print(f'Video available at https://www.bilibili.com/video/{video.id}')\n", - " elif video_ids[i][0] == 'Osf':\n", - " print(f'Video available at https://osf.io/{video.id}')\n", - " display(video)\n", - " tab_contents.append(out)\n", - " return tab_contents\n", - "\n", - "video_ids = [('Youtube', 'dJ4KiCcvndU'), ('Bilibili', 'BV1BT421e7G1')]\n", - "tab_contents = display_videos(video_ids, W=854, H=480)\n", - "tabs = widgets.Tab()\n", - "tabs.children = tab_contents\n", - "for i in range(len(tab_contents)):\n", - " tabs.set_title(i, video_ids[i][0])\n", - "display(tabs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b105540c-470a-466e-9ea4-388f0a5a71a7", - "metadata": { - "cellView": "form", - "execution": {} - }, - "outputs": [], - "source": [ - "# @title Submit your feedback\n", - "content_review(f\"{feedback_prefix}_Video_10\")" - ] - }, { "cell_type": "markdown", "id": "bcd87344-d473-44af-a881-b68e5471d353", @@ -4284,6 +4194,7 @@ "execution": {} }, "source": [ + "---\n", "# Discussion Bonus Section\n", "This section contains an extra discussion exercise if you have time and inclination." ] @@ -4374,7 +4285,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Is it actually conscious?" + "## Discussion activity: Is it actually conscious?" ] }, { diff --git a/tutorials/W2D5_Mysteries/student/W2D5_Tutorial2.ipynb b/tutorials/W2D5_Mysteries/student/W2D5_Tutorial2.ipynb index dbba69e42..ad486f06a 100644 --- a/tutorials/W2D5_Mysteries/student/W2D5_Tutorial2.ipynb +++ b/tutorials/W2D5_Mysteries/student/W2D5_Tutorial2.ipynb @@ -42,7 +42,7 @@ "\n", "# Tutorial Objectives\n", "\n", - "*Estimated timing of tutorial: 30-50 minutes (depends on chosen trajectory; see below)\n", + "*Estimated timing of tutorial: 30-50 minutes (depends on chosen trajectory; see below)*\n", "\n", "By the end of this tutorial, participants will be able to:\n", "\n", @@ -67,7 +67,7 @@ "from ipywidgets import widgets\n", "out = widgets.Output()\n", "\n", - "link_id = \"5y4z2\"\n", + "link_id = \"s3py5\"\n", "\n", "with out:\n", " print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", @@ -75,6 +75,46 @@ "display(out)" ] }, + { + "cell_type": "markdown", + "id": "2675d5e8-0846-48b9-a24c-2f1d6c27b36f", + "metadata": { + "execution": {} + }, + "source": [ + "---\n", + "# Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b8221ea8-a399-45aa-9ade-10f5d8adf318", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Install and import feedback gadget\n", + "\n", + "!pip install vibecheck --quiet\n", + "\n", + "from vibecheck import DatatopsContentReviewContainer\n", + "def content_review(notebook_section: str):\n", + " return DatatopsContentReviewContainer(\n", + " \"\", # No text prompt\n", + " notebook_section,\n", + " {\n", + " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", + " \"name\": \"neuromatch_neuroai\",\n", + " \"user_key\": \"wb2cxze8\",\n", + " },\n", + " ).render()\n", + "\n", + "feedback_prefix = \"W2D5_T2\"" + ] + }, { "cell_type": "markdown", "id": "9480bb32", @@ -82,7 +122,8 @@ "execution": {} }, "source": [ - "# Ethics intro and moral status\n" + "---\n", + "# Section 1: Ethics Intro & Moral Status\n" ] }, { @@ -95,7 +136,7 @@ }, "outputs": [], "source": [ - "# @title Video 1: Ethics T2 Lecture 1\n", + "# @title Video 1: Ethics Lecture 1\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -140,6 +181,20 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6349841-fb75-45d5-a554-2358b95b249a", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_1\")" + ] + }, { "cell_type": "markdown", "id": "3ed12923", @@ -172,7 +227,8 @@ "execution": {} }, "source": [ - "# Ethical AI\n", + "---\n", + "# Section 2: Ethical AI\n", "Before starting the next sections, see how much time you have left in today's schedule.\n", "\n", "If you have at least 30 minutes left, you should do both of the following sections all together as one group. If you have less than 30 minutes left, you should split into 2 groups and do the next 2 sections in parallel, then come back together and discuss.\n", @@ -180,16 +236,6 @@ "![Ethics roadmap.](https://github.com/neuromatch/NeuroAI_Course/blob/main/tutorials/W2D5_Mysteries/static/ethics_roadmap.png?raw=true)" ] }, - { - "cell_type": "markdown", - "id": "45ad9188-5ca7-4313-a276-ea6a5a740105", - "metadata": { - "execution": {} - }, - "source": [ - "## Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" - ] - }, { "cell_type": "code", "execution_count": null, @@ -200,7 +246,7 @@ }, "outputs": [], "source": [ - "# @title Video 2: Ethics T2 Lecture 2\n", + "# @title Video 2: Ethics Lecture 2\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -245,6 +291,20 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "06b9fca7-2d82-488f-8308-15667b56129b", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_2\")" + ] + }, { "cell_type": "markdown", "id": "13543770", @@ -252,7 +312,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" + "## Discussion activity: Can AI be safe? Can it respect privacy? Can AI (or its creators/users) be responsible?" ] }, { @@ -275,7 +335,8 @@ "execution": {} }, "source": [ - "## Can AI be fair? Can it exhibit human-like morality?" + "---\n", + "# Section 3: Fair AI" ] }, { @@ -288,7 +349,7 @@ }, "outputs": [], "source": [ - "# @title Video 3: Ethics T2 Lecture 3\n", + "# @title Video 3: Ethics Lecture 3\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -333,6 +394,20 @@ "display(tabs)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "c57f44e6-4dbb-43d8-be2a-cd4491553e8f", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_3\")" + ] + }, { "cell_type": "markdown", "id": "0db27e0b", @@ -340,7 +415,7 @@ "execution": {} }, "source": [ - "### Discussion activity: Can AI be fair? Can it exhibit human-like morality?" + "## Discussion activity: Can AI be fair? Can it exhibit human-like morality?" ] }, { @@ -366,7 +441,8 @@ "execution": {} }, "source": [ - "# Ethics outro" + "---\n", + "# Summary" ] }, { @@ -379,7 +455,7 @@ }, "outputs": [], "source": [ - "# @title Video 4: Ethics T2 Lecture 4\n", + "# @title Video 4: Ethics Lecture 4\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", @@ -423,6 +499,20 @@ " tabs.set_title(i, video_ids[i][0])\n", "display(tabs)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdcb974a-95bc-478d-9b3e-69d4270857dd", + "metadata": { + "cellView": "form", + "execution": {} + }, + "outputs": [], + "source": [ + "# @title Submit your feedback\n", + "content_review(f\"{feedback_prefix}_Video_4\")" + ] } ], "metadata": {