Vlákno názorů k článku
Nový test FrontierMath AI nezvládá od i4nf0x - Čím dál tím víc se ukazuje, že současné...

  • Článek je starý, nové názory již nelze přidávat.
  • 16. 11. 2024 10:47

    i4nf0x

    Čí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á.

  • 16. 11. 2024 18:04

    Heron

    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/pro­cedury, 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).

  • 16. 11. 2024 19:26

    JSH

    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

  • 17. 11. 2024 9:16

    Heron

    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.

  • 17. 11. 2024 13:27

    JSH

    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.

  • 17. 11. 2024 13:40

    Heron

    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

  • 17. 11. 2024 13:55

    JSH

    > To ano, ale zase ten alg ví, že skládá stejné bloky.

    To nestačí. Ještě potřebuje nějak vědět jestli ty stejné bloky má nebo nemá smysl skládat za sebe. Úplně jasné je to jen u triviálních příkladů. U složitějších věcí jsme u věštění, co to asi zadavatel chtěl.

  • 17. 11. 2024 3:48

    Wasper

    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)

  • 17. 11. 2024 9:03

    [object Object]

    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".

  • 17. 11. 2024 9:25

    Heron

    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.

  • 17. 11. 2024 11:09

    Filip Jirsák
    Stříbrný podporovatel

    Protože

    a) Zadání je psané lidskou řečí a někdo musí provést tu algoritmizaci, tedy popsat, jaká posloupnost těch známých bloků povede na požadovaný výsledek.

    b) Nepasují přesně výstupy jednoho bloku na jiný blok, je potřeba tam provádět transformace.

  • 17. 11. 2024 13:18

    Heron

    Mě v této úvaze vůbec nejde o lidskou řeč. Ta technologie může existovat nezávisle na vstupní definici řešeného problému. A podle mě se obecná řeč teďka cpe všude jen jako zbytečná vrstva navíc a při bližším zkoumání je to vlastně často jediná vrstva, která nějak funguje.

  • 17. 11. 2024 13:33

    Filip Jirsák
    Stříbrný podporovatel

    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.