{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/Interpretable-token-embedding-axes",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"This is a rich topic. Let me build an interactive explorer showing the classic token embedding axes \\u2014 like those from Word2Vec \\u2014 and what happens when you rotate them to find human-interpretable dimensions.The core idea behind each tab is what makes this conceptually interesting:\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"High-dimensional embeddings aren't interpretable by default.\"), \" A typical embedding might be 768 or 1536 dimensions, and each raw axis is just a weight from training \\u2014 not \\\"gender\\\" or \\\"sentiment.\\\" But the geometry of the space develops meaningful structure on its own.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"How interpretable axes are found:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You take pairs of known contrasting words (man/woman, good/bad, formal/informal) and compute the difference vector\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"That difference vector often generalizes \\u2014 it's a direction in the space, not tied to those specific words\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You can then project any token onto that direction to score it along that axis\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"What this visualization simplifies:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Real embeddings are hundreds of dimensions compressed to 2D here, so positions are approximate/illustrative\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The axes aren't perfectly orthogonal in practice \\u2014 gender and royalty correlate slightly in any corpus trained on historical text\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Modern LLM embeddings (transformer-based) are richer and more contextual than Word2Vec, making clean linear directions harder to isolate \\u2014 though they still exist\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Why this matters:\"), \" This is the basis of techniques like \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/RLHF-steering-vectors\",\n    \"title\": \"RLHF steering vectors\"\n  }, \"RLHF steering vectors\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/activation-patching\",\n    \"title\": \"activation patching\"\n  }, \"activation patching\"), \", and \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/concept-probing\",\n    \"title\": \"concept probing\"\n  }, \"concept probing\"), \" \\u2014 you can find the \\\"has a negative connotation\\\" direction in a model's residual stream and push it around to understand or control model behavior.\"));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[]}},"pageContext":{"slug":"Interpretable-token-embedding-axes","node":{"childMdx":{"slug":"Interpretable-token-embedding-axes"}}}},
    "staticQueryHashes": []}