updated RL chapter

This commit is contained in:
NT committed 2021-08-03 21:55:07 +02:00
1 parent 8ee86cf058
commit 7910aa23e9
4 files changed
+146 -418

No files matched your search

+118 -406
View File
@@ -4,7 +4,7 @@
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "reinflearn-code.ipynb",
"name": "reinflearn-code-aug1.ipynb",
"provenance": [],
"collapsed_sections": []
},
@@ -65,7 +65,7 @@
"## Software installation\n",
"\n",
"This example uses the reinforcement learning framework [stable_baselines3](https://github.com/DLR-RM/stable-baselines3) with [PPO](https://arxiv.org/abs/1707.06347v2) as reinforcement learning algorithm.\n",
"For the simulation, version 1.5.1 of the differentiable PDE solver [Φ<sub>Flow</sub>](https://github.com/tum-pbs/PhiFlow) is used. \n",
"For the physical simulation, version 1.5.1 of the differentiable PDE solver [Φ<sub>Flow</sub>](https://github.com/tum-pbs/PhiFlow) is used. \n",
"\n",
"After the RL training is completed, we'll additionally compare it to a differentiable physics approach using a \"control force estimator\" (CFE) network from {doc}`diffphys-control` (as introduced by {cite}`holl2019pdecontrol`)."
]
@@ -99,7 +99,7 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d6bd0d17-7e9f-47a9-827f-06edb8d900eb"
"outputId": "23bfdf80-3d9d-4195-dbd8-d03cd4061144"
},
"source": [
"import sys; sys.path.append('PDE-Control/src'); sys.path.append('PDE-Control-RL/src')\n",
@@ -170,7 +170,7 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "f3f6a374-d32a-4be0-fe1c-250953ef3995"
"outputId": "ed4f054a-2fdf-479e-e00b-847f63edf474"
},
"source": [
"for batch_index in range(SCENE_COUNT // BATCH_SIZE):\n",
@@ -244,7 +244,8 @@
"STEPS_PER_ROLLOUT = STEP_COUNT * 10 # How many steps to collect per environment between agent updates\n",
"N_EPOCHS = 10 # How many epochs to perform during each agent update\n",
"RL_LEARNING_RATE = 1e-4 # Learning rate for agent updates\n",
"RL_BATCH_SIZE = 128 # Batch size for agent updates"
"RL_BATCH_SIZE = 128 # Batch size for agent updates\n",
"RL_ROLLOUTS = 500 # Number of iterations for RL training"
],
"execution_count": 5,
"outputs": []
@@ -257,6 +258,15 @@
"source": [
"To start training, we create a trainer object which manages the environment and the agent internally. Additionally, a directory for storing models, logs, and hyperparameters is created. This way, training can be continued at any later point using the same configuration. If the model folder specified in `exp_name` already exists, the agent within is loaded; otherwise, a new agent is created. For the PPO reinforcement learning algorithm, the implementation of `stable_baselines3` is used. The trainer class acts as a wrapper for this system. Under the hood, an instance of a `BurgersEnv` gym environment is created, which is loaded into the PPO algorithm. It generates random initial states, precomputes corresponding ground truth simulations and handles the system evolution influenced by the agent's actions. Furthermore, the trainer regularly evaluates the performance on the validation set by loading a different environment that uses the initial and target states of the validation set.\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vX0BsYq5ZVad"
},
"source": [
"### Gym Environment \n",
"\n",
"The gym environment specification provides an interface leveraging the interaction with the agent. Environments implementing it must specify observation and action spaces, which represent the in- and output spaces of the agent. Further, they have to define a set of methods, the most important ones being `reset`, `step`, and `render`. \n",
@@ -271,13 +281,20 @@
"\n",
"The environment for Burgers' equation contains a `Burgers` physics object provided by `phiflow`. The states are internally stored as `BurgersVelocity` objects. To create the initial states, the environment generates batches of random fields in the same fashion as in the data set generation process shown above. The observation space consists of the velocity fields of the current and target states stacked in the channel dimension with another channel specifying the current time step. Actions are taken in the form of a one dimensional array covering every velocity value. The `step` method calls the physics object to advance the internal state by one time step, also applying the actions as a `FieldEffect`.\n",
"\n",
"The rewards encompass a penalty equal to the square norm of the generated forces at every time step. Additionally, the $L^2$ distance to the target field, scaled by a predefined factor (`FINAL_REWARD_FACTOR`) is subtracted at the end of each trajectory. The rewards are then normalized with a running estimate for the reward mean and standard deviation.\n",
"\n",
"The rewards encompass a penalty equal to the square norm of the generated forces at every time step. Additionally, the $L^2$ distance to the target field, scaled by a predefined factor (`FINAL_REWARD_FACTOR`) is subtracted at the end of each trajectory. The rewards are then normalized with a running estimate for the reward mean and standard deviation.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1fjV4HOSGGim"
},
"source": [
"### Neural Network\n",
"\n",
"We use two different neural network architectures for the actor and critic respectively. The former uses the U-Net variant from {cite}`holl2019pdecontrol`, while the latter consists of a series of 1D convolutional and pooling layers reducing the feature map size to one. The final operation is a convolution with kernel size one to combine the feature maps and retain one output value. The `CustomActorCriticPolicy` class then makes it possible to use these two separate network architectures for the reinforcement learning agent.\n",
"\n",
"By default, an agent is stored at `PDE-Control-RL/networks/rl-models/bench`, and loaded if it exists. (If necessary, replace the specified path with another to generate a new model.)"
"By default, an agent is stored at `PDE-Control-RL/networks/rl-models/bench`, and loaded if it exists. (If necessary, replace the `path` below with a new one to start with a new model.) As the training takes quite long, we're starting with a pre-trained agent here. It is already trained for 3500 iterations, and hence we're only doing a \"fine-tuning\" below with another `RL_ROLLOUTS=500` iterations. These typically take around 2 hours, and hence the total training time of almost 18 hours would be too long for interactive tests. (However, the code provided here contains everything to train a model from scratch if you have the resources.)"
]
},
{
@@ -287,11 +304,11 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ca2d7396-866d-43d9-d06c-03fdf05db617"
"outputId": "42f94dd3-5d45-4911-88a5-75c873d0d090"
},
"source": [
"rl_trainer = BurgersTraining(\n",
" path='PDE-Control-RL/networks/rl-models/bench', # Replace this to train a new model\n",
" path='PDE-Control-RL/networks/rl-models/bench', # Replace path to train a new model\n",
" domain=DOMAIN,\n",
" viscosity=VISCOSITY,\n",
" step_count=STEP_COUNT,\n",
@@ -313,6 +330,7 @@
{
"output_type": "stream",
"text": [
"Tensorboard log path: PDE-Control-RL/networks/rl-models/bench/tensorboard-log\n",
"Loading existing agent from PDE-Control-RL/networks/rl-models/bench/agent.zip\n"
],
"name": "stdout"
@@ -325,30 +343,18 @@
"id": "skE_zAdGwkM2"
},
"source": [
"The following cell is optional but very useful for debugging: it opens _tensorboard_ inside the notebook to display the progress of the training. If a new model was created at a different location, please change the path to the location at which you stored it. When resuming the learning process of a pre-trained agent, the new run is shown separately in tensorboard.\n",
"The following cell is optional but very useful for debugging: it opens _tensorboard_ inside the notebook to display the progress of the training. If a new model was created at a different location, please change the path accordingly. When resuming the learning process of a pre-trained agent, the new run is shown separately in tensorboard (enable reload via the cogwheel button).\n",
"\n",
"The graph titled \"forces\" shows how the overall amount of forces generated by the network evolves during training. \"rew_unnormalized\" shows the raw reward values without the normalization step described above. The corresponding values with normalization are shown under \"rollout/ep_rew_mean\". \"val_set_forces\" outlines the performance of the agent on the validation set."
"The graph titled \"forces\" shows how the overall amount of forces generated by the network evolves during training. \"rew_unnormalized\" shows the reward values without the normalization step described above. The corresponding values with normalization are shown under \"rollout/ep_rew_mean\". \"val_set_forces\" outlines the performance of the agent on the validation set."
]
},
{
"cell_type": "code",
"metadata": {
"id": "DM8bVThNVF9Y"
},
"source": [
"%load_ext tensorboard\n",
"%tensorboard --logdir PDE-Control-RL/networks/rl-models/bench/tensorboard-log"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "nY5uq750wzsK"
},
"source": [
"Now we are set up to start training the agent. The RL approach requires many iterations to explore the environment. Hence, the next cell typically takes multiple hours to execute (around 6h for 1000 rollouts)."
"Now we are set up to start training the agent. The RL approach requires many iterations to explore the environment. Hence, the next cell typically takes multiple hours to execute (around 2h for 500 rollouts)."
]
},
{
@@ -358,10 +364,10 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "a28b0172-8cf9-4d5a-c087-3e88bce1dd71"
"outputId": "a6483d80-9658-4c1f-fc5b-07c5cd9c30bf"
},
"source": [
"rl_trainer.train(n_rollouts=1000, save_freq=50)"
"rl_trainer.train(n_rollouts=RL_ROLLOUTS, save_freq=50)"
],
"execution_count": 8,
"outputs": [
@@ -385,16 +391,6 @@
{
"output_type": "stream",
"text": [
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
"Storing agent and hyperparameters to disk...\n",
@@ -430,29 +426,22 @@
"base_uri": "https://localhost:8080/",
"height": 545
},
"outputId": "7456946e-c615-4e2e-cd21-1bef1334b28f"
"outputId": "d23253e4-1fa7-4df2-c5bb-03ec1a958830"
},
"source": [
"TEST_SAMPLE = 0 # Change this to display a reconstruction of another scene\n",
"rl_frames, gt_frames, unc_frames = rl_trainer.infer_test_set_frames()\n",
"\n",
"index_in_set = 0 # Change this to display a reconstruction of another scene\n",
"\n",
"fig, axs = plt.subplots(1, 3, figsize=(18.9, 9.6))\n",
"\n",
"axs[0].set_title(\"Reinforcement Learning\")\n",
"axs[1].set_title(\"Ground Truth\")\n",
"axs[2].set_title(\"Uncontrolled\")\n",
"\n",
"axs[0].set_title(\"Reinforcement Learning\"); axs[1].set_title(\"Ground Truth\"); axs[2].set_title(\"Uncontrolled\")\n",
"for plot in axs:\n",
" plot.set_ylim(-2, 2)\n",
" plot.set_xlabel('x')\n",
" plot.set_ylabel('u(x)')\n",
" plot.set_ylim(-2, 2); plot.set_xlabel('x'); plot.set_ylabel('u(x)')\n",
"\n",
"for frame in range(0, STEP_COUNT + 1):\n",
" frame_color = bplt.gradient_color(frame, STEP_COUNT+1);\n",
" axs[0].plot(rl_frames[frame][index_in_set,:], color=frame_color, linewidth=0.8)\n",
" axs[1].plot(gt_frames[frame][index_in_set,:], color=frame_color, linewidth=0.8)\n",
" axs[2].plot(unc_frames[frame][index_in_set,:], color=frame_color, linewidth=0.8)"
" axs[0].plot(rl_frames[frame][TEST_SAMPLE,:], color=frame_color, linewidth=0.8)\n",
" axs[1].plot(gt_frames[frame][TEST_SAMPLE,:], color=frame_color, linewidth=0.8)\n",
" axs[2].plot(unc_frames[frame][TEST_SAMPLE,:], color=frame_color, linewidth=0.8)"
],
"execution_count": 9,
"outputs": [
@@ -467,7 +456,7 @@
{
"output_type": "display_data",
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAABFoAAAJHCAYAAACgpjLsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3hc1Zk/8O+ZUZ1R14xGvbj3JuOCC8bYlNBMQksgBFLZbEKSJYHdTX6bLEk2yZJCEjaNECCBUALBdNxtuUqWbblXdav3MpJGGs35/XFH8khTNHPv2Cr+fp5Hz2Pde869R4LnzNV73/MeIaUEERERERERERFppxvtARARERERERERTRQMtBARERERERERBQkDLUREREREREREQcJACxERERERERFRkDDQQkREREREREQUJAy0EBEREREREREFCQMtdFkJIT4SQnzOz7YWIUSeEKJDCPGLyz028k4I8QchxP8b7XEQEV1pQohsIYQUQoSMwr3LhBDrrvR9iYhoKCHED4QQLzv/rfpzYTQ/U2h0MdBCI3I++HULITqFELVCiBeFEFH+9JVS3iKlfMnPW30ZQCOAGCnl46oHPIaN9BAthFgjhLh4JcfkiZTyUSnlD0d7HEQ0MQkh7hdC5AshrEKIeue/vyqEEKM9Nl+cn4MDXw6Xz8ZOIcQDAV7rRSHEjy7XWImIrgRnEGHKsGODQYpRGtOYeJ6mqxsDLeSv26WUUQAWAFgI4D8uwz2yAJySUspAOzJK7D/+rohoNAkhHgfwawBPA0gGYAHwKIAVAMK89NFfsQH6IKWMGvgCUAHnZ6Pz65WBdpxniYjGNs7TdLkx0EIBkVLWAtgEJeACABBCLBNC7BNCtAohjgoh1ric2ymE+KLz3w8LIfYIIX4uhGgRQpQKIW5xnnsRwOcAPOF8M7hOCBEuhHhGCFHt/HpGCBHubL9GCHFRCPGkEKIWwAtCCL0Q4j+FEMXO5UeHhBAZzvYzhBBbhBDNQoizQoh7Xcb4ohDid85lTp1CiL1CiGTn/VqEEGeEEAtd2qcKId4SQjQ4f4bHXM79QAjxhhDir84xnBRCLHae+xuATADvOe/zRCC/+xHuu0QIsd/536BGCPGsECLM5bwUQvyrEOI8gPMuv7/HnW+Ta4QQjwz7nfxo2O/aW9tEIcR7Qoh2IcRBIcSPhBB7AvnZiOjqIISIBfAUgK9KKd+UUnZIxREp5QNSSpuz3YtCiN8LIT4UQlgBXC+EmOn8TGl1zq13uFx38LPG+f3DrvOQcw58VAhx3tn//4RQsmecnx0/F0I0CiFKANyq4ufy9Jn08PC50DmOKUKILwN4AJc+895zabZACHFMCNEmhHhdCBER6HiIiMYKP54jI4UQvxBClDvnvT1CiEjnuTuc832rc56f6dKvTAjx7eHzpRDCCOAjAKniUsZhqvMZ/U0hxMtCiHYADzuPvyuUvw8uCCG+5OfPFCuEeN75s1Q5n331znOaP1NoYmCghQIihEgHcAuAC87v0wB8AOBHABIAfBvAW0IIs5dLLAVwFoAJwP8CeF4IIaSUDwN4BcD/Ot8MbgXwXQDLoAR15gNYAuB7LtdKdt4zC8qyo38D8GkAnwAQA+DzALqcE+4WAH8HkATgfgC/E0LMcrnWvc5rmwDYAOwHcNj5/ZsAfun8eXUA3gNwFEAagBsAfFMIcZPLte4A8BqAOADvAngWAKSUn8XQN6D/6+V35MaP+/YD+JZzvMud57867DIboPz+B37uZACxzut9AcD/CSHivQzBV9v/A2B1tvmc84uIyJPlAMIBvONH288A+DGAaAD5UObAzVDm8a8DeEUIMT2Ae98G4BoA86DM+QPz55ec5xYCWAzg7gCu6Wr4Z5JXUso/Yehn3u0up+8FcDOAHOdYH1Y5HiKiscLXc+TPAeQCuBbKHPoEAIcQYhqAVwF8E4AZwIdQXla6Zj66zZdSSiuUv1WqXTIOq53t74TyXB8HZQ5+DcBFAKlQ5v7/EUKs9ePneRGAHcAUKJ8dNwIYCPYH6zOFxjkGWshfG4UQHQAqAdQD+L7z+IMAPpRSfiildEgptwAohBLs8KRcSvmclLIfwEsAUqCkjXvyAICnpJT1UsoGAP8N4LMu5x0Avi+ltEkpu6FMcN+TUp51viE9KqVsgjLZlUkpX5BS2qWURwC8BeAel2u9LaU8JKXsAfA2gB4p5V+d43wdymQJKA/pZinlU1LKXillCYDnoARvBuxx/j76AfwNSpBIK5/3dY79gPPnKwPwRwDXDbvGT6SUzc7fFQD0Qfn99kkpPwTQCcDbHy0e2zqj95+C8t+hS0p5Csp/VyIiT0wAGqWU9oED4lJGZLcQYrVL23eklHullA4oAfcoAD91zoHbAbwPJbjur59KKVullBUAduBSZua9AJ6RUlZKKZsB/ETlzzb8M0mt30gpq51jec9lnERE45W350gdlBej35BSVkkp+6WU+5zZjfcB+EBKuUVK2QclIBMJJSAzIND5cr+UcqPzc8UEZcnqk1LKHillEYA/A3jI1wWEEBYof+d8U0pplVLWA/gVLv0tEKzPFBrnuDaN/LVBSrlVCHEdlMwQE4BWKG/u7hFCuL6NC4XyEOtJ7cA/pJRdzsxtb4V1UwGUu3xf7jw2oMEZGBmQAaDYw3WyACwVQrS6HAuBEgQZUOfy724P3w+MMQtKKqLrtfQAdrt8X+vy7y4AEUKIENc/LFTweV9n1P+XUCLnBig/36Fh16gc9n3TsDF1wft/C29tzc57uV57+H2IiAY0ATC5zolSymsBQCiFC11fALnOJakAKp0PxwPKobwd9dfwuXlgvksddi/Xz51ADP9MUmv4OFO9NSQiGgP6oTz7uwqFElwZ4O050gQgAp6f34f8HSCldAghKjF03g90vhz+udIspexwOVYO5VnalywoP1+NuFS/Xedy7WB9ptA4x4wWCoiUcheUdLmfOw9VAviblDLO5csopfxpEG5XDWUyG5DpPDY4nGHtKwFM9nCdSgC7ho0xSkr5LyrGVAmgdNi1oqWU3jJ4hgu40K+f9/09gDMApkopYwD8J4Dhu3eovbcvDVBSJ9NdjmVchvsQ0cSwH8ryzDv9aOs6Z1UDyHC+/RyQCaDK+W8rlCDzgOQAxlSDofNWZgB9XQ2fY4eMSQgxfEyXY04mIrrSKgBkDzuWA/8CDI0AeuD5+X3I3wHOuloZuDTv++Jtfh3+uZIghIh2Oeb6ueJNJZTPMZPLM3mMlHK283ywPlNonGOghdR4BsB6IcR8AC8DuF0IcZOz+FOEs+hV+gjX8MerAL4nhDALIUwA/st5P2/+DOCHQoipQjFPCJEIJb18mhDis0KIUOfXNa4FtQJQAKDDWfAw0vkzzxFCXONn/zoAk0Zq5Pw9Dn75cd9oAO0AOoUQMwCoCSIFzLk86p8AfiCEMDjv7TPlkoiuXlLKVijLQH8nhLhbCBEthNAJIRYAMPromg/lbeUTzjl8DYDboayvB4AiAJ90zkNToNQA8NcbAB4TQqQ7awb8e4A/ljdHAcwWQixwzuM/GHber88DIqIx7nUoz+vpzvl8HZT5+c2ROjqzFP8C4JfOwrR6IcRyoWx+8QaAW4UQNwghQgE8DiXAsc+PMdUBSBRKAXZv9650XusnzufteVA+O3xuSy2lrIFSL+wXQogY58882Zn1D1y+zxQaZxhooYA566X8FcB/OSepO6FkUDRAifJ+B8H5f+tHUOq9HANwHEpx2h/5aP9LKJPbZihBh+cBRDpTAm+EsnayGkqa4c+gFGQMiDOwcBuUNaClUCLxf4ZS4MsfP4HyYdQqhPi2lzZpUJYruX7ljHDfb0MpHNkBpXbL6wH9YNp8zTmOWijLsV6F8kFIRORGKoXA/w1KwcM659cfATwJLw/QUspeKA/ut0CZ/34H4CEp5Rlnk18B6HVe6yUoRQ799RyU3fSOQvmc+WdgP5FnUspzUHZY2grgPIDhu7E9D2CW8/NgYzDuSUQ0Cp6CMnfvAdACZbOLB6SUJ/zs/20oz/kHATRDeUbXSSnPQqkF+Vso8/7tUDaU6B3pgs7PhlcBlDjnWG9Lij4NJRunGkqNxu9LZUOOkTwEIAzAKSg/85tQ6k4Cl+kzhcYfISUzV4koeIQQPwOQLKXk7kNERERERHTVYUYLEWkihJjhXKYlhBBLoKRdvj3a4yIiIiIiIhoNoxZoEUJkCCF2CCFOCSFOCiG+4aGNEEL8RghxQQhxTAixaDTGSkQ+RUNJi7RCWbL0CwDvjOqI6IrjnE5ENDFwPici0m40t3e2A3hcSnnYWe35kBBii5TylEubWwBMdX4thbKzytIrP1Qi8kZKeRDAlNEeB406zulERBMD53MiIo1GLaNFSlkjpTzs/HcHgNMYui86oBRZ/atUHAAQJ4RIARERjSmc04mIJgbO50RE2o2JGi1CiGwAC6Fs3+gqDcouNgMuwn2iJyKiMYRzOhHRxMD5nIhIndFcOgQAEEJEAXgLwDellO0arvNlAF8GAKPRmDtjxowgjZCIaPQdOnSoUUppHu1xjCQYczrncyKayDifExFNDL7m81ENtAghQqFM4K9IKT3tMV4FIMPl+3TnMTdSyj8B+BMALF68WBYWFgZ5tEREo0cIUT7aYxhJsOZ0zudENJFxPicimhh8zeejueuQAPA8gNNSyl96afYugIeclc2XAWiTUtZcsUESEZFfOKcTEU0MnM+JiLQbzYyWFQA+C+C4EKLIeew/AWQCgJTyDwA+BPAJABcAdAF4ZBTGSUREI+OcTkQ0MXA+JyLSaNQCLVLKPQDECG0kgH+9MiMiIiK1OKcTEU0MnM+JiLQbE7sOERERERERERFNBAy0EBEREREREREFCQMtRERERERERERBwkALEREREREREVGQMNBCRERERERERBQkDLQQEREREREREQUJAy1ERERERERERLine truncated
"text/plain": [
"<Figure size 1360.8x691.2 with 3 Axes>"
]
@@ -508,7 +497,7 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "e6d5e72d-cb41-4e4a-a7a3-e091ad93a02d"
"outputId": "4f7dda1c-5457-4bc5-816c-ee4938eaff94"
},
"source": [
"from control.pde.burgers import BurgersPDE\n",
@@ -555,7 +544,7 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "b1b4dc74-cb41-41fd-8d45-5b4ecf107672"
"outputId": "07f31dc7-9c20-45d8-d81d-05c92a783c3c"
},
"source": [
"dp_app = ControlTraining(\n",
@@ -580,9 +569,9 @@
{
"output_type": "stream",
"text": [
"App created. Scene directory is /root/phi/model/control-training/sim_000000 (INFO), 2021-07-21 18:28:26,977n\n",
"App created. Scene directory is /root/phi/model/control-training/sim_000000 (INFO), 2021-08-03 17:13:32,681n\n",
"\n",
"Sequence class: <class 'control.sequences.StaggeredSequence'> (INFO), 2021-07-21 18:28:30,208n\n",
"Sequence class: <class 'control.sequences.StaggeredSequence'> (INFO), 2021-08-03 17:13:35,832n\n",
"\n",
"Partition length 32 sequence (from 0 to 32) at frame 16\n"
],
@@ -665,20 +654,20 @@
"Partition length 2 sequence (from 30 to 32) at frame 31\n",
"Execute -> 31\n",
"Execute -> 32\n",
"Target loss: Tensor(\"truediv_1:0\", shape=(), dtype=float32) (INFO), 2021-07-21 18:29:39,437n\n",
"Target loss: Tensor(\"truediv_1:0\", shape=(), dtype=float32) (INFO), 2021-08-03 17:14:46,313n\n",
"\n",
"Force loss: Tensor(\"Sum_97:0\", shape=(), dtype=float32) (INFO), 2021-07-21 18:29:42,944n\n",
"Force loss: Tensor(\"Sum_97:0\", shape=(), dtype=float32) (INFO), 2021-08-03 17:14:49,832n\n",
"\n",
"Setting up loss (INFO), 2021-07-21 18:29:42,945n\n",
"Setting up loss (INFO), 2021-08-03 17:14:49,834n\n",
"\n",
"Preparing data (INFO), 2021-07-21 18:30:19,746n\n",
"Preparing data (INFO), 2021-08-03 17:15:26,279n\n",
"\n",
"INFO:tensorflow:Summary name Total Force is illegal; using Total_Force instead.\n",
"Initializing variables (INFO), 2021-07-21 18:30:19,779n\n",
"Initializing variables (INFO), 2021-08-03 17:15:26,310n\n",
"\n",
"Model variables contain 0 total parameters. (INFO), 2021-07-21 18:30:24,321n\n",
"Model variables contain 0 total parameters. (INFO), 2021-08-03 17:15:31,021n\n",
"\n",
"Validation (000000): Learning_Rate: 0.001, Loss_reg_unscaled: 575.15356, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 692.5949 (INFO), 2021-07-21 18:30:59,499n\n",
"Validation (000000): Learning_Rate: 0.001, Loss_reg_unscaled: 78.66845, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 218.16597 (INFO), 2021-08-03 17:16:07,346n\n",
"\n"
],
"name": "stdout"
@@ -691,26 +680,21 @@
"id": "3ReXUkzI1L3t"
},
"source": [
"Now we can execute the model training. This cell typically also takes a while to execute (ca. 1.8h for 1000 iterations)."
"Now we can execute the model training. This cell typically also takes a while to execute (ca. 2h for 1000 iterations)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "blHHLaVS5jHA",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "43c356c2-13cb-418c-f0fc-4ae484dbbdd5"
"id": "blHHLaVS5jHA"
},
"source": [
"dp_training_eval_data = []\n",
"DP_TRAINING_ITERATIONS = 10000 # Change this to change training duration\n",
"\n",
"dp_training_eval_data = []\n",
"start_time = time.time()\n",
"\n",
"dp_training_iterations = 2000 # Change this to change training duration\n",
"\n",
"for epoch in range(dp_training_iterations):\n",
"for epoch in range(DP_TRAINING_ITERATIONS):\n",
" dp_app.progress()\n",
" # Evaluate validation set at regular intervals to track learning progress\n",
" # Size of intervals determined by RL epoch count per iteration for accurate comparison\n",
@@ -718,175 +702,8 @@
" f = dp_app.infer_scalars(VAL_RANGE)['Total Force'] / DT\n",
" dp_training_eval_data.append((time.time() - start_time, epoch, f))"
],
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"text": [
"Optimization (000000): Learning_Rate: 0.001, Loss_reg_unscaled: 605.9835, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 724.728 (INFO), 2021-07-21 18:32:01,233n\n",
"\n",
"Validation (000000): Learning_Rate: 0.001, Loss_reg_unscaled: 220.13268, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 420.44907 (INFO), 2021-07-21 18:32:06,960n\n",
"\n",
"Optimization (000050): Learning_Rate: 0.001, Loss_reg_unscaled: 16.879223, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 117.30949 (INFO), 2021-07-21 18:32:27,334n\n",
"\n",
"Validation (000050): Learning_Rate: 0.001, Loss_reg_unscaled: 17.021648, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 115.40366 (INFO), 2021-07-21 18:32:32,128n\n",
"\n",
"Optimization (000100): Learning_Rate: 0.001, Loss_reg_unscaled: 10.100828, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 86.09226 (INFO), 2021-07-21 18:32:51,286n\n",
"\n",
"Validation (000100): Learning_Rate: 0.001, Loss_reg_unscaled: 10.711082, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 85.862885 (INFO), 2021-07-21 18:32:55,822n\n",
"\n",
"Optimization (000150): Learning_Rate: 0.001, Loss_reg_unscaled: 6.8716655, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 65.28768 (INFO), 2021-07-21 18:33:14,219n\n",
"\n",
"Validation (000150): Learning_Rate: 0.001, Loss_reg_unscaled: 7.7672057, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 70.76524 (INFO), 2021-07-21 18:33:18,726n\n",
"\n",
"Optimization (000200): Learning_Rate: 0.001, Loss_reg_unscaled: 5.7150946, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 60.044804 (INFO), 2021-07-21 18:33:37,821n\n",
"\n",
"Validation (000200): Learning_Rate: 0.001, Loss_reg_unscaled: 6.15938, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 63.41267 (INFO), 2021-07-21 18:33:42,634n\n",
"\n",
"Optimization (000250): Learning_Rate: 0.001, Loss_reg_unscaled: 5.160569, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 57.58222 (INFO), 2021-07-21 18:34:01,376n\n",
"\n",
"Validation (000250): Learning_Rate: 0.001, Loss_reg_unscaled: 5.426081, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 61.733593 (INFO), 2021-07-21 18:34:05,918n\n",
"\n",
"Optimization (000300): Learning_Rate: 0.001, Loss_reg_unscaled: 4.2811284, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 53.015984 (INFO), 2021-07-21 18:34:24,060n\n",
"\n",
"Validation (000300): Learning_Rate: 0.001, Loss_reg_unscaled: 4.4520826, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 55.24283 (INFO), 2021-07-21 18:34:28,547n\n",
"\n",
"Optimization (000350): Learning_Rate: 0.001, Loss_reg_unscaled: 3.5743995, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 50.04667 (INFO), 2021-07-21 18:34:47,690n\n",
"\n",
"Validation (000350): Learning_Rate: 0.001, Loss_reg_unscaled: 4.147507, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 53.87972 (INFO), 2021-07-21 18:34:51,978n\n",
"\n",
"Optimization (000400): Learning_Rate: 0.001, Loss_reg_unscaled: 3.8191504, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 52.49412 (INFO), 2021-07-21 18:35:11,110n\n",
"\n",
"Validation (000400): Learning_Rate: 0.001, Loss_reg_unscaled: 3.9338722, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 52.178688 (INFO), 2021-07-21 18:35:15,702n\n",
"\n",
"Optimization (000450): Learning_Rate: 0.001, Loss_reg_unscaled: 3.4097638, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 47.762543 (INFO), 2021-07-21 18:35:33,870n\n",
"\n",
"Validation (000450): Learning_Rate: 0.001, Loss_reg_unscaled: 3.480079, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 48.559273 (INFO), 2021-07-21 18:35:37,860n\n",
"\n",
"Optimization (000500): Learning_Rate: 0.001, Loss_reg_unscaled: 3.1933959, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 45.53985 (INFO), 2021-07-21 18:35:57,669n\n",
"\n",
"Validation (000500): Learning_Rate: 0.001, Loss_reg_unscaled: 3.2923727, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 46.659332 (INFO), 2021-07-21 18:36:01,927n\n",
"\n",
"Optimization (000550): Learning_Rate: 0.001, Loss_reg_unscaled: 2.708471, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 42.401936 (INFO), 2021-07-21 18:36:20,824n\n",
"\n",
"Validation (000550): Learning_Rate: 0.001, Loss_reg_unscaled: 3.1624248, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 45.644554 (INFO), 2021-07-21 18:36:24,843n\n",
"\n",
"Optimization (000600): Learning_Rate: 0.001, Loss_reg_unscaled: 2.839182, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 43.194126 (INFO), 2021-07-21 18:36:43,411n\n",
"\n",
"Validation (000600): Learning_Rate: 0.001, Loss_reg_unscaled: 3.003741, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 44.24921 (INFO), 2021-07-21 18:36:48,164n\n",
"\n",
"Optimization (000650): Learning_Rate: 0.001, Loss_reg_unscaled: 2.8351452, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 43.27424 (INFO), 2021-07-21 18:37:07,603n\n",
"\n",
"Validation (000650): Learning_Rate: 0.001, Loss_reg_unscaled: 3.0017228, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 45.258038 (INFO), 2021-07-21 18:37:11,765n\n",
"\n",
"Optimization (000700): Learning_Rate: 0.001, Loss_reg_unscaled: 2.689949, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 41.61713 (INFO), 2021-07-21 18:37:30,523n\n",
"\n",
"Validation (000700): Learning_Rate: 0.001, Loss_reg_unscaled: 2.8207889, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 42.89292 (INFO), 2021-07-21 18:37:34,551n\n",
"\n",
"Optimization (000750): Learning_Rate: 0.001, Loss_reg_unscaled: 2.3243082, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 39.239338 (INFO), 2021-07-21 18:37:53,385n\n",
"\n",
"Validation (000750): Learning_Rate: 0.001, Loss_reg_unscaled: 2.6719127, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 41.328854 (INFO), 2021-07-21 18:37:57,661n\n",
"\n",
"Optimization (000800): Learning_Rate: 0.001, Loss_reg_unscaled: 2.455422, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 39.47363 (INFO), 2021-07-21 18:38:17,409n\n",
"\n",
"Validation (000800): Learning_Rate: 0.001, Loss_reg_unscaled: 2.5707576, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 40.564262 (INFO), 2021-07-21 18:38:21,899n\n",
"\n",
"Optimization (000850): Learning_Rate: 0.001, Loss_reg_unscaled: 2.4550948, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 40.509533 (INFO), 2021-07-21 18:38:41,221n\n",
"\n",
"Validation (000850): Learning_Rate: 0.001, Loss_reg_unscaled: 2.5713878, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 41.38802 (INFO), 2021-07-21 18:38:46,053n\n",
"\n",
"Optimization (000900): Learning_Rate: 0.001, Loss_reg_unscaled: 2.3208141, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 38.304302 (INFO), 2021-07-21 18:39:04,483n\n",
"\n",
"Validation (000900): Learning_Rate: 0.001, Loss_reg_unscaled: 2.4379268, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 39.866196 (INFO), 2021-07-21 18:39:08,498n\n",
"\n",
"Optimization (000950): Learning_Rate: 0.001, Loss_reg_unscaled: 2.0590906, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.229088 (INFO), 2021-07-21 18:39:27,110n\n",
"\n",
"Validation (000950): Learning_Rate: 0.001, Loss_reg_unscaled: 2.4030862, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 39.77349 (INFO), 2021-07-21 18:39:31,671n\n",
"\n",
"Optimization (001000): Learning_Rate: 0.001, Loss_reg_unscaled: 2.1821444, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.728554 (INFO), 2021-07-21 18:39:51,050n\n",
"\n",
"Validation (001000): Learning_Rate: 0.001, Loss_reg_unscaled: 2.2758727, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 38.447334 (INFO), 2021-07-21 18:39:55,913n\n",
"\n",
"Optimization (001050): Learning_Rate: 0.001, Loss_reg_unscaled: 2.2648506, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 39.652016 (INFO), 2021-07-21 18:40:14,200n\n",
"\n",
"Validation (001050): Learning_Rate: 0.001, Loss_reg_unscaled: 2.2183123, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.9366 (INFO), 2021-07-21 18:40:18,738n\n",
"\n",
"Optimization (001100): Learning_Rate: 0.001, Loss_reg_unscaled: 2.119481, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.05048 (INFO), 2021-07-21 18:40:36,862n\n",
"\n",
"Validation (001100): Learning_Rate: 0.001, Loss_reg_unscaled: 2.1746414, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.703354 (INFO), 2021-07-21 18:40:41,709n\n",
"\n",
"Optimization (001150): Learning_Rate: 0.001, Loss_reg_unscaled: 1.7855752, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 35.336514 (INFO), 2021-07-21 18:41:01,100n\n",
"\n",
"Validation (001150): Learning_Rate: 0.001, Loss_reg_unscaled: 2.0698335, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 36.755913 (INFO), 2021-07-21 18:41:05,679n\n",
"\n",
"Optimization (001200): Learning_Rate: 0.001, Loss_reg_unscaled: 1.9643999, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 36.306217 (INFO), 2021-07-21 18:41:23,820n\n",
"\n",
"Validation (001200): Learning_Rate: 0.001, Loss_reg_unscaled: 2.0637245, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.35909 (INFO), 2021-07-21 18:41:27,866n\n",
"\n",
"Optimization (001250): Learning_Rate: 0.001, Loss_reg_unscaled: 1.9282765, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 36.705444 (INFO), 2021-07-21 18:41:46,869n\n",
"\n",
"Validation (001250): Learning_Rate: 0.001, Loss_reg_unscaled: 2.0170598, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 37.108078 (INFO), 2021-07-21 18:41:51,665n\n",
"\n",
"Optimization (001300): Learning_Rate: 0.001, Loss_reg_unscaled: 1.8491938, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 35.387497 (INFO), 2021-07-21 18:42:10,849n\n",
"\n",
"Validation (001300): Learning_Rate: 0.001, Loss_reg_unscaled: 1.9091027, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 35.804825 (INFO), 2021-07-21 18:42:15,362n\n",
"\n",
"Optimization (001350): Learning_Rate: 0.001, Loss_reg_unscaled: 1.566833, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 33.37806 (INFO), 2021-07-21 18:42:33,511n\n",
"\n",
"Validation (001350): Learning_Rate: 0.001, Loss_reg_unscaled: 1.8480268, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 35.153297 (INFO), 2021-07-21 18:42:38,028n\n",
"\n",
"Optimization (001400): Learning_Rate: 0.001, Loss_reg_unscaled: 1.6728997, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 33.579998 (INFO), 2021-07-21 18:42:56,888n\n",
"\n",
"Validation (001400): Learning_Rate: 0.001, Loss_reg_unscaled: 1.7833897, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 34.508606 (INFO), 2021-07-21 18:43:01,700n\n",
"\n",
"Optimization (001450): Learning_Rate: 0.001, Loss_reg_unscaled: 1.7018738, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 34.545067 (INFO), 2021-07-21 18:43:20,770n\n",
"\n",
"Validation (001450): Learning_Rate: 0.001, Loss_reg_unscaled: 1.8401376, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 36.01299 (INFO), 2021-07-21 18:43:25,599n\n",
"\n",
"Optimization (001500): Learning_Rate: 0.001, Loss_reg_unscaled: 1.5957117, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 33.385975 (INFO), 2021-07-21 18:43:45,397n\n",
"\n",
"Validation (001500): Learning_Rate: 0.001, Loss_reg_unscaled: 1.717583, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 33.98902 (INFO), 2021-07-21 18:43:49,484n\n",
"\n",
"Optimization (001550): Learning_Rate: 0.001, Loss_reg_unscaled: 1.6655575, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 36.670486 (INFO), 2021-07-21 18:44:08,214n\n",
"\n",
"Validation (001550): Learning_Rate: 0.001, Loss_reg_unscaled: 1.9416165, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 39.07086 (INFO), 2021-07-21 18:44:12,768n\n",
"\n",
"Optimization (001600): Learning_Rate: 0.001, Loss_reg_unscaled: 1.61205, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 34.350616 (INFO), 2021-07-21 18:44:31,241n\n",
"\n",
"Validation (001600): Learning_Rate: 0.001, Loss_reg_unscaled: 1.6802564, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 34.119354 (INFO), 2021-07-21 18:44:36,055n\n",
"\n",
"Optimization (001650): Learning_Rate: 0.001, Loss_reg_unscaled: 1.628448, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 34.66807 (INFO), 2021-07-21 18:44:55,313n\n",
"\n",
"Validation (001650): Learning_Rate: 0.001, Loss_reg_unscaled: 1.7371068, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 35.592514 (INFO), 2021-07-21 18:44:59,832n\n",
"\n",
"Optimization (001700): Learning_Rate: 0.001, Loss_reg_unscaled: 1.4924469, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 33.411697 (INFO), 2021-07-21 18:45:17,951n\n",
"\n",
"Validation (001700): Learning_Rate: 0.001, Loss_reg_unscaled: 1.7023401, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 35.3111 (INFO), 2021-07-21 18:45:22,461n\n",
"\n",
"Optimization (001750): Learning_Rate: 0.001, Loss_reg_unscaled: 1.2906923, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 30.66573 (INFO), 2021-07-21 18:45:41,428n\n",
"\n",
"Validation (001750): Learning_Rate: 0.001, Loss_reg_unscaled: 1.5276003, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 31.942501 (INFO), 2021-07-21 18:45:45,804n\n",
"\n",
"Optimization (001800): Learning_Rate: 0.001, Loss_reg_unscaled: 1.4120307, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 31.162071 (INFO), 2021-07-21 18:46:05,705n\n",
"\n",
"Validation (001800): Learning_Rate: 0.001, Loss_reg_unscaled: 1.5400977, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 32.575157 (INFO), 2021-07-21 18:46:10,277n\n",
"\n",
"Optimization (001850): Learning_Rate: 0.001, Loss_reg_unscaled: 1.4270384, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 31.828892 (INFO), 2021-07-21 18:46:28,729n\n",
"\n",
"Validation (001850): Learning_Rate: 0.001, Loss_reg_unscaled: 1.5454538, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 32.7136 (INFO), 2021-07-21 18:46:32,743n\n",
"\n",
"Optimization (001900): Learning_Rate: 0.001, Loss_reg_unscaled: 1.3761511, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 32.14714 (INFO), 2021-07-21 18:46:52,576n\n",
"\n",
"Validation (001900): Learning_Rate: 0.001, Loss_reg_unscaled: 1.5283307, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 33.075283 (INFO), 2021-07-21 18:46:56,946n\n",
"\n",
"Optimization (001950): Learning_Rate: 0.001, Loss_reg_unscaled: 1.2564666, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 31.224918 (INFO), 2021-07-21 18:47:16,409n\n",
"\n",
"Validation (001950): Learning_Rate: 0.001, Loss_reg_unscaled: 1.4902954, Loss_reg_scale: 1.0, Loss: 0.0, Total Force: 32.295746 (INFO), 2021-07-21 18:47:21,004n\n",
"\n"
],
"name": "stdout"
}
]
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
@@ -901,46 +718,25 @@
{
"cell_type": "code",
"metadata": {
"id": "kzfckDMc8O__",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 58
},
"outputId": "c394e41f-f940-4661-b1a5-7965f526e187"
"id": "kzfckDMc8O__"
},
"source": [
"dp_store_path = 'networks/dp-models/bench'\n",
"if not os.path.exists(dp_store_path):\n",
" os.makedirs(dp_store_path)\n",
"DP_STORE_PATH = 'networks/dp-models/bench'\n",
"if not os.path.exists(DP_STORE_PATH):\n",
" os.makedirs(DP_STORE_PATH)\n",
"\n",
"# store training progress information\n",
"with open(os.path.join(dp_store_path, 'val_forces.csv'), 'at') as log_file:\n",
"with open(os.path.join(DP_STORE_PATH, 'val_forces.csv'), 'at') as log_file:\n",
" logger = csv.DictWriter(log_file, ('time', 'epoch', 'forces'))\n",
" logger.writeheader()\n",
" for (t, e, f) in dp_training_eval_data:\n",
" logger.writerow({'time': t, 'epoch': e, 'forces': f})\n",
"\n",
"dp_checkpoint = dp_app.save_model()\n",
"shutil.move(dp_checkpoint, dp_store_path)"
"shutil.move(dp_checkpoint, DP_STORE_PATH)"
],
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"'networks/dp-models/bench/checkpoint_00002000'"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
"execution_count": 32,
"outputs": []
},
{
"cell_type": "markdown",
@@ -957,10 +753,10 @@
"id": "gHEAxxjv-vDL"
},
"source": [
"#dp_path = 'PDE-Control-RL/networks/dp-models/bench/checkpoint_00020000/'\n",
"#networks_to_load = ['OP2', 'OP4', 'OP8', 'OP16', 'OP32']\n",
"# dp_path = 'PDE-Control-RL/networks/dp-models/bench/checkpoint_00020000/'\n",
"# networks_to_load = ['OP2', 'OP4', 'OP8', 'OP16', 'OP32']\n",
"\n",
"#dp_app.load_checkpoints({net: dp_path for net in networks_to_load})"
"# dp_app.load_checkpoints({net: dp_path for net in networks_to_load})"
],
"execution_count": 14,
"outputs": []
@@ -982,15 +778,14 @@
"base_uri": "https://localhost:8080/",
"height": 545
},
"outputId": "cf1cc1b2-6701-4421-f361-b1c1fb11fe4e"
"outputId": "8c7342ce-dbd3-417c-9802-2f6ef631a012"
},
"source": [
"dp_frames = dp_app.infer_all_frames(TEST_RANGE)\n",
"dp_frames = [s.burgers.velocity.data for s in dp_frames]\n",
"_, gt_frames, unc_frames = rl_trainer.infer_test_set_frames()\n",
"\n",
"index_in_set = 0 # Change this to display a reconstruction of another scene\n",
"\n",
"TEST_SAMPLE = 0 # Change this to display a reconstruction of another scene\n",
"fig, axs = plt.subplots(1, 3, figsize=(18.9, 9.6))\n",
"\n",
"axs[0].set_title(\"Differentiable Physics\")\n",
@@ -1004,9 +799,9 @@
"\n",
"for frame in range(0, STEP_COUNT + 1):\n",
" frame_color = bplt.gradient_color(frame, STEP_COUNT+1)\n",
" axs[0].plot(dp_frames[frame][index_in_set,:], color=frame_color, linewidth=0.8)\n",
" axs[1].plot(gt_frames[frame][index_in_set,:], color=frame_color, linewidth=0.8)\n",
" axs[2].plot(unc_frames[frame][index_in_set,:], color=frame_color, linewidth=0.8)"
" axs[0].plot(dp_frames[frame][TEST_SAMPLE,:], color=frame_color, linewidth=0.8)\n",
" axs[1].plot(gt_frames[frame][TEST_SAMPLE,:], color=frame_color, linewidth=0.8)\n",
" axs[2].plot(unc_frames[frame][TEST_SAMPLE,:], color=frame_color, linewidth=0.8)"
],
"execution_count": 15,
"outputs": [
@@ -1021,7 +816,7 @@
{
"output_type": "display_data",
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 1360.8x691.2 with 3 Axes>"
]
@@ -1068,7 +863,7 @@
"import utils\n",
"import pandas as pd"
],
"execution_count": 16,
"execution_count": null,
"outputs": []
},
{
@@ -1090,7 +885,7 @@
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "21cf9e39-7e0c-4702-d61f-1197af39515e"
"outputId": "4814446b-7e23-493e-c929-43f68c15af72"
},
"source": [
"rl_frames, gt_frames, unc_frames = rl_trainer.infer_test_set_frames()\n",
@@ -1125,10 +920,10 @@
"base_uri": "https://localhost:8080/",
"height": 620
},
"outputId": "1c89c526-1fc4-4f25-cbb3-ec130aa9b0ef"
"outputId": "b4a039c9-f8f8-410d-8f81-2600d193dd64"
},
"source": [
"index_in_set = 0 # Specifies which sample of the test set should be displayed\n",
"TEST_SAMPLE = 0 # Specifies which sample of the test set should be displayed\n",
"\n",
"def plot(axs, xy, title, field):\n",
" axs[xy].set_ylim(-2, 2)\n",
@@ -1140,7 +935,7 @@
" for step_idx in range(0, STEP_COUNT + 1):\n",
" color = bplt.gradient_color(step_idx, STEP_COUNT+1)\n",
" axs[xy].plot(\n",
" field[step_idx][index_in_set].squeeze(), color=color, linewidth=0.8, label=label)\n",
" field[step_idx][TEST_SAMPLE].squeeze(), color=color, linewidth=0.8, label=label)\n",
" label = None\n",
"\n",
" axs[xy].legend()\n",
@@ -1155,7 +950,7 @@
{
"output_type": "display_data",
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 921.6x691.2 with 4 Axes>"
]
@@ -1190,11 +985,7 @@
{
"cell_type": "code",
"metadata": {
"id": "me4rb-_qCXgC",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "fc5121c8-59cc-4317-876d-a8b3dfaeff28"
"id": "me4rb-_qCXgC"
},
"source": [
"gt_forces = utils.infer_forces_sum_from_frames(\n",
@@ -1205,25 +996,8 @@
")\n",
"rl_forces = rl_trainer.infer_test_set_forces()\n"
],
"execution_count": 19,
"outputs": [
{
"output_type": "stream",
"text": [
"Sanity check - maximum deviation from target state: 0.000000\n",
"Sanity check - maximum deviation from target state: 0.000001\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:3613: UserWarning: Default upsampling behavior when mode=linear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.\n",
" \"See the documentation of nn.Upsample for details.\".format(mode)\n"
],
"name": "stderr"
}
]
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
@@ -1240,12 +1014,12 @@
"id": "3HIoOZcUxt-Y",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 606
"height": 411
},
"outputId": "2e68564d-c0a4-47c9-cf2c-1301998455b1"
"outputId": "739eea96-3135-4c98-c520-c5b07ab26291"
},
"source": [
"plt.figure(figsize=(12.8, 9.6))\n",
"plt.figure(figsize=(8, 6))\n",
"plt.bar(\n",
" [\"Reinforcement Learning\", \"Differentiable Physics\", \"Ground Truth\"], \n",
" [np.sum(rl_forces), np.sum(dp_forces), np.sum(gt_forces)], \n",
@@ -1269,9 +1043,9 @@
{
"output_type": "display_data",
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 921.6x691.2 with 1 Axes>"
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
@@ -1299,19 +1073,17 @@
"id": "zMK29jgWDUB_",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 621
"height": 592
},
"outputId": "662205b7-f4a2-4803-d273-6830ebb3d20f"
"outputId": "95958fea-4d90-4a0c-e64c-6cf224e8de03"
},
"source": [
"plt.figure(figsize=(12.8, 9.6))\n",
"plt.figure(figsize=(12, 9))\n",
"plt.scatter(gt_forces, rl_forces, color=\"#0065bd\", label='RL')\n",
"plt.scatter(gt_forces, dp_forces, color=\"#e37222\", label='DP')\n",
"plt.plot([x * 100 for x in range(15)], [x * 100 for x in range(15)], color=\"#a2ad00\", label='Same forces as original')\n",
"plt.xlabel('ground truth')\n",
"plt.xlim(0, 1500); plt.ylim(0, 1500)\n",
"plt.ylabel('reconstruction')\n",
"plt.grid(); plt.legend()"
"plt.xlabel('ground truth'); plt.ylabel('reconstruction')\n",
"plt.xlim(0, 1200); plt.ylim(0, 1200); plt.grid(); plt.legend()"
],
"execution_count": 21,
"outputs": [
@@ -1319,7 +1091,7 @@
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f656a87ac50>"
"<matplotlib.legend.Legend at 0x7fec4b9652d0>"
]
},
"metadata": {
@@ -1330,9 +1102,9 @@
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwYAAAI3CAYAAAAhl0xoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXxU1d3H8c/NEBISliTs+75vgbCJBKIoSqsiT0sFEbWtonXhcaFVG63Wkta2dK9aaatWGjfsQ7EotgqmBNQQgqwKStghrFkgC1km5/kjiwkkIZPMzJ3l+369eJWcmbnz43gL93fO75xjGWMQEREREZHgFmJ3ACIiIiIiYj8lBiIiIiIiosRARERERESUGIiIiIiICEoMREREREQEJQYiIiIiIgK0sDsAT4iKijIDBgywO4ygVVBQQGRkpN1heEV5YS7OvBMYZymWIxRHu86ERETZFk8w9b2vUd/bR31vL/W/fdT39vH3vs/IyDhtjOl4YXtAJgadO3dm8+bNdocRtFJSUkhISLA7DI8ryFhF7opETGmn6jYrNJyoOU8QGTfLlpiCpe99kfrePup7e6n/7aO+t4+/971lWQfralcpkUgTnV2zFFNaVKvNlBZxds1SmyISERERaTolBiJN5MzJcqldRERExJcpMRBpIkd0V5faRURERHxZQK4xqEtpaSlHjhzh/PnzdocS8Nq1a8fnn39udxgeV379bykvyAXjxJFziNYfPYujvJS2MxfbHZqIiIiIy4ImMThy5Aht2rShT58+WJZldzgB7dy5c7Rp08buMLzCWZBLWW4WOe3bkxP6ML06tLFt4bGIiIhIcwRNYnD+/HklBeJ2jsgoHJFRdDaGHBNB5NChdockIiIi0iRBtcZASYF4iu4tERER8XdBlRjYLSkpieHDhzNq1ChiY2NJS0vz2nenpqYyfPhwYmNjKSoquvQH/NSPfvQjPvjggwbf8/bbb/PMM880+Ttat27d5M+KiIiI+KqgKSWy28cff8zq1avZsmULYWFhnD59mpKSEq99f3JyMo899hi33HJLo95fVlZGixb+dXs4nU6efvrpS77vhhtu4IYbbvBCRCIiIiL+QzMGXpKVlUWHDh0ICwsDoEOHDnTr1g2Ap59+mvHjxzNixAgWLlyIMQaAhIQEHnzwQcaNG8fQoUNJT0/nf/7nfxg4cCCPP/549bX//ve/M2HCBGJjY7nrrrtwOp21vvsvf/kLb775Jk888QTz58/HGMP3v/99RowYwciRI3njjTeAilP84uPjueGGGxg2bBhOp5PFixczYsQIRo0axR/+8AcAMjIymDZtGnFxcVxzzTVkZVXs2//73/+eYcOGcdlllzF37tyL+uDAgQPEx8czduxYxo4dy0cffVTdN1OnTiU2NpYRI0aQmpp60WfXrl3LmDFjGDlyJN/5zncoLi4GoE+fPjzyyCOMHTuWFStWcPvtt/PWW28B8O677zJkyBDi4uJYtGgR1113HQAvv/wy9913HwC33347ixYtYvLkyfTr16/6s/n5+UyfPp2xY8cycuRIVq1a5dp/cBERERE/419Dwm6Svu0BcvK2uvWa0e1iGT/6t/W+PmPGDJ5++mkGDRrEVVddxU033cS0adMAuO+++/jRj34EwIIFC1i9ejXXX389AC1btmTz5s387ne/Y9asWWRkZBATE0P//v158MEHOXnyJG+88QYbN24kNDSUe+65h+TkZG699dbq777jjjvYsGED1113Hd/85jf5xz/+wdatW9m2bRunT59m/PjxTJ06FYAtW7awc+dO+vbty/PPP8+BAwfYunUrLVq0IDs7m9LSUu6//35WrVpFx44deeONN0hMTOTFF1/kmWeeYf/+/ZSUlFyUnAB06tSJ999/n/DwcL788kvmzZvH5s2befXVV7nmmmtITEzE6XRSWFhY63Pnz5/n9ttvZ+3atQwaNIhbb72V559/ngceeACA9u3bs2XLFgDee++96s/cddddrF+/nr59+zJv3rx6/9tkZWWxYcMGdu/ezQ033MA3v/lNwsPDWblyJW3btuX06dNMmjSJG264QWsJREREJGBpxsBLWrduTUZGBsuWLaNjx47cdNNNvPzyywB8+OGHTJw4kZEjR7Ju3Tp27dpV/bmqkpeRI0cyfPhwunbtSlhYGP369ePw4cOsXbuWjIwMxo8fT2xsLGvXrmXfvn0NxrJhwwbmzZuHw+Ggc+fOTJs2jfT0dAAmTJhA3759Afjggw+46667qkuKYmJi2LNnDzt37uTqq68mNjaWJUuWcOTIEQBGjRrF/Pnzef311+ssQyotLeXOO+9k5MiRzJkzh88++wyA8ePH89JLL/HUU0+xY8eOi7Y63bNnD337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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 921.6x691.2 with 1 Axes>"
"<Figure size 864x648 with 1 Axes>"
]
},
"metadata": {
@@ -1348,54 +1120,7 @@
"id": "ema5wsX25gS6"
},
"source": [
"Next, the two deep learning methods are compared directly. Dots above the line denote higher forces by the control force estimator, samples below higher forces for the reinforcement learning agent."
]
},
{
"cell_type": "code",
"metadata": {
"id": "gEgGuyhcDkPK",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 621
},
"outputId": "8bd9c9c0-245e-42b3-bec8-5e2993a7fef8"
},
"source": [
"plt.figure(figsize=(12.8, 9.6))\n",
"plt.scatter(rl_forces, dp_forces, color=\"#0065bd\")\n",
"plt.xlabel('Reinforcement Learning'); plt.ylabel('Differentiable Physics')\n",
"plt.plot([x * 100 for x in range(15)], [x * 100 for x in range(15)], color=\"#e37222\", label='Same forces DP RL')\n",
"plt.xlim(0, 1500); plt.ylim(0, 1500); plt.grid()\n",
"plt.legend()"
],
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f656a7fddd0>"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwYAAAI3CAYAAAAhl0xoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXiU1dnH8e+ZrGSBZEgAlVVQUBBxpb4WxY1qRTQWV0Bt1WhxQcAqSqtWSWutKFitlbpDRBBFFG2traYqxShYF6q4oIKgIZBJQvZtzvsHEwyYhEkyM88sv891cZE8s905M5Dnfs597mOstYiIiIiISGxzOR2AiIiIiIg4T4mBiIiIiIgoMRARERERESUGIiIiIiKCEgMREREREUGJgYiIiIiIAPFOBxAMGRkZdsiQIU6HEbOqqqpITU11OoyYFMix91Q1sKWsjvpGS2K8Yb+MJNypCQF57mikz71zNPbO0vg7R2PvnEgf+7Vr12631mbveTwqE4PevXuzZs0ap8OIWQUFBYwdO9bpMGJSoMY+v7CI3IXrqa/3AlAPbE10cceUYUwa3afLzx+N9Ll3jsbeWRp/52jsnRPpY2+M2djacZUSicgPzF6+gWpfUtCsut7L7OUbHIpIREREgk2JgYj8wCZPXYeOi4iISORTYiAiP9DfndSh4yIiIhL5onKNgYh0TV7OYHIXrt+tnCgl0UVezmAHoxIRkY5oaGhg8+bN1NbWOh1K1OnRoweffPKJ02HsVXJyMn379iUhwb/mIUoMROQHmhcYz16+gU2eOvq7k8jLGayFxyIiEWTz5s2kp6czcOBAjDFOhxNVKioqSE9PdzqMdllrKSkpYfPmzQwaNMivxygxEJFWTRrdR4mAiEgEq62tVVIQw4wx9OzZk23btvn9GK0xEBEREYlSSgpiW0fffyUGIiIiIhIUeXl5DB8+nJEjRzJq1CgKCwtD9tpvvvkmw4cPZ9SoUdTU1ITsdVsqKCigR48eHHbYYQwdOpTjjjuOlStX7rr9tttuY7/99mPUqFGMGDGCF1544QfP8fjjj5Odnc2oUaMYNmwY9957726Pv/vuuwMWr0qJRERERCTgVq9ezcqVK3nvvfdISkpi+/bt1NfXh+z18/Pzuemmm5g8ebJf929sbCQ+PvCnxmPGjNmVDLz//vucddZZdOvWjZNOOgmA6dOnc/311/PJJ58wZswYiouLcbl2v3Z/3nnncf/991NSUsLQoUOZOHEi/fr1C3ismjEQERERkYD77rvvyMrKIilpZ6vrrKws9t13XwBuv/12jjrqKEaMGEFubi7WWgDGjh3L9OnTOfLIIznooIN49913OfvssznggAP49a9/veu5Fy1axNFHH82oUaO44ooraGpq2u21H374YZYuXcpvfvMbJk2ahLWWX/3qV4wYMYJDDjmEJUuWADuv6I8ZM4YJEyZw8MEH09TUxPXXX8+IESMYOXIkf/rTnwBYu3Ytxx9/PEcccQQ/+clPKCoqAuC+++7j4IMPZuTIkZx//vl7HZNRo0Zxyy23cP/99//gtoMOOoj4+Hi2b9/e5uN79uzJkCFD+O677/b6Wp2hGQMRERGRKFf2/B3UfxvY9pqJ+x5Exlm/afP2cePGcfvtt3PggQdy8sknc95553H88ccDcPXVV3PLLbcAMGXKFFauXMkZZ5yx83kTE1mzZg3z58/nzDPPZO3atbjdbgYPHsz06dMpLi5myZIlrFq1ioSEBKZOnUp+fj4XXXTRrte+7LLLeOuttxg/fjwTJ07k2Wef5f333+eDDz5g+/btHHXUURx33HEAvPfee6xbt45Bgwbx4IMP8vXXX/P+++8THx+Px+OhoaGBa665hhUrVpCdnc2SJUu4/fbbWbhwIXfeeSdfffUVSUlJlJWV+TVuhx9+OH/84x9/cLywsBCXy0V2dnabj920aRO1tbWMHDnSr9fqKCUGIiIiIhJwaWlprF27ljfffJPXX3+d8847jzvvvJNLLrmE119/nbvuuovq6mo8Hg/Dhw/flRhMmDABgEMOOYThw4ezzz77ALD//vvzzTff8NZbb7F27VqOOuooAGpqaujVq1e7sbz11ltccMEFxMXF0bt3b44//njeffddunfvztFHH72rnec///lPrrzyyl0lRW63m3Xr1rFu3TpOOeUUAJqamnadvI8cOZJJkyZx1llncdZZZ/k1Ls2zI83uvfdeFi1aRHp6OkuWLGl1wfCSJUt44403WL9+Pffffz/Jycl+vVZHKTEQERERCbH8wqKQ7hXT3pX9YIqLi2Ps2LGMHTuWQw45hCeeeILzzz+fqVOnsmbNGvr168dtt9222yZszaVHLpdr19fN3zc2NmKt5eKLL+b3v/99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 truncated
"text/plain": [
"<Figure size 921.6x691.2 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
"The graph shows that the orange dots of the DP training run are in general closer to the diagonal - i.e., this network learned to generate forces that are closer to the ground truth values."
]
},
{
@@ -1415,7 +1140,7 @@
"base_uri": "https://localhost:8080/",
"height": 605
},
"outputId": "d76e84d4-b6ca-453a-f221-33e2e79d899d"
"outputId": "5328fba7-2046-4968-87f0-4fa9f037cf2d"
},
"source": [
"w=0.25; plot_count=20 # How many scenes to show\n",
@@ -1424,15 +1149,14 @@
"plt.bar( [i for i in range(plot_count)], dp_forces[:plot_count], color=\"#e37222\", width=w, align='center', label='DP' )\n",
"plt.bar( [i + w for i in range(plot_count)], gt_forces[:plot_count], color=\"#a2ad00\", width=w, align='center', label='GT' )\n",
"plt.xlabel('Scenes'); plt.xticks(range(plot_count))\n",
"plt.ylabel('Forces'); plt.legend()\n",
"plt.show()"
"plt.ylabel('Forces'); plt.legend(); plt.show()"
],
"execution_count": 23,
"execution_count": 22,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwYAAAI3CAYAAAAhl0xoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfZRlZX0n+u/PbhBEAgiNIRSxOwQdhSstItFrzBCIikbFYdRoEtKJzu0xQWKUSYIxK47JuFZM0jHxynUuURIlBnwjii5mlIAvydygNAQRRGODYBdBaPGFGERe/N0/zm6nbLurG6hzTnXV57PWWbX3s/c5z6+rq0/19zzPs3d1dwAAgOXtIdMuAAAAmD7BAAAAEAwAAADBAAAAiGAAAABEMAAAAJKsnHYB43DQQQf16tWrp10GAAAsOldcccVXu3vVtu1LMhisXr06GzdunHYZAACw6FTVTdtrN5UIAAAYXzCoqnOq6raqumab9tOr6vNVdW1V/dGc9tdU1aaq+kJVPXNO+0lD26aqOnNc9QIAwHI2zqlEf5XkLUneubWhqn46yclJju7u71TVwUP745K8OMmRSX4kyd9V1aOHp52V5OlJZpNcXlUXdvfnxlg3AAAsO2MLBt39yapavU3zryb5w+7+znDObUP7yUnOH9q/VFWbkhw3HNvU3TckSVWdP5wrGAAAMDb33HNPZmdnc9ddd027lAdsr732yszMTPbYY49dOn/Si48fneRpVfWGJHcl+S/dfXmSQ5NcNue82aEtSTZv0/4TkygUAIDla3Z2Nvvuu29Wr16dqpp2Ofdbd+f222/P7Oxs1qxZs0vPmfTi45VJHpHkyUl+M8l7aoG+01W1vqo2VtXGLVu2LMRLAgCwTN1111058MADd8tQkCRVlQMPPPB+jXhMOhjMJrmgRz6d5LtJDkpyc5LD5pw3M7TtqP0HdPfZ3X1sdx+7atUPXJYVAADul901FGx1f+ufdDD4QJKfTpJhcfGeSb6a5MIkL66qh1bVmiRHJPl0ksuTHFFVa6pqz4wWKF844ZoBAGDiVqxYkbVr1+aoo47Kc5/73HzjG99Iktx444056qijFry/sa0xqKrzkhyf5KCqmk3yuiTnJDlnuITp3UnWdXcnubaq3pPRouJ7k5zW3fcNr/OKJB9JsiLJOd197bhqBgCA7an1ly7o6/XZJ+z0nL333jtXXXVVkmTdunU566yz8trXvnZB65hrnFcleskODv3iDs5/Q5I3bKf9oiQXLWBpAACwW3nKU56Sq6++eqx9uPMxAAAsYvfdd18uueSSPO95zxtrP4IBAAAsQt/+9rezdu3a/PAP/3BuvfXWPP3pTx9rf4IBAAAsQlvXGNx0003p7px11llj7U8wAACARexhD3tY3vzmN2fDhg259957x9aPYAAAAIvcE57whDz+8Y/PeeedlyT5whe+kJmZme893vve9z7oPsZ2VSIAAFgqduXyogvtW9/61vftf+hDH/re9j333LPg/RkxAAAABAMAAEAwAAAAIhgAAAARDAAAgAgGAABABAMAAFiUVqxYkbVr1+bII4/M0UcfnQ0bNuS73/1ukuTjH/949ttvv6xduzaPfexj8/rXv/5B9+c+BsCiMHvG4Ts9Z2bD9ROoBAB+0K78nro/duV32t57752rrroqSXLbbbfl53/+53PHHXd8LwQ87WlPy4c//OH827/9W9auXZvnPve5OeaYYx5wTUYMAABgkTv44INz9tln5y1veUu6+/uO7bPPPnniE5+YTZs2Pag+BAMAANgN/NiP/Vjuu+++3Hbbbd/Xfvvtt+eyyy7LkUce+aBe31QiAADYDf393/99nvCEJ+QhD3lIzjzzTMEAAACWgxtuuCErVqzIwQcfnOuuu+57awwWiqlEAACwyG3ZsiUvf/nL84pXvCJVNZY+jBgAAMAi9O1vfztr167NPffck5UrV+bUU0/Nq1/96rH1JxgAAMBOTOOS2ffdd98Ojx1//PE5/vjjF7Q/U4kAAADBAAAAEAwAAIAIBgAAQAQDAAAgggEAABCXKwUAgEXp1ltvzate9apcdtllOeCAA7LnnnvmjjvuyB577JG77747X/rSl/KYxzwmSfK7v/u7ecELXvCg+hMMAABgJ869YGHvNnzqKT3v8e7O85///Kxbty5/8zd/kyS56aabcuGFF+b000/PjTfemOc85zm56qqrFqwmU4kAAGCRufTSS7Pnnnvm5S9/+ffaHvWoR+X0008fW5+CAQAALDLXXnttjjnmmIn2KRgAAMAid9ppp+Xoo4/Ok570pLH1IRgAAMAic+SRR+bKK6/83v5ZZ52VSy65JFu2bBlbn4IBAAAsMieccELuuuuuvPWtb/1e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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 921.6x691.2 with 1 Axes>"
]
@@ -1454,19 +1178,19 @@
"\n",
"Although the quality of the control in terms of force magnitudes is the primary goal of the setup above, there are interesting differences in terms of how both methods behave at training time. The main difference of the physics-unaware RL training and the DP approach with its tightly coupled solver is that the latter results in a significantly faster convergence. I.e., the gradients provided by the numerical solver give a much better learning signal than the undirected exploration of the RL process. The behavior of the RL training, on the other hand, can in part be ascribed to the on-policy nature of training data collection and to the \"brute-force\" exploration of the reinforcement learning technique.\n",
"\n",
"The next cell visualizes the training progress of both methods with respect to iterations and wall time.\n",
"The next cell visualizes the training progress of both methods with respect to wall time.\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "i1ecSuakEAYp",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 621
"height": 371
},
"outputId": "3214ab46-27e1-47bf-a0fa-ff9944d1a76c"
"id": "JCQBzhNub16h",
"outputId": "8233d8f0-0585-40f2-d85e-4429ccd092a2"
},
"source": [
"def get_dp_val_set_forces(experiment_path):\n",
@@ -1475,46 +1199,34 @@
" return list(table['time']), list(table['epoch']), list(table['forces'])\n",
"\n",
"rl_w_times, rl_step_nums, rl_val_forces = rl_trainer.get_val_set_forces_data()\n",
"dp_w_times, dp_epochs, dp_val_forces = get_dp_val_set_forces('PDE-Control-RL/networks/dp-models/bench')\n",
"dp_w_times, dp_epochs, dp_val_forces = get_dp_val_set_forces(DP_STORE_PATH) \n",
"\n",
"fig, axs = plt.subplots(2, 1, figsize=(12.8, 9.6))\n",
"\n",
"axs[0].plot(np.array(rl_step_nums), rl_val_forces, color=\"#0065bd\", label='RL')\n",
"axs[0].plot(np.array(dp_epochs), dp_val_forces, color=\"#e37222\", label='DP')\n",
"axs[0].set_xlabel('Epochs')\n",
"axs[0].set_ylabel('Forces')\n",
"axs[0].set_ylim(0, 1500)\n",
"axs[0].grid()\n",
"axs[0].legend()\n",
"\n",
"axs[1].plot(np.array(rl_w_times) / 3600, rl_val_forces, color=\"#0065bd\", label='RL')\n",
"axs[1].plot(np.array(dp_w_times) / 3600, dp_val_forces, color=\"#e37222\", label='DP')\n",
"axs[1].set_xlabel('Wall time (hours)')\n",
"axs[1].set_ylabel('Forces')\n",
"axs[1].set_ylim(0, 1500)\n",
"axs[1].grid()\n",
"axs[1].legend()"
"plt.figure(figsize=(12, 5))\n",
"plt.plot(np.array(rl_w_times) / 3600, rl_val_forces, color=\"#0065bd\", label='RL')\n",
"plt.plot(np.array(dp_w_times) / 3600, dp_val_forces, color=\"#e37222\", label='DP')\n",
"plt.xlabel('Wall time (hours)'); plt.ylabel('Forces')\n",
"plt.ylim(0, 1500); plt.grid(); plt.legend()"
],
"execution_count": 24,
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f656a57fe90>"
"<matplotlib.legend.Legend at 0x7fecba4b0f90>"
]
},
"metadata": {
"tags": []
},
"execution_count": 24
"execution_count": 33
},
{
"output_type": "display_data",
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtoAAAE9CAYAAAA1R8WUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3hUVf7H8feZ9IQklEAoAUIT6VUQsSRgQVfFdd21rKxtxa77s4K7K+vasGCvqNhWxbprLyhEBUQFpCMQekIJLSGVlDm/P2YyJCSBZJibScjn9Tx5mHvOufd+5yTAN2fOPcdYaxERERERkcByBTsAEREREZEjkRJtEREREREHKNEWEREREXGAEm0REREREQco0RYRERERcYASbRERERERB4QGOwAnJCQk2OTk5KDcuzhjKQAhcW0JiWsdlBgao/z8fGJiYoIdRqOiPvOP+s0/6jf/qN/8o36rO/WZfwLRbwsWLNhpra026TsiE+3k5GTmz58flHtn3NINgLgxfyPulBuCEkNjlJaWRkpKSrDDaFTUZ/5Rv/lH/eYf9Zt/1G91pz7zTyD6zRizsaY6TR1xiHW7gx2CiIiIiASREu0AsxjvCyXaIiIiIk2ZEu0AK41sAYAJiwpyJCIiIiISTEfkHO1g2tn3QtrNf4aIrscEOxQRERGRBqGkpISMjAyKioqCHUol8fHxrFy5slZtIyMjSUpKIiwsrNbXV6IdYO6QcO8rG9Q4RERERBqKjIwMYmNjSU5OxhgT7HB8cnNziY2NPWQ7ay27du0iIyODLl261Pr6mjoSaOU/PMqzRURERAAoKiqiVatWDSrJrgtjDK1atarziLwS7YAr/wFSpi0iIiJSrrEm2eX8iV+JdqAZb5dq1RERERGRBiMkJISBAwfSt29fzjrrLLKzswHYsGEDffv2deSeSrQDrHx5P6tEW0RERKTBiIqKYtGiRSxbtoyWLVvyzDPPOH5PJdqBVv6xgjasEREREWmQRowYQWZmpuP3UaIdaL6HITVHW0RERKShKSsr49tvv+Xss892/F5a3i/gtDOkiIiISE3+9s5qFm3OC+g1B3ZsxuPnH3XQNoWFhQwcOJDMzEx69erFKaecQkFBQUDjOJBjI9rGmGnGmCxjzLJq6m4xxlhjTIL32BhjnjTGpBtjlhhjBldoe4kxZo336xKn4g0Ua7TqiIiIiEhDUz5He+PGjVhr62WOtpMj2q8CTwOvVyw0xnQETgU2VSg+Hejh/RoOPAcMN8a0BCYBQ/FkrguMMR9ba/c4GPdh0sOQIiIiIjU51Miz06Kjo3nyySc555xzGDdunKP3cmxE21r7PbC7mqrHgNupPOQ7FnjdeswDmhtj2gGnATOstbu9yfUMYIxTMQeEb3k/jWiLiIiINESDBg2if//+vPfeewCsWrWKpKQk31d5+eGq1znaxpixQKa1dvEBi353ADZXOM7wltVU3oBp1RERERGRhiYvr/K88E8++cS3BXtJSYkj96y3RNsYEw3ciWfaiBPXHw+MB0hMTCQtLc2J2xxSWWEhAMuWLiF/p541ra28vLygfc8aK/WZf9Rv/lG/+Uf95h/1W9019D6Lj48nNzc32GFUUVZWVqe4ioqK6tTP9ZkJdgO6AOWj2UnAQmPMMCAT6FihbZK3LBNIOaA8rbqLW2unAlMBhg4dalNSUqpr5ri5H3kG4Pv26UNU/+DE0BilpaURrO9ZY6U+84/6zT/qN/+o3/yjfqu7ht5nK1euJDY2NthhVFE+ol1bkZGRDBo0qNbt620dbWvtUmttG2ttsrU2Gc80kMHW2m3Ax8BfvKuPHAvkWGu3Al8BpxpjWhhjWuAZDf+qvmL2i3dKjNWqIyIiIiJNmpPL+70N/Aj0NMZkGGOuOEjzz4F1QDrwInAtgLV2N3AP8Iv369/esobLaB1tEREREXFw6oi19sJD1CdXeG2B62poNw2YFtDgHGT1MKSIiIiIoC3YA8+3vJ8SbREREZGmTIl2wJVPHdEcbREREZGGIiQkhIEDB9KnTx8GDBjAlClTcHtnIKSlpREfH8/AgQPp1asXd999d0DuqfXnAs2XZ2tEW0RERKShKN+CHSArK4uLLrqIHTt2MHnyZABOOOEEPv30U/Lz8xk4cCBnnXUWgwcPPqx7akQ7wKyvSzWiLSIiItIQtWnThqlTpzJ16lTsAbMQYmJiGDJkCOnp6Yd9HyXagWb0MKSIiIhIQ9e1a1fcbjdZWVmVynft2sW8efPo06fPYd9DU0cCTnO0RURERGqS/b97KN6yMqDXDG/fi+bn/POwrvHDDz8waNAgXC4XEyZMUKLdEFmtoy0iIiLS4K1btw6Xy0WbNm1YuXKlb452ICnRDrTynSGVaIuIiIhUcbgjz4GwY8cOrr76asaPH48pHyR1gBLtgNPUEREREZGGprCwkIEDB1JSUkJoaCjjxo3jyiuvdPSeSrQDzfdbkRJtERERkYairKysSllubi4AKSkppKSkBPyeWnUkwHzL+2nVEREREZEmTYl2oOlhSBERERFBibYD9DCkiIiIiCjRDjyjhyFFREREDnTgDoyNjT/xK9EOMIumjoiIiIhUFBkZya5duxptsm2tZdeuXURGRtbpPK06Emga0RYRERGpJCkpiYyMDHbs2BHsUCopKiqqdfIcGRlJUlJSna6vRDvgNKItIiIiUlFYWBhdunQJdhhVpKWlMWjQIMeur6kjgWY8XdpYPxoRERERkcBQoh1g1jd1pOqi6CIiIiLSdCjRDjSjDWtERERERIl24BkXGIN1lwY7EhEREREJIiXaTnCFgltTR0RERESaMiXaDjCuEGyZRrRFREREmjIl2k7QiLaIiIhIk6dE2wmuENAcbREREZEmTYm2A0xICFYj2iIiIiJNmhJtJ7hCNaItIiIi0sQp0XaA52FIjWiLiIiINGWOJdrGmGnGmCxjzLIKZQ8bY34zxiwxxvzXGNO8Qt1EY0y6MWaVMea0CuVjvGXpxpgJTsUbSGXZWyn45f1ghyEiIiIiQeTkiParwJgDymYAfa21/YHVwEQAY0xv4AKgj/ecZ40xIcaYEOAZ4HSgN3Cht62IiIiISIPmWKJtrf0e2H1A2dfW2vLJy/OAJO/rscB0a+0+a+16IB0Y5v1Kt9aus9YWA9O9bUVEREREGrTQIN77cuAd7+sOeBLvchneMoDNB5QPr+5ixpjxwHiAxMRE0tLSAhlrreXl5flep82aBcYEJY7GJi8vL2jfs8ZKfeYf9Zt/1G/+Ub/5R/1Wd+oz/zjdb0FJtI0xfwdKgTcDdU1r7VRgKsDQoUNtSkpKoC5dJxW/WSeddBLGpedNayMtLY1gfc8aK/WZf9Rv/lG/+Uf95h/1W92pz/zjdL/Ve6JtjLkUOBMYba213uJMoGOFZkneMg5S3gjYQzcRERERkSNSvQ63GmPGALcDZ1trCypUfQxcYIyJMMZ0AXoAPwO/AD2MMV2MMeF4Hpj8uD5jPizWHewIRERERCRIHBvRNsa8DaQACcaYDGASnlVGIoAZxjN3eZ619mpr7XJjzLvACjxTSq6z1pZ5r3M98BUQAkyz1i53KuaAsxrRFhEREWmqHEu0rbUXVlP88kHa3wfcV03558DnAQytHinRFhEREWmq9KSekzSiLSIiItJkKdEOsMJSS0irTgBYJdoiIiIiTZYS7QDakVvMGe9afm3l3RBTibaIiIhIk6VEO4AG3vMzAMu3FXoKtOqIiIiISJOlRDtArLVsyS4GID2rqLw0eAGJiIiISFAp0Q4QYwxFz6QA8Pswz27y+b98EMSIRERERCSYlGgHUESYi0v6QifXTgAK5n8Y5IhEREREJFiUaAfY8R0NccYzR7sko/HsrSMiIiIigaVEO8DiI4IdgYiIiIg0BEq0A6x1tKHU7u/WrfelULpzQ/ACEhEREZGgUKLtgFCzf1m/st2byZvznyBGIyIiIiLBoERbRERERMQBSrRFRERERBygRFtERERExAFKtEVEREREHKBEW0RERETEAUq0RUREREQcoETbARE9RgY7BBEREREJMiXaDghN6BzsEEREREQkyJRoO8GYYEcgIiIiIkGmRNsBET2OC3YIIiIiIhJkSrQdEKk52iIiIiJNnhJtB7iiYoMdgoiIiIgEmRJtEREREREHKNEWEREREXGAEu16kL+vLNghiIiIiEg9U6JdD2as2F3pePmWPN74cWuQohERERGR+uBYom2MmWaMyTLGLKtQ1tIYM8MYs8b7ZwtvuTHGPGmMSTfGLDHGDK5wziXe9muMMZc4Fa+TNuwqYkv2Pt9x33/9zF9eWcmzaRlBjEpEREREnOTkiParwJgDyiYA31prewDfeo8BTgd6eL/GA8+BJzEHJgHDgWHApPLkvDGxQIfb5/Dlsl2s21HoK7/urdXBC0pEREREHOVYom2t/R7YfUDxWOA17+vXgHMqlL9uPeYBzY0x7YDTgBnW2t3W2j3ADKom743G6U8uptvff6xUZsbPZP6GvUGKSEREREScUt9ztBOtteWTk7cBid7XHYDNFdpleMtqKm9UrjqxasjHJO9fa/uY++djxs/kkldWsCwzj6UZebw7f7uv/v7PN9Drrnm43bbSNbZm7+Pd+du58MVlmPEzMeNn8uPaHOfeiIiIiIjUmrHWHrqVvxc3Jhn41Frb13ucba1tXqF+j7W2hTHmU2CytXa2t/xb4A4gBYi01t7rLf8nUGitfaSae43HM+2ExMTEIdOnT3fsfR1MXl4ezZo1o/snV/jKsruewqKO5zPu0/19/dX5htPeqVvfH9cBbh9uOOfDQ5/3+MmGAW2M77j8+2yMqemUoCrvN6k99Zl/1G/+Ub/5R/3mH/Vb3anP/BOIfktNTV1grR1aXV3oYV257rYbY9pZa7d6p4ZkecszgY4V2iV5yzLxJNsVy9Oqu7C1diowFWDo0KE2JLine truncated
"text/plain": [
"<Figure size 921.6x691.2 with 2 Axes>"
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
+28 -12
View File
@@ -5,6 +5,16 @@ Deep reinforcement learning, referred to as just _reinforcement learning_ (RL) f
The setup for RL generally consists of two parts: the environment and the agent. The environment receives actions $a$ from the agent while supplying it with observations in the form of states $s$, and rewards $r$. The observations represent the fraction of the information from the respective environment state that the agent is able to perceive. The rewards are given by a predefined function, usually tailored to the environment and might contain, e.g., a game score, a penalty for wrong actions or a bounty for successfully finished tasks.
```{figure} resources/rl-overview.jpg
---
height: 200px
name: rl-overview
---
Reinforcement learning is formulated in terms of an environment that gives observations in the form of states and rewards to an agent. The agent interacts with the environment by performing actions.
```
In its simplest form, the learning goal for reinforcement learning tasks can be formulated as
$$
\text{arg max}_{\theta} \mathbb{E} \sum_t=0^T r_t ,
@@ -25,14 +35,16 @@ In addition, _actor-critic_ methods combine elements from both approaches. Here,
## Proximal Policy Optimization
As PPO methods are an actor-critic approach, we need to train two networks: the actor, and the critic.
Hence, the objective of the actor inherently depends on the output of the critic network. This fact can promote instabilities, e.g., as strongly over- or underestimated state values can give wrong impulses during learning. Actions yielding higher rewards often also contribute to reaching states with higher informational value. As a consequence, when the - possibly incorrect - value estimate of individual samples are allowed to affect the agent’s behavior unrestrictedly, the learning progress can collapse.
As PPO methods are an actor-critic approach, we need to train two interdependent networks: the actor, and the critic.
The objective of the actor inherently depends on the output of the critic network (it provides feedback which actions are worth performing), and likewise the critic depends on the actions generated by the actor network (this determines which states to explore).
This interdependence can promote instabilities, e.g., as strongly over- or underestimated state values can give wrong impulses during learning. Actions yielding higher rewards often also contribute to reaching states with higher informational value. As a consequence, when the - possibly incorrect - value estimate of individual samples are allowed to unrestrictedly affect the agent’s behavior, the learning progress can collapse.
PPO was introduced as a method to specifically counteract this problem. The idea is to restrict the influence that individual state value estimates can have on the change of the actor's behavior during learning. PPO is a popular choice especially when working on continuous action spaces. This can be attributed to the fact that it tends to achieve good results with a stable learning progress, while still being comparatively easy to implement.
### PPO-Clip
More specifically, we will use the algorithm _PPO-clip_ {cite}`schulman2017proximal`. This PPO variant sets a hard limit for the change in behavior caused by singular update steps. As such, the algorithm uses a previous network state (denoted by a subscript $_p$ in below) to limits the change per update step in comparison to before.
More specifically, we will use the algorithm _PPO-clip_ {cite}`schulman2017proximal`. This PPO variant sets a hard limit for the change in behavior caused by singular update steps. As such, the algorithm uses a previous network state (denoted by a subscript $_p$ in below) to limit the change per update step in comparison to before.
In the following, we will denote the network parameters of the actor network as $\theta$ and those of the critic as $\phi$.
<!-- simplified notation:
@@ -45,14 +57,16 @@ In the following, we will denote the network parameters of the actor network as
### Actor
The actor computes a policy function $\pi(s; \theta)$ returning the probability distribution for actions in a certain state $s$. $\pi(a;s,\theta)$ describes the probability of choosing a certain action $a$ conditioned by the current network parameters $\theta$ and the state $s$. As mentioned above, the training procedure computes a certain number of weight updates using policy evaluations with a fixed previous network state $\pi(s; \theta_p)$, and in intervals re-initializes the previous weights $\theta_p$ from $\theta$.
The actor computes a policy function returning the probability distribution for the actions conditioned by the current network parameters $\theta$ and a state $s$.
In the following we'll denote the probability of choosing a specific action $a$ from the distribution with $\pi(a; s,\theta)$.
As mentioned above, the training procedure computes a certain number of weight updates using policy evaluations with a fixed previous network state $\pi(a;s, \theta_p)$, and in intervals re-initializes the previous weights $\theta_p$ from $\theta$.
To limit the changes, the objective function makes use of a $\text{clip}(a,b,c)$ function, which simply returns $a$ clamped to the interval $[b,c]$.
$\epsilon$ defines the bound for the deviation from the previous policy.
In combination, the objective for the actor is given by the following expression:
$$\begin{aligned}
\text{arg max}_{\theta} \mathbb{E}_{s, a \sim \pi(;\theta_p)} \Big[ \text{min} \big(
\text{arg max}_{\theta} \mathbb{E}_{s, a \sim \pi(;s,\theta_p)} \Big[ \text{min} \big(
\frac{\pi(a;s,\theta)}{\pi(a;s,\theta_p)}
A(s, a; \phi),
\text{clip}(\frac{\pi(a;s,\theta)}{\pi(a;s,\theta_p)}, 1-\epsilon, 1+\epsilon)
@@ -60,26 +74,27 @@ $$\begin{aligned}
\big) \Big]
\end{aligned}$$
As the actor network is trained to provide the expected value, at training time an
additional standard deviation is used to sample values from a Gaussian distribution around this mean.
It is decreased over the course of the training, and at inference time we only evaluate the mean (i.e. a distribution with variance 0).
### Critic and Advantage
The critic is represented by a value function $V(s; \phi)$ that predicts the expected cumulative reward to be received from state $s$.
Its objective is to minimize the squared advantage $A$:
% \phi_{k+1} =
$$\begin{aligned}
\text{arg min}_{\phi}\mathbb{E}_{s, a \sim \pi(;\theta)}[A(s, a; \phi)^2] \ ,
\text{arg min}_{\phi}\mathbb{E}_{s, a \sim \pi(;s,\theta_p)}[A(s, a; \phi)^2] \ ,
\end{aligned}$$
where the advantage function $A(s, a; \phi)$ builds upon $V$: it's goal is to evaluate the deviation from an average cumulative reward. I.e., we're interested in estimating how much the decision made via $\pi(;\theta)$ improves upon making random decisions. We use the so-called Generalized Advantage Estimation (GAE) to compute $A$ as:
where the advantage function $A(s, a; \phi)$ builds upon $V$: it's goal is to evaluate the deviation from an average cumulative reward. I.e., we're interested in estimating how much the decision made via $\pi(;s,\theta_p)$ improves upon making random decisions (again, evaluated via the unchanging, previous network state $\theta_p$). We use the so-called Generalized Advantage Estimation (GAE) {cite}`schulman2015high` to compute $A$ as:
% A^{\pi_{\theta_p}}_t
$$\begin{aligned}
A(s_t, a_t; \phi) &= \sum\limits_{i=0}^{n-t-1}(\gamma\lambda)^i\delta_{t+i} \\
\delta_t &= r_t+\gamma [V(s_{t+1} ; \phi) - V(s_t ; \phi)]
\end{aligned}$$
Here $r_t$ describes the reward obtained in time step $t$, while $n$ denotes the total length of the trajectory. $\gamma$ and $\lambda$ are two hyperparameters which influence rewards and state value predictions from the distant futures have on the advantage calculation. They are typically set to values smaller than one.
For training stability, this advantage function makes use of the policy $\pi(;\theta_p)$, i.e. the policy evaluated with the previous weight states $\theta_p$.
The $\delta_t$ in the formulation above represent a biased approximation of the true advantage. Hence
the GAE can be understood as a discounted cumulative sum of these estimates, from the current time step until the end of the trajectory.
@@ -97,10 +112,11 @@ The way how long term effects of generated forces are taken into account can als
Working with Burgers' equation as physical environment, the trajectory generation process can be summarized as follows. It shows how the simulation steps of the environment and the neural network evaluations of the agent are interleaved:
$$
\mathbf{u}_{t+1}=\mathcal{P}(\mathbf{u}_t+\pi(\mathbf{u}_t, \mathbf{u}^*, t; \theta)\Delta t)
\mathbf{u}_{t+1}=\mathcal{P}(\mathbf{u}_t+\pi(\mathbf{u}_t; \mathbf{u}^*, t, \theta)\Delta t)
$$
The $*$ superscript (as usual) denotes a reference or target quantity, and hence here $\mathbf{u}^*$ denotes a velocity target.
The $*$ superscript (as usual) denotes a reference or target quantity, and hence here $\mathbf{u}^*$ denotes a velocity target. For the continuous action space of the PDE, $\pi$ directly computes an action in terms of a force, rather than probabilities for a discrete set of different actions.
The reward is calculated in a similar fashion as the Loss in the DP approach: it consists of two parts, one of which amounts to the negative square norm of the applied forces and is given at every time step. The other part adds a punishment proportional to the $L^2$ distance between the final approximation and the target state at the end of each trajectory.
$$\begin{aligned}
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB