{
  "id": 551501,
  "title": "15th Place Solution",
  "content": "<p>First, I would like to extend my heartfelt gratitude to the organizers for hosting such a fantastic competition. This has been the most engaging contest I’ve ever participated in.</p>\n<hr>\n<h2>Model Overview and Features</h2>\n<h3>Overview</h3>\n<p>My solution is quite straightforward. I used a retrieval model to select 25 candidates and re-ranked them using a single model. I applied this approach with different combinations of training data. For the 25 selected candidates, duplicate IDs had their scores averaged, while unique IDs retained their original scores.</p>\n<hr>\n<h3>Score Results</h3>\n<ul>\n<li><strong>Final Score:</strong> 0.553 (private) / 0.617 (public)<ul>\n<li><strong>Retriever Model 1:</strong> 0.513 (public) / 0.455 (private) - Qwen2.5-32B</li>\n<li><strong>Retriever Model 2:</strong> 0.515 (public) / 0.450 (private) - Qwen2.5-32B</li>\n<li><strong>Reranker Model 1:</strong> 0.610 (public) / 0.538 (private) - Qwen2.5-32B-Instruct-bnb-4bit</li>\n<li><strong>Reranker Model 2:</strong> 0.596 (public) / 0.536 (private) - Qwen2.5-32B-Instruct-bnb-4bit</li></ul></li>\n</ul>\n<hr>\n<h3>Synthetic Data Generation</h3>\n<p>Using GPT-4o, I provided 10 sample questions and the misconceptions I aimed to generate. Questions were then created by reverse-engineering from the misconceptions.</p>\n<ul>\n<li><strong>Misconceptions never appearing in competition data:</strong> 2 types (985 samples × 2)</li>\n<li><strong>Misconceptions appearing only once:</strong> 1 type (847 samples)</li>\n</ul>\n<hr>\n<h3>Training Methodology</h3>\n<h4>Retriever Training:</h4>\n<ol>\n<li>Extracted the top 200 candidates using the SFR-Embedding-2_R pre-trained model.</li>\n<li>Used Qwen25-14B to randomly select 30 hard negatives from the top 200 candidates and conducted contrastive learning. Extracted the top 200 candidates again.</li>\n<li>Repeated the same process using Qwen25-32B.</li>\n</ol>\n<p>This process might seem counterintuitive. However, the role of the retrieval model was not to identify a single correct answer, but rather to ensure that the correct answer was included within the top 25 candidates. Therefore, the model needed to adopt a broader focus to achieve this objective.</p>\n<h4>Reranker Training:</h4>\n<ol>\n<li>Extracted the top 25 candidates for each question using the retriever model.</li>\n<li>Randomly selected 2-25 options from these candidates. If there was no correct answer, one option was replaced with the correct answer.</li>\n<li>Conducted instruction tuning to predict the correct answer from the set of options. Varying the number of options helped capture the core nature of the task.</li>\n</ol>\n<hr>\n<h3>Ensembling Method</h3>\n<p>The scores for overlapping IDs from the two prediction results were averaged, while unique ID scores were retained. Surprisingly, this approach worked well. Since the retriever and reranker models had different strengths due to their random negative sampling, this ensembling method boosted the score by 0.02.</p>\n<hr>\n<h2>Final Thoughts</h2>\n<p>This competition allowed me to achieve my best-ever ranking. I stayed in the gold medal range for a long time during the contest, which was incredibly exciting. Though I narrowly missed the gold medal, I am eager to apply these learnings in future competitions.</p>\n<p>Thank you all very much!</p>\n<h3>Inference Code (Version 2)</h3>\n<p><a href=\"https://www.kaggle.com/code/tkyiws/sub-embedder-reranker-ensemble-v3?scriptVersionId=212088687\" target=\"_blank\">https://www.kaggle.com/code/tkyiws/sub-embedder-reranker-ensemble-v3?scriptVersionId=212088687</a></p>",
  "comments": [
    {
      "id": 3076044,
      "author_name": "shion5",
      "author_url": "",
      "post_date": "2024-12-19T15:20:04.290000",
      "content": "<p>Thank you for the sharing. So much informative!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3075830,
      "author_name": "john",
      "author_url": "",
      "post_date": "2024-12-19T10:19:58.287000",
      "content": "<p>Congratulations! Maybe the luck is accumulated for the next time.<br>\nI have question about Retriever Training process.</p>\n<ol>\n<li>Extracted the top 200 candidates using the SFR-Embedding-2_R pre-trained model.</li>\n<li>Train a  Qwen25-14B by 30 random select from top 200.   Generate new top 200 from Qwen25-14B model.</li>\n<li>Do same thing for Qwen25-32B as step 2.<br>\nIs my understand correct?  <br>\nAlso, random select 30 negatives  in each training batch? </li>\n</ol>",
      "votes": 0,
      "replies": [
        {
          "id": 3076371,
          "author_name": "iws",
          "author_url": "",
          "post_date": "2024-12-20T00:05:50.937000",
          "content": "<p>Yes, \"Do the same thing for Qwen25-32B as in Step 2\" is correct.<br>\nNext, 30 negative examples are randomly selected for each sample.<br>\nDue to memory constraints, the batch size was set to 1, which also helped avoid inconsistencies.</p>",
          "votes": 0,
          "replies": [
            {
              "id": 3076457,
              "author_name": "john",
              "author_url": "",
              "post_date": "2024-12-20T01:12:53.563000",
              "content": "<p>bravo, I like this solution, simple &amp; efficient!</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 3071351,
      "author_name": "Sinan Calisir",
      "author_url": "",
      "post_date": "2024-12-13T17:01:53.933000",
      "content": "<p>Congratulations on your strong finish! Are you planning to release your code as well? I didn't participate in this one but I want to study the top solutions. </p>",
      "votes": 0,
      "replies": [
        {
          "id": 3071371,
          "author_name": "iws",
          "author_url": "",
          "post_date": "2024-12-13T17:23:22.893000",
          "content": "<p>Thank you very much. I have published the code. Please take a look!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    }
  ],
  "comment_count": 6,
  "messages": [
    {
      "id": 3071288,
      "postDate": "2024-12-13T15:24:59.457Z",
      "content": "<p>First, I would like to extend my heartfelt gratitude to the organizers for hosting such a fantastic competition. This has been the most engaging contest I’ve ever participated in.</p>\n<hr>\n<h2>Model Overview and Features</h2>\n<h3>Overview</h3>\n<p>My solution is quite straightforward. I used a retrieval model to select 25 candidates and re-ranked them using a single model. I applied this approach with different combinations of training data. For the 25 selected candidates, duplicate IDs had their scores averaged, while unique IDs retained their original scores.</p>\n<hr>\n<h3>Score Results</h3>\n<ul>\n<li><strong>Final Score:</strong> 0.553 (private) / 0.617 (public)<ul>\n<li><strong>Retriever Model 1:</strong> 0.513 (public) / 0.455 (private) - Qwen2.5-32B</li>\n<li><strong>Retriever Model 2:</strong> 0.515 (public) / 0.450 (private) - Qwen2.5-32B</li>\n<li><strong>Reranker Model 1:</strong> 0.610 (public) / 0.538 (private) - Qwen2.5-32B-Instruct-bnb-4bit</li>\n<li><strong>Reranker Model 2:</strong> 0.596 (public) / 0.536 (private) - Qwen2.5-32B-Instruct-bnb-4bit</li></ul></li>\n</ul>\n<hr>\n<h3>Synthetic Data Generation</h3>\n<p>Using GPT-4o, I provided 10 sample questions and the misconceptions I aimed to generate. Questions were then created by reverse-engineering from the misconceptions.</p>\n<ul>\n<li><strong>Misconceptions never appearing in competition data:</strong> 2 types (985 samples × 2)</li>\n<li><strong>Misconceptions appearing only once:</strong> 1 type (847 samples)</li>\n</ul>\n<hr>\n<h3>Training Methodology</h3>\n<h4>Retriever Training:</h4>\n<ol>\n<li>Extracted the top 200 candidates using the SFR-Embedding-2_R pre-trained model.</li>\n<li>Used Qwen25-14B to randomly select 30 hard negatives from the top 200 candidates and conducted contrastive learning. Extracted the top 200 candidates again.</li>\n<li>Repeated the same process using Qwen25-32B.</li>\n</ol>\n<p>This process might seem counterintuitive. However, the role of the retrieval model was not to identify a single correct answer, but rather to ensure that the correct answer was included within the top 25 candidates. Therefore, the model needed to adopt a broader focus to achieve this objective.</p>\n<h4>Reranker Training:</h4>\n<ol>\n<li>Extracted the top 25 candidates for each question using the retriever model.</li>\n<li>Randomly selected 2-25 options from these candidates. If there was no correct answer, one option was replaced with the correct answer.</li>\n<li>Conducted instruction tuning to predict the correct answer from the set of options. Varying the number of options helped capture the core nature of the task.</li>\n</ol>\n<hr>\n<h3>Ensembling Method</h3>\n<p>The scores for overlapping IDs from the two prediction results were averaged, while unique ID scores were retained. Surprisingly, this approach worked well. Since the retriever and reranker models had different strengths due to their random negative sampling, this ensembling method boosted the score by 0.02.</p>\n<hr>\n<h2>Final Thoughts</h2>\n<p>This competition allowed me to achieve my best-ever ranking. I stayed in the gold medal range for a long time during the contest, which was incredibly exciting. Though I narrowly missed the gold medal, I am eager to apply these learnings in future competitions.</p>\n<p>Thank you all very much!</p>\n<h3>Inference Code (Version 2)</h3>\n<p><a href=\"https://www.kaggle.com/code/tkyiws/sub-embedder-reranker-ensemble-v3?scriptVersionId=212088687\" target=\"_blank\">https://www.kaggle.com/code/tkyiws/sub-embedder-reranker-ensemble-v3?scriptVersionId=212088687</a></p>",
      "rawMarkdown": "First, I would like to extend my heartfelt gratitude to the organizers for hosting such a fantastic competition. This has been the most engaging contest I’ve ever participated in.\n\n---\n\n## Model Overview and Features\n\n### Overview\n\nMy solution is quite straightforward. I used a retrieval model to select 25 candidates and re-ranked them using a single model. I applied this approach with different combinations of training data. For the 25 selected candidates, duplicate IDs had their scores averaged, while unique IDs retained their original scores.\n\n---\n\n### Score Results\n\n- **Final Score:** 0.553 (private) / 0.617 (public)\n  - **Retriever Model 1:** 0.513 (public) / 0.455 (private) - Qwen2.5-32B\n  - **Retriever Model 2:** 0.515 (public) / 0.450 (private) - Qwen2.5-32B\n  - **Reranker Model 1:** 0.610 (public) / 0.538 (private) - Qwen2.5-32B-Instruct-bnb-4bit\n  - **Reranker Model 2:** 0.596 (public) / 0.536 (private) - Qwen2.5-32B-Instruct-bnb-4bit\n\n---\n\n### Synthetic Data Generation\n\nUsing GPT-4o, I provided 10 sample questions and the misconceptions I aimed to generate. Questions were then created by reverse-engineering from the misconceptions.\n\n- **Misconceptions never appearing in competition data:** 2 types (985 samples × 2)\n- **Misconceptions appearing only once:** 1 type (847 samples)\n\n---\n\n### Training Methodology\n\n#### Retriever Training:\n1. Extracted the top 200 candidates using the SFR-Embedding-2\\_R pre-trained model.\n2. Used Qwen25-14B to randomly select 30 hard negatives from the top 200 candidates and conducted contrastive learning. Extracted the top 200 candidates again.\n3. Repeated the same process using Qwen25-32B.\n\nThis process might seem counterintuitive. However, the role of the retrieval model was not to identify a single correct answer, but rather to ensure that the correct answer was included within the top 25 candidates. Therefore, the model needed to adopt a broader focus to achieve this objective.\n\n#### Reranker Training:\n1. Extracted the top 25 candidates for each question using the retriever model.\n2. Randomly selected 2-25 options from these candidates. If there was no correct answer, one option was replaced with the correct answer.\n3. Conducted instruction tuning to predict the correct answer from the set of options. Varying the number of options helped capture the core nature of the task.\n\n---\n\n### Ensembling Method\n\nThe scores for overlapping IDs from the two prediction results were averaged, while unique ID scores were retained. Surprisingly, this approach worked well. Since the retriever and reranker models had different strengths due to their random negative sampling, this ensembling method boosted the score by 0.02.\n\n---\n\n## Final Thoughts\n\nThis competition allowed me to achieve my best-ever ranking. I stayed in the gold medal range for a long time during the contest, which was incredibly exciting. Though I narrowly missed the gold medal, I am eager to apply these learnings in future competitions.\n\nThank you all very much!\n\n### Inference Code (Version 2)\nhttps://www.kaggle.com/code/tkyiws/sub-embedder-reranker-ensemble-v3?scriptVersionId=212088687\n\n",
      "votes": 12
    },
    {
      "id": 3076044,
      "postDate": "2024-12-19T15:20:04.290Z",
      "content": "<p>Thank you for the sharing. So much informative!</p>",
      "rawMarkdown": "Thank you for the sharing. So much informative!"
    },
    {
      "id": 3075830,
      "postDate": "2024-12-19T10:19:58.287Z",
      "content": "<p>Congratulations! Maybe the luck is accumulated for the next time.<br>\nI have question about Retriever Training process.</p>\n<ol>\n<li>Extracted the top 200 candidates using the SFR-Embedding-2_R pre-trained model.</li>\n<li>Train a  Qwen25-14B by 30 random select from top 200.   Generate new top 200 from Qwen25-14B model.</li>\n<li>Do same thing for Qwen25-32B as step 2.<br>\nIs my understand correct?  <br>\nAlso, random select 30 negatives  in each training batch? </li>\n</ol>",
      "rawMarkdown": "Congratulations! Maybe the luck is accumulated for the next time.\nI have question about Retriever Training process.\n1. Extracted the top 200 candidates using the SFR-Embedding-2_R pre-trained model.\n2. Train a  Qwen25-14B by 30 random select from top 200.   Generate new top 200 from Qwen25-14B model.\n3. Do same thing for Qwen25-32B as step 2.\nIs my understand correct?  \nAlso, random select 30 negatives  in each training batch? ",
      "replies": [
        {
          "id": 3076371,
          "postDate": "2024-12-20T00:05:50.937Z",
          "content": "<p>Yes, \"Do the same thing for Qwen25-32B as in Step 2\" is correct.<br>\nNext, 30 negative examples are randomly selected for each sample.<br>\nDue to memory constraints, the batch size was set to 1, which also helped avoid inconsistencies.</p>",
          "rawMarkdown": "Yes, \"Do the same thing for Qwen25-32B as in Step 2\" is correct.\nNext, 30 negative examples are randomly selected for each sample.\nDue to memory constraints, the batch size was set to 1, which also helped avoid inconsistencies.",
          "replies": [
            {
              "id": 3076457,
              "postDate": "2024-12-20T01:12:53.563Z",
              "content": "<p>bravo, I like this solution, simple &amp; efficient!</p>",
              "rawMarkdown": "bravo, I like this solution, simple & efficient!"
            }
          ]
        }
      ]
    },
    {
      "id": 3071351,
      "postDate": "2024-12-13T17:01:53.933Z",
      "content": "<p>Congratulations on your strong finish! Are you planning to release your code as well? I didn't participate in this one but I want to study the top solutions. </p>",
      "rawMarkdown": "Congratulations on your strong finish! Are you planning to release your code as well? I didn't participate in this one but I want to study the top solutions. ",
      "replies": [
        {
          "id": 3071371,
          "postDate": "2024-12-13T17:23:22.893Z",
          "content": "<p>Thank you very much. I have published the code. Please take a look!</p>",
          "rawMarkdown": "Thank you very much. I have published the code. Please take a look!"
        }
      ]
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T03:46:52Z",
  "competition_id": 82695,
  "competition_slug": "eedi-mining-misconceptions-in-mathematics",
  "team_id": 12608061,
  "solution_url": "/competitions/eedi-mining-misconceptions-in-mathematics/writeups/iws-15th-place-solution"
}