Tedy, nepsal jsem článek do impaktovaného časopisu. Skutečnou vědu jsem už dávno opustil a tento problém se nekvalifikuje, protože už jej vyřešili jiní. Ale nebyl lehký a už pěkných pár let mi ležel v hlavě. (Link zde).
sobota 8. listopadu 2025
Jak jsem psal článek s jazykovým modelem
Otázka je následující: Kdybych měl raketu, u které dokážu měnit rychlost, jakou palivo tryskou opouští komoru, můžu fungovat ve dvou módech: Při vysoké rychlosti (a tedy energii) spalin pálím palivo úsporně. Zrychlení je miniaturní, ale palivo mi dlouho vydrží a celkově můžu změnit rychlost rakety o hodně. Při nízké rychlosti spalin zvládnu posílat paliva za sekundu víc. Okamžité zrychlení je vyšší, ale palivo mi dřív dojde. Kdybych plánoval přesun mezi dvěma planetami, existuje určité optimum, jak to přesně dělat, abych do cíle dorazil co nejrychleji (a taky s cílem srovnal rychlost). A rychlost paliva se bude měnit v čase.
Teď nechci tolik psát o problému samotném, ale jak mi k řešení pomohla kombinace jazykových modelů (hlavně o3 a Gemini 2.5 Pro), a jak jsem s nimi vyřešil problém, který jsem sám vyřešit neuměl a poměrně rychle z něj dostal obstojně vypadající text. Z fyziky řeknu jenom tolik, aby bylo jasné, co se snažím vyřešit a kde mi modely pomohly.
Když jsem úlohu zkoušel řešit sám, uměl jsem si poradit s jednorozměrným případem bez gravitačního pole. Tam je to v podstatě variační úloha, která se musí vhodně parametrizovat, vyřešit Euler-Lagrangeovu rovnici a u řešení pak nastavit integrační konstanty tak, že člověk "sešije" etapu, kdy raketa zrychluje, kdy vypne motory a jen volně pluje, a kdy zpomaluje, do jedné rovnice. Varianta ve více rozměrech a s gravitačním polem hvězdy byla beznadějně složitá, a tak jsem zkoušel různé numerické procedury.
Při cestě z planety na planetu je těžké se trefit do koncové polohy a rychlosti a člověk tedy neřeší jenom problém, aby trajektorie byla co nejrychlejší, ale aby v cíli vůbec skončil. Zkoušel jsem tedy opačný přístup: nakreslit trajektorii v čase tak, aby se do cíle trefila, spočítat, kolik mě to stálo paliva a pak minimalizovat palivo dokud není pod tolerovanou mezí, a pak teprv čas. Vůbec to nefungovalo. Trajektorie měla hodně parametrů a každý solver, který jsem zkusil se hned zasekával v lokálních minimech.Tak jsem dělal variace: nakreslit trajektorii, která se trefí do cíle a je definovaná jen několika málo parametry (první členy Fourierova rozvoje, spliny, apod.). To trochu fungovalo v tom smyslu, že to našlo nějaké trajektorie, ale ani zdaleka nebyly ty nejrychlejší, což se dalo poznat z různých kontrol konzistence.
A teď se dostávám ke své spolupráci s modely. Nejprve jsem se snažil ptát na různé variace této úlohy. Přesvědčit model, aby řešil nejprve tu jednoduchou jednorozměrnou úlohu, pak aby se zamyslel nad tou těžší, apod. Trvalo mi nějakou dobu se správně zeptat, ale pak mi o3 řekl o Pontriaginově principu maxima, který jsem neznal. Je to Hamiltonovská obdoba lagrangeových multiplikátorů pro variační úlohy, která explicitně zavádí extra proměnné pro to, jak raketu řídit. Přišlo mi to jako potenciálně nadějná cesta, a tak jsem trápil o3, aby rovnice vyřešil pro raketu v Keplerovském poli. Přesné řešení úloha nejspíš nemá, ale diferenciální rovnice model odvodil. Jedna z věcí, které je ale potřeba pořád kontrolovat je správnost. LLM dělají chyby. Řešení jsem střídavě předhazovat o3 s Gemini 2.5 Pro jako reviewerem, pak naopak, a pak zase znovu, až jsem se nakonec dostal k formulaci, které jsem docela věřil.
Další fáze byla implementace v Pythonu. Na podobné problémy existují specializované knihovny a stroj mi navrhoval kód s takovými knihovnami. Problém byl, že když kód nenašel řešení, vůbec jsem nevěděl proč. Přiměl jsem model napsat všechno od začátku. Chtělo to potom hodně debugování, kde člověk pochopí, co se děje špatně, řekne modelu, co zlepšit, a iteruje. Taky jsem používal modely střídavě, občas se jeden z nich zasekl a dělal pořád stejné chyby, a jiný model to rychle vyřešil. Vyplatilo se mi taky mít kód v gitu a umazávat nechtěné změny. Oba modely rády mění komentáře a stylistické věci, když kód přepisují. Pravděpodobně artefakt reinforcement-learningu, je velmi patrné, které části kódu na výsledek nemají žádný vliv.
Pak přišla část, kdy jsem kódu už docela věřil, ale pořád nenacházel řešení. To byl moment, kdy jsem musel modely vést hodně za ruku a použít určitý "expertní vhled". Přiměl jsem je přepsat kód tak, aby solver používal bezrozměrné diferenciální rovnice. Pak se totiž dá čekat, že hledané parametry budou alespoň řádově podobné jedničce a nebudou v rozsazích mnoho řádů jinde. Taky jsem zjednodušil úlohu: už jsem nechtěl najít řešení, kde cílová planeta je na konkrétním místě, hledal jsem prostě jakékoliv řešení, kde cílová rychlost je tečná ke kruhové dráze a má tu správnou velikost. Nakonec jsem takové řešení našel.
Finální krok byl začít s tím řešením, které už funguje a vždy malinko posunout cílovou pozici planety směrem, kde jsem ji chtěl mít. Pak se dá předpokládat, že i vstupní parametry se změní jen o malinko, a solver dost blízké řešení najde. Tyto úpravy jsem dělal sám ručně.
Poslední fází bylo sepsat článek. Tam jsem vždy jeden model požádal, aby rovnice, na kterých je zdrojový kód založen a o kterých jsme se bavili, sepsal jako LaTeX. Ten druhý model jsem pak požádal o review a o to, aby našel chyby a možné vylepšení. Takto jsem iteroval, dokud jsem neměl LaTeX kód, se kterým jsem byl spokojen. Jediné, co mne teď odrazuje od toho, abych se s článkem nějak víc chlubil je, že jsem jej vlastně nikdy nečetl v takovém detailu, abych jeho obsahu úplně věřil.
Můj závěr je, že s moderními LLM modely se dá velmi dobře fungovat jako hydra-tým. Člověk je důležitou součástí procesu, aby držel záměr, a taky je potřeba, aby pomohl modelu překlenout úseky, kde by se model zasekl. Ale zároveň mi model ukázal nové přístupy, které bych bez něj jen těžko hledal, a usnadnil mi práci natolik, že jsem byl schopný dát dohromady po večerech po práci, což by se bez takového usnadnění jinak zcela jistě nestalo.
sobota 1. listopadu 2025
Od doby, co známe Obecnou teorii relativity, víme, že existují řešení, které fungují jako stroje času. Jeden takový stroj času se nachází uvnitř rotující (Kerrovy) černé díry v podobě časoprostoru umožňujícím uzavřené světočáry. Většina časoprostorů, které tyto vlastnosti mají, vyžadují hmotu, která by měla zápornou klidovou hmotnost, nebo se stroj času schovává pod horizontem událostí. Většina fyziků o kterých vím si příliš nemyslí, že by stroje času byly ve skutečnosti možné. Často se však vyskytují v zajímavějších sci-fi, a je to jedna z věcí, nad kterou je radost přemýšlet.
Rád bych se dnes zamyslel nad jedním konkrétním strojem času. Ten funguje tak, že se v jeden konkrétní moment aktivuje a vrátí určitou oblast P zpět v čase o čas T. Chtěl bych ho zkoumal v pohledu klasické newtonovské fyziky, kdy máme N částic, které na sebe nějak silově působí. Hned si všimneme jedné podivnosti: Protože máme jenom jeden časoprostor a jednu verzi historie, musí částice v oblasti P v t = 0 a v čase t = T být naprosto identické, včetně poloh a rychlostí. To vypadá jako něco velmi nepravděpodobného - stroj času dělá něco velmi zvláštního s entropií. Je snadné to uvidět na příkladu hodinek, které jsem dostal od svého otce, odcestoval jsem s nimi do minulosti a tam je otci za jeho mladých let dal. Hodinky nikde neznikly a jenom chodí časem tam a zpět. Že se někdy musí jejich entropie snižovat, pokud se jindy zvýší, je tady velmi patrné. Hlavní otázka, které mě zajímá je, jestli vůbec existuje fyzikálně možné řešení pro velké množství částic, a jak trochu lépe formalizovat, co se to s entropií děje.
Konkrétně se dá takový stroj času přeformulovat jinak: místo abych řekl, že čas vrací oblast P z budoucnosti do minulosti, budu si představovat, že v čase t = 0 zadávám počáteční podmínku pro všechny částice. Teď ale navíc mám to omezení, že stav, který nastavím pro oblast P, se musí přesně zopakovat i v čase T = 0. Kdybych měl N částic, za normálních okolností bych vybíral počáteční podmínku z 6N-dimenzionálního prostoru. (3 polohy + 3 rychlosti za částici). Pokud je ale M z nich v oblasti P, mám také 6M vazeb, a tedy celkově volím počáteční podmínku jenom z 6(N-M)-rozměrného prostoru. Pro danou vazbu může sice existovat více řešení, ale to neznamená, že by se tím obecně zvedala dimenzionalita počáteční podmínky.
Ve skutečnosti je to ještě trochu složitější. Zaprvé: Pokud bych před existencí stroje času měl N částic a zvažuji, jestli M z nich neskončí ve stroji času, musím uvažovat, že těchto M částic vytvoří (z hlediska formalismu stanovování počáteční podmínky s budoucí vazbou) K replik, jak částice prochází strojem času několikrát. Tyto repliky ale nezvyšují dimenzionalitu vstupní počáteční podmínky, protože za každou repliku, kterou přidáme navíc do oblasti P v t=0, přidáme taky jednu vazbu v oblasti P v čase t=T. Zadruhé: Stroje času v principu umožňují existenci částic s uzavřenou světočarou, které prochází strojem stále dokola a nemají původ ve světě před strojem času. Tam opět platí, že pokud přidám L takových částic navíc, přidám pro ně také L vazeb. To, že mohu zkoušet přidávat K>0 a L>0 extra částic jistě rozšiřuje šanci, že existuje řešení se strojem času, ale díky vazbám to ve skutečnosti nezvyšuje počet volných parametrů, které mám.
Co se dohromady snažím ukázat úvahami o vazbách bude možná daleko jasnější pohledem na tento obrázek, kde je jen jedna dimenze (vodorovně) a čas (svisle). Vidíme, že ačkoliv díky existenci stroje času máme potenciálně mnoho replik, jediný volný parametr, který opravdu můžu měnit je poloha a rychlost jedné částice.
Vazby nejsou jediný efekt, který stroj času má na možnou existenci řešení. Pokud např. řeknu, že v t=0 v P žádná částice není, vytvářím tím taky podmínku na všechny částice v t=0 mimo P. Žádná totiž nesmí zabloudit do P v t=T. To je také podmínka, ale není tak tvrdá, jako vazba pro přesnou polohy a hybost částice. Jen z možných počátečních podmínek vysekne určitou část prostoru, a je tedy analogická např. podmínce x < 0 ∨ x > 1. Připomeňme, že rovnice klasické mechaniky ve fázovém prostoru poloh a hybností fungují stejně jako rovnice pro nestlačitelnou kapalinu. Oblast P do které v čase T částice nesmějí vstoupit bude mít dobře definovaný tvar. V t=0 se tento tvar promíchá, jako by se promíchala "fázová kapalina", a tvar zakázané oblasti ve fázovém prostoru bude proto potenciálně velice komplikovaný, ale zachová se dimenze původního povoleného prostoru. Tento zakázaný objem ale ale pravděpodobně alespoň částečně kompenzuje tím, že při hledání řešení hledám přes všechny K>0 a L>0. Podobně jako na ilustračním obrázku pro mnoho uspořádání, kdy částice do oblasti P v t=T vletí, bude existovat nějaká konfigurace přidaných replik částice, která na toto řešení naváže.
Co to dohromady znamená?
Kdyby existoval jen stroj času a nebyly by žádné částice mimo něj, dimenze povolené počáteční podmínky bude díky vazbám 1. Pravděpodobně bude existovat jen konečně mnoho řešení, nejvýše spočetně mnoho řešení.
Kdyby existoval jen stroj času a nebyly by žádné částice mimo něj, dimenze povolené počáteční podmínky bude díky vazbám 1. Pravděpodobně bude existovat jen konečně mnoho řešení, nejvýše spočetně mnoho řešení.
Pokud by stroj času vznikl dynamicky, pravděpodobně by měl počet volných řešení stejnou dimenzi, jako má počáteční podmínka pro částice, které se nachází mimo něj, podle logiky "za každou repliku a částici s uzavřenou světočarou jedna vazba". Člověk by tedy neměl očekávat, že možných řešení bude velmi málo nebo žádné, ani pro velké množství částic.
Zpětně viděno je to možná triviální pozorování, ale je to myšlenkové cvičení, které jsem dlouho chtěl udělat, protože jsem měl celkem silnou intuici, že pro velké množství částic by počet řešení mohl být malý, nebo téměř žádný, a že podmínka self-konzistence je tak silná, že se entropie bude v přítomnosti strojů času chovat velmi podivně. Úvahy o vazbách a počátečních podmínkách neříkají nic moc konkrétního, ale umožňují se zamyslet, které situace jsou velmi nepravděpodobné (prsten složený z částic s uzavřenou světočarou) a které naopak jsou relativně neproblematické (částice vlétající do stroje času a po několika smyčkách ho zase opouštějící).
Přihlásit se k odběru:
Komentáře (Atom)