{
  "id": 181975,
  "title": "True Target Problem",
  "url": "/competitions/conways-reverse-game-of-life-2020/discussion/181975",
  "author_name": "",
  "post_date": "2020-09-10T21:59:59.015069100Z",
  "votes": 3,
  "comment_count": 4,
  "views": 0,
  "content": "<p>Our goal is to predict the start_state that will come to target_stop_state in the delta iteration.<br>\nBut the problem is that many start_state can lead us to target_stop_state.</p>\n<p>Even if we know one of start_state(lets call it start_state_0) that lead to stop_state</p>\n<p>We cannot use start_state_0 as a target because there are many other start_states that lead to stop_state, and how is our model supposed to understand that we need to accurately predict start_state_0?</p>\n<p>Hence, the real goal is stop_state.</p>\n<p>We need to somehow build a model that will count the error as the difference between stop_state_prediction (predicting start_state through delta iterations) and stop_state_true.</p>\n<p>In the case of neural networks, the problem is binary rules (the loss cannot flow through the forward iteration)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1691775%2Fd83f505b9c36a921ac2a9e51560ab3a1%2Ferror.png?generation=1599774968672355&amp;alt=media\" alt=\"\"></p>\n<p>Does anyone have any ideas for solving this problem?<br>\nOr maybe there is another approach that gets around this problem?</p>",
  "messages": [
    {
      "id": "1005930",
      "postDate": "09/10/2020 21:59:59",
      "content": "<p>Our goal is to predict the start_state that will come to target_stop_state in the delta iteration.<br>\nBut the problem is that many start_state can lead us to target_stop_state.</p>\n<p>Even if we know one of start_state(lets call it start_state_0) that lead to stop_state</p>\n<p>We cannot use start_state_0 as a target because there are many other start_states that lead to stop_state, and how is our model supposed to understand that we need to accurately predict start_state_0?</p>\n<p>Hence, the real goal is stop_state.</p>\n<p>We need to somehow build a model that will count the error as the difference between stop_state_prediction (predicting start_state through delta iterations) and stop_state_true.</p>\n<p>In the case of neural networks, the problem is binary rules (the loss cannot flow through the forward iteration)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1691775%2Fd83f505b9c36a921ac2a9e51560ab3a1%2Ferror.png?generation=1599774968672355&amp;alt=media\" alt=\"\"></p>\n<p>Does anyone have any ideas for solving this problem?<br>\nOr maybe there is another approach that gets around this problem?</p>",
      "rawMarkdown": "Our goal is to predict the start_state that will come to target_stop_state in the delta iteration.\nBut the problem is that many start_state can lead us to target_stop_state.\n\nEven if we know one of start_state(lets call it start_state_0) that lead to stop_state\n\nWe cannot use start_state_0 as a target because there are many other start_states that lead to stop_state, and how is our model supposed to understand that we need to accurately predict start_state_0?\n\nHence, the real goal is stop_state.\n\nWe need to somehow build a model that will count the error as the difference between stop_state_prediction (predicting start_state through delta iterations) and stop_state_true.\n\nIn the case of neural networks, the problem is binary rules (the loss cannot flow through the forward iteration)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1691775%2Fd83f505b9c36a921ac2a9e51560ab3a1%2Ferror.png?generation=1599774968672355&alt=media)\n\nDoes anyone have any ideas for solving this problem?\nOr maybe there is another approach that gets around this problem?",
      "votes": null
    },
    {
      "id": "1005946",
      "postDate": "09/10/2020 22:43:37",
      "content": "<p>Here's my approach to solving this problem: <a href=\"https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem#Result-evaluation\" target=\"_blank\">[CRGL] Probability Extension | True Target Problem</a></p>",
      "rawMarkdown": "Here's my approach to solving this problem: [[CRGL] Probability Extension | True Target Problem](https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem#Result-evaluation)",
      "votes": null
    },
    {
      "id": "1005957",
      "postDate": "09/10/2020 23:04:26",
      "content": "<p>Hello <a href=\"https://www.kaggle.com/yakuben\" target=\"_blank\">@yakuben</a></p>\n<p>I think it isn't important to know the start_state as an input data. The goal of this competition is to actually find it because it's a <strong>REVERSE</strong> game of life.</p>",
      "rawMarkdown": "Hello @yakuben\n\nI think it isn't important to know the start_state as an input data. The goal of this competition is to actually find it because it's a **REVERSE** game of life.",
      "votes": null
    },
    {
      "id": "1008791",
      "postDate": "09/13/2020 11:58:09",
      "content": "<p>A SAT solver run to T=-5 (with the extra constraint of no empty boards) will in theory give you an answer.  Even with simply 4 pixel boards, there are a very large number of possibilities at T=0, and that is after excluding the zero-point energy solutions (random clusters of cells that were born and died in the vaccume of whitespace)</p>\n<ul>\n<li><a href=\"https://www.kaggle.com/jamesmcguigan/game-of-life-z3-constraint-satisfaction/\" target=\"_blank\">https://www.kaggle.com/jamesmcguigan/game-of-life-z3-constraint-satisfaction/</a></li>\n</ul>\n<p>The major problem with this approach is that the runtime is NP-hard and the last entry in my localhost log file (running to only T=0) is. This hasn't even started to touch the boards with both high cell count and high deltas. </p>\n<pre><code>81096 | delta = 1 | cells =  95 -&gt; 369 | Solved!  in 11364.7s = 3.1 hours\n</code></pre>\n<p>I've also started exploring the symmetries of the board, and figured out a hash function that can detect geometric duplicates (flip, roll, rotate). About 13% of the test dataset could be predicted by hash lookup from the training dataset, which reduces the problem that of solving the geometric transform and applying the same transform to the input and output. This reminds me of the <a href=\"https://www.kaggle.com/c/abstraction-and-reasoning-challenge\" target=\"_blank\">Abstraction and Reasoning Corpus</a> </p>\n<ul>\n<li><a href=\"https://www.kaggle.com/jamesmcguigan/game-of-life-hashmap-solver\" target=\"_blank\">https://www.kaggle.com/jamesmcguigan/game-of-life-hashmap-solver</a></li>\n</ul>\n<p>If you look at the top public kernel on the leaderboard, they have tried to solve for the probability superposition of history states (which is sort of how a quantum computer would approach this problem) </p>\n<ul>\n<li><a href=\"https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem\" target=\"_blank\">https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem</a></li>\n</ul>",
      "rawMarkdown": "A SAT solver run to T=-5 (with the extra constraint of no empty boards) will in theory give you an answer.  Even with simply 4 pixel boards, there are a very large number of possibilities at T=0, and that is after excluding the zero-point energy solutions (random clusters of cells that were born and died in the vaccume of whitespace)\n- https://www.kaggle.com/jamesmcguigan/game-of-life-z3-constraint-satisfaction/\n\nThe major problem with this approach is that the runtime is NP-hard and the last entry in my localhost log file (running to only T=0) is. This hasn't even started to touch the boards with both high cell count and high deltas. \n```\n81096 | delta = 1 | cells =  95 -> 369 | Solved!  in 11364.7s = 3.1 hours\n```\n\nI've also started exploring the symmetries of the board, and figured out a hash function that can detect geometric duplicates (flip, roll, rotate). About 13% of the test dataset could be predicted by hash lookup from the training dataset, which reduces the problem that of solving the geometric transform and applying the same transform to the input and output. This reminds me of the [Abstraction and Reasoning Corpus](https://www.kaggle.com/c/abstraction-and-reasoning-challenge) \n- https://www.kaggle.com/jamesmcguigan/game-of-life-hashmap-solver\n\n\nIf you look at the top public kernel on the leaderboard, they have tried to solve for the probability superposition of history states (which is sort of how a quantum computer would approach this problem) \n- https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem",
      "votes": null
    },
    {
      "id": "1016677",
      "postDate": "09/19/2020 06:50:17",
      "content": "<p>You can use an autoencoder or GAN easily with encoder/generator doing the reverse step, and the decoder/discriminator doing the forward step and this output is checked with expected output state(which is same as input to encoder/generator) for calculating loss. This is basically the scheme you have put in figure, but in more ML terms.</p>",
      "rawMarkdown": "You can use an autoencoder or GAN easily with encoder/generator doing the reverse step, and the decoder/discriminator doing the forward step and this output is checked with expected output state(which is same as input to encoder/generator) for calculating loss. This is basically the scheme you have put in figure, but in more ML terms.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1005946,
      "author_name": "yakuben",
      "author_url": "",
      "post_date": "09/10/2020 22:43:37",
      "content": "<p>Here's my approach to solving this problem: <a href=\"https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem#Result-evaluation\" target=\"_blank\">[CRGL] Probability Extension | True Target Problem</a></p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1005957,
      "author_name": "trikialaaa",
      "author_url": "",
      "post_date": "09/10/2020 23:04:26",
      "content": "<p>Hello <a href=\"https://www.kaggle.com/yakuben\" target=\"_blank\">@yakuben</a></p>\n<p>I think it isn't important to know the start_state as an input data. The goal of this competition is to actually find it because it's a <strong>REVERSE</strong> game of life.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1008791,
      "author_name": "jamesmcguigan",
      "author_url": "",
      "post_date": "09/13/2020 11:58:09",
      "content": "<p>A SAT solver run to T=-5 (with the extra constraint of no empty boards) will in theory give you an answer.  Even with simply 4 pixel boards, there are a very large number of possibilities at T=0, and that is after excluding the zero-point energy solutions (random clusters of cells that were born and died in the vaccume of whitespace)</p>\n<ul>\n<li><a href=\"https://www.kaggle.com/jamesmcguigan/game-of-life-z3-constraint-satisfaction/\" target=\"_blank\">https://www.kaggle.com/jamesmcguigan/game-of-life-z3-constraint-satisfaction/</a></li>\n</ul>\n<p>The major problem with this approach is that the runtime is NP-hard and the last entry in my localhost log file (running to only T=0) is. This hasn't even started to touch the boards with both high cell count and high deltas. </p>\n<pre><code>81096 | delta = 1 | cells =  95 -&gt; 369 | Solved!  in 11364.7s = 3.1 hours\n</code></pre>\n<p>I've also started exploring the symmetries of the board, and figured out a hash function that can detect geometric duplicates (flip, roll, rotate). About 13% of the test dataset could be predicted by hash lookup from the training dataset, which reduces the problem that of solving the geometric transform and applying the same transform to the input and output. This reminds me of the <a href=\"https://www.kaggle.com/c/abstraction-and-reasoning-challenge\" target=\"_blank\">Abstraction and Reasoning Corpus</a> </p>\n<ul>\n<li><a href=\"https://www.kaggle.com/jamesmcguigan/game-of-life-hashmap-solver\" target=\"_blank\">https://www.kaggle.com/jamesmcguigan/game-of-life-hashmap-solver</a></li>\n</ul>\n<p>If you look at the top public kernel on the leaderboard, they have tried to solve for the probability superposition of history states (which is sort of how a quantum computer would approach this problem) </p>\n<ul>\n<li><a href=\"https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem\" target=\"_blank\">https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem</a></li>\n</ul>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1016677,
      "author_name": "arunprathap",
      "author_url": "",
      "post_date": "09/19/2020 06:50:17",
      "content": "<p>You can use an autoencoder or GAN easily with encoder/generator doing the reverse step, and the decoder/discriminator doing the forward step and this output is checked with expected output state(which is same as input to encoder/generator) for calculating loss. This is basically the scheme you have put in figure, but in more ML terms.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1005930": "Our goal is to predict the start_state that will come to target_stop_state in the delta iteration.\nBut the problem is that many start_state can lead us to target_stop_state.\n\nEven if we know one of start_state(lets call it start_state_0) that lead to stop_state\n\nWe cannot use start_state_0 as a target because there are many other start_states that lead to stop_state, and how is our model supposed to understand that we need to accurately predict start_state_0?\n\nHence, the real goal is stop_state.\n\nWe need to somehow build a model that will count the error as the difference between stop_state_prediction (predicting start_state through delta iterations) and stop_state_true.\n\nIn the case of neural networks, the problem is binary rules (the loss cannot flow through the forward iteration)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1691775%2Fd83f505b9c36a921ac2a9e51560ab3a1%2Ferror.png?generation=1599774968672355&alt=media)\n\nDoes anyone have any ideas for solving this problem?\nOr maybe there is another approach that gets around this problem?",
    "1005946": "Here's my approach to solving this problem: [[CRGL] Probability Extension | True Target Problem](https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem#Result-evaluation)",
    "1005957": "Hello @yakuben\n\nI think it isn't important to know the start_state as an input data. The goal of this competition is to actually find it because it's a **REVERSE** game of life.",
    "1008791": "A SAT solver run to T=-5 (with the extra constraint of no empty boards) will in theory give you an answer.  Even with simply 4 pixel boards, there are a very large number of possibilities at T=0, and that is after excluding the zero-point energy solutions (random clusters of cells that were born and died in the vaccume of whitespace)\n- https://www.kaggle.com/jamesmcguigan/game-of-life-z3-constraint-satisfaction/\n\nThe major problem with this approach is that the runtime is NP-hard and the last entry in my localhost log file (running to only T=0) is. This hasn't even started to touch the boards with both high cell count and high deltas. \n```\n81096 | delta = 1 | cells =  95 -> 369 | Solved!  in 11364.7s = 3.1 hours\n```\n\nI've also started exploring the symmetries of the board, and figured out a hash function that can detect geometric duplicates (flip, roll, rotate). About 13% of the test dataset could be predicted by hash lookup from the training dataset, which reduces the problem that of solving the geometric transform and applying the same transform to the input and output. This reminds me of the [Abstraction and Reasoning Corpus](https://www.kaggle.com/c/abstraction-and-reasoning-challenge) \n- https://www.kaggle.com/jamesmcguigan/game-of-life-hashmap-solver\n\n\nIf you look at the top public kernel on the leaderboard, they have tried to solve for the probability superposition of history states (which is sort of how a quantum computer would approach this problem) \n- https://www.kaggle.com/yakuben/crgl-probability-extension-true-target-problem",
    "1016677": "You can use an autoencoder or GAN easily with encoder/generator doing the reverse step, and the decoder/discriminator doing the forward step and this output is checked with expected output state(which is same as input to encoder/generator) for calculating loss. This is basically the scheme you have put in figure, but in more ML terms."
  },
  "source": "meta"
}