{
  "version": 1,
  "language": "en",
  "title": "Train with generated history",
  "description": "Real past supplies input for teacher forcing. Student-generated history supplies input for the student. A teacher supplies supervision for the student’s distribution.",
  "caption": "Figure 4. Self-Forcing trains with student-generated history and teacher supervision for the student’s distribution. Teacher forcing uses real past. Orange shows generated-state feedback, which alone cannot ensure long-horizon stability. The author made this diagram to show the relations.",
  "alt": "Teacher forcing uses real past. Student-generated history supplies input for the student. A teacher supplies supervision for the student’s distribution.",
  "sources": [
    {
      "path": "content/blog/2026-06-23_streaming-autoregressive-video-generation/post.md",
      "description": "Article explanation and retained source citations"
    }
  ],
  "limitations": [
    "The playback is an example. Playback time is not measured runtime.",
    "The histories show the difference between training distributions. The diagram does not imply full backpropagation through all rollout steps. It does not guarantee long-horizon stability."
  ],
  "targets": {
    "real": {
      "id": "mechanism-real",
      "kind": "node",
      "label": "Real past"
    },
    "studentReal": {
      "id": "mechanism-studentReal",
      "kind": "node",
      "label": "Student"
    },
    "objective": {
      "id": "mechanism-objective",
      "kind": "node",
      "label": "Training objective"
    },
    "generated": {
      "id": "mechanism-generated",
      "kind": "node",
      "label": "Generated past"
    },
    "studentSelf": {
      "id": "mechanism-studentSelf",
      "kind": "node",
      "label": "Student rollout"
    },
    "latent": {
      "id": "mechanism-latent",
      "kind": "node",
      "label": "New latent"
    },
    "teacher": {
      "id": "mechanism-teacher",
      "kind": "node",
      "label": "Teacher loss"
    },
    "realStudent": {
      "id": "mechanism-realStudent",
      "kind": "edge",
      "label": "realStudent"
    },
    "realObjective": {
      "id": "mechanism-realObjective",
      "kind": "edge",
      "label": "realObjective"
    },
    "selfStudent": {
      "id": "mechanism-selfStudent",
      "kind": "edge",
      "label": "selfStudent"
    },
    "selfLatent": {
      "id": "mechanism-selfLatent",
      "kind": "edge",
      "label": "selfLatent"
    },
    "teacherLoss": {
      "id": "mechanism-teacherLoss",
      "kind": "edge",
      "label": "teacherLoss"
    },
    "historyFeedback": {
      "id": "mechanism-historyFeedback",
      "kind": "edge",
      "label": "historyFeedback"
    }
  },
  "stateLabels": {
    "context": "Student conditioning history",
    "prediction": "Generated prediction",
    "supervision": "Supervision path"
  },
  "scenarios": [
    {
      "id": "self-generated",
      "title": "Training with generated context",
      "description": "The student is trained with generated context.",
      "initial": {
        "context": "Student rollout prefix",
        "prediction": "No generated latent",
        "supervision": "Training only"
      },
      "unselected": [
        "real",
        "studentReal",
        "objective",
        "realStudent",
        "realObjective"
      ],
      "steps": [
        {
          "title": "Use the generated prefix",
          "description": "Use the generated prefix.",
          "duration": 3000,
          "active": [
            "generated"
          ],
          "paths": [],
          "state": {
            "context": "Student-generated past",
            "prediction": "No generated latent",
            "supervision": "Training only"
          }
        },
        {
          "title": "Condition the student",
          "description": "Condition the student.",
          "duration": 3000,
          "active": [
            "studentSelf"
          ],
          "paths": [
            "selfStudent"
          ],
          "state": {
            "context": "Student-generated past",
            "prediction": "The student calculates the next latent.",
            "supervision": "Training only"
          }
        },
        {
          "title": "Generate the next latent",
          "description": "Generate the next latent.",
          "duration": 3000,
          "active": [
            "latent"
          ],
          "paths": [
            "selfLatent"
          ],
          "state": {
            "context": "Student-generated past",
            "prediction": "A new student latent is available.",
            "supervision": "Training only"
          }
        },
        {
          "title": "Use training supervision",
          "description": "Use training supervision.",
          "duration": 3000,
          "active": [
            "teacher",
            "latent"
          ],
          "paths": [
            "teacherLoss"
          ],
          "state": {
            "context": "Student-generated past",
            "prediction": "A new student latent is available.",
            "supervision": "Teacher distribution-level signal"
          }
        },
        {
          "title": "Send generated history to the student",
          "description": "Send generated history to the student.",
          "duration": 3000,
          "active": [
            "generated"
          ],
          "paths": [
            "historyFeedback"
          ],
          "state": {
            "context": "Student output extends the prefix.",
            "prediction": "A new student latent is available.",
            "supervision": "Teacher distribution-level signal"
          }
        }
      ]
    },
    {
      "id": "real-history",
      "title": "Compare the teacher-forced context.",
      "description": "This case uses teacher-forced context.",
      "initial": {
        "context": "Real training prefix",
        "prediction": "No generated latent",
        "supervision": "Training only"
      },
      "unselected": [
        "generated",
        "studentSelf",
        "latent",
        "teacher",
        "selfStudent",
        "selfLatent",
        "teacherLoss",
        "historyFeedback"
      ],
      "steps": [
        {
          "title": "Read the real past",
          "description": "Read the real past.",
          "duration": 3000,
          "active": [
            "real"
          ],
          "paths": [],
          "state": {
            "context": "Ground-truth past",
            "prediction": "No generated latent",
            "supervision": "Training only"
          }
        },
        {
          "title": "Condition the student",
          "description": "Condition the student.",
          "duration": 3000,
          "active": [
            "studentReal"
          ],
          "paths": [
            "realStudent"
          ],
          "state": {
            "context": "Ground-truth past",
            "prediction": "Prediction from real context",
            "supervision": "Training only"
          }
        },
        {
          "title": "Calculate the objective value",
          "description": "Calculate the objective value.",
          "duration": 3000,
          "active": [
            "objective"
          ],
          "paths": [
            "realObjective"
          ],
          "state": {
            "context": "Ground-truth past",
            "prediction": "Prediction from real context",
            "supervision": "Supervised training objective"
          }
        }
      ]
    }
  ]
}
