{"id":936864,"date":"2023-05-02T09:00:00","date_gmt":"2023-05-02T16:00:00","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?p=936864"},"modified":"2023-06-12T10:33:40","modified_gmt":"2023-06-12T17:33:40","slug":"ai-self-play-for-algorithm-design","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/research\/blog\/ai-self-play-for-algorithm-design\/","title":{"rendered":"AI self-play for algorithm design"},"content":{"rendered":"\n<p class=\"has-text-align-center h6\"><em>This research was accepted by the <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/nam06.safelinks.protection.outlook.com\/?url=https%3A%2F%2Ficlr.cc%2FConferences%2F2023&data=05%7C01%7Cv-amelfi%40microsoft.com%7C4f8d3ad02e2e4d7783fe08db4a7e2690%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638185677904637846%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=ZWTF5GUK8hIi3OR0tBRtSucX4Xd309Bl%2BBlqgERCbT0%3D&reserved=0\" target=\"_blank\" rel=\"noopener noreferrer\">2023 International Conference on Learning Representations (ICLR)<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>, which is dedicated to the advancement of the branch of artificial intelligence generally referred to as deep learning.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"788\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero.jpg\" alt=\"A flow chart demonstrating the five steps in a self-play pipeline for a language model to improve itself automatically.A self-play pipeline for a language model (LM) to improve itself in a fully automatic manner. First, the LM generates novel puzzles based on a training set of handwritten puzzles. Then, the LM attempts to solve each of these puzzles 100 times. In Step 3, the computer (specifically a Python interpreter) filters the candidate solutions for correctness. Finally, the LM is improved by further training on these verified correct solutions to synthetic puzzles, and the process repeats. This process leads to significant improvements as measured on held-out test puzzles that were also handwritten. \" class=\"wp-image-936888\" srcset=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero.jpg 1400w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-300x169.jpg 300w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-1024x576.jpg 1024w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-768x432.jpg 768w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-1066x600.jpg 1066w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-655x368.jpg 655w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-343x193.jpg 343w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-240x135.jpg 240w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-640x360.jpg 640w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-960x540.jpg 960w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-1280x720.jpg 1280w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><figcaption class=\"wp-element-caption\">A self-play pipeline for a language model (LM) to improve itself in a fully automatic manner. First, the LM generates novel puzzles based on a training set of handwritten puzzles. Then, the LM attempts to solve each of these puzzles 100 times. In Step 3, the computer (specifically a Python interpreter) filters the candidate solutions for correctness. Finally, the LM is improved by further training on these verified correct solutions to synthetic puzzles, and the process repeats. This process leads to significant improvements as measured on held-out test puzzles, which were also handwritten.<\/figcaption><\/figure>\n\n\n\n<p>Efficient algorithms are crucial for many purposes, including reducing energy consumption in digital devices. While humans outperform AI systems at designing such algorithms, we show how to improve AI programming abilities using self-play, a technique that has helped AI systems dominate in games such as chess and Go.<\/p>\n\n\n\n<p>Designing fast and accurate algorithms requires high-level abstract reasoning, which remains difficult for AI systems. Our approach involves having the AI design and solve its own programming challenges, enabling practice on millions of artificial challenges and exploration of problem types not found in public repositories. We detail our work in a new paper, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/language-models-can-teach-themselves-to-program-better\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u201cLanguage Models Can Teach Themselves to Program Better,\u201d<\/a> which we\u2019re presenting at the <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/iclr.cc\/Conferences\/2023\" target=\"_blank\" rel=\"noopener noreferrer\">2023 International Conference on Learning Representations (ICLR)<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\t<div class=\"border-bottom border-top border-gray-300 mt-5 mb-5 msr-promo text-center text-md-left alignwide\" data-bi-aN=\"promo\" data-bi-id=\"670821\">\n\t\t\n\n\t\t<p class=\"msr-promo__label text-gray-800 text-center text-uppercase\">\n\t\t<span class=\"px-4 bg-white display-inline-block font-weight-semibold small\">Spotlight: Microsoft research newsletter<\/span>\n\t<\/p>\n\t\n\t<div class=\"row pt-3 pb-4 align-items-center\">\n\t\t\t\t\t\t<div class=\"msr-promo__media col-12 col-md-5\">\n\t\t\t\t<a class=\"bg-gray-300 display-block\" href=\"https:\/\/info.microsoft.com\/ww-landing-microsoft-research-newsletter.html\" aria-label=\"Microsoft Research Newsletter\" data-bi-cN=\"Microsoft Research Newsletter\" target=\"_blank\">\n\t\t\t\t\t<img decoding=\"async\" class=\"w-100 display-block\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2019\/09\/Newsletter_Banner_08_2019_v1_1920x1080.png\" alt=\"\" \/>\n\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"msr-promo__content p-3 px-5 col-12 col-md\">\n\n\t\t\t\t\t\t\t\t\t<h2 class=\"h4\">Microsoft Research Newsletter<\/h2>\n\t\t\t\t\n\t\t\t\t\t\t\t\t<p id=\"microsoft-research-newsletter\" class=\"large\">Stay connected to the research community at Microsoft.<\/p>\n\t\t\t\t\n\t\t\t\t\t\t\t\t<div class=\"wp-block-buttons justify-content-center justify-content-md-start\">\n\t\t\t\t\t<div class=\"wp-block-button is-style-fill-chevron\">\n\t\t\t\t\t\t<a href=\"https:\/\/info.microsoft.com\/ww-landing-microsoft-research-newsletter.html\" aria-describedby=\"microsoft-research-newsletter\" class=\"btn btn-brand glyph-append glyph-append-chevron-right\" data-bi-cN=\"Microsoft Research Newsletter\" target=\"_blank\">\n\t\t\t\t\t\t\tSubscribe today\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div><!--\/.msr-promo__content-->\n\t<\/div><!--\/.msr-promo__inner-wrap-->\n\t<\/div><!--\/.msr-promo-->\n\t\n\n\n<h2 class=\"wp-block-heading\" id=\"the-key-challenge-and-our-solution\">The key challenge and our solution<\/h2>\n\n\n\n<p>How can an AI system generate novel algorithmic programming problems <em>without knowing the solution<\/em>?<\/p>\n\n\n\n<p>Our approach uses <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/microsoft\/PythonProgrammingPuzzles\" target=\"_blank\" rel=\"noopener noreferrer\">programming puzzles<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> introduced by Microsoft Research in 2021. These puzzles\u2014known in complexity theory as the class of <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/en.wikipedia.org\/wiki\/NP_(complexity\" target=\"_blank\" rel=\"noopener noreferrer\">\u201cNP\u201d<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> decision problems\u2014are easy to check for correctness (no hidden answer key) but often difficult to solve. In this way, they\u2019re like a Rubik\u2019s cube, where it\u2019s trivial to recognize a solution but hard to find one. Three examples are illustrated below: a novel string challenge and the classic Towers of Hanoi and factoring problems. Programming puzzles can range from trivial to major open problems in algorithms and mathematics, and solving them requires all the major algorithmic techniques, such as dynamic programming and greedy algorithms. However, each puzzle just checks a single input as opposed to standard problems in algorithms, which require a solution that scales efficiently for <em>all<\/em> inputs, which is much harder to test.<\/p>\n\n\n<a class=\"wp-block-msr-block-library-page-anchor\" href=\"#heading-examples-of-programming-puzzles-for-ai-self-play\">\n\t<h3 class=\"wp-block-page-anchor__title\">\n\t\tProgramming puzzle examples\t<\/h3>\n<\/a>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"can-computers-generate-valuable-novel-challenges\">Can computers generate valuable, novel challenges?<\/h2>\n\n\n\n<p>Surprisingly, language models such as Codex and GPT-Neo can indeed create novel puzzles when prompted to generate \u201cmore like these\u201d on a set of example puzzles without solutions. You may wonder what makes a challenge good. Instead of focusing on <em>interesting<\/em>, we prioritize <em>useful<\/em> challenges. Our evaluation has the language model generate, solve, and train on its own puzzles; then we assess whether the training improved its performance on a hidden test set of puzzles. (By now, solutions to our puzzles may have leaked into AI training sets, but with the help of champion competitive programmers, we have created a secret test set that remains unpublished, which can be used for uncontaminated evaluation.) In our experiments with small- to medium-sized language models\u2014with a few billion parameters, much fewer than the latest GPT models\u2014self-training more than doubled success rates.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"risks-and-limitations\">Risks and limitations<\/h2>\n\n\n\n<p>This research was conducted prior to GPT-4\u2019s release. While we believe similar techniques may help GPT-4 self-improve in programming, this is an active area of research as we better understand the capabilities and limitations of these models, as well as their appropriate use and the potential consequences&nbsp;of increased programming capabilities. One key limitation of puzzles is that solutions might only work for the specific instance provided. However, this limitation also serves as an advantage in terms of human-AI alignment. Unlike other AI challenges with inherent ambiguities that could lead to unintended consequences if objectives are imprecisely defined (for example, an AI-designed math-tutor app that may become addicting unintendedly), our programming puzzles encompass exactly those standalone problems that can be perfectly verified for meeting a precise objective. As there remains a risk that any work that substantially advances AI programming capabilities can be used in other systems and with unintended consequences, we continue to encourage taking great care before deploying systems with artificially generated code. &nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-examples-of-programming-puzzles-for-ai-self-play\">Examples of programming puzzles for AI self-play<\/h2>\n\n\n\n<p>Each puzzle is specified by a short Python program that checks a possible answer. Each solution is a Python program that outputs an answer in a limited amount of time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-1-towers-of-hanoi\">Example 1: Towers of Hanoi<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1177\" height=\"686\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1.jpg\" alt=\"A Towers of Hanoi puzzle in three steps: the first a picture with the puzzle\u2019s seven disks on the first tower, the second a picture with the disks split among the three towers, and the third a picture of all the disks on the last tower.\" class=\"wp-image-936900\" srcset=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1.jpg 1177w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1-300x175.jpg 300w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1-1024x597.jpg 1024w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1-768x448.jpg 768w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1-480x280.jpg 480w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/programming-puzzles-example1-240x140.jpg 240w\" sizes=\"auto, (max-width: 1177px) 100vw, 1177px\" \/><\/figure>\n\n\n\n<p>The goal of the well-known <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/en.wikipedia.org\/wiki\/Tower_of_Hanoi\" target=\"_blank\" rel=\"noopener noreferrer\">Towers of Hanoi<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> puzzle is to move all the disks from the first tower to the last tower, one by one, without ever putting a bigger disk on top of a smaller disk. It\u2019s easy to check that a solution is correct but hard to find a correct solution. Even though the number of steps required to solve it is exponential in the number of disks, there\u2019s a solution in the form of a short program that is often used to teach recursion. The clever solution program that outputs the moves is easier to find than the sequence of moves itself. Here are the programming puzzle and solution:<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/akalai\/a37143022c474cd6b42716c26113a778.js\"><\/script>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-2-string-challenge\">Example 2: String challenge<\/h3>\n\n\n\n<script src=\"https:\/\/gist.github.com\/akalai\/f0921e32184e0f84b45548f8d9907bd8.js\"><\/script>\n\n\n\n<p>This concise puzzle perplexes AI systems, although humans find it simple. The puzzle requires a string with 1,000 \u201cA\u201d characters but no two consecutive A\u2019s. Most programmers devise solutions like \u201cABABAB \u2026\u201d (1,000 times), generated by the compact Python solution above. In contrast, AI systems usually need multiple attempts. Fortunately, AI systems can easily verify their attempts by running the checking program. This puzzle exemplifies a straightforward, unique problem specifically created for our dataset.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-3-integer-factorization\">Example 3: Integer factorization<\/h3>\n\n\n\n<script src=\"https:\/\/gist.github.com\/akalai\/35923841f4c11b863bbb2d56c6765018.js\"><\/script>\n\n\n\n<p>Another classic example is integer factorization. The puzzle above requires a factor of a relatively small number so it can be solved quickly by a simple loop. However, our dataset also contains factoring challenges like the 309-digit <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/en.wikipedia.org\/wiki\/RSA_Factoring_Challenge\" target=\"_blank\" rel=\"noopener noreferrer\">RSA Factoring Challenge<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> number, which was published in 1991 along with a $100,000 prize. The 309-digit number was never factored, and the challenge has since ended.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Self-play has helped AI systems succeed in games like chess and Go. Can the same method help improve AI programming abilities? Using easy-to-check, hard-to-solve programming problems, researchers show AI can create, solve, and train on its own puzzles.<\/p>\n","protected":false},"author":42183,"featured_media":936888,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr-author-ordering":[{"type":"user_nicename","value":"Adam Tauman Kalai","user_id":"30834"},{"type":"user_nicename","value":"Patrick Haluptzok","user_id":"42717"}],"msr_hide_image_in_river":0,"footnotes":""},"categories":[1],"tags":[],"research-area":[13556],"msr-region":[],"msr-event-type":[],"msr-locale":[268875],"msr-post-option":[243984],"msr-impact-theme":[],"msr-promo-type":[],"msr-podcast-series":[],"class_list":["post-936864","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-research-blog","msr-research-area-artificial-intelligence","msr-locale-en_us","msr-post-option-blog-homepage-featured"],"msr_event_details":{"start":"","end":"","location":""},"podcast_url":"","podcast_episode":"","msr_research_lab":[199563],"msr_impact_theme":[],"related-publications":[],"related-downloads":[],"related-videos":[],"related-academic-programs":[],"related-groups":[],"related-projects":[794675],"related-events":[],"related-researchers":[],"msr_type":"Post","featured_image_thumbnail":"<img width=\"960\" height=\"540\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-960x540.jpg\" class=\"img-object-cover\" alt=\"A flow chart demonstrating the five steps in a self-play pipeline for a language model to improve itself automatically.A self-play pipeline for a language model (LM) to improve itself in a fully automatic manner. First, the LM generates novel puzzles based on a training set of handwritten puzzles. Then, the LM attempts to solve each of these puzzles 100 times. In Step 3, the computer (specifically a Python interpreter) filters the candidate solutions for correctness. Finally, the LM is improved by further training on these verified correct solutions to synthetic puzzles, and the process repeats. This process leads to significant improvements as measured on held-out test puzzles that were also handwritten.\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-960x540.jpg 960w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-300x169.jpg 300w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-1024x576.jpg 1024w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-768x432.jpg 768w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-1066x600.jpg 1066w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-655x368.jpg 655w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-343x193.jpg 343w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-240x135.jpg 240w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-640x360.jpg 640w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero-1280x720.jpg 1280w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/04\/1400x788-stagnant-hero.jpg 1400w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/>","byline":"Adam Tauman Kalai and Patrick Haluptzok","formattedDate":"May 2, 2023","formattedExcerpt":"Self-play has helped AI systems succeed in games like chess and Go. Can the same method help improve AI programming abilities? Using easy-to-check, hard-to-solve programming problems, researchers show AI can create, solve, and train on its own puzzles.","locale":{"slug":"en_us","name":"English","native":"","english":"English"},"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts\/936864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/users\/42183"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/comments?post=936864"}],"version-history":[{"count":39,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts\/936864\/revisions"}],"predecessor-version":[{"id":948357,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts\/936864\/revisions\/948357"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/936888"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=936864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/categories?post=936864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/tags?post=936864"},{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=936864"},{"taxonomy":"msr-region","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-region?post=936864"},{"taxonomy":"msr-event-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-event-type?post=936864"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=936864"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=936864"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=936864"},{"taxonomy":"msr-promo-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-promo-type?post=936864"},{"taxonomy":"msr-podcast-series","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-podcast-series?post=936864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}