Ani jsem si neškrtl. Přesně tento typ zápisu úloh jsem vždy nesnášel kvůli její praktické nevyužitelnosti a jsem rád, že moji kantoři se tomuto typu matematických nesmyslů a zbytečností nikdy pořádně nevěnovali a po nás to nevyžadovali.
Podle mě důvodem proč dané AI jazykové modely selhávají je to, že tyto typy příkladů nikdo neučí, neřeší kvůli jejich nevyužitelnosti a nesmyslnosti, a tak nemají dostatečné množství příkladů na kterých se mohou učit(trénovat).
Nevím (aktuálně se řeší jestli obecné LLM umí šachy, model podobný LLM speciálně natrénovaný na šachy ano), komentoval jsem hlavně to "tohle vyžaduje Opravdovou Inteligenci".
Beru to jako názor. Ale nepřesvědčil jste mě.
Klíčové bude uvědomění si sebe sama.
Což ze své podstaty LLM nedá.
Je to stroj, který skládá slova/obrázky/figurky na šachovnici/ .... podle vzorce který okoukala jinde.
Ale odpovědi na otázky, které nejsou na vstupu, nedá. Alespoň ta verze kterou jsem zkoušel.
Začne leda halucinovat.
Možná ale....
Když bude mít halucinací velké množství.
A sebekontrolou chybné výsledky zahodí.
Zůstane jen jedna. Správná myšlenka. Pak to bude myšlení. A ne jen papouškování.
Bartolo: V čem se liší halucinace LLM od téhle vaší halucinace? Odpovědi na otázky, které nebyly v trénovacích datech, LLM samozřejmě zvládá. Ne na všechny, ale na mnoho ano. Princip uvědomění sebe sama neznáme pořádně ani u lidí, takže těžko můžete tvrdit, že nic takového LLM umět nemůže. Kde berete tu jistotu, že lidský mozek není také jen stroj, který skládá slova či obrázky podle vzorců, které se naučil v dětství?
Klíčové bude uvědomění si sebe sama.
Podle mě bude klíčové zavedení hromady rychlých zpětných vazeb. Na mnoha úrovních. Člověk je schopen se poučit sám ze svých vlastních myšlenek přímo během procesu přemýšlení. Tohle jsi možná myslel tou sebekontrolou, ale podle mě je prostě nutné mít ty zpětné vazby hodně rozprostřené. Mít jednu zpětnou vazbu až na konci je, podle mě, dost málo.
Člověk je schopen se poučit sám ze svých vlastních myšlenek přímo během procesu přemýšlení.
Něco takového už pokud vím GPT-o1 dělá. Tj. už nefunguje tak, že by jen generoval text pořád dopředu, ale nejprve to analyzuje zadání, pak generuje odpověď a na závěr odpověď validuje. Není to hromada zpětných vazeb, ale nějaké tam jsou.
Umělá inteligence byla definována mnoha různými zpusoby ale vždy ty definice mluvili o schopnosti řešit problémy, a/nebo učit se, a/nebo přizpůsobovat se a/nebo přesvědčit pozorovatele o své inteligenci. Nemyslím si( a to jsem z oboru) že tu kdy byla (široce uznávaná) definice inteligence která zahrnovala schopnost sebeuvědomění. Ostatně do tedka si věda není jistá co vlastně sebeuvědomění je a zda je vlastní psům, kočkám a ostatním tvorům. Myslím si tedy, že si pletete pojmy a nějaké své dojmy.
Čím dál tím víc se ukazuje, že současné LLM je sice super na hledání souvislostí v obrovském korpusu informací, ale k reálné AGI má ještě hodně daleko. Prostě takový "čínský pokoj" v praxi.
Jako search engine co umí rovnou přizpůsobit výstup je to super. Ale hodně to závisí na tom, jestli má podobnou úlohu ve svém korpusu. Většina věcí, co programátor ve své praxi řeší nová není, takže to funguje dobře.
Ve chvíli, kdy po tom chci řešit nějakou víc exotickou úlohu, tak to hanebně vyfailuje a ani to nemusí být těžká úloha. Třeba když jsem po něm chtěl, aby mi napsal jednoduchou animaci odrážejícího se míčku pro DOS v NASM, nedokázal to GPT4 ani s velkou dopomocí, byl úplně mimo. Přitom určitě má dost informací o tom, jak funguje x86 assembly, jak funguje DOS, jak funguje VGA atd. Ale evidentně je nedokáže dát dohromady, protože nemá dost podobných úloh, protože takové věci dneska už nikdo nedělá.
k reálné AGI má ještě hodně daleko
Nerozumím tomu, proč lidé stále spojují řešení problémů s A(G)I.
Když si vezmu IT. Tak už desítky let máme hotové, odzkoušené algoritmy, napsané v hromadě různých jazyků, uspořádané, otagované. Proč už dávno neexistuje systém (schválně tomu vůbec nedávám příponu AI), který by vzal nějaký kontejner, o kterém ví, že je sortable a tomu kontejneru nepředal sort? A někde před to nějaký vhodný input a někde za to vhodný output.
A tímto stylem by mělo být relativně snadné vytvořit systém, který na požádání vyrobí hotový program. Nebo třeba ne rovnou hotový program, ale jen o něco větší stavební bloky. Když jako příklad uvedu celkem jednoduchou věc, tak jen velmi výrazně ořezávaný brute force alg by tohle měl zvládnout. Ořezávaný třeba typy a interfaces. Ve velmi hloupé variantě se vezmou všechny dostupné metody/funkce/procedury, vyzkoušejí se všechny jejich kombinace, které k sobě pasují. U vhodně "otagovaných" funcí se to vždy trefí a pasuje k sobě jen to, co pasovat má. (A tohle v javě nebo v C# máme pár desítek let.)
Úplně všechny komponenty na to existují už minimálně 30 let. A je hromada jazyků, které mají intefaces nebo něco podobného, takže víme, které komponenty lze složit k sobě ze sémantického hlediska a samozřejmě už nějakých 70 let víme, co lze spojit ze syntaktického hlediska (silné a statické datové typy - když si vezmu ten nejjednodušší příklad).
Takže ne, nepotřebujeme AGI. Stačí stupidní brute force navržený výše a pokud by náhodou nefungoval, tak mě zajímá proč (v public verzi).
Stačí pár bloků a možných kombinací je astronomické množství, či dokonce nekonečno. Drtivá většina je úplný nesmysl a zbytek kromě pár kousků je mi taky k ničemu.
Jak chcete hledat jehlu v Hilbertově kupce sena? ;)
Cynik by řekl že popisu, jak mají být ty bloky pospojované se obvykle říká "programování" :D
Stačí pár bloků a možných kombinací je astronomické množství, či dokonce nekonečno.
Právě že není. Tohle je podle mě jeden z mnoha mýtů, které v moderním světě panují. Rozhodně v IT nemáme tolik unikátních funkčních bloků (s podmínkou vzájemné propojitelnosti), aby se to dalo smést ze stolu aproximací k nekonečnu. V praxi se spíš naráží na to, že výběr vhodných komponent je třeba nula.
Drtivá většina je úplný nesmysl a zbytek kromě pár kousků je mi taky k ničemu.
Ano a přesně tohle je to moje prořezání. Co nejde propojit, vypadne z toho alg okamžitě.
Cynik by řekl že popisu, jak mají být ty bloky pospojované se obvykle říká "programování" :D
To ano, ale programování na nějaké nižší úrovni není nic jiného, než skládání vhodných bloků k sobě. Víme, co patří k sobě, tak z toho jen skládáme něco nového. Fakt není potřeba se tvářit, že se každý den vytváří něco unikátního.
Ehm. Na to nekonečno stačí jediný blok co má stejný typ na vstupu i výstupu.
To, že něco nejde propojit na to prořezání fakt nestačí. Vemte si, kolik se toho dá udělat s jedním blbým intem.
A na základě čeho to vůbec chcete prořezávat? Pokud nějaké neformální a vágní požadavky překlopíte na formální specifikaci, máte program. Deklarativní programování je staré skoro jako náš obor. A fakt na to nepotřebujeme bruteforce skládat bloky, umíme to už dávno výrazně líp.
Na to nekonečno stačí jediný blok co má stejný typ na vstupu i výstupu.
To ano, ale zase ten alg ví, že skládá stejné bloky.
Vemte si, kolik se toho dá udělat s jedním blbým intem.
Tohle mi připomnělo skvělou přednášku od Joe Armstronga (autora Erlangu): https://www.youtube.com/watch?v=lKXe3HUG2l4
Noo nerad bych byl kverulantem, ale k tomu brute force, neni NP-complete to nejhorsi, co muze cloveka potkat (treba i jen nektere ulohy kolem "jednoduchych" regexpu spadaj do PSPACE), a pocet elementarnich castic v nasem Vesmiru je konecny a pomerne maly ;-) (a o M-H casoprostorech, ktere by s podobnymi problemy mohly pomoci, si muzeme nechat jen zdat, teda pokud nechcete kvuli tomu riskovat skok do rotujici cerne diry).
(Teda pokud se nebavime o trivialnich problemech, jako to co popisujete coz umi i qsort v libc v starem dobrem cecku)
Proč už dávno neexistuje systém (schválně tomu vůbec nedávám příponu AI), který by vzal nějaký kontejner, o kterém ví, že je sortable a tomu kontejneru nepředal sort? A někde před to nějaký vhodný input a někde za to vhodný output.
Takto?
cat input | sort > output
Zvlada to aj kazdy programovaci jazyk - asi kazdy ma metodu "sort".
Je opravdu nutné do každé diskuse, která se týká nějakého obecného problému psát triviální řešení naznačeného problému?
Příklad s tím sortem opravdu nebyl určen k tomu, aby tady někdo napsal výsledek. Tento příklad tady všichni známe nejen v shellu, ale v hromadě prog jazyků. Ten příklad měl sloužit k tomu, že v prog jazycích máme 30 let strojově čitelně označené jednotlivé komponenty, cca 70 let známe jejich argumenty, takže i poměrně hloupý program měl být schopen sestavit tyto známé komponenty k sobě funkčním způsobem.
A moje diskusní otázka je proč už to tady není dávno? Proč se na tyto dávno připravené bloky dnes spíše neúspěšně používá LLM, přičemž už dávno "víme" (ano, my lidé to víme od počátku, ale počítače mají šanci to správně sestavit už pár desítek let), co jde k sobě spojit a jak.
Jenže zadání je formulované lidskou řečí, takže tomu se vyhnout nelze.
Dneska opravdu nikdo neprogramuje řazení znovu od nuly. Programy se dávno skládají z hotových bloků – ale to, jaké bloky spojit, aby to odpovídalo zadání (tedy vytvoření algoritmu), to nejde dělat hrubou silou. To je role programátora, nebo dnes některé věci zvládne současná AI.